@tuwaio/nova-connect 0.5.8 → 0.5.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/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +11 -11
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunk7HBYKNSL_cjs=require('./chunk-7HBYKNSL.cjs'),chunkBVVQR6Y7_cjs=require('./chunk-BVVQR6Y7.cjs'),chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkMGBN4EIT_cjs=require('./chunk-MGBN4EIT.cjs'),chunkV6XDFRWV_cjs=require('./chunk-V6XDFRWV.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),siwxReact=require('@tuwaio/siwx-react');var We=({title:e,rawError:o,onCopyComplete:r,errorType:c,isConnected:n,...d})=>jsxRuntime.jsx(chunk7HBYKNSL_cjs.H,{title:e,rawError:o,onCopyComplete:r,customization:d.customization}),ze=e=>{let o=chunkBVVQR6Y7_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":o.somethingWentWrong})},Ie=(e,o)=>{e(o.title,o.rawError,o.errorKey);},He=e=>{e();},Ue=(e,o)=>{if(e&&process.env.NODE_ENV==="development"){let r=typeof o=="string"?o:o.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ve=e=>e,Fe=e=>e;function ie({containerId:e="nova-connect-errors",position:o="top-center",autoClose:r=7e3,draggable:c=false,customization:n}){let d=chunkBVVQR6Y7_cjs.h(),x=chunkV6XDFRWV_cjs.d(l=>l.switchNetworkError),R=chunkV6XDFRWV_cjs.d(l=>l.activeConnection),M=chunkV6XDFRWV_cjs.d(l=>l.connectionError),{ToastError:t=We,Container:B=ze}=n?.components??{},{showError:L=Ie,dismissError:f=He,onCopyComplete:i=Ue}=n?.handlers??{},{errorTitle:h=Ve,errorHash:w=Fe}=n??{},u=react.useRef(new Set),s=react.useRef(null),E=!!M,g=!!x,p=!!R?.isConnected,T=E||g,S=M||x||null,P=E?"wallet":g?"switch":null,a={hasWalletError:E,hasSwitchError:g,isConnected:p,hasAnyError:T,primaryError:S,errorType:P},I=d.somethingWentWrong;switch(a.errorType){case "wallet":I=d.connectionError;break;case "switch":I=d.errorWhenChainSwitching;break}let A=h(I,{errorType:a.errorType}),$=a.primaryError?`${a.errorType}-${a.primaryError.message.substring(0,50)}`:null,O=w($,{primaryError:a.primaryError,errorType:a.errorType}),N=react.useCallback(()=>{f(()=>{s.current&&(reactToastify.toast.dismiss(s.current),s.current=null),reactToastify.toast.dismiss({containerId:e});});},[e,f]),k=react.useCallback((l,m)=>{i(l,m,P);},[i,P]),D=react.useCallback((l,m,y)=>{if(N(),!u.current.has(y))try{let U={containerId:e,toastId:y,onClose:()=>{u.current.delete(y),s.current=null;}},J=n?.toastOptions?.error?.({title:l,rawError:m,errorType:a.errorType,isConnected:a.isConnected}),V={...U,...J};reactToastify.toast.error(jsxRuntime.jsx(t,{title:l,rawError:m,errorType:a.errorType,isConnected:a.isConnected,onCopyComplete:Q=>k(Q,m),customization:n?.toastErrorCustomization}),V),u.current.add(y),s.current=y;}catch(U){console.error("Failed to show error toast:",U);}},[N,e,n?.toastOptions?.error,n?.toastErrorCustomization,t,a.errorType,a.isConnected,k]),W=react.useCallback((l,m,y)=>{L(D,{title:l,rawError:m,errorKey:y,errorType:P});},[D,L,P]);react.useEffect(()=>{if(p&&!T){N(),u.current.clear();return}if(T&&S&&O){if(p&&P!=="switch")return;W(A,S,O);}},[T,p,S,P,A,O,W,N]),react.useEffect(()=>()=>{N(),u.current.clear();},[N]);let _=n?.classNames?.container?n.classNames.container({hasErrors:a.hasAnyError,errorType:a.errorType}):"novacon:p-0 novacon:bg-transparent",H=react.useMemo(()=>{let l=n?.toastCloseButton;return l?({closeToast:m})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:m,...l}):novaCore.ToastCloseButton},[n?.toastCloseButton]),j={...{containerId:e,position:o,closeOnClick:false,icon:false,closeButton:H,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:c,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:_};return jsxRuntime.jsx(B,{...j})}ie.displayName="ErrorsProvider";function le({labels:e,children:o}){let r=react.useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(d=>!(d in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunkBVVQR6Y7_cjs.g.Provider,{value:r,children:o})}le.displayName="NovaConnectLabelsProvider";function de(e){let{enabled:o=true,verifier:r,destroyer:c,domain:n,uri:d,statement:x,onSuccess:R,onError:M}=e,t=chunkV6XDFRWV_cjs.d(s=>s.activeConnection),B=chunkV6XDFRWV_cjs.d(s=>s.disconnect),{signIn:L}=siwxReact.useSiwx(),f=siwxReact.useSiwxSessionStore(s=>s.session),i=siwxReact.useSiwxSessionStore(s=>s.status),h=siwxReact.useSiwxSessionStore(s=>s.reset),w=react.useRef(null),u=react.useRef(false);return react.useEffect(()=>{(!t?.isConnected||!t?.address)&&(w.current=null,(i==="authenticated"||f)&&(h(),c&&c().catch(s=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",s);})));},[t?.isConnected,t?.address,i,f,h,c]),react.useEffect(()=>{if(!(!o||!t?.isConnected||!t?.address||!t?.chainId)&&t.signMessage&&!u.current&&!(i==="building"||i==="signing"||i==="verifying"))try{let s={address:String(t.address),chainId:t.chainId,signMessage:t.signMessage,isConnected:t.isConnected},E=siwxReact.getSatelliteSiwxFields(s,{domain:n,uri:d,statement:x});if(i==="authenticated"&&f?.address===E.address||w.current===E.address)return;if(w.current=E.address,!r){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let g=p=>{let T=p instanceof Error?p.message:String(p);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",T);let S=t.address;t.connectorType&&S===t.address&&B(t.connectorType),h(),M?.(T);};u.current=!0,L({signer:t.signMessage,verifier:r,fields:E,onSuccess:R,onError:g}).catch(g).finally(()=>{u.current=!1;});}catch(s){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",s);}},[t?.isConnected,t?.address,t?.chainId,t?.signMessage,t?.connectorType,B,o,i,f?.address,r,n,d,x,L,h,R,M]),null}var $e=({labels:e,children:o})=>jsxRuntime.jsx(le,{labels:e,children:o}),_e=({customization:e})=>jsxRuntime.jsx(ie,{customization:e}),je=(e,o)=>novaCore.deepMerge(e,o||{}),Je=e=>e,Qe=e=>e,Ye=(e,o,r)=>e;function Ze({labels:e,children:o,appChains:r,solanaRPCUrls:c,transactionPool:n,pulsarAdapter:d,withImpersonated:x,withBalance:R,withChain:M,popularConnectors:t,customConnectorGroups:B,legal:L,siwx:f,customization:i,pagination:h}){let w=chunkV6XDFRWV_cjs.d(te=>te.activeConnection),u=chunkV6XDFRWV_cjs.d(te=>te.connectionError),{LabelsProvider:s=$e,ErrorsProvider:E=_e}=i?.components??{},{merge:g=je,transform:p=Je}=i?.labels??{},{transform:T=Qe}=i?.contextValue??{},{providerTree:S=Ye}=i?.rendering??{},P=react.useMemo(()=>g(chunkMGBN4EIT_cjs.a,e||{}),[e,g]),[a,I]=react.useState(false),[A,$]=react.useState(false),[O,N]=react.useState(false),[k,D]=react.useState(false),[W,_]=react.useState("idle"),[H,me]=react.useState("connectors"),[j,l]=react.useState(void 0),[m,y]=react.useState(void 0),[U,J]=react.useState(""),[V,Q]=react.useState(false),[Y,Ne]=react.useState("main"),xe={appChains:r,solanaRPCUrls:c,withImpersonated:x,popularConnectors:t,customConnectorGroups:B,withBalance:R,withChain:M,isConnectModalOpen:a,setIsConnectModalOpen:I,isConnectedModalOpen:A,setIsConnectedModalOpen:$,isChainsListOpen:O,setIsChainsListOpen:N,isChainsListOpenMobile:k,setIsChainsListOpenMobile:D,connectedButtonStatus:W,setConnectedButtonStatus:_,connectedModalContentType:Y,setConnectedModalContentType:Ne,connectModalContentType:H,setConnectModalContentType:me,selectedAdapter:j,setSelectedAdapter:l,activeConnector:m,setActiveConnector:y,impersonatedAddress:U,setImpersonatedAddress:J,isConnected:V,setIsConnected:Q,legal:L},K=react.useMemo(()=>({isConnected:V,activeConnection:w,connectionError:u,modalStates:{isConnectModalOpen:a,isConnectedModalOpen:A,isChainsListOpen:O,isChainsListOpenMobile:k},contentTypes:{connectModal:H,connectedModal:Y},statuses:{connectedButton:W}}),[V,w,u,a,A,O,k,H,Y,W]),Me=react.useMemo(()=>p(P,K),[P,p,K]),Ce=T(xe,K),Z=jsxRuntime.jsx(E,{customization:i?.errors}),ee=jsxRuntime.jsx(s,{labels:Me,children:o}),oe=r||c?jsxRuntime.jsx(chunk7HBYKNSL_cjs.G,{solanaRPCUrls:c,appChains:r,customization:i?.modals?.connectModal}):null,re=r||c?jsxRuntime.jsx(chunk7HBYKNSL_cjs.t,{solanaRPCUrls:c,appChains:r,transactionPool:n,pulsarAdapter:d,customization:i?.modals?.connectedModal,pagination:h}):null,Le=jsxRuntime.jsxs(chunkBVVQR6Y7_cjs.c.Provider,{value:Ce,children:[jsxRuntime.jsx(de,{...f}),Z,ee,oe,re]}),Oe=jsxRuntime.jsxs(chunkBVVQR6Y7_cjs.c.Provider,{value:Ce,children:[jsxRuntime.jsx(de,{...f}),Z,ee,oe,re]}),Re=S(Oe,{ErrorsProvider:Z,LabelsProvider:ee,MainContent:Le,ConnectModal:oe||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:re||jsxRuntime.jsx(jsxRuntime.Fragment,{})},K);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Re})}Ze.displayName="NovaConnectProvider";async function kr(){let{getAllAdaptersStatus:e}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await q(),hasSolanaUtils:await X(),adaptersStatus:e()}}async function q(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function X(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Wr(){try{if(!await q())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let o=await import('./evm/index.cjs'),r=await o.getEvmExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"EVM utilities not available"}}}async function zr(){try{if(!await X())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let o=await import('./solana/index.cjs'),r=await o.getSolanaExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"Solana utilities not available"}}}async function Ir(){let e={evm:false,solana:false,errors:[]};try{let o=await q(),r=await X();if(o||r){let{preloadChainAdapters:c}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),n=[];o&&n.push(orbitCore.OrbitAdapter.EVM),r&&n.push(orbitCore.OrbitAdapter.SOLANA),await c(n),e.evm=o,e.solana=r;}else e.errors.push("No blockchain packages available for initialization");}catch(o){let r=o instanceof Error?o.message:"Unknown initialization error";e.errors.push(r);}return e}async function Hr(e){return e===orbitCore.OrbitAdapter.Starknet||e!==orbitCore.OrbitAdapter.EVM&&e!==orbitCore.OrbitAdapter.SOLANA?false:e===orbitCore.OrbitAdapter.EVM?q():X()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.r}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.w}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.q}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.u}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.s}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.t}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.v}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.x}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.f}});Object.defineProperty(exports,"useNovaSiwx",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.p}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.y}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.z}});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=ie;exports.NovaConnectLabelsProvider=le;exports.NovaConnectProvider=Ze;exports.NovaSiwxWatcher=de;exports.getBlockchainUtilities=kr;exports.getEvmUtils=Wr;exports.getSolanaUtils=zr;exports.initializeBlockchainSupport=Ir;exports.isAdapterSupported=Hr;
|
|
1
|
+
'use strict';var chunk7HBYKNSL_cjs=require('./chunk-7HBYKNSL.cjs'),chunkBVVQR6Y7_cjs=require('./chunk-BVVQR6Y7.cjs'),chunkK44IHM6B_cjs=require('./chunk-K44IHM6B.cjs'),chunkMGBN4EIT_cjs=require('./chunk-MGBN4EIT.cjs'),chunkV6XDFRWV_cjs=require('./chunk-V6XDFRWV.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),siwxReact=require('@tuwaio/siwx-react');var Ie=({title:e,rawError:o,onCopyComplete:r,errorType:l,isConnected:n,...p})=>jsxRuntime.jsx(chunk7HBYKNSL_cjs.H,{title:e,rawError:o,onCopyComplete:r,customization:p.customization}),We=e=>{let o=chunkBVVQR6Y7_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":o.somethingWentWrong})},ze=(e,o)=>{e(o.title,o.rawError,o.errorKey);},He=e=>{e();},Ue=(e,o)=>{if(e&&process.env.NODE_ENV==="development"){let r=typeof o=="string"?o:o.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ve=e=>e,Fe=e=>e;function ie({containerId:e="nova-connect-errors",position:o="top-center",autoClose:r=7e3,draggable:l=false,customization:n}){let p=chunkBVVQR6Y7_cjs.h(),x=chunkV6XDFRWV_cjs.d(i=>i.switchNetworkError),A=chunkV6XDFRWV_cjs.d(i=>i.activeConnection),M=chunkV6XDFRWV_cjs.d(i=>i.connectionError),{ToastError:L=Ie,Container:k=We}=n?.components??{},{showError:O=ze,dismissError:S=He,onCopyComplete:d=Ue}=n?.handlers??{},{errorTitle:t=Ve,errorHash:R=Fe}=n??{},C=react.useRef(new Set),m=react.useRef(null),u=!!M,v=!!x,f=!!A?.isConnected,g=u||v,s=M||x||null,c=u?"wallet":v?"switch":null,a={hasWalletError:u,hasSwitchError:v,isConnected:f,hasAnyError:g,primaryError:s,errorType:c},y=p.somethingWentWrong;switch(a.errorType){case "wallet":y=p.connectionError;break;case "switch":y=p.errorWhenChainSwitching;break}let h=t(y,{errorType:a.errorType}),H=a.primaryError?`${a.errorType}-${a.primaryError.message.substring(0,50)}`:null,B=R(H,{primaryError:a.primaryError,errorType:a.errorType}),N=react.useCallback(()=>{S(()=>{m.current&&(reactToastify.toast.dismiss(m.current),m.current=null),reactToastify.toast.dismiss({containerId:e});});},[e,S]),I=react.useCallback((i,E)=>{d(i,E,c);},[d,c]),K=react.useCallback((i,E,w)=>{if(N(),!C.current.has(w))try{let V={containerId:e,toastId:w,onClose:()=>{C.current.delete(w),m.current=null;}},J=n?.toastOptions?.error?.({title:i,rawError:E,errorType:a.errorType,isConnected:a.isConnected}),F={...V,...J};reactToastify.toast.error(jsxRuntime.jsx(L,{title:i,rawError:E,errorType:a.errorType,isConnected:a.isConnected,onCopyComplete:Q=>I(Q,E),customization:n?.toastErrorCustomization}),F),C.current.add(w),m.current=w;}catch(V){console.error("Failed to show error toast:",V);}},[N,e,n?.toastOptions?.error,n?.toastErrorCustomization,L,a.errorType,a.isConnected,I]),W=react.useCallback((i,E,w)=>{O(K,{title:i,rawError:E,errorKey:w,errorType:c});},[K,O,c]);react.useEffect(()=>{if(f&&!g){N(),C.current.clear();return}if(g&&s&&B){if(f&&c!=="switch")return;W(h,s,B);}},[g,f,s,c,h,B,W,N]),react.useEffect(()=>()=>{N(),C.current.clear();},[N]);let _=n?.classNames?.container?n.classNames.container({hasErrors:a.hasAnyError,errorType:a.errorType}):"novacon:p-0 novacon:bg-transparent",U=react.useMemo(()=>{let i=n?.toastCloseButton;return i?({closeToast:E})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:E,...i}):novaCore.ToastCloseButton},[n?.toastCloseButton]),j={...{containerId:e,position:o,closeOnClick:false,icon:false,closeButton:U,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:l,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:_};return jsxRuntime.jsx(k,{...j})}ie.displayName="ErrorsProvider";function le({labels:e,children:o}){let r=react.useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(p=>!(p in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunkBVVQR6Y7_cjs.g.Provider,{value:r,children:o})}le.displayName="NovaConnectLabelsProvider";function de(e){let{enabled:o=true,verifier:r,destroyer:l,domain:n,uri:p,statement:x,expirationTime:A,expirationSeconds:M,notBefore:L,requestId:k,resources:O,onSuccess:S,onError:d}=e,t=chunkV6XDFRWV_cjs.d(s=>s.activeConnection),R=chunkV6XDFRWV_cjs.d(s=>s.disconnect),{signIn:C}=siwxReact.useSiwx(),m=siwxReact.useSiwxSessionStore(s=>s.session),u=siwxReact.useSiwxSessionStore(s=>s.status),v=siwxReact.useSiwxSessionStore(s=>s.reset),f=react.useRef(null),g=react.useRef(false);return react.useEffect(()=>{(!t?.isConnected||!t?.address)&&(f.current=null,(u==="authenticated"||m)&&(v(),l&&l().catch(s=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",s);})));},[t?.isConnected,t?.address,u,m,v,l]),react.useEffect(()=>{if(!(!o||!t?.isConnected||!t?.address||!t?.chainId)&&t.signMessage&&!g.current&&!(u==="building"||u==="signing"||u==="verifying"))try{let s={address:String(t.address),chainId:t.chainId,signMessage:t.signMessage,isConnected:t.isConnected},c=siwxReact.getSatelliteSiwxFields(s,{domain:n,uri:p,statement:x,expirationTime:A,expirationSeconds:M,notBefore:L,requestId:k,resources:O});if(u==="authenticated"&&m?.address===c.address||f.current===c.address)return;if(f.current=c.address,!r){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let a=y=>{let h=y instanceof Error?y.message:String(y);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",h);let H=t.address;t.connectorType&&H===t.address&&R(t.connectorType),v(),d?.(h);};g.current=!0,C({signer:t.signMessage,verifier:r,fields:c,onSuccess:S,onError:a}).catch(a).finally(()=>{g.current=!1;});}catch(s){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",s);}},[t?.isConnected,t?.address,t?.chainId,t?.signMessage,t?.connectorType,R,o,u,m?.address,r,n,p,x,A,M,L,k,O,C,v,S,d]),null}var $e=({labels:e,children:o})=>jsxRuntime.jsx(le,{labels:e,children:o}),_e=({customization:e})=>jsxRuntime.jsx(ie,{customization:e}),je=(e,o)=>novaCore.deepMerge(e,o||{}),Je=e=>e,Qe=e=>e,Ye=(e,o,r)=>e;function Ze({labels:e,children:o,appChains:r,solanaRPCUrls:l,transactionPool:n,pulsarAdapter:p,withImpersonated:x,withBalance:A,withChain:M,popularConnectors:L,customConnectorGroups:k,legal:O,siwx:S,customization:d,pagination:t}){let R=chunkV6XDFRWV_cjs.d(te=>te.activeConnection),C=chunkV6XDFRWV_cjs.d(te=>te.connectionError),{LabelsProvider:m=$e,ErrorsProvider:u=_e}=d?.components??{},{merge:v=je,transform:f=Je}=d?.labels??{},{transform:g=Qe}=d?.contextValue??{},{providerTree:s=Ye}=d?.rendering??{},c=react.useMemo(()=>v(chunkMGBN4EIT_cjs.a,e||{}),[e,v]),[a,y]=react.useState(false),[h,H]=react.useState(false),[B,N]=react.useState(false),[I,K]=react.useState(false),[W,_]=react.useState("idle"),[U,me]=react.useState("connectors"),[j,i]=react.useState(void 0),[E,w]=react.useState(void 0),[V,J]=react.useState(""),[F,Q]=react.useState(false),[Y,Ne]=react.useState("main"),xe={appChains:r,solanaRPCUrls:l,withImpersonated:x,popularConnectors:L,customConnectorGroups:k,withBalance:A,withChain:M,isConnectModalOpen:a,setIsConnectModalOpen:y,isConnectedModalOpen:h,setIsConnectedModalOpen:H,isChainsListOpen:B,setIsChainsListOpen:N,isChainsListOpenMobile:I,setIsChainsListOpenMobile:K,connectedButtonStatus:W,setConnectedButtonStatus:_,connectedModalContentType:Y,setConnectedModalContentType:Ne,connectModalContentType:U,setConnectModalContentType:me,selectedAdapter:j,setSelectedAdapter:i,activeConnector:E,setActiveConnector:w,impersonatedAddress:V,setImpersonatedAddress:J,isConnected:F,setIsConnected:Q,legal:O},q=react.useMemo(()=>({isConnected:F,activeConnection:R,connectionError:C,modalStates:{isConnectModalOpen:a,isConnectedModalOpen:h,isChainsListOpen:B,isChainsListOpenMobile:I},contentTypes:{connectModal:U,connectedModal:Y},statuses:{connectedButton:W}}),[F,R,C,a,h,B,I,U,Y,W]),Me=react.useMemo(()=>f(c,q),[c,f,q]),Ce=g(xe,q),Z=jsxRuntime.jsx(u,{customization:d?.errors}),ee=jsxRuntime.jsx(m,{labels:Me,children:o}),oe=r||l?jsxRuntime.jsx(chunk7HBYKNSL_cjs.G,{solanaRPCUrls:l,appChains:r,customization:d?.modals?.connectModal}):null,re=r||l?jsxRuntime.jsx(chunk7HBYKNSL_cjs.t,{solanaRPCUrls:l,appChains:r,transactionPool:n,pulsarAdapter:p,customization:d?.modals?.connectedModal,pagination:t}):null,Le=jsxRuntime.jsxs(chunkBVVQR6Y7_cjs.c.Provider,{value:Ce,children:[jsxRuntime.jsx(de,{...S}),Z,ee,oe,re]}),Oe=jsxRuntime.jsxs(chunkBVVQR6Y7_cjs.c.Provider,{value:Ce,children:[jsxRuntime.jsx(de,{...S}),Z,ee,oe,re]}),Re=s(Oe,{ErrorsProvider:Z,LabelsProvider:ee,MainContent:Le,ConnectModal:oe||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:re||jsxRuntime.jsx(jsxRuntime.Fragment,{})},q);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Re})}Ze.displayName="NovaConnectProvider";async function kr(){let{getAllAdaptersStatus:e}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await X(),hasSolanaUtils:await $(),adaptersStatus:e()}}async function X(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function $(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Ir(){try{if(!await X())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let o=await import('./evm/index.cjs'),r=await o.getEvmExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"EVM utilities not available"}}}async function Wr(){try{if(!await $())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let o=await import('./solana/index.cjs'),r=await o.getSolanaExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"Solana utilities not available"}}}async function zr(){let e={evm:false,solana:false,errors:[]};try{let o=await X(),r=await $();if(o||r){let{preloadChainAdapters:l}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),n=[];o&&n.push(orbitCore.OrbitAdapter.EVM),r&&n.push(orbitCore.OrbitAdapter.SOLANA),await l(n),e.evm=o,e.solana=r;}else e.errors.push("No blockchain packages available for initialization");}catch(o){let r=o instanceof Error?o.message:"Unknown initialization error";e.errors.push(r);}return e}async function Hr(e){return e===orbitCore.OrbitAdapter.Starknet||e!==orbitCore.OrbitAdapter.EVM&&e!==orbitCore.OrbitAdapter.SOLANA?false:e===orbitCore.OrbitAdapter.EVM?X():$()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.r}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.w}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.q}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.u}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.s}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.t}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.v}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.x}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.f}});Object.defineProperty(exports,"useNovaSiwx",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.p}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.y}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkBVVQR6Y7_cjs.z}});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=ie;exports.NovaConnectLabelsProvider=le;exports.NovaConnectProvider=Ze;exports.NovaSiwxWatcher=de;exports.getBlockchainUtilities=kr;exports.getEvmUtils=Ir;exports.getSolanaUtils=Wr;exports.initializeBlockchainSupport=zr;exports.isAdapterSupported=Hr;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {G,t,H}from'./chunk-UOYHTY7H.js';import {h,g,c}from'./chunk-SOJLLC7T.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,r as getAvailableChainIds,w as getAvailableSolanaClusters,q as getConnectChainId,u as getFilteredConnectors,s as getGroupedConnectors,n as getLabelWithFallback,t as hasAvailableConnectors,v as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,x 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,p as useNovaSiwx,y as useWalletChainsList,z as useWalletNativeBalance}from'./chunk-SOJLLC7T.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 {d}from'./chunk-EYP534IS.js';import {OrbitAdapter}from'@tuwaio/orbit-core';import {ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useSiwx,useSiwxSessionStore,getSatelliteSiwxFields}from'@tuwaio/siwx-react';var We=({title:e,rawError:o,onCopyComplete:r,errorType:c,isConnected:n,...d})=>jsx(H,{title:e,rawError:o,onCopyComplete:r,customization:d.customization}),ze=e=>{let o=h();return jsx(ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":o.somethingWentWrong})},Ie=(e,o)=>{e(o.title,o.rawError,o.errorKey);},He=e=>{e();},Ue=(e,o)=>{if(e&&process.env.NODE_ENV==="development"){let r=typeof o=="string"?o:o.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ve=e=>e,Fe=e=>e;function ie({containerId:e="nova-connect-errors",position:o="top-center",autoClose:r=7e3,draggable:c=false,customization:n}){let d$1=h(),x=d(l=>l.switchNetworkError),R=d(l=>l.activeConnection),M=d(l=>l.connectionError),{ToastError:t=We,Container:B=ze}=n?.components??{},{showError:L=Ie,dismissError:f=He,onCopyComplete:i=Ue}=n?.handlers??{},{errorTitle:h$1=Ve,errorHash:w=Fe}=n??{},u=useRef(new Set),s=useRef(null),E=!!M,g=!!x,p=!!R?.isConnected,T=E||g,S=M||x||null,P=E?"wallet":g?"switch":null,a={hasWalletError:E,hasSwitchError:g,isConnected:p,hasAnyError:T,primaryError:S,errorType:P},I=d$1.somethingWentWrong;switch(a.errorType){case "wallet":I=d$1.connectionError;break;case "switch":I=d$1.errorWhenChainSwitching;break}let A=h$1(I,{errorType:a.errorType}),$=a.primaryError?`${a.errorType}-${a.primaryError.message.substring(0,50)}`:null,O=w($,{primaryError:a.primaryError,errorType:a.errorType}),N=useCallback(()=>{f(()=>{s.current&&(toast.dismiss(s.current),s.current=null),toast.dismiss({containerId:e});});},[e,f]),k=useCallback((l,m)=>{i(l,m,P);},[i,P]),D=useCallback((l,m,y)=>{if(N(),!u.current.has(y))try{let U={containerId:e,toastId:y,onClose:()=>{u.current.delete(y),s.current=null;}},J=n?.toastOptions?.error?.({title:l,rawError:m,errorType:a.errorType,isConnected:a.isConnected}),V={...U,...J};toast.error(jsx(t,{title:l,rawError:m,errorType:a.errorType,isConnected:a.isConnected,onCopyComplete:Q=>k(Q,m),customization:n?.toastErrorCustomization}),V),u.current.add(y),s.current=y;}catch(U){console.error("Failed to show error toast:",U);}},[N,e,n?.toastOptions?.error,n?.toastErrorCustomization,t,a.errorType,a.isConnected,k]),W=useCallback((l,m,y)=>{L(D,{title:l,rawError:m,errorKey:y,errorType:P});},[D,L,P]);useEffect(()=>{if(p&&!T){N(),u.current.clear();return}if(T&&S&&O){if(p&&P!=="switch")return;W(A,S,O);}},[T,p,S,P,A,O,W,N]),useEffect(()=>()=>{N(),u.current.clear();},[N]);let _=n?.classNames?.container?n.classNames.container({hasErrors:a.hasAnyError,errorType:a.errorType}):"novacon:p-0 novacon:bg-transparent",H=useMemo(()=>{let l=n?.toastCloseButton;return l?({closeToast:m})=>jsx(ToastCloseButton,{closeToast:m,...l}):ToastCloseButton},[n?.toastCloseButton]),j={...{containerId:e,position:o,closeOnClick:false,icon:false,closeButton:H,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:c,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:_};return jsx(B,{...j})}ie.displayName="ErrorsProvider";function le({labels:e,children:o}){let r=useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(d=>!(d in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:r,children:o})}le.displayName="NovaConnectLabelsProvider";function de(e){let{enabled:o=true,verifier:r,destroyer:c,domain:n,uri:d$1,statement:x,onSuccess:R,onError:M}=e,t=d(s=>s.activeConnection),B=d(s=>s.disconnect),{signIn:L}=useSiwx(),f=useSiwxSessionStore(s=>s.session),i=useSiwxSessionStore(s=>s.status),h=useSiwxSessionStore(s=>s.reset),w=useRef(null),u=useRef(false);return useEffect(()=>{(!t?.isConnected||!t?.address)&&(w.current=null,(i==="authenticated"||f)&&(h(),c&&c().catch(s=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",s);})));},[t?.isConnected,t?.address,i,f,h,c]),useEffect(()=>{if(!(!o||!t?.isConnected||!t?.address||!t?.chainId)&&t.signMessage&&!u.current&&!(i==="building"||i==="signing"||i==="verifying"))try{let s={address:String(t.address),chainId:t.chainId,signMessage:t.signMessage,isConnected:t.isConnected},E=getSatelliteSiwxFields(s,{domain:n,uri:d$1,statement:x});if(i==="authenticated"&&f?.address===E.address||w.current===E.address)return;if(w.current=E.address,!r){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let g=p=>{let T=p instanceof Error?p.message:String(p);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",T);let S=t.address;t.connectorType&&S===t.address&&B(t.connectorType),h(),M?.(T);};u.current=!0,L({signer:t.signMessage,verifier:r,fields:E,onSuccess:R,onError:g}).catch(g).finally(()=>{u.current=!1;});}catch(s){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",s);}},[t?.isConnected,t?.address,t?.chainId,t?.signMessage,t?.connectorType,B,o,i,f?.address,r,n,d$1,x,L,h,R,M]),null}var $e=({labels:e,children:o})=>jsx(le,{labels:e,children:o}),_e=({customization:e})=>jsx(ie,{customization:e}),je=(e,o)=>deepMerge(e,o||{}),Je=e=>e,Qe=e=>e,Ye=(e,o,r)=>e;function Ze({labels:e,children:o,appChains:r,solanaRPCUrls:c$1,transactionPool:n,pulsarAdapter:d$1,withImpersonated:x,withBalance:R,withChain:M,popularConnectors:t$1,customConnectorGroups:B,legal:L,siwx:f,customization:i,pagination:h}){let w=d(te=>te.activeConnection),u=d(te=>te.connectionError),{LabelsProvider:s=$e,ErrorsProvider:E=_e}=i?.components??{},{merge:g=je,transform:p=Je}=i?.labels??{},{transform:T=Qe}=i?.contextValue??{},{providerTree:S=Ye}=i?.rendering??{},P=useMemo(()=>g(a,e||{}),[e,g]),[a$1,I]=useState(false),[A,$]=useState(false),[O,N]=useState(false),[k,D]=useState(false),[W,_]=useState("idle"),[H,me]=useState("connectors"),[j,l]=useState(void 0),[m,y]=useState(void 0),[U,J]=useState(""),[V,Q]=useState(false),[Y,Ne]=useState("main"),xe={appChains:r,solanaRPCUrls:c$1,withImpersonated:x,popularConnectors:t$1,customConnectorGroups:B,withBalance:R,withChain:M,isConnectModalOpen:a$1,setIsConnectModalOpen:I,isConnectedModalOpen:A,setIsConnectedModalOpen:$,isChainsListOpen:O,setIsChainsListOpen:N,isChainsListOpenMobile:k,setIsChainsListOpenMobile:D,connectedButtonStatus:W,setConnectedButtonStatus:_,connectedModalContentType:Y,setConnectedModalContentType:Ne,connectModalContentType:H,setConnectModalContentType:me,selectedAdapter:j,setSelectedAdapter:l,activeConnector:m,setActiveConnector:y,impersonatedAddress:U,setImpersonatedAddress:J,isConnected:V,setIsConnected:Q,legal:L},K=useMemo(()=>({isConnected:V,activeConnection:w,connectionError:u,modalStates:{isConnectModalOpen:a$1,isConnectedModalOpen:A,isChainsListOpen:O,isChainsListOpenMobile:k},contentTypes:{connectModal:H,connectedModal:Y},statuses:{connectedButton:W}}),[V,w,u,a$1,A,O,k,H,Y,W]),Me=useMemo(()=>p(P,K),[P,p,K]),Ce=T(xe,K),Z=jsx(E,{customization:i?.errors}),ee=jsx(s,{labels:Me,children:o}),oe=r||c$1?jsx(G,{solanaRPCUrls:c$1,appChains:r,customization:i?.modals?.connectModal}):null,re=r||c$1?jsx(t,{solanaRPCUrls:c$1,appChains:r,transactionPool:n,pulsarAdapter:d$1,customization:i?.modals?.connectedModal,pagination:h}):null,Le=jsxs(c.Provider,{value:Ce,children:[jsx(de,{...f}),Z,ee,oe,re]}),Oe=jsxs(c.Provider,{value:Ce,children:[jsx(de,{...f}),Z,ee,oe,re]}),Re=S(Oe,{ErrorsProvider:Z,LabelsProvider:ee,MainContent:Le,ConnectModal:oe||jsx(Fragment,{}),ConnectedModal:re||jsx(Fragment,{})},K);return jsx(Fragment,{children:Re})}Ze.displayName="NovaConnectProvider";async function kr(){let{getAllAdaptersStatus:e}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await q(),hasSolanaUtils:await X(),adaptersStatus:e()}}async function q(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function X(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Wr(){try{if(!await q())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let o=await import('./evm/index.js'),r=await o.getEvmExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"EVM utilities not available"}}}async function zr(){try{if(!await X())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let o=await import('./solana/index.js'),r=await o.getSolanaExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"Solana utilities not available"}}}async function Ir(){let e={evm:false,solana:false,errors:[]};try{let o=await q(),r=await X();if(o||r){let{preloadChainAdapters:c}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),n=[];o&&n.push(OrbitAdapter.EVM),r&&n.push(OrbitAdapter.SOLANA),await c(n),e.evm=o,e.solana=r;}else e.errors.push("No blockchain packages available for initialization");}catch(o){let r=o instanceof Error?o.message:"Unknown initialization error";e.errors.push(r);}return e}async function Hr(e){return e===OrbitAdapter.Starknet||e!==OrbitAdapter.EVM&&e!==OrbitAdapter.SOLANA?false:e===OrbitAdapter.EVM?q():X()}export{ie as ErrorsProvider,le as NovaConnectLabelsProvider,Ze as NovaConnectProvider,de as NovaSiwxWatcher,kr as getBlockchainUtilities,Wr as getEvmUtils,zr as getSolanaUtils,Ir as initializeBlockchainSupport,Hr as isAdapterSupported};
|
|
1
|
+
import {G,t,H}from'./chunk-UOYHTY7H.js';import {h,g,c}from'./chunk-SOJLLC7T.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,r as getAvailableChainIds,w as getAvailableSolanaClusters,q as getConnectChainId,u as getFilteredConnectors,s as getGroupedConnectors,n as getLabelWithFallback,t as hasAvailableConnectors,v as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,x 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,p as useNovaSiwx,y as useWalletChainsList,z as useWalletNativeBalance}from'./chunk-SOJLLC7T.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 {d}from'./chunk-EYP534IS.js';import {OrbitAdapter}from'@tuwaio/orbit-core';import {ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useSiwx,useSiwxSessionStore,getSatelliteSiwxFields}from'@tuwaio/siwx-react';var Ie=({title:e,rawError:o,onCopyComplete:r,errorType:l,isConnected:n,...p})=>jsx(H,{title:e,rawError:o,onCopyComplete:r,customization:p.customization}),We=e=>{let o=h();return jsx(ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":o.somethingWentWrong})},ze=(e,o)=>{e(o.title,o.rawError,o.errorKey);},He=e=>{e();},Ue=(e,o)=>{if(e&&process.env.NODE_ENV==="development"){let r=typeof o=="string"?o:o.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ve=e=>e,Fe=e=>e;function ie({containerId:e="nova-connect-errors",position:o="top-center",autoClose:r=7e3,draggable:l=false,customization:n}){let p=h(),x=d(i=>i.switchNetworkError),A=d(i=>i.activeConnection),M=d(i=>i.connectionError),{ToastError:L=Ie,Container:k=We}=n?.components??{},{showError:O=ze,dismissError:S=He,onCopyComplete:d$1=Ue}=n?.handlers??{},{errorTitle:t=Ve,errorHash:R=Fe}=n??{},C=useRef(new Set),m=useRef(null),u=!!M,v=!!x,f=!!A?.isConnected,g=u||v,s=M||x||null,c=u?"wallet":v?"switch":null,a={hasWalletError:u,hasSwitchError:v,isConnected:f,hasAnyError:g,primaryError:s,errorType:c},y=p.somethingWentWrong;switch(a.errorType){case "wallet":y=p.connectionError;break;case "switch":y=p.errorWhenChainSwitching;break}let h$1=t(y,{errorType:a.errorType}),H=a.primaryError?`${a.errorType}-${a.primaryError.message.substring(0,50)}`:null,B=R(H,{primaryError:a.primaryError,errorType:a.errorType}),N=useCallback(()=>{S(()=>{m.current&&(toast.dismiss(m.current),m.current=null),toast.dismiss({containerId:e});});},[e,S]),I=useCallback((i,E)=>{d$1(i,E,c);},[d$1,c]),K=useCallback((i,E,w)=>{if(N(),!C.current.has(w))try{let V={containerId:e,toastId:w,onClose:()=>{C.current.delete(w),m.current=null;}},J=n?.toastOptions?.error?.({title:i,rawError:E,errorType:a.errorType,isConnected:a.isConnected}),F={...V,...J};toast.error(jsx(L,{title:i,rawError:E,errorType:a.errorType,isConnected:a.isConnected,onCopyComplete:Q=>I(Q,E),customization:n?.toastErrorCustomization}),F),C.current.add(w),m.current=w;}catch(V){console.error("Failed to show error toast:",V);}},[N,e,n?.toastOptions?.error,n?.toastErrorCustomization,L,a.errorType,a.isConnected,I]),W=useCallback((i,E,w)=>{O(K,{title:i,rawError:E,errorKey:w,errorType:c});},[K,O,c]);useEffect(()=>{if(f&&!g){N(),C.current.clear();return}if(g&&s&&B){if(f&&c!=="switch")return;W(h$1,s,B);}},[g,f,s,c,h$1,B,W,N]),useEffect(()=>()=>{N(),C.current.clear();},[N]);let _=n?.classNames?.container?n.classNames.container({hasErrors:a.hasAnyError,errorType:a.errorType}):"novacon:p-0 novacon:bg-transparent",U=useMemo(()=>{let i=n?.toastCloseButton;return i?({closeToast:E})=>jsx(ToastCloseButton,{closeToast:E,...i}):ToastCloseButton},[n?.toastCloseButton]),j={...{containerId:e,position:o,closeOnClick:false,icon:false,closeButton:U,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:l,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:_};return jsx(k,{...j})}ie.displayName="ErrorsProvider";function le({labels:e,children:o}){let r=useMemo(()=>e,[e]);if(process.env.NODE_ENV==="development"){(!e||typeof e!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let n=["connectWallet","disconnect","connecting","connected","error","success"].filter(p=>!(p in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:r,children:o})}le.displayName="NovaConnectLabelsProvider";function de(e){let{enabled:o=true,verifier:r,destroyer:l,domain:n,uri:p,statement:x,expirationTime:A,expirationSeconds:M,notBefore:L,requestId:k,resources:O,onSuccess:S,onError:d$1}=e,t=d(s=>s.activeConnection),R=d(s=>s.disconnect),{signIn:C}=useSiwx(),m=useSiwxSessionStore(s=>s.session),u=useSiwxSessionStore(s=>s.status),v=useSiwxSessionStore(s=>s.reset),f=useRef(null),g=useRef(false);return useEffect(()=>{(!t?.isConnected||!t?.address)&&(f.current=null,(u==="authenticated"||m)&&(v(),l&&l().catch(s=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",s);})));},[t?.isConnected,t?.address,u,m,v,l]),useEffect(()=>{if(!(!o||!t?.isConnected||!t?.address||!t?.chainId)&&t.signMessage&&!g.current&&!(u==="building"||u==="signing"||u==="verifying"))try{let s={address:String(t.address),chainId:t.chainId,signMessage:t.signMessage,isConnected:t.isConnected},c=getSatelliteSiwxFields(s,{domain:n,uri:p,statement:x,expirationTime:A,expirationSeconds:M,notBefore:L,requestId:k,resources:O});if(u==="authenticated"&&m?.address===c.address||f.current===c.address)return;if(f.current=c.address,!r){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let a=y=>{let h=y instanceof Error?y.message:String(y);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",h);let H=t.address;t.connectorType&&H===t.address&&R(t.connectorType),v(),d$1?.(h);};g.current=!0,C({signer:t.signMessage,verifier:r,fields:c,onSuccess:S,onError:a}).catch(a).finally(()=>{g.current=!1;});}catch(s){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",s);}},[t?.isConnected,t?.address,t?.chainId,t?.signMessage,t?.connectorType,R,o,u,m?.address,r,n,p,x,A,M,L,k,O,C,v,S,d$1]),null}var $e=({labels:e,children:o})=>jsx(le,{labels:e,children:o}),_e=({customization:e})=>jsx(ie,{customization:e}),je=(e,o)=>deepMerge(e,o||{}),Je=e=>e,Qe=e=>e,Ye=(e,o,r)=>e;function Ze({labels:e,children:o,appChains:r,solanaRPCUrls:l,transactionPool:n,pulsarAdapter:p,withImpersonated:x,withBalance:A,withChain:M,popularConnectors:L,customConnectorGroups:k,legal:O,siwx:S,customization:d$1,pagination:t$1}){let R=d(te=>te.activeConnection),C=d(te=>te.connectionError),{LabelsProvider:m=$e,ErrorsProvider:u=_e}=d$1?.components??{},{merge:v=je,transform:f=Je}=d$1?.labels??{},{transform:g=Qe}=d$1?.contextValue??{},{providerTree:s=Ye}=d$1?.rendering??{},c$1=useMemo(()=>v(a,e||{}),[e,v]),[a$1,y]=useState(false),[h,H]=useState(false),[B,N]=useState(false),[I,K]=useState(false),[W,_]=useState("idle"),[U,me]=useState("connectors"),[j,i]=useState(void 0),[E,w]=useState(void 0),[V,J]=useState(""),[F,Q]=useState(false),[Y,Ne]=useState("main"),xe={appChains:r,solanaRPCUrls:l,withImpersonated:x,popularConnectors:L,customConnectorGroups:k,withBalance:A,withChain:M,isConnectModalOpen:a$1,setIsConnectModalOpen:y,isConnectedModalOpen:h,setIsConnectedModalOpen:H,isChainsListOpen:B,setIsChainsListOpen:N,isChainsListOpenMobile:I,setIsChainsListOpenMobile:K,connectedButtonStatus:W,setConnectedButtonStatus:_,connectedModalContentType:Y,setConnectedModalContentType:Ne,connectModalContentType:U,setConnectModalContentType:me,selectedAdapter:j,setSelectedAdapter:i,activeConnector:E,setActiveConnector:w,impersonatedAddress:V,setImpersonatedAddress:J,isConnected:F,setIsConnected:Q,legal:O},q=useMemo(()=>({isConnected:F,activeConnection:R,connectionError:C,modalStates:{isConnectModalOpen:a$1,isConnectedModalOpen:h,isChainsListOpen:B,isChainsListOpenMobile:I},contentTypes:{connectModal:U,connectedModal:Y},statuses:{connectedButton:W}}),[F,R,C,a$1,h,B,I,U,Y,W]),Me=useMemo(()=>f(c$1,q),[c$1,f,q]),Ce=g(xe,q),Z=jsx(u,{customization:d$1?.errors}),ee=jsx(m,{labels:Me,children:o}),oe=r||l?jsx(G,{solanaRPCUrls:l,appChains:r,customization:d$1?.modals?.connectModal}):null,re=r||l?jsx(t,{solanaRPCUrls:l,appChains:r,transactionPool:n,pulsarAdapter:p,customization:d$1?.modals?.connectedModal,pagination:t$1}):null,Le=jsxs(c.Provider,{value:Ce,children:[jsx(de,{...S}),Z,ee,oe,re]}),Oe=jsxs(c.Provider,{value:Ce,children:[jsx(de,{...S}),Z,ee,oe,re]}),Re=s(Oe,{ErrorsProvider:Z,LabelsProvider:ee,MainContent:Le,ConnectModal:oe||jsx(Fragment,{}),ConnectedModal:re||jsx(Fragment,{})},q);return jsx(Fragment,{children:Re})}Ze.displayName="NovaConnectProvider";async function kr(){let{getAllAdaptersStatus:e}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await X(),hasSolanaUtils:await $(),adaptersStatus:e()}}async function X(){try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function $(){try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Ir(){try{if(!await X())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let o=await import('./evm/index.js'),r=await o.getEvmExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"EVM utilities not available"}}}async function Wr(){try{if(!await $())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let o=await import('./solana/index.js'),r=await o.getSolanaExports();return r.available?{...o,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(e){return {available:false,error:e instanceof Error?e.message:"Solana utilities not available"}}}async function zr(){let e={evm:false,solana:false,errors:[]};try{let o=await X(),r=await $();if(o||r){let{preloadChainAdapters:l}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),n=[];o&&n.push(OrbitAdapter.EVM),r&&n.push(OrbitAdapter.SOLANA),await l(n),e.evm=o,e.solana=r;}else e.errors.push("No blockchain packages available for initialization");}catch(o){let r=o instanceof Error?o.message:"Unknown initialization error";e.errors.push(r);}return e}async function Hr(e){return e===OrbitAdapter.Starknet||e!==OrbitAdapter.EVM&&e!==OrbitAdapter.SOLANA?false:e===OrbitAdapter.EVM?X():$()}export{ie as ErrorsProvider,le as NovaConnectLabelsProvider,Ze as NovaConnectProvider,de as NovaSiwxWatcher,kr as getBlockchainUtilities,Ir as getEvmUtils,Wr as getSolanaUtils,zr as initializeBlockchainSupport,Hr as isAdapterSupported};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuwaio/nova-connect",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.10",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Oleksandr Tkach",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
"react-toastify": "11.x.x",
|
|
113
113
|
"viem": "2.x.x",
|
|
114
114
|
"zustand": "5.x.x",
|
|
115
|
-
"@tuwaio/nova-
|
|
116
|
-
"@tuwaio/nova-
|
|
115
|
+
"@tuwaio/nova-transactions": "^0.5.3",
|
|
116
|
+
"@tuwaio/nova-core": "^0.5.1"
|
|
117
117
|
},
|
|
118
118
|
"peerDependenciesMeta": {
|
|
119
119
|
"@web3icons/react": {
|
|
@@ -208,11 +208,11 @@
|
|
|
208
208
|
"@tuwaio/orbit-core": "^0.2.15",
|
|
209
209
|
"@tuwaio/orbit-evm": "^0.2.22",
|
|
210
210
|
"@tuwaio/orbit-solana": "^0.2.13",
|
|
211
|
-
"@tuwaio/satellite-react": "^0.4.
|
|
212
|
-
"@tuwaio/satellite-core": "^0.4.
|
|
213
|
-
"@tuwaio/satellite-evm": "^0.4.
|
|
214
|
-
"@tuwaio/satellite-solana": "^0.4.
|
|
215
|
-
"@tuwaio/siwx-react": "^0.2.
|
|
211
|
+
"@tuwaio/satellite-react": "^0.4.9",
|
|
212
|
+
"@tuwaio/satellite-core": "^0.4.3",
|
|
213
|
+
"@tuwaio/satellite-evm": "^0.4.4",
|
|
214
|
+
"@tuwaio/satellite-solana": "^0.4.9",
|
|
215
|
+
"@tuwaio/siwx-react": "^0.2.2",
|
|
216
216
|
"@tuwaio/pulsar-core": "^0.6.12",
|
|
217
217
|
"@wallet-standard/react": "^1.0.3",
|
|
218
218
|
"@wagmi/core": "^3.6.4",
|
|
@@ -239,10 +239,10 @@
|
|
|
239
239
|
"tailwindcss": "^4.3.3",
|
|
240
240
|
"@emotion/is-prop-valid": "^1.4.0",
|
|
241
241
|
"tw-animate-css": "^1.4.0",
|
|
242
|
-
"typescript": "
|
|
242
|
+
"typescript": "6.0.3",
|
|
243
243
|
"tsup": "^8.5.1",
|
|
244
|
-
"@tuwaio/nova-
|
|
245
|
-
"@tuwaio/nova-
|
|
244
|
+
"@tuwaio/nova-transactions": "^0.5.3",
|
|
245
|
+
"@tuwaio/nova-core": "^0.5.1"
|
|
246
246
|
},
|
|
247
247
|
"scripts": {
|
|
248
248
|
"start": "tsup src/index.ts --watch",
|