@tuwaio/nova-connect 0.2.8 → 0.2.10
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 +7 -11
- package/dist/chunk-2UXAPXCV.js +2 -0
- package/dist/chunk-3ZSOW5LA.cjs +2 -0
- package/dist/chunk-AUQ5MRBP.cjs +1 -0
- package/dist/chunk-Q4YF6YJO.js +1 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.cts +5 -203
- package/dist/components/index.d.ts +5 -203
- package/dist/components/index.js +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/{ToastError-CdjoS4UD.d.ts → index-Ci68q5uc.d.ts} +1283 -311
- package/dist/{ToastError-Dj00twX2.d.cts → index-CmHWKaZ_.d.cts} +1283 -311
- package/dist/index.cjs +1 -1
- package/dist/index.css +10 -10
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +1 -1
- package/package.json +15 -15
- package/dist/chunk-4DCVNDV2.js +0 -5
- package/dist/chunk-KQ67JR6M.cjs +0 -5
- package/dist/chunk-V3D3HT6N.cjs +0 -1
- package/dist/chunk-XA3DA6RA.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkKQ67JR6M_cjs=require('./chunk-KQ67JR6M.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 fe=({title:o,rawError:e,onCopyComplete:n,errorType:r,isConnected:t,...g})=>jsxRuntime.jsx(chunkKQ67JR6M_cjs.D,{title:o,rawError:e,onCopyComplete:n,customization:g.customization}),ve=o=>{let e=chunkV3D3HT6N_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},ge=(o,e)=>{o(e.title,e.rawError,e.errorKey);},be=o=>{o();},ye=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},Te=o=>o,De=o=>o;function Eo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:r=false,customization:t}){let g=chunkV3D3HT6N_cjs.h(),f=chunk2SFIZVDC_cjs.h(i=>i.switchNetworkError),L=chunk2SFIZVDC_cjs.h(i=>i.activeConnection),h=chunk2SFIZVDC_cjs.h(i=>i.connectionError),{ToastError:x=fe,Container:u=ve}=t?.components??{},{showError:d=ge,dismissError:R=be,onCopyComplete:z=ye}=t?.handlers??{},{errorTitle:y=Te,errorHash:N=De}=t??{},T=react.useRef(new Set),w=react.useRef(null),s=react.useMemo(()=>{let i=!!h,b=!!f,P=!!L?.isConnected;return {hasWalletError:i,hasSwitchError:b,isConnected:P,hasAnyError:i||b,primaryError:h||f||null,errorType:i?"wallet":b?"switch":null}},[h,f,L?.isConnected]),V=react.useMemo(()=>{switch(s.errorType){case "wallet":return g.connectionError;case "switch":return g.errorWhenChainSwitching;default:return g.somethingWentWrong}},[s.errorType,g]),m=react.useMemo(()=>y(V,{errorType:s.errorType}),[y,V,s.errorType]),U=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>N(U,{primaryError:s.primaryError,errorType:s.errorType}),[N,U,s.primaryError,s.errorType]),M=react.useCallback(()=>{R(()=>{w.current&&(reactToastify.toast.dismiss(w.current),w.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,R]),S=react.useCallback((i,b)=>{z(i,b,s.errorType);},[z,s.errorType]),a=react.useCallback((i,b,P)=>{if(M(),!T.current.has(P))try{let I={containerId:o,toastId:P,onClose:()=>{T.current.delete(P),w.current=null;}},q=t?.toastOptions?.error?.({title:i,rawError:b,errorType:s.errorType,isConnected:s.isConnected}),J={...I,...q};reactToastify.toast.error(jsxRuntime.jsx(x,{title:i,rawError:b,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>S(Q,b),customization:t?.toastErrorCustomization}),J),T.current.add(P),w.current=P;}catch(I){console.error("Failed to show error toast:",I);}},[M,o,t?.toastOptions?.error,t?.toastErrorCustomization,x,s.errorType,s.isConnected,S]),v=react.useCallback((i,b,P)=>{d(a,{title:i,rawError:b,errorKey:P,errorType:s.errorType});},[a,d,s.errorType]);react.useEffect(()=>{let{hasAnyError:i,isConnected:b,primaryError:P}=s;if(b&&!i){M(),T.current.clear();return}if(i&&P&&C){if(b&&s.errorType!=="switch")return;v(m,P,C);}},[s,m,C,v,M]),react.useEffect(()=>()=>{M(),T.current.clear();},[M]);let D=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:r,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,e,n,r]),O=react.useMemo(()=>({...p,...t?.containerProps,className:D}),[p,t?.containerProps,D]);return jsxRuntime.jsx(u,{...O})}Eo.displayName="ErrorsProvider";function ho({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(g=>!(g in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunkV3D3HT6N_cjs.g.Provider,{value:n,children:e})}ho.displayName="NovaConnectLabelsProvider";var Bo=react.memo(()=>{let{legal:o}=chunkV3D3HT6N_cjs.d(),e=chunkV3D3HT6N_cjs.h();if(!o?.termsUrl&&!o?.privacyUrl)return null;let n=!!o.termsUrl,r=!!o.privacyUrl,t=n&&r;return jsxRuntime.jsx("div",{className:"novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:pt-3 novacon:mt-2",role:"contentinfo","aria-label":"Legal information",children:jsxRuntime.jsxs("p",{className:"novacon:text-xs novacon:text-center novacon:text-[var(--tuwa-text-secondary)]",children:[e.legalIntro," ",n&&jsxRuntime.jsx("a",{href:o.termsUrl,target:"_blank",rel:"noopener noreferrer",className:"novacon:underline novacon:hover:text-[var(--tuwa-text-primary)] novacon:transition-colors",children:e.legalTerms}),t&&` ${e.legalAnd} `,r&&jsxRuntime.jsx("a",{href:o.privacyUrl,target:"_blank",rel:"noopener noreferrer",className:"novacon:underline novacon:hover:text-[var(--tuwa-text-primary)] novacon:transition-colors",children:e.legalPrivacy}),"."]})})});Bo.displayName="LegalDisclaimer";function Ve(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?orbitCore.formatConnectorName(r.name)===e:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Xo=react.forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsxRuntime.jsx("div",{ref:t,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));Xo.displayName="DefaultModalContainer";var Yo=react.forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsxRuntime.jsx("div",{ref:t,className:o,...r,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:e})}));Yo.displayName="DefaultModalHeader";var Zo=react.forwardRef(({className:o,onClick:e,modalData:n,...r},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,...r,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=react.forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:t,className:novaCore.cn("novacon:flex novacon:items-center",o),...r,children:e}));oe.displayName="DefaultTitle";var ee=react.forwardRef(({className:o,onClick:e,modalData:n,...r},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),...r,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=react.forwardRef(({className:o,children:e,modalData:n,...r},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",...r,children:e}));te.displayName="DefaultMainContent";var ne=react.forwardRef(({className:o,children:e,modalData:n,...r},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",...r,children:e}));ne.displayName="DefaultFooter";var re=react.forwardRef(({className:o,onClick:e,children:n,modalData:r,...t},g)=>jsxRuntime.jsx("button",{ref:g,type:"button",onClick:e,className:novaCore.cn(novaCore.standardButtonClasses,o),...t,children:n}));re.displayName="DefaultBackButton";var ae=react.forwardRef(({className:o,onClick:e,children:n,disabled:r,loading:t,buttonConfig:g,modalData:f,...L},h)=>jsxRuntime.jsx("button",{ref:h,type:"button",onClick:e,disabled:r||t,className:novaCore.cn(novaCore.standardButtonClasses,o),...L,children:t?"Loading...":n}));ae.displayName="DefaultActionButton";var se=react.forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsxRuntime.jsx("span",{ref:t,className:novaCore.cn("novacon:sr-only",o),...r,children:e}));se.displayName="DefaultActionDescription";var ie=react.forwardRef(({children:o,className:e,...n},r)=>{let{modalData:t,...g}=n;return jsxRuntime.jsx("div",{ref:r,className:e,...g,children:o})});ie.displayName="DefaultEmptyState";var ko=react.memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:r={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:g,setConnectModalContentType:f,setActiveConnector:L,setImpersonatedAddress:h,setIsConnected:x,connectModalContentType:u,selectedAdapter:d,setSelectedAdapter:R,isConnected:z,activeConnector:y,impersonatedAddress:N}=chunkV3D3HT6N_cjs.d(),T=chunk2SFIZVDC_cjs.h(c=>c.connectionError),w=chunk2SFIZVDC_cjs.h(c=>c.getConnectors),s=chunk2SFIZVDC_cjs.h(c=>c.connect),V=chunk2SFIZVDC_cjs.h(c=>c.activeConnection),m=chunkV3D3HT6N_cjs.h(),U=react.useContext(chunk2SFIZVDC_cjs.f),C=react.useMemo(()=>{if(t)return w()},[t,w]),M=react.useMemo(()=>chunkV3D3HT6N_cjs.t({connectors:C,selectedAdapter:d}),[C,d]),S=react.useMemo(()=>T?typeof T=="string"?new Error(T):T:null,[T]),a=react.useMemo(()=>({contentType:u,selectedAdapter:d,activeConnector:y,impersonatedAddress:N,isConnected:z,isOpen:t,error:S,connectors:C,filteredConnectors:M,labels:m}),[u,d,y,N,z,t,S,C,M,m]);react.useEffect(()=>{t&&(f("connectors"),R(void 0),L(void 0),h(""),x(false));},[t]);let{components:v={},classNames:D={},handlers:p={},config:O={},childComponents:i={}}=r,b=v.ModalContainer||Xo,P=v.ModalHeader||Yo,I=v.InfoButton||Zo,q=v.Title||oe,J=v.CloseButton||ee,Q=v.MainContent||te,so=v.Footer||ne,X=v.BackButton||re,io=v.ActionButton||ae,Y=v.ActionDescription||se,lo=v.EmptyState||ie,G=v.Dialog||novaCore.Dialog,yo=v.DialogContent||novaCore.DialogContent,co=v.MotionDiv||framerMotion.motion.div,no=react.useCallback(()=>{switch(u){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d&&y&&C&&Ve(C[d],y)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[u,d,y,C,m]),Z=react.useCallback(()=>"connectors",[u]),oo=react.useCallback(c=>{p?.onOpenChange?p.onOpenChange(c,a):g(c);},[p?.onOpenChange,a,g]),ro=react.useCallback(()=>{let c=()=>f(Z());p?.onBack?p.onBack(a,c):c();},[p?.onBack,a,f,Z]),To=react.useCallback(()=>{p?.onInfoClick?p.onInfoClick(a):f("about");},[p?.onInfoClick,a,f]),_=react.useCallback(async(c,Do)=>{await s({connectorType:c,chainId:chunkV3D3HT6N_cjs.p({appChains:o,selectedAdapter:Do,solanaRPCUrls:e})});try{await orbitCore.waitFor(()=>U?.getState().activeConnection?.isConnected),x(!0);let Po=setTimeout(()=>g(!1),400),me=setTimeout(()=>x(!1),500);await orbitCore.delay(null,500),clearTimeout(Po),clearTimeout(me);}catch(Po){console.error(Po);}},[s,o,d,e]),mo=react.useCallback(async(c,Do)=>{R(c),f("connecting"),await _(Do,c);},[_]),$=react.useCallback(c=>{L(orbitCore.formatConnectorName(c.name)),c.adapters.length===1?(R(c.adapters[0]),f(orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d?f(orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(c.name)==="impersonatedwallet"?f("impersonate"):f("network");},[d]),ce=react.useCallback(()=>{switch(u){case "network":return jsxRuntime.jsx(chunkKQ67JR6M_cjs.B,{activeConnector:y,connectors:M,onClick:mo,customization:i.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkKQ67JR6M_cjs.C,{networks:Object.keys(C),selectedAdapter:d,onSelect:c=>R(c),customization:i.networkTabs}),jsxRuntime.jsx(chunkKQ67JR6M_cjs.y,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:M,selectedAdapter:d,onClick:$,setContentType:f,appChains:o,solanaRPCUrls:e,setIsConnected:x,setIsOpen:g,withImpersonated:n,customization:i.connectorsSelections}),jsxRuntime.jsx(Bo,{})]}):jsxRuntime.jsx(lo,{className:D.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkKQ67JR6M_cjs.s,{customization:i.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkKQ67JR6M_cjs.z,{customization:i.getWallet});case "connecting":return jsxRuntime.jsx(chunkKQ67JR6M_cjs.v,{selectedAdapter:d,connectors:M,activeConnector:y,isConnected:z,customization:i.connecting});case "impersonate":return jsxRuntime.jsx(chunkKQ67JR6M_cjs.A,{selectedAdapter:d,impersonatedAddress:N,setImpersonatedAddress:h,customization:i.impersonateForm})}},[u,y,M,mo,i,C,d,$,z,N]),j=react.useCallback(()=>{switch(u){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p.onActionClick?.connectors?p.onActionClick.connectors(a):f("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p.onActionClick?.getWallet?p.onActionClick.getWallet(a):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(a):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(a);else {let c=N.trim();if(T||!c||!orbitCore.isAddress(c)||V?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(c),f("connecting"),await _(orbitCore.getConnectorTypeFromName(d??orbitCore.OrbitAdapter.EVM,y??""),d??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return T&&d&&y?{title:m.tryAgain,onClick:async()=>{p.onActionClick?.connecting?await p.onActionClick.connecting(a):await _(orbitCore.getConnectorTypeFromName(d,y),d);}}:void 0}},[u,m,p,a,d,C,N,T,_,y])(),de=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(G,{open:t,onOpenChange:oo,children:jsxRuntime.jsx(yo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(co,{layout:true,transition:{layout:{duration:O.animation?.disabled?0:O.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(b,{className:D.modalContainer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(P,{className:D.header?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(q,{className:D.title?.({modalData:a}),modalData:a,children:[u==="connectors"&&jsxRuntime.jsx(I,{className:D.infoButton?.({modalData:a}),onClick:To,"aria-label":O.ariaLabels?.infoButton?.(a)||`${m.learnMore} ${m.aboutWallets}`,modalData:a}),no()]}),jsxRuntime.jsx(J,{className:D.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":O.ariaLabels?.closeButton?.(a)||m.closeModal,modalData:a})]}),jsxRuntime.jsx(Q,{className:D.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxRuntime.jsxs(so,{className:D.footer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:u!=="connectors"&&jsxRuntime.jsx(X,{className:D.backButton?.({modalData:a}),onClick:ro,"aria-label":O.ariaLabels?.backButton?.(a)||`${m.back} to previous step`,modalData:a,children:m.back})}),j&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(io,{className:D.actionButton?.({modalData:a,buttonConfig:j}),onClick:j.onClick,disabled:j.disabled,loading:j.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:j,children:j.title}),jsxRuntime.jsx(Y,{id:"bottom-action-description",className:D.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});ko.displayName="ConnectModal";var _e=({labels:o,children:e})=>jsxRuntime.jsx(ho,{labels:o,children:e}),$e=({customization:o})=>jsxRuntime.jsx(Eo,{customization:o}),je=(o,e)=>novaCore.deepMerge(o,e||{}),Ke=o=>o,qe=o=>o,Je=(o,e,n)=>o;function Qe({labels:o,children:e,appChains:n,solanaRPCUrls:r,transactionPool:t,pulsarAdapter:g,withImpersonated:f,withBalance:L,withChain:h,legal:x,customization:u}){let d=chunk2SFIZVDC_cjs.h($=>$.activeConnection),R=chunk2SFIZVDC_cjs.h($=>$.connectionError),{LabelsProvider:z=_e,ErrorsProvider:y=$e}=u?.components??{},{merge:N=je,transform:T=Ke}=u?.labels??{},{transform:w=qe}=u?.contextValue??{},{providerTree:s=Je}=u?.rendering??{},V=react.useMemo(()=>N(chunkMGBN4EIT_cjs.a,o||{}),[o,N]),[m,U]=react.useState(false),[C,M]=react.useState(false),[S,a]=react.useState(false),[v,D]=react.useState(false),[p,O]=react.useState("idle"),[i,b]=react.useState("connectors"),[P,I]=react.useState(void 0),[q,J]=react.useState(void 0),[Q,so]=react.useState(""),[X,io]=react.useState(false),[Y,lo]=react.useState("main"),G=react.useMemo(()=>({isConnected:X,activeConnection:d,connectionError:R,modalStates:{isConnectModalOpen:m,isConnectedModalOpen:C,isChainsListOpen:S,isChainsListOpenMobile:v},contentTypes:{connectModal:i,connectedModal:Y},statuses:{connectedButton:p}}),[X,d,R,m,C,S,v,i,Y,p]),yo=react.useMemo(()=>T(V,G),[V,T,G]),co=react.useMemo(()=>w({appChains:n,solanaRPCUrls:r,withImpersonated:f,withBalance:L,withChain:h,isConnectModalOpen:m,setIsConnectModalOpen:U,isConnectedModalOpen:C,setIsConnectedModalOpen:M,isChainsListOpen:S,setIsChainsListOpen:a,isChainsListOpenMobile:v,setIsChainsListOpenMobile:D,connectedButtonStatus:p,setConnectedButtonStatus:O,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:i,setConnectModalContentType:b,selectedAdapter:P,setSelectedAdapter:I,activeConnector:q,setActiveConnector:J,impersonatedAddress:Q,setImpersonatedAddress:so,isConnected:X,setIsConnected:io,legal:x},G),[n,r,f,L,h,m,U,C,M,S,a,v,D,p,O,Y,lo,i,b,P,I,q,J,Q,so,X,io,x,w,G]),no=jsxRuntime.jsx(y,{customization:u?.errors}),Z=jsxRuntime.jsx(z,{labels:yo,children:e}),oo=n||r?jsxRuntime.jsx(ko,{withImpersonated:f,solanaRPCUrls:r,appChains:n,customization:u?.modals?.connectModal}):null,ro=n||r?jsxRuntime.jsx(chunkKQ67JR6M_cjs.r,{solanaRPCUrls:r,appChains:n,transactionPool:t,pulsarAdapter:g,customization:u?.modals?.connectedModal}):null,To=jsxRuntime.jsxs(chunkV3D3HT6N_cjs.c.Provider,{value:co,children:[no,Z,oo,ro]}),_=jsxRuntime.jsxs(chunkV3D3HT6N_cjs.c.Provider,{value:co,children:[no,Z,oo,ro]}),mo=s(_,{ErrorsProvider:no,LabelsProvider:Z,MainContent:To,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:ro||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:mo})}Qe.displayName="NovaConnectProvider";async function tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await go(),hasSolanaUtils:await bo(),adaptersStatus:o()}}async function go(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function bo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function nr(){try{if(!await go())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 rr(){try{if(!await bo())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 ar(){let o={evm:false,solana:false,errors:[]};try{let e=await go(),n=await bo();if(e||n){let{preloadChainAdapters:r}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),t=[];e&&t.push(orbitCore.OrbitAdapter.EVM),n&&t.push(orbitCore.OrbitAdapter.SOLANA),await r(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 sr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?go():bo()}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=ho;exports.NovaConnectProvider=Qe;exports.getBlockchainUtilities=tr;exports.getEvmUtils=nr;exports.getSolanaUtils=rr;exports.initializeBlockchainSupport=ar;exports.isAdapterSupported=sr;
|
|
1
|
+
'use strict';var chunk3ZSOW5LA_cjs=require('./chunk-3ZSOW5LA.cjs'),chunkAUQ5MRBP_cjs=require('./chunk-AUQ5MRBP.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 ut=({title:o,rawError:t,onCopyComplete:n,errorType:r,isConnected:e,...g})=>jsxRuntime.jsx(chunk3ZSOW5LA_cjs.F,{title:o,rawError:t,onCopyComplete:n,customization:g.customization}),Ct=o=>{let t=chunkAUQ5MRBP_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ft=(o,t)=>{o(t.title,t.rawError,t.errorKey);},vt=o=>{o();},gt=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},bt=o=>o,yt=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:n=7e3,draggable:r=false,customization:e}){let g=chunkAUQ5MRBP_cjs.h(),f=chunk2SFIZVDC_cjs.h(v=>v.switchNetworkError),z=chunk2SFIZVDC_cjs.h(v=>v.activeConnection),L=chunk2SFIZVDC_cjs.h(v=>v.connectionError),{ToastError:R=ut,Container:p=Ct}=e?.components??{},{showError:d=ft,dismissError:x=vt,onCopyComplete:W=gt}=e?.handlers??{},{errorTitle:y=bt,errorHash:w=yt}=e??{},T=react.useRef(new Set),S=react.useRef(null),U=!!L,G=!!f,l=!!z?.isConnected,I=U||G,u=L||f||null,E=U?"wallet":G?"switch":null,m={hasWalletError:U,hasSwitchError:G,isConnected:l,hasAnyError:I,primaryError:u,errorType:E},a=g.somethingWentWrong;switch(m.errorType){case "wallet":a=g.connectionError;break;case "switch":a=g.errorWhenChainSwitching;break}let C=y(a,{errorType:m.errorType}),D=m.primaryError?`${m.errorType}-${m.primaryError.substring(0,50)}`:null,c=w(D,{primaryError:m.primaryError,errorType:m.errorType}),M=react.useCallback(()=>{x(()=>{S.current&&(reactToastify.toast.dismiss(S.current),S.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,x]),b=react.useCallback((v,P)=>{W(v,P,m.errorType);},[W,m.errorType]),j=react.useCallback((v,P,N)=>{if(M(),!T.current.has(N))try{let O={containerId:o,toastId:N,onClose:()=>{T.current.delete(N),S.current=null;}},Y=e?.toastOptions?.error?.({title:v,rawError:P,errorType:m.errorType,isConnected:m.isConnected}),F={...O,...Y};reactToastify.toast.error(jsxRuntime.jsx(R,{title:v,rawError:P,errorType:m.errorType,isConnected:m.isConnected,onCopyComplete:ao=>b(ao,P),customization:e?.toastErrorCustomization}),F),T.current.add(N),S.current=N;}catch(O){console.error("Failed to show error toast:",O);}},[M,o,e?.toastOptions?.error,e?.toastErrorCustomization,R,m.errorType,m.isConnected,b]),$=react.useCallback((v,P,N)=>{d(j,{title:v,rawError:P,errorKey:N,errorType:m.errorType});},[j,d,m.errorType]);react.useEffect(()=>{if(l&&!I){M(),T.current.clear();return}if(I&&u&&c){if(l&&E!=="switch")return;$(C,u,c);}},[I,l,u,E,C,c,$,M]),react.useEffect(()=>()=>{M(),T.current.clear();},[M]);let J=e?.classNames?.container?e.classNames.container({hasErrors:m.hasAnyError,errorType:m.errorType}):"novacon:p-0 novacon:bg-transparent",Q=react.useMemo(()=>{let v=e?.toastCloseButton;return v?({closeToast:P})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:P,...v}):novaCore.ToastCloseButton},[e?.toastCloseButton]),X={...{containerId:o,position:t,closeOnClick:false,icon:false,closeButton:Q,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...e?.containerProps,className:J};return jsxRuntime.jsx(p,{...X})}Po.displayName="ErrorsProvider";function Mo({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(g=>!(g in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsxRuntime.jsx(chunkAUQ5MRBP_cjs.g.Provider,{value:n,children:t})}Mo.displayName="NovaConnectLabelsProvider";function Wt(o,t){if(!o||!Array.isArray(o)||!t)return;let n=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?orbitCore.formatConnectorName(r.name)===t:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Jo=react.forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsxRuntime.jsx("div",{ref:e,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:t}));Jo.displayName="DefaultModalContainer";var Qo=react.forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsxRuntime.jsx("div",{ref:e,...r,children:jsxRuntime.jsx(novaCore.DialogHeader,{className:o,children:t})}));Qo.displayName="DefaultModalHeader";var Xo=react.forwardRef(({className:o,onClick:t,modalData:n,...r},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,...r,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,"aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=react.forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:e,className:novaCore.cn("novacon:flex novacon:items-center",o),...r,children:t}));Yo.displayName="DefaultTitle";var Zo=react.forwardRef(({className:o,onClick:t,modalData:n,...r},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),...r,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var ot=react.forwardRef(({className:o,children:t,modalData:n,...r},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",...r,children:t}));ot.displayName="DefaultMainContent";var tt=react.forwardRef(({className:o,children:t,modalData:n,...r},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",...r,children:t}));tt.displayName="DefaultFooter";var et=react.forwardRef(({className:o,onClick:t,children:n,modalData:r,...e},g)=>jsxRuntime.jsx("button",{ref:g,type:"button",onClick:t,className:novaCore.cn(novaCore.standardButtonClasses,o),...e,children:n}));et.displayName="DefaultBackButton";var nt=react.forwardRef(({className:o,onClick:t,children:n,disabled:r,loading:e,buttonConfig:g,modalData:f,...z},L)=>jsxRuntime.jsx("button",{ref:L,type:"button",onClick:t,disabled:r||e,className:novaCore.cn(novaCore.standardButtonClasses,o),...z,children:e?"Loading...":n}));nt.displayName="DefaultActionButton";var at=react.forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsxRuntime.jsx("span",{ref:e,className:novaCore.cn("novacon:sr-only",o),...r,children:t}));at.displayName="DefaultActionDescription";var rt=react.forwardRef(({children:o,className:t,...n},r)=>{let{modalData:e,...g}=n;return jsxRuntime.jsx("div",{ref:r,className:t,...g,children:o})});rt.displayName="DefaultEmptyState";var Eo=react.memo(({appChains:o,solanaRPCUrls:t,withImpersonated:n,customization:r={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:g,setConnectModalContentType:f,setActiveConnector:z,setImpersonatedAddress:L,setIsConnected:R,connectModalContentType:p,selectedAdapter:d,setSelectedAdapter:x,isConnected:W,activeConnector:y,impersonatedAddress:w}=chunkAUQ5MRBP_cjs.d(),T=chunk2SFIZVDC_cjs.h(i=>i.connectionError),S=chunk2SFIZVDC_cjs.h(i=>i.getConnectors),U=chunk2SFIZVDC_cjs.h(i=>i.connect),G=chunk2SFIZVDC_cjs.h(i=>i.activeConnection),l=chunkAUQ5MRBP_cjs.h(),I=react.useContext(chunk2SFIZVDC_cjs.f),u=e?S():void 0,E=chunkAUQ5MRBP_cjs.t({connectors:u,selectedAdapter:d}),m=T?typeof T=="string"?new Error(T):T:null,a=react.useMemo(()=>({contentType:p,selectedAdapter:d,activeConnector:y,impersonatedAddress:w,isConnected:W,isOpen:e,error:m,connectors:u,filteredConnectors:E,labels:l}),[p,d,y,w,W,e,m,u,E,l]);react.useEffect(()=>{e&&(f("connectors"),x(void 0),z(void 0),L(""),R(false));},[e]);let{components:C={},classNames:D={},handlers:c={},config:M={},childComponents:b={}}=r,j=C.ModalContainer||Jo,$=C.ModalHeader||Qo,J=C.InfoButton||Xo,Q=C.Title||Yo,no=C.CloseButton||Zo,X=C.MainContent||ot,v=C.Footer||tt,P=C.BackButton||et,N=C.ActionButton||nt,O=C.ActionDescription||at,Y=C.EmptyState||rt,F=C.Dialog||novaCore.Dialog,ao=C.DialogContent||novaCore.DialogContent,mo=C.MotionDiv||framerMotion.motion.div,ro=react.useCallback(()=>{switch(p){case "about":return l.aboutWallets;case "getWallet":return l.getWallet;case "connecting":return d&&y&&u&&Wt(u[d],y)||l.connectingEllipsis;case "impersonate":return l.connectImpersonatedWallet;default:return l.connectWallet}},[p,d,y,u,l]),Z=react.useCallback(()=>"connectors",[p]),oo=react.useCallback(i=>{c?.onOpenChange?c.onOpenChange(i,a):g(i);},[c?.onOpenChange,a,g]),so=react.useCallback(()=>{let i=()=>f(Z());c?.onBack?c.onBack(a,i):i();},[c?.onBack,a,f,Z]),go=react.useCallback(()=>{c?.onInfoClick?c.onInfoClick(a):f("about");},[c?.onInfoClick,a,f]),K=react.useCallback(async(i,bo)=>{await U({connectorType:i,chainId:chunkAUQ5MRBP_cjs.p({appChains:o,selectedAdapter:bo,solanaRPCUrls:t})});try{await orbitCore.waitFor(()=>I?.getState().activeConnection?.isConnected),R(!0);let yo=setTimeout(()=>g(!1),400),ct=setTimeout(()=>R(!1),500);await orbitCore.delay(null,500),clearTimeout(yo),clearTimeout(ct);}catch(yo){console.error(yo);}},[U,o,d,t]),po=react.useCallback(async(i,bo)=>{x(i),f("connecting"),await K(bo,i);},[K]),_=react.useCallback(i=>{z(orbitCore.formatConnectorName(i.name)),i.adapters.length===1?(x(i.adapters[0]),f(orbitCore.formatConnectorName(i.name)==="impersonatedwallet"?"impersonate":"connecting")):d?f(orbitCore.formatConnectorName(i.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatConnectorName(i.name)==="impersonatedwallet"?f("impersonate"):f("network");},[d]),it=react.useCallback(()=>{switch(p){case "network":return jsxRuntime.jsx(chunk3ZSOW5LA_cjs.D,{activeConnector:y,connectors:E,onClick:po,customization:b.networkSelections});case "connectors":return u?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunk3ZSOW5LA_cjs.E,{networks:Object.keys(u),selectedAdapter:d,onSelect:i=>x(i),customization:b.networkTabs}),jsxRuntime.jsx(chunk3ZSOW5LA_cjs.z,{isOnlyOneNetwork:Object.keys(u).length===1,connectors:E,selectedAdapter:d,onClick:_,setContentType:f,appChains:o,solanaRPCUrls:t,setIsConnected:R,setIsOpen:g,withImpersonated:n,customization:b.connectorsSelections}),jsxRuntime.jsx(chunk3ZSOW5LA_cjs.C,{customization:b.legalDisclaimer})]}):jsxRuntime.jsx(Y,{className:D.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunk3ZSOW5LA_cjs.t,{customization:b.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunk3ZSOW5LA_cjs.A,{customization:b.getWallet});case "connecting":return jsxRuntime.jsx(chunk3ZSOW5LA_cjs.w,{selectedAdapter:d,connectors:E,activeConnector:y,isConnected:W,customization:b.connecting});case "impersonate":return jsxRuntime.jsx(chunk3ZSOW5LA_cjs.B,{selectedAdapter:d,impersonatedAddress:w,setImpersonatedAddress:L,customization:b.impersonateForm})}},[p,y,E,po,b,u,d,_,W,w]),q=react.useCallback(()=>{switch(p){case "connectors":return {title:l.iDontHaveWallet,onClick:()=>{c.onActionClick?.connectors?c.onActionClick.connectors(a):f("getWallet");}};case "getWallet":return {title:l.choseWallet,onClick:()=>{c.onActionClick?.getWallet?c.onActionClick.getWallet(a):window.open(orbitCore.getNetworkData(d??Object.keys(u)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:l.learnMore,onClick:()=>{c.onActionClick?.about?c.onActionClick.about(a):window.open(orbitCore.getNetworkData(d??Object.keys(u)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:l.connect,onClick:async()=>{if(c.onActionClick?.impersonate)await c.onActionClick.impersonate(a);else {let i=w.trim();if(T||!i||!orbitCore.isAddress(i)||G?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(i),f("connecting"),await K(orbitCore.getConnectorTypeFromName(d??orbitCore.OrbitAdapter.EVM,y??""),d??orbitCore.OrbitAdapter.EVM);}}};case "connecting":return T&&d&&y?{title:l.tryAgain,onClick:async()=>{c.onActionClick?.connecting?await c.onActionClick.connecting(a):await K(orbitCore.getConnectorTypeFromName(d,y),d);}}:void 0}},[p,l,c,a,d,u,w,T,K,y])(),lt=react.useCallback(()=>{switch(p){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 ""}},[p]);return jsxRuntime.jsx(F,{open:e,onOpenChange:oo,children:jsxRuntime.jsx(ao,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(mo,{layout:true,transition:{layout:{duration:M.animation?.disabled?0:M.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(j,{className:D.modalContainer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs($,{className:D.header?.({modalData:a}),modalData:a,children:[jsxRuntime.jsxs(Q,{className:D.title?.({modalData:a}),modalData:a,children:[p==="connectors"&&jsxRuntime.jsx(J,{className:D.infoButton?.({modalData:a}),onClick:go,"aria-label":M.ariaLabels?.infoButton?.(a)||`${l.learnMore} ${l.aboutWallets}`,modalData:a}),ro()]}),jsxRuntime.jsx(no,{className:D.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":M.ariaLabels?.closeButton?.(a)||l.closeModal,modalData:a})]}),jsxRuntime.jsx(X,{className:D.mainContent?.({modalData:a}),modalData:a,children:it()}),jsxRuntime.jsxs(v,{className:D.footer?.({modalData:a}),modalData:a,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:p!=="connectors"&&jsxRuntime.jsx(P,{className:D.backButton?.({modalData:a}),onClick:so,"aria-label":M.ariaLabels?.backButton?.(a)||`${l.back} to previous step`,modalData:a,children:l.back})}),q&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(N,{className:D.actionButton?.({modalData:a,buttonConfig:q}),onClick:q.onClick,disabled:q.disabled,loading:q.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:q,children:q.title}),jsxRuntime.jsx(O,{id:"bottom-action-description",className:D.actionDescription?.({modalData:a}),modalData:a,children:lt()})]})]})]})})})})});Eo.displayName="ConnectModal";var Vt=({labels:o,children:t})=>jsxRuntime.jsx(Mo,{labels:o,children:t}),Ut=({customization:o})=>jsxRuntime.jsx(Po,{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:r,transactionPool:e,pulsarAdapter:g,withImpersonated:f,withBalance:z,withChain:L,legal:R,customization:p}){let d=chunk2SFIZVDC_cjs.h(_=>_.activeConnection),x=chunk2SFIZVDC_cjs.h(_=>_.connectionError),{LabelsProvider:W=Vt,ErrorsProvider:y=Ut}=p?.components??{},{merge:w=Gt,transform:T=jt}=p?.labels??{},{transform:S=$t}=p?.contextValue??{},{providerTree:U=Kt}=p?.rendering??{},G=react.useMemo(()=>w(chunkMGBN4EIT_cjs.a,o||{}),[o,w]),[l,I]=react.useState(false),[u,E]=react.useState(false),[m,a]=react.useState(false),[C,D]=react.useState(false),[c,M]=react.useState("idle"),[b,j]=react.useState("connectors"),[$,J]=react.useState(void 0),[Q,no]=react.useState(void 0),[X,v]=react.useState(""),[P,N]=react.useState(false),[O,Y]=react.useState("main"),F=react.useMemo(()=>({isConnected:P,activeConnection:d,connectionError:x,modalStates:{isConnectModalOpen:l,isConnectedModalOpen:u,isChainsListOpen:m,isChainsListOpenMobile:C},contentTypes:{connectModal:b,connectedModal:O},statuses:{connectedButton:c}}),[P,d,x,l,u,m,C,b,O,c]),ao=react.useMemo(()=>T(G,F),[G,T,F]),mo=react.useMemo(()=>S({appChains:n,solanaRPCUrls:r,withImpersonated:f,withBalance:z,withChain:L,isConnectModalOpen:l,setIsConnectModalOpen:I,isConnectedModalOpen:u,setIsConnectedModalOpen:E,isChainsListOpen:m,setIsChainsListOpen:a,isChainsListOpenMobile:C,setIsChainsListOpenMobile:D,connectedButtonStatus:c,setConnectedButtonStatus:M,connectedModalContentType:O,setConnectedModalContentType:Y,connectModalContentType:b,setConnectModalContentType:j,selectedAdapter:$,setSelectedAdapter:J,activeConnector:Q,setActiveConnector:no,impersonatedAddress:X,setImpersonatedAddress:v,isConnected:P,setIsConnected:N,legal:R},F),[n,r,f,z,L,l,I,u,E,m,a,C,D,c,M,O,Y,b,j,$,J,Q,no,X,v,P,N,R,S,F]),ro=jsxRuntime.jsx(y,{customization:p?.errors}),Z=jsxRuntime.jsx(W,{labels:ao,children:t}),oo=n||r?jsxRuntime.jsx(Eo,{withImpersonated:f,solanaRPCUrls:r,appChains:n,customization:p?.modals?.connectModal}):null,so=n||r?jsxRuntime.jsx(chunk3ZSOW5LA_cjs.s,{solanaRPCUrls:r,appChains:n,transactionPool:e,pulsarAdapter:g,customization:p?.modals?.connectedModal}):null,go=jsxRuntime.jsxs(chunkAUQ5MRBP_cjs.c.Provider,{value:mo,children:[ro,Z,oo,so]}),K=jsxRuntime.jsxs(chunkAUQ5MRBP_cjs.c.Provider,{value:mo,children:[ro,Z,oo,so]}),po=U(K,{ErrorsProvider:ro,LabelsProvider:Z,MainContent:go,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:so||jsxRuntime.jsx(jsxRuntime.Fragment,{})},F);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:po})}_t.displayName="NovaConnectProvider";async function Xn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Yn(){try{if(!await fo())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 vo())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 oa(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),n=await vo();if(t||n){let{preloadChainAdapters:r}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),e=[];t&&e.push(orbitCore.OrbitAdapter.EVM),n&&e.push(orbitCore.OrbitAdapter.SOLANA),await r(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 ta(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?fo():vo()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkAUQ5MRBP_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkAUQ5MRBP_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=Po;exports.NovaConnectLabelsProvider=Mo;exports.NovaConnectProvider=_t;exports.getBlockchainUtilities=Xn;exports.getEvmUtils=Yn;exports.getSolanaUtils=Zn;exports.initializeBlockchainSupport=oa;exports.isAdapterSupported=ta;
|
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
|
}
|
|
@@ -374,12 +374,12 @@
|
|
|
374
374
|
.novacon\:w-24 {
|
|
375
375
|
width: calc(var(--novacon-spacing) * 24);
|
|
376
376
|
}
|
|
377
|
-
.novacon\:w-28 {
|
|
378
|
-
width: calc(var(--novacon-spacing) * 28);
|
|
379
|
-
}
|
|
380
377
|
.novacon\:w-32 {
|
|
381
378
|
width: calc(var(--novacon-spacing) * 32);
|
|
382
379
|
}
|
|
380
|
+
.novacon\:w-36 {
|
|
381
|
+
width: calc(var(--novacon-spacing) * 36);
|
|
382
|
+
}
|
|
383
383
|
.novacon\:w-48 {
|
|
384
384
|
width: calc(var(--novacon-spacing) * 48);
|
|
385
385
|
}
|
|
@@ -2242,4 +2242,4 @@ div[data-radix-popper-content-wrapper] {
|
|
|
2242
2242
|
--tw-exit-translate-y: 0;
|
|
2243
2243
|
}
|
|
2244
2244
|
}
|
|
2245
|
-
}
|
|
2245
|
+
}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,14 +3,14 @@ export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList
|
|
|
3
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
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 { T as ToastErrorCustomization, C as ConnectModalCustomization, a as ConnectedModalCustomization } from './index-CmHWKaZ_.cjs';
|
|
9
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 */
|
package/dist/index.d.ts
CHANGED
|
@@ -3,14 +3,14 @@ export { WalletNameAndAvatarData, useGetWalletNameAndAvatar, useWalletChainsList
|
|
|
3
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
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 { T as ToastErrorCustomization, C as ConnectModalCustomization, a as ConnectedModalCustomization } from './index-Ci68q5uc.js';
|
|
9
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 */
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {A,v,z,s,C,y,B,r,D}from'./chunk-4DCVNDV2.js';import {d,h,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 as h$1,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 {memo,forwardRef,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 fe=({title:o,rawError:e,onCopyComplete:n,errorType:r,isConnected:t,...g})=>jsx(D,{title:o,rawError:e,onCopyComplete:n,customization:g.customization}),ve=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},ge=(o,e)=>{o(e.title,e.rawError,e.errorKey);},be=o=>{o();},ye=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},Te=o=>o,De=o=>o;function Eo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:r=false,customization:t}){let g=h(),f=h$1(i=>i.switchNetworkError),L=h$1(i=>i.activeConnection),h$2=h$1(i=>i.connectionError),{ToastError:x=fe,Container:u=ve}=t?.components??{},{showError:d=ge,dismissError:R=be,onCopyComplete:z=ye}=t?.handlers??{},{errorTitle:y=Te,errorHash:N=De}=t??{},T=useRef(new Set),w=useRef(null),s=useMemo(()=>{let i=!!h$2,b=!!f,P=!!L?.isConnected;return {hasWalletError:i,hasSwitchError:b,isConnected:P,hasAnyError:i||b,primaryError:h$2||f||null,errorType:i?"wallet":b?"switch":null}},[h$2,f,L?.isConnected]),V=useMemo(()=>{switch(s.errorType){case "wallet":return g.connectionError;case "switch":return g.errorWhenChainSwitching;default:return g.somethingWentWrong}},[s.errorType,g]),m=useMemo(()=>y(V,{errorType:s.errorType}),[y,V,s.errorType]),U=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=useMemo(()=>N(U,{primaryError:s.primaryError,errorType:s.errorType}),[N,U,s.primaryError,s.errorType]),M=useCallback(()=>{R(()=>{w.current&&(toast.dismiss(w.current),w.current=null),toast.dismiss({containerId:o});});},[o,R]),S=useCallback((i,b)=>{z(i,b,s.errorType);},[z,s.errorType]),a=useCallback((i,b,P)=>{if(M(),!T.current.has(P))try{let I={containerId:o,toastId:P,onClose:()=>{T.current.delete(P),w.current=null;}},q=t?.toastOptions?.error?.({title:i,rawError:b,errorType:s.errorType,isConnected:s.isConnected}),J={...I,...q};toast.error(jsx(x,{title:i,rawError:b,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>S(Q,b),customization:t?.toastErrorCustomization}),J),T.current.add(P),w.current=P;}catch(I){console.error("Failed to show error toast:",I);}},[M,o,t?.toastOptions?.error,t?.toastErrorCustomization,x,s.errorType,s.isConnected,S]),v=useCallback((i,b,P)=>{d(a,{title:i,rawError:b,errorKey:P,errorType:s.errorType});},[a,d,s.errorType]);useEffect(()=>{let{hasAnyError:i,isConnected:b,primaryError:P}=s;if(b&&!i){M(),T.current.clear();return}if(i&&P&&C){if(b&&s.errorType!=="switch")return;v(m,P,C);}},[s,m,C,v,M]),useEffect(()=>()=>{M(),T.current.clear();},[M]);let D=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:r,pauseOnHover:true,theme:"light",transition:Bounce}),[o,e,n,r]),O=useMemo(()=>({...p,...t?.containerProps,className:D}),[p,t?.containerProps,D]);return jsx(u,{...O})}Eo.displayName="ErrorsProvider";function ho({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(g=>!(g in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:n,children:e})}ho.displayName="NovaConnectLabelsProvider";var Bo=memo(()=>{let{legal:o}=d(),e=h();if(!o?.termsUrl&&!o?.privacyUrl)return null;let n=!!o.termsUrl,r=!!o.privacyUrl,t=n&&r;return jsx("div",{className:"novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:pt-3 novacon:mt-2",role:"contentinfo","aria-label":"Legal information",children:jsxs("p",{className:"novacon:text-xs novacon:text-center novacon:text-[var(--tuwa-text-secondary)]",children:[e.legalIntro," ",n&&jsx("a",{href:o.termsUrl,target:"_blank",rel:"noopener noreferrer",className:"novacon:underline novacon:hover:text-[var(--tuwa-text-primary)] novacon:transition-colors",children:e.legalTerms}),t&&` ${e.legalAnd} `,r&&jsx("a",{href:o.privacyUrl,target:"_blank",rel:"noopener noreferrer",className:"novacon:underline novacon:hover:text-[var(--tuwa-text-primary)] novacon:transition-colors",children:e.legalPrivacy}),"."]})})});Bo.displayName="LegalDisclaimer";function Ve(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?formatConnectorName(r.name)===e:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Xo=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("div",{ref:t,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("div",{ref:t,className:o,...r,children:jsx(DialogHeader,{children:e})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:e,modalData:n,...r},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,...r,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx(DialogTitle,{ref:t,className:cn("novacon:flex novacon:items-center",o),...r,children:e}));oe.displayName="DefaultTitle";var ee=forwardRef(({className:o,onClick:e,modalData:n,...r},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),...r,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=forwardRef(({className:o,children:e,modalData:n,...r},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",...r,children:e}));te.displayName="DefaultMainContent";var ne=forwardRef(({className:o,children:e,modalData:n,...r},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",...r,children:e}));ne.displayName="DefaultFooter";var re=forwardRef(({className:o,onClick:e,children:n,modalData:r,...t},g)=>jsx("button",{ref:g,type:"button",onClick:e,className:cn(standardButtonClasses,o),...t,children:n}));re.displayName="DefaultBackButton";var ae=forwardRef(({className:o,onClick:e,children:n,disabled:r,loading:t,buttonConfig:g,modalData:f,...L},h)=>jsx("button",{ref:h,type:"button",onClick:e,disabled:r||t,className:cn(standardButtonClasses,o),...L,children:t?"Loading...":n}));ae.displayName="DefaultActionButton";var se=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("span",{ref:t,className:cn("novacon:sr-only",o),...r,children:e}));se.displayName="DefaultActionDescription";var ie=forwardRef(({children:o,className:e,...n},r)=>{let{modalData:t,...g}=n;return jsx("div",{ref:r,className:e,...g,children:o})});ie.displayName="DefaultEmptyState";var ko=memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:r={}})=>{let{isConnectModalOpen:t$1,setIsConnectModalOpen:g,setConnectModalContentType:f$1,setActiveConnector:L,setImpersonatedAddress:h$2,setIsConnected:x,connectModalContentType:u,selectedAdapter:d$1,setSelectedAdapter:R,isConnected:z$1,activeConnector:y$1,impersonatedAddress:N}=d(),T=h$1(c=>c.connectionError),w=h$1(c=>c.getConnectors),s$1=h$1(c=>c.connect),V=h$1(c=>c.activeConnection),m=h(),U=useContext(f),C$1=useMemo(()=>{if(t$1)return w()},[t$1,w]),M=useMemo(()=>t({connectors:C$1,selectedAdapter:d$1}),[C$1,d$1]),S=useMemo(()=>T?typeof T=="string"?new Error(T):T:null,[T]),a=useMemo(()=>({contentType:u,selectedAdapter:d$1,activeConnector:y$1,impersonatedAddress:N,isConnected:z$1,isOpen:t$1,error:S,connectors:C$1,filteredConnectors:M,labels:m}),[u,d$1,y$1,N,z$1,t$1,S,C$1,M,m]);useEffect(()=>{t$1&&(f$1("connectors"),R(void 0),L(void 0),h$2(""),x(false));},[t$1]);let{components:v$1={},classNames:D={},handlers:p$1={},config:O={},childComponents:i={}}=r,b=v$1.ModalContainer||Xo,P=v$1.ModalHeader||Yo,I=v$1.InfoButton||Zo,q=v$1.Title||oe,J=v$1.CloseButton||ee,Q=v$1.MainContent||te,so=v$1.Footer||ne,X=v$1.BackButton||re,io=v$1.ActionButton||ae,Y=v$1.ActionDescription||se,lo=v$1.EmptyState||ie,G=v$1.Dialog||Dialog,yo=v$1.DialogContent||DialogContent,co=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(u){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d$1&&y$1&&C$1&&Ve(C$1[d$1],y$1)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[u,d$1,y$1,C$1,m]),Z=useCallback(()=>"connectors",[u]),oo=useCallback(c=>{p$1?.onOpenChange?p$1.onOpenChange(c,a):g(c);},[p$1?.onOpenChange,a,g]),ro=useCallback(()=>{let c=()=>f$1(Z());p$1?.onBack?p$1.onBack(a,c):c();},[p$1?.onBack,a,f$1,Z]),To=useCallback(()=>{p$1?.onInfoClick?p$1.onInfoClick(a):f$1("about");},[p$1?.onInfoClick,a,f$1]),_=useCallback(async(c,Do)=>{await s$1({connectorType:c,chainId:p({appChains:o,selectedAdapter:Do,solanaRPCUrls:e})});try{await waitFor(()=>U?.getState().activeConnection?.isConnected),x(!0);let Po=setTimeout(()=>g(!1),400),me=setTimeout(()=>x(!1),500);await delay(null,500),clearTimeout(Po),clearTimeout(me);}catch(Po){console.error(Po);}},[s$1,o,d$1,e]),mo=useCallback(async(c,Do)=>{R(c),f$1("connecting"),await _(Do,c);},[_]),$=useCallback(c=>{L(formatConnectorName(c.name)),c.adapters.length===1?(R(c.adapters[0]),f$1(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?f$1(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(c.name)==="impersonatedwallet"?f$1("impersonate"):f$1("network");},[d$1]),ce=useCallback(()=>{switch(u){case "network":return jsx(B,{activeConnector:y$1,connectors:M,onClick:mo,customization:i.networkSelections});case "connectors":return C$1?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(C$1),selectedAdapter:d$1,onSelect:c=>R(c),customization:i.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(C$1).length===1,connectors:M,selectedAdapter:d$1,onClick:$,setContentType:f$1,appChains:o,solanaRPCUrls:e,setIsConnected:x,setIsOpen:g,withImpersonated:n,customization:i.connectorsSelections}),jsx(Bo,{})]}):jsx(lo,{className:D.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsx(s,{customization:i.aboutWallets});case "getWallet":return jsx(z,{customization:i.getWallet});case "connecting":return jsx(v,{selectedAdapter:d$1,connectors:M,activeConnector:y$1,isConnected:z$1,customization:i.connecting});case "impersonate":return jsx(A,{selectedAdapter:d$1,impersonatedAddress:N,setImpersonatedAddress:h$2,customization:i.impersonateForm})}},[u,y$1,M,mo,i,C$1,d$1,$,z$1,N]),j=useCallback(()=>{switch(u){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p$1.onActionClick?.connectors?p$1.onActionClick.connectors(a):f$1("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p$1.onActionClick?.getWallet?p$1.onActionClick.getWallet(a):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(a):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(a);else {let c=N.trim();if(T||!c||!isAddress(c)||V?.isConnected)return;impersonatedHelpers.setImpersonated(c),f$1("connecting"),await _(getConnectorTypeFromName(d$1??OrbitAdapter.EVM,y$1??""),d$1??OrbitAdapter.EVM);}}};case "connecting":return T&&d$1&&y$1?{title:m.tryAgain,onClick:async()=>{p$1.onActionClick?.connecting?await p$1.onActionClick.connecting(a):await _(getConnectorTypeFromName(d$1,y$1),d$1);}}:void 0}},[u,m,p$1,a,d$1,C$1,N,T,_,y$1])(),de=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(G,{open:t$1,onOpenChange:oo,children:jsx(yo,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(co,{layout:true,transition:{layout:{duration:O.animation?.disabled?0:O.animation?.layoutDuration??1e-4}},children:jsxs(b,{className:D.modalContainer?.({modalData:a}),modalData:a,children:[jsxs(P,{className:D.header?.({modalData:a}),modalData:a,children:[jsxs(q,{className:D.title?.({modalData:a}),modalData:a,children:[u==="connectors"&&jsx(I,{className:D.infoButton?.({modalData:a}),onClick:To,"aria-label":O.ariaLabels?.infoButton?.(a)||`${m.learnMore} ${m.aboutWallets}`,modalData:a}),no()]}),jsx(J,{className:D.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":O.ariaLabels?.closeButton?.(a)||m.closeModal,modalData:a})]}),jsx(Q,{className:D.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxs(so,{className:D.footer?.({modalData:a}),modalData:a,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:u!=="connectors"&&jsx(X,{className:D.backButton?.({modalData:a}),onClick:ro,"aria-label":O.ariaLabels?.backButton?.(a)||`${m.back} to previous step`,modalData:a,children:m.back})}),j&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(io,{className:D.actionButton?.({modalData:a,buttonConfig:j}),onClick:j.onClick,disabled:j.disabled,loading:j.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:j,children:j.title}),jsx(Y,{id:"bottom-action-description",className:D.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});ko.displayName="ConnectModal";var _e=({labels:o,children:e})=>jsx(ho,{labels:o,children:e}),$e=({customization:o})=>jsx(Eo,{customization:o}),je=(o,e)=>deepMerge(o,e||{}),Ke=o=>o,qe=o=>o,Je=(o,e,n)=>o;function Qe({labels:o,children:e,appChains:n,solanaRPCUrls:r$1,transactionPool:t,pulsarAdapter:g,withImpersonated:f,withBalance:L,withChain:h,legal:x,customization:u}){let d=h$1($=>$.activeConnection),R=h$1($=>$.connectionError),{LabelsProvider:z=_e,ErrorsProvider:y=$e}=u?.components??{},{merge:N=je,transform:T=Ke}=u?.labels??{},{transform:w=qe}=u?.contextValue??{},{providerTree:s=Je}=u?.rendering??{},V=useMemo(()=>N(a,o||{}),[o,N]),[m,U]=useState(false),[C,M]=useState(false),[S,a$1]=useState(false),[v,D]=useState(false),[p,O]=useState("idle"),[i,b]=useState("connectors"),[P,I]=useState(void 0),[q,J]=useState(void 0),[Q,so]=useState(""),[X,io]=useState(false),[Y,lo]=useState("main"),G=useMemo(()=>({isConnected:X,activeConnection:d,connectionError:R,modalStates:{isConnectModalOpen:m,isConnectedModalOpen:C,isChainsListOpen:S,isChainsListOpenMobile:v},contentTypes:{connectModal:i,connectedModal:Y},statuses:{connectedButton:p}}),[X,d,R,m,C,S,v,i,Y,p]),yo=useMemo(()=>T(V,G),[V,T,G]),co=useMemo(()=>w({appChains:n,solanaRPCUrls:r$1,withImpersonated:f,withBalance:L,withChain:h,isConnectModalOpen:m,setIsConnectModalOpen:U,isConnectedModalOpen:C,setIsConnectedModalOpen:M,isChainsListOpen:S,setIsChainsListOpen:a$1,isChainsListOpenMobile:v,setIsChainsListOpenMobile:D,connectedButtonStatus:p,setConnectedButtonStatus:O,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:i,setConnectModalContentType:b,selectedAdapter:P,setSelectedAdapter:I,activeConnector:q,setActiveConnector:J,impersonatedAddress:Q,setImpersonatedAddress:so,isConnected:X,setIsConnected:io,legal:x},G),[n,r$1,f,L,h,m,U,C,M,S,a$1,v,D,p,O,Y,lo,i,b,P,I,q,J,Q,so,X,io,x,w,G]),no=jsx(y,{customization:u?.errors}),Z=jsx(z,{labels:yo,children:e}),oo=n||r$1?jsx(ko,{withImpersonated:f,solanaRPCUrls:r$1,appChains:n,customization:u?.modals?.connectModal}):null,ro=n||r$1?jsx(r,{solanaRPCUrls:r$1,appChains:n,transactionPool:t,pulsarAdapter:g,customization:u?.modals?.connectedModal}):null,To=jsxs(c.Provider,{value:co,children:[no,Z,oo,ro]}),_=jsxs(c.Provider,{value:co,children:[no,Z,oo,ro]}),mo=s(_,{ErrorsProvider:no,LabelsProvider:Z,MainContent:To,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:ro||jsx(Fragment,{})},G);return jsx(Fragment,{children:mo})}Qe.displayName="NovaConnectProvider";async function tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await go(),hasSolanaUtils:await bo(),adaptersStatus:o()}}async function go(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function bo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function nr(){try{if(!await go())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 rr(){try{if(!await bo())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 ar(){let o={evm:false,solana:false,errors:[]};try{let e=await go(),n=await bo();if(e||n){let{preloadChainAdapters:r}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),n&&t.push(OrbitAdapter.SOLANA),await r(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 sr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?go():bo()}export{Eo as ErrorsProvider,ho as NovaConnectLabelsProvider,Qe as NovaConnectProvider,tr as getBlockchainUtilities,nr as getEvmUtils,rr as getSolanaUtils,ar as initializeBlockchainSupport,sr as isAdapterSupported};
|
|
1
|
+
import {B,w,A,t as t$1,E,z,C,D,s,F}from'./chunk-2UXAPXCV.js';import {d,h as h$1,t,p,g,c}from'./chunk-Q4YF6YJO.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-Q4YF6YJO.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 ut=({title:o,rawError:t,onCopyComplete:n,errorType:r,isConnected:e,...g})=>jsx(F,{title:o,rawError:t,onCopyComplete:n,customization:g.customization}),Ct=o=>{let t=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ft=(o,t)=>{o(t.title,t.rawError,t.errorKey);},vt=o=>{o();},gt=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},bt=o=>o,yt=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:n=7e3,draggable:r=false,customization:e}){let g=h$1(),f=h(v=>v.switchNetworkError),z=h(v=>v.activeConnection),L=h(v=>v.connectionError),{ToastError:R=ut,Container:p=Ct}=e?.components??{},{showError:d=ft,dismissError:x=vt,onCopyComplete:W=gt}=e?.handlers??{},{errorTitle:y=bt,errorHash:w=yt}=e??{},T=useRef(new Set),S=useRef(null),U=!!L,G=!!f,l=!!z?.isConnected,I=U||G,u=L||f||null,E=U?"wallet":G?"switch":null,m={hasWalletError:U,hasSwitchError:G,isConnected:l,hasAnyError:I,primaryError:u,errorType:E},a=g.somethingWentWrong;switch(m.errorType){case "wallet":a=g.connectionError;break;case "switch":a=g.errorWhenChainSwitching;break}let C=y(a,{errorType:m.errorType}),D=m.primaryError?`${m.errorType}-${m.primaryError.substring(0,50)}`:null,c=w(D,{primaryError:m.primaryError,errorType:m.errorType}),M=useCallback(()=>{x(()=>{S.current&&(toast.dismiss(S.current),S.current=null),toast.dismiss({containerId:o});});},[o,x]),b=useCallback((v,P)=>{W(v,P,m.errorType);},[W,m.errorType]),j=useCallback((v,P,N)=>{if(M(),!T.current.has(N))try{let O={containerId:o,toastId:N,onClose:()=>{T.current.delete(N),S.current=null;}},Y=e?.toastOptions?.error?.({title:v,rawError:P,errorType:m.errorType,isConnected:m.isConnected}),F={...O,...Y};toast.error(jsx(R,{title:v,rawError:P,errorType:m.errorType,isConnected:m.isConnected,onCopyComplete:ao=>b(ao,P),customization:e?.toastErrorCustomization}),F),T.current.add(N),S.current=N;}catch(O){console.error("Failed to show error toast:",O);}},[M,o,e?.toastOptions?.error,e?.toastErrorCustomization,R,m.errorType,m.isConnected,b]),$=useCallback((v,P,N)=>{d(j,{title:v,rawError:P,errorKey:N,errorType:m.errorType});},[j,d,m.errorType]);useEffect(()=>{if(l&&!I){M(),T.current.clear();return}if(I&&u&&c){if(l&&E!=="switch")return;$(C,u,c);}},[I,l,u,E,C,c,$,M]),useEffect(()=>()=>{M(),T.current.clear();},[M]);let J=e?.classNames?.container?e.classNames.container({hasErrors:m.hasAnyError,errorType:m.errorType}):"novacon:p-0 novacon:bg-transparent",Q=useMemo(()=>{let v=e?.toastCloseButton;return v?({closeToast:P})=>jsx(ToastCloseButton,{closeToast:P,...v}):ToastCloseButton},[e?.toastCloseButton]),X={...{containerId:o,position:t,closeOnClick:false,icon:false,closeButton:Q,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:Bounce},...e?.containerProps,className:J};return jsx(p,{...X})}Po.displayName="ErrorsProvider";function Mo({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(g=>!(g in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsx(g.Provider,{value:n,children:t})}Mo.displayName="NovaConnectLabelsProvider";function Wt(o,t){if(!o||!Array.isArray(o)||!t)return;let n=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?formatConnectorName(r.name)===t:false);if(n&&typeof n=="object"&&"name"in n&&typeof n.name=="string")return n.name}var Jo=forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsx("div",{ref:e,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:t}));Jo.displayName="DefaultModalContainer";var Qo=forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsx("div",{ref:e,...r,children:jsx(DialogHeader,{className:o,children:t})}));Qo.displayName="DefaultModalHeader";var Xo=forwardRef(({className:o,onClick:t,modalData:n,...r},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,...r,children:jsx(InformationCircleIcon,{width:20,height:20,"aria-hidden":"true"})}));Xo.displayName="DefaultInfoButton";var Yo=forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsx(DialogTitle,{ref:e,className:cn("novacon:flex novacon:items-center",o),...r,children:t}));Yo.displayName="DefaultTitle";var Zo=forwardRef(({className:o,onClick:t,modalData:n,...r},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),...r,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));Zo.displayName="DefaultCloseButton";var ot=forwardRef(({className:o,children:t,modalData:n,...r},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",...r,children:t}));ot.displayName="DefaultMainContent";var tt=forwardRef(({className:o,children:t,modalData:n,...r},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",...r,children:t}));tt.displayName="DefaultFooter";var et=forwardRef(({className:o,onClick:t,children:n,modalData:r,...e},g)=>jsx("button",{ref:g,type:"button",onClick:t,className:cn(standardButtonClasses,o),...e,children:n}));et.displayName="DefaultBackButton";var nt=forwardRef(({className:o,onClick:t,children:n,disabled:r,loading:e,buttonConfig:g,modalData:f,...z},L)=>jsx("button",{ref:L,type:"button",onClick:t,disabled:r||e,className:cn(standardButtonClasses,o),...z,children:e?"Loading...":n}));nt.displayName="DefaultActionButton";var at=forwardRef(({className:o,children:t,modalData:n,...r},e)=>jsx("span",{ref:e,className:cn("novacon:sr-only",o),...r,children:t}));at.displayName="DefaultActionDescription";var rt=forwardRef(({children:o,className:t,...n},r)=>{let{modalData:e,...g}=n;return jsx("div",{ref:r,className:t,...g,children:o})});rt.displayName="DefaultEmptyState";var Eo=memo(({appChains:o,solanaRPCUrls:t$2,withImpersonated:n,customization:r={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:g,setConnectModalContentType:f$1,setActiveConnector:z$1,setImpersonatedAddress:L,setIsConnected:R,connectModalContentType:p$1,selectedAdapter:d$1,setSelectedAdapter:x,isConnected:W,activeConnector:y,impersonatedAddress:w$1}=d(),T=h(i=>i.connectionError),S=h(i=>i.getConnectors),U=h(i=>i.connect),G=h(i=>i.activeConnection),l=h$1(),I=useContext(f),u=e?S():void 0,E$1=t({connectors:u,selectedAdapter:d$1}),m=T?typeof T=="string"?new Error(T):T:null,a=useMemo(()=>({contentType:p$1,selectedAdapter:d$1,activeConnector:y,impersonatedAddress:w$1,isConnected:W,isOpen:e,error:m,connectors:u,filteredConnectors:E$1,labels:l}),[p$1,d$1,y,w$1,W,e,m,u,E$1,l]);useEffect(()=>{e&&(f$1("connectors"),x(void 0),z$1(void 0),L(""),R(false));},[e]);let{components:C$1={},classNames:D$1={},handlers:c={},config:M={},childComponents:b={}}=r,j=C$1.ModalContainer||Jo,$=C$1.ModalHeader||Qo,J=C$1.InfoButton||Xo,Q=C$1.Title||Yo,no=C$1.CloseButton||Zo,X=C$1.MainContent||ot,v=C$1.Footer||tt,P=C$1.BackButton||et,N=C$1.ActionButton||nt,O=C$1.ActionDescription||at,Y=C$1.EmptyState||rt,F=C$1.Dialog||Dialog,ao=C$1.DialogContent||DialogContent,mo=C$1.MotionDiv||motion.div,ro=useCallback(()=>{switch(p$1){case "about":return l.aboutWallets;case "getWallet":return l.getWallet;case "connecting":return d$1&&y&&u&&Wt(u[d$1],y)||l.connectingEllipsis;case "impersonate":return l.connectImpersonatedWallet;default:return l.connectWallet}},[p$1,d$1,y,u,l]),Z=useCallback(()=>"connectors",[p$1]),oo=useCallback(i=>{c?.onOpenChange?c.onOpenChange(i,a):g(i);},[c?.onOpenChange,a,g]),so=useCallback(()=>{let i=()=>f$1(Z());c?.onBack?c.onBack(a,i):i();},[c?.onBack,a,f$1,Z]),go=useCallback(()=>{c?.onInfoClick?c.onInfoClick(a):f$1("about");},[c?.onInfoClick,a,f$1]),K=useCallback(async(i,bo)=>{await U({connectorType:i,chainId:p({appChains:o,selectedAdapter:bo,solanaRPCUrls:t$2})});try{await waitFor(()=>I?.getState().activeConnection?.isConnected),R(!0);let yo=setTimeout(()=>g(!1),400),ct=setTimeout(()=>R(!1),500);await delay(null,500),clearTimeout(yo),clearTimeout(ct);}catch(yo){console.error(yo);}},[U,o,d$1,t$2]),po=useCallback(async(i,bo)=>{x(i),f$1("connecting"),await K(bo,i);},[K]),_=useCallback(i=>{z$1(formatConnectorName(i.name)),i.adapters.length===1?(x(i.adapters[0]),f$1(formatConnectorName(i.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?f$1(formatConnectorName(i.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(i.name)==="impersonatedwallet"?f$1("impersonate"):f$1("network");},[d$1]),it=useCallback(()=>{switch(p$1){case "network":return jsx(D,{activeConnector:y,connectors:E$1,onClick:po,customization:b.networkSelections});case "connectors":return u?jsxs(Fragment,{children:[jsx(E,{networks:Object.keys(u),selectedAdapter:d$1,onSelect:i=>x(i),customization:b.networkTabs}),jsx(z,{isOnlyOneNetwork:Object.keys(u).length===1,connectors:E$1,selectedAdapter:d$1,onClick:_,setContentType:f$1,appChains:o,solanaRPCUrls:t$2,setIsConnected:R,setIsOpen:g,withImpersonated:n,customization:b.connectorsSelections}),jsx(C,{customization:b.legalDisclaimer})]}):jsx(Y,{className:D$1.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsx(t$1,{customization:b.aboutWallets});case "getWallet":return jsx(A,{customization:b.getWallet});case "connecting":return jsx(w,{selectedAdapter:d$1,connectors:E$1,activeConnector:y,isConnected:W,customization:b.connecting});case "impersonate":return jsx(B,{selectedAdapter:d$1,impersonatedAddress:w$1,setImpersonatedAddress:L,customization:b.impersonateForm})}},[p$1,y,E$1,po,b,u,d$1,_,W,w$1]),q=useCallback(()=>{switch(p$1){case "connectors":return {title:l.iDontHaveWallet,onClick:()=>{c.onActionClick?.connectors?c.onActionClick.connectors(a):f$1("getWallet");}};case "getWallet":return {title:l.choseWallet,onClick:()=>{c.onActionClick?.getWallet?c.onActionClick.getWallet(a):window.open(getNetworkData(d$1??Object.keys(u)[0])?.links?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:l.learnMore,onClick:()=>{c.onActionClick?.about?c.onActionClick.about(a):window.open(getNetworkData(d$1??Object.keys(u)[0])?.links?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:l.connect,onClick:async()=>{if(c.onActionClick?.impersonate)await c.onActionClick.impersonate(a);else {let i=w$1.trim();if(T||!i||!isAddress(i)||G?.isConnected)return;impersonatedHelpers.setImpersonated(i),f$1("connecting"),await K(getConnectorTypeFromName(d$1??OrbitAdapter.EVM,y??""),d$1??OrbitAdapter.EVM);}}};case "connecting":return T&&d$1&&y?{title:l.tryAgain,onClick:async()=>{c.onActionClick?.connecting?await c.onActionClick.connecting(a):await K(getConnectorTypeFromName(d$1,y),d$1);}}:void 0}},[p$1,l,c,a,d$1,u,w$1,T,K,y])(),lt=useCallback(()=>{switch(p$1){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 ""}},[p$1]);return jsx(F,{open:e,onOpenChange:oo,children:jsx(ao,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(mo,{layout:true,transition:{layout:{duration:M.animation?.disabled?0:M.animation?.layoutDuration??1e-4}},children:jsxs(j,{className:D$1.modalContainer?.({modalData:a}),modalData:a,children:[jsxs($,{className:D$1.header?.({modalData:a}),modalData:a,children:[jsxs(Q,{className:D$1.title?.({modalData:a}),modalData:a,children:[p$1==="connectors"&&jsx(J,{className:D$1.infoButton?.({modalData:a}),onClick:go,"aria-label":M.ariaLabels?.infoButton?.(a)||`${l.learnMore} ${l.aboutWallets}`,modalData:a}),ro()]}),jsx(no,{className:D$1.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":M.ariaLabels?.closeButton?.(a)||l.closeModal,modalData:a})]}),jsx(X,{className:D$1.mainContent?.({modalData:a}),modalData:a,children:it()}),jsxs(v,{className:D$1.footer?.({modalData:a}),modalData:a,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:p$1!=="connectors"&&jsx(P,{className:D$1.backButton?.({modalData:a}),onClick:so,"aria-label":M.ariaLabels?.backButton?.(a)||`${l.back} to previous step`,modalData:a,children:l.back})}),q&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(N,{className:D$1.actionButton?.({modalData:a,buttonConfig:q}),onClick:q.onClick,disabled:q.disabled,loading:q.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:q,children:q.title}),jsx(O,{id:"bottom-action-description",className:D$1.actionDescription?.({modalData:a}),modalData:a,children:lt()})]})]})]})})})})});Eo.displayName="ConnectModal";var Vt=({labels:o,children:t})=>jsx(Mo,{labels:o,children:t}),Ut=({customization:o})=>jsx(Po,{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:r,transactionPool:e,pulsarAdapter:g,withImpersonated:f,withBalance:z,withChain:L,legal:R,customization:p}){let d=h(_=>_.activeConnection),x=h(_=>_.connectionError),{LabelsProvider:W=Vt,ErrorsProvider:y=Ut}=p?.components??{},{merge:w=Gt,transform:T=jt}=p?.labels??{},{transform:S=$t}=p?.contextValue??{},{providerTree:U=Kt}=p?.rendering??{},G=useMemo(()=>w(a,o||{}),[o,w]),[l,I]=useState(false),[u,E]=useState(false),[m,a$1]=useState(false),[C,D]=useState(false),[c$1,M]=useState("idle"),[b,j]=useState("connectors"),[$,J]=useState(void 0),[Q,no]=useState(void 0),[X,v]=useState(""),[P,N]=useState(false),[O,Y]=useState("main"),F=useMemo(()=>({isConnected:P,activeConnection:d,connectionError:x,modalStates:{isConnectModalOpen:l,isConnectedModalOpen:u,isChainsListOpen:m,isChainsListOpenMobile:C},contentTypes:{connectModal:b,connectedModal:O},statuses:{connectedButton:c$1}}),[P,d,x,l,u,m,C,b,O,c$1]),ao=useMemo(()=>T(G,F),[G,T,F]),mo=useMemo(()=>S({appChains:n,solanaRPCUrls:r,withImpersonated:f,withBalance:z,withChain:L,isConnectModalOpen:l,setIsConnectModalOpen:I,isConnectedModalOpen:u,setIsConnectedModalOpen:E,isChainsListOpen:m,setIsChainsListOpen:a$1,isChainsListOpenMobile:C,setIsChainsListOpenMobile:D,connectedButtonStatus:c$1,setConnectedButtonStatus:M,connectedModalContentType:O,setConnectedModalContentType:Y,connectModalContentType:b,setConnectModalContentType:j,selectedAdapter:$,setSelectedAdapter:J,activeConnector:Q,setActiveConnector:no,impersonatedAddress:X,setImpersonatedAddress:v,isConnected:P,setIsConnected:N,legal:R},F),[n,r,f,z,L,l,I,u,E,m,a$1,C,D,c$1,M,O,Y,b,j,$,J,Q,no,X,v,P,N,R,S,F]),ro=jsx(y,{customization:p?.errors}),Z=jsx(W,{labels:ao,children:t}),oo=n||r?jsx(Eo,{withImpersonated:f,solanaRPCUrls:r,appChains:n,customization:p?.modals?.connectModal}):null,so=n||r?jsx(s,{solanaRPCUrls:r,appChains:n,transactionPool:e,pulsarAdapter:g,customization:p?.modals?.connectedModal}):null,go=jsxs(c.Provider,{value:mo,children:[ro,Z,oo,so]}),K=jsxs(c.Provider,{value:mo,children:[ro,Z,oo,so]}),po=U(K,{ErrorsProvider:ro,LabelsProvider:Z,MainContent:go,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:so||jsx(Fragment,{})},F);return jsx(Fragment,{children:po})}_t.displayName="NovaConnectProvider";async function Xn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Yn(){try{if(!await fo())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 vo())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 oa(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),n=await vo();if(t||n){let{preloadChainAdapters:r}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),e=[];t&&e.push(OrbitAdapter.EVM),n&&e.push(OrbitAdapter.SOLANA),await r(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 ta(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?fo():vo()}export{Po as ErrorsProvider,Mo as NovaConnectLabelsProvider,_t as NovaConnectProvider,Xn as getBlockchainUtilities,Yn as getEvmUtils,Zn as getSolanaUtils,oa as initializeBlockchainSupport,ta as isAdapterSupported};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuwaio/nova-connect",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Oleksandr Tkach",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"@tuwaio/satellite-evm": ">=0.2.3",
|
|
96
96
|
"@tuwaio/satellite-solana": ">=0.2.3",
|
|
97
97
|
"@tuwaio/satellite-react": ">=0.2.3",
|
|
98
|
-
"@tuwaio/pulsar-core": ">=0.
|
|
98
|
+
"@tuwaio/pulsar-core": ">=0.4",
|
|
99
99
|
"@tuwaio/nova-core": ">=0.2.2",
|
|
100
100
|
"@tuwaio/nova-transactions": ">=0.2.3",
|
|
101
101
|
"@wallet-standard/react": "1.x.x",
|
|
@@ -201,31 +201,31 @@
|
|
|
201
201
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
202
202
|
"@radix-ui/react-select": "^2.2.6",
|
|
203
203
|
"@tuwaio/orbit-core": "^0.2.4",
|
|
204
|
-
"@tuwaio/orbit-evm": "^0.2.
|
|
204
|
+
"@tuwaio/orbit-evm": "^0.2.7",
|
|
205
205
|
"@tuwaio/orbit-solana": "^0.2.2",
|
|
206
|
-
"@tuwaio/satellite-react": "^0.2.
|
|
206
|
+
"@tuwaio/satellite-react": "^0.2.6",
|
|
207
207
|
"@tuwaio/satellite-core": "^0.2.3",
|
|
208
|
-
"@tuwaio/satellite-evm": "^0.2.
|
|
209
|
-
"@tuwaio/satellite-solana": "^0.2.
|
|
210
|
-
"@tuwaio/pulsar-core": "^0.
|
|
208
|
+
"@tuwaio/satellite-evm": "^0.2.7",
|
|
209
|
+
"@tuwaio/satellite-solana": "^0.2.6",
|
|
210
|
+
"@tuwaio/pulsar-core": "^0.4.0",
|
|
211
211
|
"@wallet-standard/react": "^1.0.1",
|
|
212
|
-
"@wagmi/core": "^3.
|
|
213
|
-
"@web3icons/react": "^4.1.
|
|
214
|
-
"@web3icons/common": "^0.11.
|
|
212
|
+
"@wagmi/core": "^3.3.1",
|
|
213
|
+
"@web3icons/react": "^4.1.14",
|
|
214
|
+
"@web3icons/common": "^0.11.43",
|
|
215
215
|
"gill": "^0.14.0",
|
|
216
216
|
"clsx": "^2.1.1",
|
|
217
217
|
"dayjs": "^1.11.19",
|
|
218
218
|
"immer": "^11.1.3",
|
|
219
219
|
"ethereum-blockies-base64": "^1.0.2",
|
|
220
|
-
"framer-motion": "^12.
|
|
220
|
+
"framer-motion": "^12.29.0",
|
|
221
221
|
"react": "^19.2.3",
|
|
222
222
|
"react-toastify": "^11.0.5",
|
|
223
223
|
"tailwind-merge": "^3.4.0",
|
|
224
|
-
"viem": "^2.44.
|
|
224
|
+
"viem": "^2.44.4",
|
|
225
225
|
"zustand": "^5.0.10",
|
|
226
226
|
"@tailwindcss/postcss": "^4.1.18",
|
|
227
227
|
"@tailwindcss/vite": "^4.1.18",
|
|
228
|
-
"@types/react": "^19.2.
|
|
228
|
+
"@types/react": "^19.2.9",
|
|
229
229
|
"autoprefixer": "^10.4.23",
|
|
230
230
|
"postcss": "^8.5.6",
|
|
231
231
|
"postcss-cli": "^11.0.1",
|
|
@@ -234,8 +234,8 @@
|
|
|
234
234
|
"tw-animate-css": "^1.4.0",
|
|
235
235
|
"typescript": "^5.9.3",
|
|
236
236
|
"tsup": "^8.5.1",
|
|
237
|
-
"@tuwaio/nova-
|
|
238
|
-
"@tuwaio/nova-
|
|
237
|
+
"@tuwaio/nova-core": "^0.2.6",
|
|
238
|
+
"@tuwaio/nova-transactions": "^0.2.7"
|
|
239
239
|
},
|
|
240
240
|
"scripts": {
|
|
241
241
|
"start": "tsup src/index.ts --watch",
|