@tuwaio/nova-connect 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkOEA5AZZJ_cjs=require('./chunk-OEA5AZZJ.cjs'),chunkQ3WXFHOL_cjs=require('./chunk-Q3WXFHOL.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');var Ro=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:t,...p})=>jsxRuntime.jsx(chunkOEA5AZZJ_cjs.H,{title:o,rawError:e,onCopyComplete:r,customization:p.customization}),Bo=o=>{let e=chunkQ3WXFHOL_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ao=(o,e)=>{o(e.title,e.rawError,e.errorKey);},zo=o=>{o();},ko=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ho=o=>o,Vo=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:t}){let p=chunkQ3WXFHOL_cjs.h(),A=chunkV6XDFRWV_cjs.d(a=>a.switchNetworkError),_=chunkV6XDFRWV_cjs.d(a=>a.activeConnection),z=chunkV6XDFRWV_cjs.d(a=>a.connectionError),{ToastError:k=Ro,Container:j=Bo}=t?.components??{},{showError:H=Ao,dismissError:c=zo,onCopyComplete:V=ko}=t?.handlers??{},{errorTitle:U=Ho,errorHash:W=Vo}=t??{},m=react.useRef(new Set),v=react.useRef(null),b=!!z,y=!!A,g=!!_?.isConnected,h=b||y,f=z||A||null,E=b?"wallet":y?"switch":null,n={hasWalletError:b,hasSwitchError:y,isConnected:g,hasAnyError:h,primaryError:f,errorType:E},P=p.somethingWentWrong;switch(n.errorType){case "wallet":P=p.connectionError;break;case "switch":P=p.errorWhenChainSwitching;break}let I=U(P,{errorType:n.errorType}),L=n.primaryError?`${n.errorType}-${n.primaryError.message.substring(0,50)}`:null,M=W(L,{primaryError:n.primaryError,errorType:n.errorType}),d=react.useCallback(()=>{c(()=>{v.current&&(reactToastify.toast.dismiss(v.current),v.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,c]),D=react.useCallback((a,i)=>{V(a,i,n.errorType);},[V,n.errorType]),w=react.useCallback((a,i,u)=>{if(d(),!m.current.has(u))try{let x={containerId:o,toastId:u,onClose:()=>{m.current.delete(u),v.current=null;}},O=t?.toastOptions?.error?.({title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected}),X={...x,...O};reactToastify.toast.error(jsxRuntime.jsx(k,{title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected,onCopyComplete:R=>D(R,i),customization:t?.toastErrorCustomization}),X),m.current.add(u),v.current=u;}catch(x){console.error("Failed to show error toast:",x);}},[d,o,t?.toastOptions?.error,t?.toastErrorCustomization,k,n.errorType,n.isConnected,D]),K=react.useCallback((a,i,u)=>{H(w,{title:a,rawError:i,errorKey:u,errorType:n.errorType});},[w,H,n.errorType]);react.useEffect(()=>{if(g&&!h){d(),m.current.clear();return}if(h&&f&&M){if(g&&E!=="switch")return;K(I,f,M);}},[h,g,f,E,I,M,K,d]),react.useEffect(()=>()=>{d(),m.current.clear();},[d]);let S=t?.classNames?.container?t.classNames.container({hasErrors:n.hasAnyError,errorType:n.errorType}):"novacon:p-0 novacon:bg-transparent",J=react.useMemo(()=>{let a=t?.toastCloseButton;return a?({closeToast:i})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:i,...a}):novaCore.ToastCloseButton},[t?.toastCloseButton]),Q={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:J,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...t?.containerProps,className:S};return jsxRuntime.jsx(j,{...Q})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=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(p=>!(p in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunkQ3WXFHOL_cjs.g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Do=({labels:o,children:e})=>jsxRuntime.jsx(io,{labels:o,children:e}),Ko=({customization:o})=>jsxRuntime.jsx(so,{customization:o}),Fo=(o,e)=>novaCore.deepMerge(o,e||{}),Go=o=>o,qo=o=>o,$o=(o,e,r)=>o;function _o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:t,pulsarAdapter:p,withImpersonated:A,withBalance:_,withChain:z,popularConnectors:k,customConnectorGroups:j,legal:H,customization:c,pagination:V}){let U=chunkV6XDFRWV_cjs.d(ro=>ro.activeConnection),W=chunkV6XDFRWV_cjs.d(ro=>ro.connectionError),{LabelsProvider:m=Do,ErrorsProvider:v=Ko}=c?.components??{},{merge:b=Fo,transform:y=Go}=c?.labels??{},{transform:g=qo}=c?.contextValue??{},{providerTree:h=$o}=c?.rendering??{},f=react.useMemo(()=>b(chunkMGBN4EIT_cjs.a,o||{}),[o,b]),[E,n]=react.useState(false),[P,I]=react.useState(false),[L,M]=react.useState(false),[d,D]=react.useState(false),[w,K]=react.useState("idle"),[S,J]=react.useState("connectors"),[po,Q]=react.useState(void 0),[a,i]=react.useState(void 0),[u,x]=react.useState(""),[O,X]=react.useState(false),[R,go]=react.useState("main"),ho={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:j,withBalance:_,withChain:z,isConnectModalOpen:E,setIsConnectModalOpen:n,isConnectedModalOpen:P,setIsConnectedModalOpen:I,isChainsListOpen:L,setIsChainsListOpen:M,isChainsListOpenMobile:d,setIsChainsListOpenMobile:D,connectedButtonStatus:w,setConnectedButtonStatus:K,connectedModalContentType:R,setConnectedModalContentType:go,connectModalContentType:S,setConnectModalContentType:J,selectedAdapter:po,setSelectedAdapter:Q,activeConnector:a,setActiveConnector:i,impersonatedAddress:u,setImpersonatedAddress:x,isConnected:O,setIsConnected:X,legal:H},F=react.useMemo(()=>({isConnected:O,activeConnection:U,connectionError:W,modalStates:{isConnectModalOpen:E,isConnectedModalOpen:P,isChainsListOpen:L,isChainsListOpenMobile:d},contentTypes:{connectModal:S,connectedModal:R},statuses:{connectedButton:w}}),[O,U,W,E,P,L,d,S,R,w]),wo=react.useMemo(()=>y(f,F),[f,y,F]),uo=g(ho,F),Y=jsxRuntime.jsx(v,{customization:c?.errors}),Z=jsxRuntime.jsx(m,{labels:wo,children:e}),oo=r||s?jsxRuntime.jsx(chunkOEA5AZZJ_cjs.G,{solanaRPCUrls:s,appChains:r,customization:c?.modals?.connectModal}):null,eo=r||s?jsxRuntime.jsx(chunkOEA5AZZJ_cjs.t,{solanaRPCUrls:s,appChains:r,transactionPool:t,pulsarAdapter:p,customization:c?.modals?.connectedModal,pagination:V}):null,No=jsxRuntime.jsxs(chunkQ3WXFHOL_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=jsxRuntime.jsxs(chunkQ3WXFHOL_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Mo=h(Lo,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:No,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:eo||jsxRuntime.jsx(jsxRuntime.Fragment,{})},F);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Mo})}_o.displayName="NovaConnectProvider";async function Tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await q(),hasSolanaUtils:await $(),adaptersStatus:o()}}async function q(){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 br(){try{if(!await q())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.cjs'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function yr(){try{if(!await $())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.cjs'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function gr(){let o={evm:false,solana:false,errors:[]};try{let e=await q(),r=await $();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),t=[];e&&t.push(orbitCore.OrbitAdapter.EVM),r&&t.push(orbitCore.OrbitAdapter.SOLANA),await s(t),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function hr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?q():$()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkQ3WXFHOL_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=so;exports.NovaConnectLabelsProvider=io;exports.NovaConnectProvider=_o;exports.getBlockchainUtilities=Tr;exports.getEvmUtils=br;exports.getSolanaUtils=yr;exports.initializeBlockchainSupport=gr;exports.isAdapterSupported=hr;
1
+ 'use strict';var chunkJPZKXXPV_cjs=require('./chunk-JPZKXXPV.cjs'),chunkQ3WXFHOL_cjs=require('./chunk-Q3WXFHOL.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');var Ro=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:t,...p})=>jsxRuntime.jsx(chunkJPZKXXPV_cjs.H,{title:o,rawError:e,onCopyComplete:r,customization:p.customization}),Bo=o=>{let e=chunkQ3WXFHOL_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ao=(o,e)=>{o(e.title,e.rawError,e.errorKey);},zo=o=>{o();},ko=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ho=o=>o,Vo=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:t}){let p=chunkQ3WXFHOL_cjs.h(),A=chunkV6XDFRWV_cjs.d(a=>a.switchNetworkError),_=chunkV6XDFRWV_cjs.d(a=>a.activeConnection),z=chunkV6XDFRWV_cjs.d(a=>a.connectionError),{ToastError:k=Ro,Container:j=Bo}=t?.components??{},{showError:H=Ao,dismissError:c=zo,onCopyComplete:V=ko}=t?.handlers??{},{errorTitle:U=Ho,errorHash:W=Vo}=t??{},m=react.useRef(new Set),v=react.useRef(null),b=!!z,y=!!A,g=!!_?.isConnected,h=b||y,f=z||A||null,E=b?"wallet":y?"switch":null,n={hasWalletError:b,hasSwitchError:y,isConnected:g,hasAnyError:h,primaryError:f,errorType:E},P=p.somethingWentWrong;switch(n.errorType){case "wallet":P=p.connectionError;break;case "switch":P=p.errorWhenChainSwitching;break}let I=U(P,{errorType:n.errorType}),L=n.primaryError?`${n.errorType}-${n.primaryError.message.substring(0,50)}`:null,M=W(L,{primaryError:n.primaryError,errorType:n.errorType}),d=react.useCallback(()=>{c(()=>{v.current&&(reactToastify.toast.dismiss(v.current),v.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,c]),D=react.useCallback((a,i)=>{V(a,i,n.errorType);},[V,n.errorType]),w=react.useCallback((a,i,u)=>{if(d(),!m.current.has(u))try{let x={containerId:o,toastId:u,onClose:()=>{m.current.delete(u),v.current=null;}},O=t?.toastOptions?.error?.({title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected}),X={...x,...O};reactToastify.toast.error(jsxRuntime.jsx(k,{title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected,onCopyComplete:R=>D(R,i),customization:t?.toastErrorCustomization}),X),m.current.add(u),v.current=u;}catch(x){console.error("Failed to show error toast:",x);}},[d,o,t?.toastOptions?.error,t?.toastErrorCustomization,k,n.errorType,n.isConnected,D]),K=react.useCallback((a,i,u)=>{H(w,{title:a,rawError:i,errorKey:u,errorType:n.errorType});},[w,H,n.errorType]);react.useEffect(()=>{if(g&&!h){d(),m.current.clear();return}if(h&&f&&M){if(g&&E!=="switch")return;K(I,f,M);}},[h,g,f,E,I,M,K,d]),react.useEffect(()=>()=>{d(),m.current.clear();},[d]);let S=t?.classNames?.container?t.classNames.container({hasErrors:n.hasAnyError,errorType:n.errorType}):"novacon:p-0 novacon:bg-transparent",J=react.useMemo(()=>{let a=t?.toastCloseButton;return a?({closeToast:i})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:i,...a}):novaCore.ToastCloseButton},[t?.toastCloseButton]),Q={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:J,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...t?.containerProps,className:S};return jsxRuntime.jsx(j,{...Q})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=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(p=>!(p in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunkQ3WXFHOL_cjs.g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Do=({labels:o,children:e})=>jsxRuntime.jsx(io,{labels:o,children:e}),Ko=({customization:o})=>jsxRuntime.jsx(so,{customization:o}),Fo=(o,e)=>novaCore.deepMerge(o,e||{}),Go=o=>o,qo=o=>o,$o=(o,e,r)=>o;function _o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:t,pulsarAdapter:p,withImpersonated:A,withBalance:_,withChain:z,popularConnectors:k,customConnectorGroups:j,legal:H,customization:c,pagination:V}){let U=chunkV6XDFRWV_cjs.d(ro=>ro.activeConnection),W=chunkV6XDFRWV_cjs.d(ro=>ro.connectionError),{LabelsProvider:m=Do,ErrorsProvider:v=Ko}=c?.components??{},{merge:b=Fo,transform:y=Go}=c?.labels??{},{transform:g=qo}=c?.contextValue??{},{providerTree:h=$o}=c?.rendering??{},f=react.useMemo(()=>b(chunkMGBN4EIT_cjs.a,o||{}),[o,b]),[E,n]=react.useState(false),[P,I]=react.useState(false),[L,M]=react.useState(false),[d,D]=react.useState(false),[w,K]=react.useState("idle"),[S,J]=react.useState("connectors"),[po,Q]=react.useState(void 0),[a,i]=react.useState(void 0),[u,x]=react.useState(""),[O,X]=react.useState(false),[R,go]=react.useState("main"),ho={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:j,withBalance:_,withChain:z,isConnectModalOpen:E,setIsConnectModalOpen:n,isConnectedModalOpen:P,setIsConnectedModalOpen:I,isChainsListOpen:L,setIsChainsListOpen:M,isChainsListOpenMobile:d,setIsChainsListOpenMobile:D,connectedButtonStatus:w,setConnectedButtonStatus:K,connectedModalContentType:R,setConnectedModalContentType:go,connectModalContentType:S,setConnectModalContentType:J,selectedAdapter:po,setSelectedAdapter:Q,activeConnector:a,setActiveConnector:i,impersonatedAddress:u,setImpersonatedAddress:x,isConnected:O,setIsConnected:X,legal:H},F=react.useMemo(()=>({isConnected:O,activeConnection:U,connectionError:W,modalStates:{isConnectModalOpen:E,isConnectedModalOpen:P,isChainsListOpen:L,isChainsListOpenMobile:d},contentTypes:{connectModal:S,connectedModal:R},statuses:{connectedButton:w}}),[O,U,W,E,P,L,d,S,R,w]),wo=react.useMemo(()=>y(f,F),[f,y,F]),uo=g(ho,F),Y=jsxRuntime.jsx(v,{customization:c?.errors}),Z=jsxRuntime.jsx(m,{labels:wo,children:e}),oo=r||s?jsxRuntime.jsx(chunkJPZKXXPV_cjs.G,{solanaRPCUrls:s,appChains:r,customization:c?.modals?.connectModal}):null,eo=r||s?jsxRuntime.jsx(chunkJPZKXXPV_cjs.t,{solanaRPCUrls:s,appChains:r,transactionPool:t,pulsarAdapter:p,customization:c?.modals?.connectedModal,pagination:V}):null,No=jsxRuntime.jsxs(chunkQ3WXFHOL_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=jsxRuntime.jsxs(chunkQ3WXFHOL_cjs.c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Mo=h(Lo,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:No,ConnectModal:oo||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:eo||jsxRuntime.jsx(jsxRuntime.Fragment,{})},F);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Mo})}_o.displayName="NovaConnectProvider";async function Tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs');return {hasEvmUtils:await q(),hasSolanaUtils:await $(),adaptersStatus:o()}}async function q(){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 br(){try{if(!await q())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.cjs'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function yr(){try{if(!await $())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.cjs'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function gr(){let o={evm:false,solana:false,errors:[]};try{let e=await q(),r=await $();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-QCNOPM6I.cjs'),t=[];e&&t.push(orbitCore.OrbitAdapter.EVM),r&&t.push(orbitCore.OrbitAdapter.SOLANA),await s(t),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function hr(o){return o===orbitCore.OrbitAdapter.Starknet||o!==orbitCore.OrbitAdapter.EVM&&o!==orbitCore.OrbitAdapter.SOLANA?false:o===orbitCore.OrbitAdapter.EVM?q():$()}Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.q}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.v}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.p}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.t}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.r}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.n}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.s}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.u}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.m}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.w}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.f}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkQ3WXFHOL_cjs.x}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkQ3WXFHOL_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=so;exports.NovaConnectLabelsProvider=io;exports.NovaConnectProvider=_o;exports.getBlockchainUtilities=Tr;exports.getEvmUtils=br;exports.getSolanaUtils=yr;exports.initializeBlockchainSupport=gr;exports.isAdapterSupported=hr;
package/dist/index.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -459,6 +459,9 @@
459
459
  --tw-pan-x: pan-x;
460
460
  touch-action: var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,);
461
461
  }
462
+ .novacon\:scrollbar-thin {
463
+ scrollbar-width: thin;
464
+ }
462
465
  .novacon\:flex-col {
463
466
  flex-direction: column;
464
467
  }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {G,t,H}from'./chunk-UCR5PRAG.js';import {h,g,c}from'./chunk-JCUPHUQU.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-JCUPHUQU.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';var Ro=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:t,...p})=>jsx(H,{title:o,rawError:e,onCopyComplete:r,customization:p.customization}),Bo=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ao=(o,e)=>{o(e.title,e.rawError,e.errorKey);},zo=o=>{o();},ko=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ho=o=>o,Vo=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:t}){let p=h(),A=d(a=>a.switchNetworkError),_=d(a=>a.activeConnection),z=d(a=>a.connectionError),{ToastError:k=Ro,Container:j=Bo}=t?.components??{},{showError:H=Ao,dismissError:c=zo,onCopyComplete:V=ko}=t?.handlers??{},{errorTitle:U=Ho,errorHash:W=Vo}=t??{},m=useRef(new Set),v=useRef(null),b=!!z,y=!!A,g=!!_?.isConnected,h$1=b||y,f=z||A||null,E=b?"wallet":y?"switch":null,n={hasWalletError:b,hasSwitchError:y,isConnected:g,hasAnyError:h$1,primaryError:f,errorType:E},P=p.somethingWentWrong;switch(n.errorType){case "wallet":P=p.connectionError;break;case "switch":P=p.errorWhenChainSwitching;break}let I=U(P,{errorType:n.errorType}),L=n.primaryError?`${n.errorType}-${n.primaryError.message.substring(0,50)}`:null,M=W(L,{primaryError:n.primaryError,errorType:n.errorType}),d$1=useCallback(()=>{c(()=>{v.current&&(toast.dismiss(v.current),v.current=null),toast.dismiss({containerId:o});});},[o,c]),D=useCallback((a,i)=>{V(a,i,n.errorType);},[V,n.errorType]),w=useCallback((a,i,u)=>{if(d$1(),!m.current.has(u))try{let x={containerId:o,toastId:u,onClose:()=>{m.current.delete(u),v.current=null;}},O=t?.toastOptions?.error?.({title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected}),X={...x,...O};toast.error(jsx(k,{title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected,onCopyComplete:R=>D(R,i),customization:t?.toastErrorCustomization}),X),m.current.add(u),v.current=u;}catch(x){console.error("Failed to show error toast:",x);}},[d$1,o,t?.toastOptions?.error,t?.toastErrorCustomization,k,n.errorType,n.isConnected,D]),K=useCallback((a,i,u)=>{H(w,{title:a,rawError:i,errorKey:u,errorType:n.errorType});},[w,H,n.errorType]);useEffect(()=>{if(g&&!h$1){d$1(),m.current.clear();return}if(h$1&&f&&M){if(g&&E!=="switch")return;K(I,f,M);}},[h$1,g,f,E,I,M,K,d$1]),useEffect(()=>()=>{d$1(),m.current.clear();},[d$1]);let S=t?.classNames?.container?t.classNames.container({hasErrors:n.hasAnyError,errorType:n.errorType}):"novacon:p-0 novacon:bg-transparent",J=useMemo(()=>{let a=t?.toastCloseButton;return a?({closeToast:i})=>jsx(ToastCloseButton,{closeToast:i,...a}):ToastCloseButton},[t?.toastCloseButton]),Q={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:J,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:Bounce},...t?.containerProps,className:S};return jsx(j,{...Q})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=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(p=>!(p in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Do=({labels:o,children:e})=>jsx(io,{labels:o,children:e}),Ko=({customization:o})=>jsx(so,{customization:o}),Fo=(o,e)=>deepMerge(o,e||{}),Go=o=>o,qo=o=>o,$o=(o,e,r)=>o;function _o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:t$1,pulsarAdapter:p,withImpersonated:A,withBalance:_,withChain:z,popularConnectors:k,customConnectorGroups:j,legal:H,customization:c$1,pagination:V}){let U=d(ro=>ro.activeConnection),W=d(ro=>ro.connectionError),{LabelsProvider:m=Do,ErrorsProvider:v=Ko}=c$1?.components??{},{merge:b=Fo,transform:y=Go}=c$1?.labels??{},{transform:g=qo}=c$1?.contextValue??{},{providerTree:h=$o}=c$1?.rendering??{},f=useMemo(()=>b(a,o||{}),[o,b]),[E,n]=useState(false),[P,I]=useState(false),[L,M]=useState(false),[d$1,D]=useState(false),[w,K]=useState("idle"),[S,J]=useState("connectors"),[po,Q]=useState(void 0),[a$1,i]=useState(void 0),[u,x]=useState(""),[O,X]=useState(false),[R,go]=useState("main"),ho={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:j,withBalance:_,withChain:z,isConnectModalOpen:E,setIsConnectModalOpen:n,isConnectedModalOpen:P,setIsConnectedModalOpen:I,isChainsListOpen:L,setIsChainsListOpen:M,isChainsListOpenMobile:d$1,setIsChainsListOpenMobile:D,connectedButtonStatus:w,setConnectedButtonStatus:K,connectedModalContentType:R,setConnectedModalContentType:go,connectModalContentType:S,setConnectModalContentType:J,selectedAdapter:po,setSelectedAdapter:Q,activeConnector:a$1,setActiveConnector:i,impersonatedAddress:u,setImpersonatedAddress:x,isConnected:O,setIsConnected:X,legal:H},F=useMemo(()=>({isConnected:O,activeConnection:U,connectionError:W,modalStates:{isConnectModalOpen:E,isConnectedModalOpen:P,isChainsListOpen:L,isChainsListOpenMobile:d$1},contentTypes:{connectModal:S,connectedModal:R},statuses:{connectedButton:w}}),[O,U,W,E,P,L,d$1,S,R,w]),wo=useMemo(()=>y(f,F),[f,y,F]),uo=g(ho,F),Y=jsx(v,{customization:c$1?.errors}),Z=jsx(m,{labels:wo,children:e}),oo=r||s?jsx(G,{solanaRPCUrls:s,appChains:r,customization:c$1?.modals?.connectModal}):null,eo=r||s?jsx(t,{solanaRPCUrls:s,appChains:r,transactionPool:t$1,pulsarAdapter:p,customization:c$1?.modals?.connectedModal,pagination:V}):null,No=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Mo=h(Lo,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:No,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:eo||jsx(Fragment,{})},F);return jsx(Fragment,{children:Mo})}_o.displayName="NovaConnectProvider";async function Tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await q(),hasSolanaUtils:await $(),adaptersStatus:o()}}async function q(){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 br(){try{if(!await q())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.js'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function yr(){try{if(!await $())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.js'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function gr(){let o={evm:false,solana:false,errors:[]};try{let e=await q(),r=await $();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),r&&t.push(OrbitAdapter.SOLANA),await s(t),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function hr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?q():$()}export{so as ErrorsProvider,io as NovaConnectLabelsProvider,_o as NovaConnectProvider,Tr as getBlockchainUtilities,br as getEvmUtils,yr as getSolanaUtils,gr as initializeBlockchainSupport,hr as isAdapterSupported};
1
+ import {G,t,H}from'./chunk-MPL7RPMZ.js';import {h,g,c}from'./chunk-JCUPHUQU.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-JCUPHUQU.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';var Ro=({title:o,rawError:e,onCopyComplete:r,errorType:s,isConnected:t,...p})=>jsx(H,{title:o,rawError:e,onCopyComplete:r,customization:p.customization}),Bo=o=>{let e=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ao=(o,e)=>{o(e.title,e.rawError,e.errorKey);},zo=o=>{o();},ko=(o,e)=>{if(o&&process.env.NODE_ENV==="development"){let r=typeof e=="string"?e:e.message;console.log("Error copied to clipboard:",r.substring(0,100));}},Ho=o=>o,Vo=o=>o;function so({containerId:o="nova-connect-errors",position:e="top-center",autoClose:r=7e3,draggable:s=false,customization:t}){let p=h(),A=d(a=>a.switchNetworkError),_=d(a=>a.activeConnection),z=d(a=>a.connectionError),{ToastError:k=Ro,Container:j=Bo}=t?.components??{},{showError:H=Ao,dismissError:c=zo,onCopyComplete:V=ko}=t?.handlers??{},{errorTitle:U=Ho,errorHash:W=Vo}=t??{},m=useRef(new Set),v=useRef(null),b=!!z,y=!!A,g=!!_?.isConnected,h$1=b||y,f=z||A||null,E=b?"wallet":y?"switch":null,n={hasWalletError:b,hasSwitchError:y,isConnected:g,hasAnyError:h$1,primaryError:f,errorType:E},P=p.somethingWentWrong;switch(n.errorType){case "wallet":P=p.connectionError;break;case "switch":P=p.errorWhenChainSwitching;break}let I=U(P,{errorType:n.errorType}),L=n.primaryError?`${n.errorType}-${n.primaryError.message.substring(0,50)}`:null,M=W(L,{primaryError:n.primaryError,errorType:n.errorType}),d$1=useCallback(()=>{c(()=>{v.current&&(toast.dismiss(v.current),v.current=null),toast.dismiss({containerId:o});});},[o,c]),D=useCallback((a,i)=>{V(a,i,n.errorType);},[V,n.errorType]),w=useCallback((a,i,u)=>{if(d$1(),!m.current.has(u))try{let x={containerId:o,toastId:u,onClose:()=>{m.current.delete(u),v.current=null;}},O=t?.toastOptions?.error?.({title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected}),X={...x,...O};toast.error(jsx(k,{title:a,rawError:i,errorType:n.errorType,isConnected:n.isConnected,onCopyComplete:R=>D(R,i),customization:t?.toastErrorCustomization}),X),m.current.add(u),v.current=u;}catch(x){console.error("Failed to show error toast:",x);}},[d$1,o,t?.toastOptions?.error,t?.toastErrorCustomization,k,n.errorType,n.isConnected,D]),K=useCallback((a,i,u)=>{H(w,{title:a,rawError:i,errorKey:u,errorType:n.errorType});},[w,H,n.errorType]);useEffect(()=>{if(g&&!h$1){d$1(),m.current.clear();return}if(h$1&&f&&M){if(g&&E!=="switch")return;K(I,f,M);}},[h$1,g,f,E,I,M,K,d$1]),useEffect(()=>()=>{d$1(),m.current.clear();},[d$1]);let S=t?.classNames?.container?t.classNames.container({hasErrors:n.hasAnyError,errorType:n.errorType}):"novacon:p-0 novacon:bg-transparent",J=useMemo(()=>{let a=t?.toastCloseButton;return a?({closeToast:i})=>jsx(ToastCloseButton,{closeToast:i,...a}):ToastCloseButton},[t?.toastCloseButton]),Q={...{containerId:o,position:e,closeOnClick:false,icon:false,closeButton:J,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:s,pauseOnHover:true,theme:"light",transition:Bounce},...t?.containerProps,className:S};return jsx(j,{...Q})}so.displayName="ErrorsProvider";function io({labels:o,children:e}){let r=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(p=>!(p in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:r,children:e})}io.displayName="NovaConnectLabelsProvider";var Do=({labels:o,children:e})=>jsx(io,{labels:o,children:e}),Ko=({customization:o})=>jsx(so,{customization:o}),Fo=(o,e)=>deepMerge(o,e||{}),Go=o=>o,qo=o=>o,$o=(o,e,r)=>o;function _o({labels:o,children:e,appChains:r,solanaRPCUrls:s,transactionPool:t$1,pulsarAdapter:p,withImpersonated:A,withBalance:_,withChain:z,popularConnectors:k,customConnectorGroups:j,legal:H,customization:c$1,pagination:V}){let U=d(ro=>ro.activeConnection),W=d(ro=>ro.connectionError),{LabelsProvider:m=Do,ErrorsProvider:v=Ko}=c$1?.components??{},{merge:b=Fo,transform:y=Go}=c$1?.labels??{},{transform:g=qo}=c$1?.contextValue??{},{providerTree:h=$o}=c$1?.rendering??{},f=useMemo(()=>b(a,o||{}),[o,b]),[E,n]=useState(false),[P,I]=useState(false),[L,M]=useState(false),[d$1,D]=useState(false),[w,K]=useState("idle"),[S,J]=useState("connectors"),[po,Q]=useState(void 0),[a$1,i]=useState(void 0),[u,x]=useState(""),[O,X]=useState(false),[R,go]=useState("main"),ho={appChains:r,solanaRPCUrls:s,withImpersonated:A,popularConnectors:k,customConnectorGroups:j,withBalance:_,withChain:z,isConnectModalOpen:E,setIsConnectModalOpen:n,isConnectedModalOpen:P,setIsConnectedModalOpen:I,isChainsListOpen:L,setIsChainsListOpen:M,isChainsListOpenMobile:d$1,setIsChainsListOpenMobile:D,connectedButtonStatus:w,setConnectedButtonStatus:K,connectedModalContentType:R,setConnectedModalContentType:go,connectModalContentType:S,setConnectModalContentType:J,selectedAdapter:po,setSelectedAdapter:Q,activeConnector:a$1,setActiveConnector:i,impersonatedAddress:u,setImpersonatedAddress:x,isConnected:O,setIsConnected:X,legal:H},F=useMemo(()=>({isConnected:O,activeConnection:U,connectionError:W,modalStates:{isConnectModalOpen:E,isConnectedModalOpen:P,isChainsListOpen:L,isChainsListOpenMobile:d$1},contentTypes:{connectModal:S,connectedModal:R},statuses:{connectedButton:w}}),[O,U,W,E,P,L,d$1,S,R,w]),wo=useMemo(()=>y(f,F),[f,y,F]),uo=g(ho,F),Y=jsx(v,{customization:c$1?.errors}),Z=jsx(m,{labels:wo,children:e}),oo=r||s?jsx(G,{solanaRPCUrls:s,appChains:r,customization:c$1?.modals?.connectModal}):null,eo=r||s?jsx(t,{solanaRPCUrls:s,appChains:r,transactionPool:t$1,pulsarAdapter:p,customization:c$1?.modals?.connectedModal,pagination:V}):null,No=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Lo=jsxs(c.Provider,{value:uo,children:[Y,Z,oo,eo]}),Mo=h(Lo,{ErrorsProvider:Y,LabelsProvider:Z,MainContent:No,ConnectModal:oo||jsx(Fragment,{}),ConnectedModal:eo||jsx(Fragment,{})},F);return jsx(Fragment,{children:Mo})}_o.displayName="NovaConnectProvider";async function Tr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-YZZUYC6D.js');return {hasEvmUtils:await q(),hasSolanaUtils:await $(),adaptersStatus:o()}}async function q(){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 br(){try{if(!await q())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};let e=await import('./evm/index.js'),r=await e.getEvmExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function yr(){try{if(!await $())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};let e=await import('./solana/index.js'),r=await e.getSolanaExports();return r.available?{...e,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function gr(){let o={evm:false,solana:false,errors:[]};try{let e=await q(),r=await $();if(e||r){let{preloadChainAdapters:s}=await import('./getChainsListByConnectorType-YZZUYC6D.js'),t=[];e&&t.push(OrbitAdapter.EVM),r&&t.push(OrbitAdapter.SOLANA),await s(t),o.evm=e,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let r=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(r);}return o}async function hr(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?q():$()}export{so as ErrorsProvider,io as NovaConnectLabelsProvider,_o as NovaConnectProvider,Tr as getBlockchainUtilities,br as getEvmUtils,yr as getSolanaUtils,gr as initializeBlockchainSupport,hr as isAdapterSupported};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuwaio/nova-connect",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "private": false,
5
5
  "author": "Oleksandr Tkach",
6
6
  "license": "Apache-2.0",
@@ -201,41 +201,41 @@
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.8",
204
- "@tuwaio/orbit-evm": "^0.2.11",
205
- "@tuwaio/orbit-solana": "^0.2.4",
206
- "@tuwaio/satellite-react": "^0.3.2",
207
- "@tuwaio/satellite-core": "^0.3.2",
208
- "@tuwaio/satellite-evm": "^0.3.2",
209
- "@tuwaio/satellite-solana": "^0.3.2",
210
- "@tuwaio/pulsar-core": "^0.6.0",
211
- "@wallet-standard/react": "^1.0.1",
212
- "@wagmi/core": "^3.4.6",
204
+ "@tuwaio/orbit-evm": "^0.2.12",
205
+ "@tuwaio/orbit-solana": "^0.2.5",
206
+ "@tuwaio/satellite-react": "^0.3.3",
207
+ "@tuwaio/satellite-core": "^0.3.3",
208
+ "@tuwaio/satellite-evm": "^0.3.3",
209
+ "@tuwaio/satellite-solana": "^0.3.3",
210
+ "@tuwaio/pulsar-core": "^0.6.1",
211
+ "@wallet-standard/react": "^1.0.2",
212
+ "@wagmi/core": "^3.4.9",
213
213
  "@web3icons/react": "^4.1.17",
214
214
  "@web3icons/common": "^0.11.46",
215
215
  "gill": "^0.14.0",
216
216
  "clsx": "^2.1.1",
217
217
  "dayjs": "^1.11.20",
218
- "immer": "^11.1.4",
218
+ "immer": "^11.1.8",
219
219
  "ethereum-blockies-base64": "^1.0.2",
220
220
  "framer-motion": "^12.38.0",
221
- "react": "^19.2.5",
221
+ "react": "^19.2.6",
222
222
  "react-toastify": "^11.1.0",
223
223
  "tailwind-merge": "^3.5.0",
224
- "viem": "^2.48.4",
225
- "zustand": "^5.0.12",
226
- "@tailwindcss/postcss": "^4.2.4",
227
- "@tailwindcss/vite": "^4.2.4",
224
+ "viem": "^2.48.11",
225
+ "zustand": "^5.0.13",
226
+ "@tailwindcss/postcss": "^4.3.0",
227
+ "@tailwindcss/vite": "^4.3.0",
228
228
  "@types/react": "^19.2.14",
229
229
  "autoprefixer": "^10.5.0",
230
- "postcss": "^8.5.12",
230
+ "postcss": "^8.5.14",
231
231
  "postcss-cli": "^11.0.1",
232
- "tailwindcss": "^4.2.4",
232
+ "tailwindcss": "^4.3.0",
233
233
  "@emotion/is-prop-valid": "^1.4.0",
234
234
  "tw-animate-css": "^1.4.0",
235
235
  "typescript": "^6.0.3",
236
236
  "tsup": "^8.5.1",
237
- "@tuwaio/nova-core": "^0.4.0",
238
- "@tuwaio/nova-transactions": "^0.4.0"
237
+ "@tuwaio/nova-core": "^0.4.2",
238
+ "@tuwaio/nova-transactions": "^0.4.2"
239
239
  },
240
240
  "scripts": {
241
241
  "start": "tsup src/index.ts --watch",