@tuwaio/nova-connect 0.10.6 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/chunk-3M5KO5JH.cjs +1 -0
- package/dist/chunk-K2PZJCFY.cjs +2 -0
- package/dist/chunk-X5SXUZJR.js +1 -0
- package/dist/chunk-Y4JUUZX7.js +2 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.d.cts +89 -32
- package/dist/components/index.d.ts +89 -32
- package/dist/components/index.js +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.d.cts +44 -3
- package/dist/hooks/index.d.ts +44 -3
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +3 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +17 -17
- package/dist/chunk-DRTK4IQH.js +0 -2
- package/dist/chunk-H3DXFMRX.cjs +0 -2
- package/dist/chunk-U6UN2I7D.cjs +0 -1
- package/dist/chunk-XB2YJOYJ.js +0 -1
package/dist/hooks/index.d.ts
CHANGED
|
@@ -3,10 +3,11 @@ export { B as ButtonTxStatus, C as ConnectContentType, a as ConnectedContentType
|
|
|
3
3
|
import * as _tuwaio_satellite_core from '@tuwaio/satellite-core';
|
|
4
4
|
import { BaseConnector } from '@tuwaio/satellite-core';
|
|
5
5
|
import { SatelliteSiwxFieldOptions, UseSiwxSignInOptions } from '@tuwaio/siwx-react';
|
|
6
|
+
import { OrbitAdapter } from '@tuwaio/orbit-core';
|
|
7
|
+
import { Connector } from '@tuwaio/satellite-react';
|
|
6
8
|
import 'react';
|
|
7
9
|
import '../types-DyqzrPMH.js';
|
|
8
10
|
import 'framer-motion';
|
|
9
|
-
import '@tuwaio/orbit-core';
|
|
10
11
|
import '@tuwaio/pulsar-core';
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -146,5 +147,45 @@ declare function useWalletChainsList({ activeConnection, appChains, solanaRPCUrl
|
|
|
146
147
|
chainsList: (string | number)[];
|
|
147
148
|
};
|
|
148
149
|
|
|
149
|
-
|
|
150
|
-
|
|
150
|
+
/**
|
|
151
|
+
* Options of {@link useWalletConnectors}.
|
|
152
|
+
*/
|
|
153
|
+
interface UseWalletConnectorsParams {
|
|
154
|
+
/** Whether to read and follow the wallets (default `true`); `false` returns `undefined` and subscribes to nothing */
|
|
155
|
+
enabled?: boolean;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The wallets of the Satellite Connect store by adapter (`getConnectors()` of the store), read again whenever the store
|
|
159
|
+
* reports that the wallets of an adapter changed (`watchConnectors` of `@tuwaio/satellite-core`). A list shown before
|
|
160
|
+
* wagmi added the installed EIP-6963 wallets, or before a Wallet Standard wallet registered, fills in by itself. The
|
|
161
|
+
* connect modal and the connected modal list their wallets with it.
|
|
162
|
+
*
|
|
163
|
+
* The list is also read again on every render of the component: the wallets of an adapter that reports no changes (an
|
|
164
|
+
* adapter without `watchConnectors`, such as an older `@tuwaio/satellite-solana` or a custom adapter, or a
|
|
165
|
+
* `@tuwaio/satellite-core` without `watchConnectors`) appear at the next render.
|
|
166
|
+
*
|
|
167
|
+
* Side effects: while `enabled`, a subscription to the wallet list of the store (`watchConnectors`, which follows wagmi's
|
|
168
|
+
* connectors and the Wallet Standard registry), from the commit until `enabled` turns `false` or the component unmounts.
|
|
169
|
+
* Nothing is read or subscribed on the server.
|
|
170
|
+
*
|
|
171
|
+
* @param params - Options. See {@link UseWalletConnectorsParams}.
|
|
172
|
+
* @param params.enabled - Whether to read and follow the wallets (default `true`).
|
|
173
|
+
* @returns The wallets by adapter key, or `undefined` while disabled and on the server. The record stays the same object
|
|
174
|
+
* while the store returns the same wallet objects, so it can be a dependency of memos and effects.
|
|
175
|
+
* @throws {Error} `useSatelliteConnectStore must be used within a SatelliteConnectProvider` outside the provider.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```tsx
|
|
179
|
+
* import { OrbitAdapter } from '@tuwaio/orbit-core';
|
|
180
|
+
* import { useWalletConnectors } from '@tuwaio/nova-connect/hooks';
|
|
181
|
+
*
|
|
182
|
+
* export function EvmWalletCount() {
|
|
183
|
+
* const connectors = useWalletConnectors();
|
|
184
|
+
* return <span>{connectors?.[OrbitAdapter.EVM]?.length ?? 0} EVM wallets</span>;
|
|
185
|
+
* }
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
declare function useWalletConnectors({ enabled }?: UseWalletConnectorsParams): Partial<Record<OrbitAdapter, Connector[]>> | undefined;
|
|
189
|
+
|
|
190
|
+
export { useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList, useWalletConnectors };
|
|
191
|
+
export type { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, UseWalletConnectorsParams, WalletNameAndAvatarData };
|
package/dist/hooks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,n as getLabelWithFallback,k as hasLabel,m as isDefaultLabels,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,A as useWalletChainsList,B as useWalletNativeBalance}from'../chunk-
|
|
1
|
+
export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,n as getLabelWithFallback,k as hasLabel,m as isDefaultLabels,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,A as useWalletChainsList,B as useWalletConnectors,C as useWalletNativeBalance}from'../chunk-X5SXUZJR.js';import'../chunk-AVCOIAAU.js';import'../chunk-ZVADGOGQ.js';import'../chunk-3LWAAUG4.js';
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkH3DXFMRX_cjs=require('./chunk-H3DXFMRX.cjs'),chunkU6UN2I7D_cjs=require('./chunk-U6UN2I7D.cjs'),chunkWAFPT2CO_cjs=require('./chunk-WAFPT2CO.cjs'),chunkEGATOYHY_cjs=require('./chunk-EGATOYHY.cjs');require('./chunk-YJRNNNR6.cjs');var novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),utils=require('@tuwaio/nova-core/utils'),siwxReact=require('@tuwaio/siwx-react');var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsxRuntime.jsx(chunkH3DXFMRX_cjs.I,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=chunkU6UN2I7D_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=chunkU6UN2I7D_cjs.h(),B=chunkEGATOYHY_cjs.d(a=>a.switchNetworkError),A=chunkEGATOYHY_cjs.d(a=>a.activeConnection),W=chunkEGATOYHY_cjs.d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=react.useRef(new Set),v=react.useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=react.useCallback(()=>{L(()=>{v.current&&(reactToastify.toast.dismiss(v.current),v.current=null),reactToastify.toast.dismiss({containerId:e});});},[e,L]),x=react.useCallback((a,P)=>{p(a,P,l);},[p,l]),R=react.useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};reactToastify.toast.error(jsxRuntime.jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=react.useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);react.useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d){if(c&&l!=="switch")return;N(S,b,d);}},[w,c,b,l,S,d,N,C]),react.useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=react.useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:P,...a}):novaCore.ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:I};return jsxRuntime.jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=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(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunkU6UN2I7D_cjs.g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=chunkEGATOYHY_cjs.d(t=>t.activeConnection),y=chunkEGATOYHY_cjs.d(t=>t.disconnect),v=chunkEGATOYHY_cjs.d(t=>t.isAutoConnectFinished),{signIn:M}=siwxReact.useSiwx(),f=siwxReact.useSiwxSessionStore(t=>t.session),c=siwxReact.useSiwxSessionStore(t=>t.status),w=siwxReact.useSiwxSessionStore(t=>t.reset),b=react.useRef(null),l=react.useRef(false),s=react.useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});react.useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=react.useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=react.useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=siwxReact.getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&siwxReact.isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return react.useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsxRuntime.jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsxRuntime.jsx(Z,{customization:e}),Ue=(e,r)=>utils.deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H,siwx:L,customization:p,pagination:V}){let o=chunkEGATOYHY_cjs.d(J=>J.activeConnection),y=chunkEGATOYHY_cjs.d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=react.useMemo(()=>f(chunkWAFPT2CO_cjs.a,e||{}),[e,f]),[s,O]=react.useState(false),[S,t]=react.useState(false),[d,C]=react.useState(false),[x,R]=react.useState(false),[N,I]=react.useState("idle"),[D,se]=react.useState("connectors"),[$,a]=react.useState(void 0),[P,h]=react.useState(void 0),[k,U]=react.useState(""),[K,_]=react.useState(false),[j,Ne]=react.useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t,isChainsListOpen:d,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H},G=react.useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d,x,D,j,N]),ae=react.useMemo(()=>c(l,G),[l,c,G]),he=w(we,G),ie=jsxRuntime.jsx(M,{customization:p?.errors}),Se=jsxRuntime.jsx(v,{labels:ae,children:r}),ce=i||u?jsxRuntime.jsx(chunkH3DXFMRX_cjs.H,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsxRuntime.jsx(chunkH3DXFMRX_cjs.t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsxRuntime.jsx(be,{...L}):null,de=jsxRuntime.jsx(chunkU6UN2I7D_cjs.c.Provider,{value:he,children:jsxRuntime.jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:le||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.v}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.q}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.u}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.y}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.w}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.n}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.t}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.x}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.z}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.m}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.r}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.s}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.f}});Object.defineProperty(exports,"useNovaSiwx",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.p}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.A}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunkU6UN2I7D_cjs.B}});exports.ErrorsProvider=Z;exports.NovaConnectLabelsProvider=ee;exports.NovaConnectProvider=Qe;exports.NovaSiwxWatcher=be;
|
|
1
|
+
'use strict';var chunkK2PZJCFY_cjs=require('./chunk-K2PZJCFY.cjs'),chunk3M5KO5JH_cjs=require('./chunk-3M5KO5JH.cjs'),chunkWAFPT2CO_cjs=require('./chunk-WAFPT2CO.cjs'),chunkEGATOYHY_cjs=require('./chunk-EGATOYHY.cjs');require('./chunk-YJRNNNR6.cjs');var novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),utils=require('@tuwaio/nova-core/utils'),siwxReact=require('@tuwaio/siwx-react');var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsxRuntime.jsx(chunkK2PZJCFY_cjs.I,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=chunk3M5KO5JH_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=chunk3M5KO5JH_cjs.h(),B=chunkEGATOYHY_cjs.d(a=>a.switchNetworkError),A=chunkEGATOYHY_cjs.d(a=>a.activeConnection),W=chunkEGATOYHY_cjs.d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=react.useRef(new Set),v=react.useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=react.useCallback(()=>{L(()=>{v.current&&(reactToastify.toast.dismiss(v.current),v.current=null),reactToastify.toast.dismiss({containerId:e});});},[e,L]),x=react.useCallback((a,P)=>{p(a,P,l);},[p,l]),R=react.useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};reactToastify.toast.error(jsxRuntime.jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=react.useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);react.useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d){if(c&&l!=="switch")return;N(S,b,d);}},[w,c,b,l,S,d,N,C]),react.useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=react.useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsxRuntime.jsx(novaCore.ToastCloseButton,{closeToast:P,...a}):novaCore.ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce},...n?.containerProps,className:I};return jsxRuntime.jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=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(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsxRuntime.jsx(chunk3M5KO5JH_cjs.g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=chunkEGATOYHY_cjs.d(t=>t.activeConnection),y=chunkEGATOYHY_cjs.d(t=>t.disconnect),v=chunkEGATOYHY_cjs.d(t=>t.isAutoConnectFinished),{signIn:M}=siwxReact.useSiwx(),f=siwxReact.useSiwxSessionStore(t=>t.session),c=siwxReact.useSiwxSessionStore(t=>t.status),w=siwxReact.useSiwxSessionStore(t=>t.reset),b=react.useRef(null),l=react.useRef(false),s=react.useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});react.useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=react.useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=react.useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=siwxReact.getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&siwxReact.isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return react.useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsxRuntime.jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsxRuntime.jsx(Z,{customization:e}),Ue=(e,r)=>utils.deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H,siwx:L,customization:p,pagination:V}){let o=chunkEGATOYHY_cjs.d(J=>J.activeConnection),y=chunkEGATOYHY_cjs.d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=react.useMemo(()=>f(chunkWAFPT2CO_cjs.a,e||{}),[e,f]),[s,O]=react.useState(false),[S,t]=react.useState(false),[d,C]=react.useState(false),[x,R]=react.useState(false),[N,I]=react.useState("idle"),[D,se]=react.useState("connectors"),[$,a]=react.useState(void 0),[P,h]=react.useState(void 0),[k,U]=react.useState(""),[K,_]=react.useState(false),[j,Ne]=react.useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t,isChainsListOpen:d,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H},G=react.useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d,x,D,j,N]),ae=react.useMemo(()=>c(l,G),[l,c,G]),he=w(we,G),ie=jsxRuntime.jsx(M,{customization:p?.errors}),Se=jsxRuntime.jsx(v,{labels:ae,children:r}),ce=i||u?jsxRuntime.jsx(chunkK2PZJCFY_cjs.H,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsxRuntime.jsx(chunkK2PZJCFY_cjs.t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsxRuntime.jsx(be,{...L}):null,de=jsxRuntime.jsx(chunk3M5KO5JH_cjs.c.Provider,{value:he,children:jsxRuntime.jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:le||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.o}});Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.v}});Object.defineProperty(exports,"getChainsListByConnectorType",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.q}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.u}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.y}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.w}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.n}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.t}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.x}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.z}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.m}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.r}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.s}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.f}});Object.defineProperty(exports,"useNovaSiwx",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.p}});Object.defineProperty(exports,"useWalletChainsList",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.A}});Object.defineProperty(exports,"useWalletConnectors",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.B}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunk3M5KO5JH_cjs.C}});exports.ErrorsProvider=Z;exports.NovaConnectLabelsProvider=ee;exports.NovaConnectProvider=Qe;exports.NovaSiwxWatcher=be;
|
package/dist/index.css
CHANGED
|
@@ -354,6 +354,9 @@
|
|
|
354
354
|
.novacon\:min-h-\[180px\] {
|
|
355
355
|
min-height: 180px;
|
|
356
356
|
}
|
|
357
|
+
.novacon\:min-h-\[min\(var\(--novacon-connect-list-height\)\,calc\(100dvh_-_2rem\)\)\] {
|
|
358
|
+
min-height: min(var(--novacon-connect-list-height), calc(100dvh - 2rem));
|
|
359
|
+
}
|
|
357
360
|
.novacon\:w-2 {
|
|
358
361
|
width: calc(var(--novacon-spacing) * 2);
|
|
359
362
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, WalletNameAndAvatarData, useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList } from './hooks/index.cjs';
|
|
1
|
+
export { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, UseWalletConnectorsParams, WalletNameAndAvatarData, useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList, useWalletConnectors } from './hooks/index.cjs';
|
|
2
2
|
import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './ConnectedModalTxHistory-CZGzML17.cjs';
|
|
3
3
|
export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectAppChains, f as NovaConnectChainConfigTypes, g as NovaConnectLabelsContext, h as NovaConnectProviderContext, i as NovaConnectProviderError, j as NovaConnectSolanaRPCUrls, k as NovaSiwxWatcher, l as NovaSiwxWatcherProps, U as UseWalletNativeBalanceData, m as UseWalletNativeBalanceState, W as WalletBalance, n as createLabelsSubset, o as getLabelWithFallback, p as hasLabel, q as isDefaultLabels, u as useHasNovaConnectContext, r as useLabelsByCategory, s as useNovaConnect, t as useNovaConnectLabel, v as useNovaConnectLabels, w as useNovaConnectLabelsSubset, x as useNovaConnectOptional, y as useWalletNativeBalance } from './ConnectedModalTxHistory-CZGzML17.cjs';
|
|
4
4
|
import * as React from 'react';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, WalletNameAndAvatarData, useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList } from './hooks/index.js';
|
|
1
|
+
export { UseGetWalletNameAndAvatarOptions, UseNovaSiwxOptions, UseWalletChainsListProps, UseWalletConnectorsParams, WalletNameAndAvatarData, useGetWalletNameAndAvatar, useNovaSiwx, useWalletChainsList, useWalletConnectors } from './hooks/index.js';
|
|
2
2
|
import { N as NovaConnectProviderProps, C as ConnectContentType, a as ConnectedContentType, B as ButtonTxStatus, b as NovaConnectProviderType, I as InitialChains } from './ConnectedModalTxHistory-e9frj0Sy.js';
|
|
3
3
|
export { A as AllChainConfigs, L as LabelCategory, c as LegalConfig, d as NativeBalanceResult, e as NovaConnectAppChains, f as NovaConnectChainConfigTypes, g as NovaConnectLabelsContext, h as NovaConnectProviderContext, i as NovaConnectProviderError, j as NovaConnectSolanaRPCUrls, k as NovaSiwxWatcher, l as NovaSiwxWatcherProps, U as UseWalletNativeBalanceData, m as UseWalletNativeBalanceState, W as WalletBalance, n as createLabelsSubset, o as getLabelWithFallback, p as hasLabel, q as isDefaultLabels, u as useHasNovaConnectContext, r as useLabelsByCategory, s as useNovaConnect, t as useNovaConnectLabel, v as useNovaConnectLabels, w as useNovaConnectLabelsSubset, x as useNovaConnectOptional, y as useWalletNativeBalance } from './ConnectedModalTxHistory-e9frj0Sy.js';
|
|
4
4
|
import * as React from 'react';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {H,t,I}from'./chunk-
|
|
1
|
+
import {H,t,I}from'./chunk-Y4JUUZX7.js';import {h,g,c}from'./chunk-X5SXUZJR.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,v as getAvailableChainIds,q as getChainsListByConnectorType,u as getConnectChainId,y as getFilteredConnectors,w as getGroupedConnectors,n as getLabelWithFallback,t as getWalletChains,x as hasAvailableConnectors,z as hasConnectorsForAdapter,k as hasLabel,m as isDefaultLabels,r as isEvmChainList,s as isSolanaChainList,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,A as useWalletChainsList,B as useWalletConnectors,C as useWalletNativeBalance}from'./chunk-X5SXUZJR.js';import {a}from'./chunk-AVCOIAAU.js';import {d}from'./chunk-ZVADGOGQ.js';import'./chunk-3LWAAUG4.js';import {ToastCloseButton}from'@tuwaio/nova-core';import {useRef,useCallback,useEffect,useMemo,useEffectEvent,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {deepMerge}from'@tuwaio/nova-core/utils';import {useSiwx,useSiwxSessionStore,getSatelliteSiwxFields,isSessionMatchingConnection}from'@tuwaio/siwx-react';var Be=({title:e,rawError:r,onCopyComplete:i,errorType:u,isConnected:n,...m})=>jsx(I,{title:e,rawError:r,onCopyComplete:i,customization:m.customization}),We=e=>{let r=h();return jsx(ToastContainer,{...e,role:"alert","aria-live":"assertive","aria-label":r.somethingWentWrong})},ze=(e,r)=>{e(r.title,r.rawError,r.errorKey);},He=e=>{e();},Ie=(e,r)=>{if(e&&process.env.NODE_ENV==="development"){let i=typeof r=="string"?r:r.message;console.log("Error copied to clipboard:",i.substring(0,100));}},Ae=e=>e,Fe=e=>e;function Z({containerId:e="nova-connect-errors",position:r="top-center",autoClose:i=7e3,draggable:u=false,customization:n}){let m=h(),B=d(a=>a.switchNetworkError),A=d(a=>a.activeConnection),W=d(a=>a.connectionError),{ToastError:z=Be,Container:F=We}=n?.components??{},{showError:H=ze,dismissError:L=He,onCopyComplete:p=Ie}=n?.handlers??{},{errorTitle:V=Ae,errorHash:o=Fe}=n??{},y=useRef(new Set),v=useRef(null),M=!!W,f=!!B,c=!!A?.isConnected,w=M||f,b=W||B||null,l=M?"wallet":f?"switch":null,s={hasWalletError:M,hasSwitchError:f,isConnected:c,hasAnyError:w,primaryError:b,errorType:l},O=m.somethingWentWrong;switch(s.errorType){case "wallet":O=m.connectionError;break;case "switch":O=m.errorWhenChainSwitching;break}let S=V(O,{errorType:s.errorType}),t=s.primaryError?`${s.errorType}-${s.primaryError.message.substring(0,50)}`:null,d$1=o(t,{primaryError:s.primaryError,errorType:s.errorType}),C=useCallback(()=>{L(()=>{v.current&&(toast.dismiss(v.current),v.current=null),toast.dismiss({containerId:e});});},[e,L]),x=useCallback((a,P)=>{p(a,P,l);},[p,l]),R=useCallback((a,P,h)=>{if(C(),!y.current.has(h))try{let k={containerId:e,toastId:h,onClose:()=>{y.current.delete(h),v.current=null;}},U=n?.toastOptions?.error?.({title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected}),K={...k,...U};toast.error(jsx(z,{title:a,rawError:P,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:_=>x(_,P),customization:n?.toastErrorCustomization}),K),y.current.add(h),v.current=h;}catch(k){console.error("Failed to show error toast:",k);}},[C,e,n?.toastOptions?.error,n?.toastErrorCustomization,z,s.errorType,s.isConnected,x]),N=useCallback((a,P,h)=>{H(R,{title:a,rawError:P,errorKey:h,errorType:l});},[R,H,l]);useEffect(()=>{if(c&&!w){C(),y.current.clear();return}if(w&&b&&d$1){if(c&&l!=="switch")return;N(S,b,d$1);}},[w,c,b,l,S,d$1,N,C]),useEffect(()=>()=>{C(),y.current.clear();},[C]);let I=n?.classNames?.container?n.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",D=useMemo(()=>{let a=n?.toastCloseButton;return a?({closeToast:P})=>jsx(ToastCloseButton,{closeToast:P,...a}):ToastCloseButton},[n?.toastCloseButton]),$={...{containerId:e,position:r,closeOnClick:false,icon:false,closeButton:D,autoClose:i,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:u,pauseOnHover:true,theme:"light",transition:Bounce},...n?.containerProps,className:I};return jsx(F,{...$})}Z.displayName="ErrorsProvider";function ee({labels:e,children:r}){let i=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(m=>!(m in e));n.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${n.join(", ")}`);}return jsx(g.Provider,{value:i,children:r})}ee.displayName="NovaConnectLabelsProvider";function be(e){let{enabled:r=true,getNonce:i,verifier:u,destroyer:n,domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L,onSuccess:p,onError:V}=e,o=d(t=>t.activeConnection),y=d(t=>t.disconnect),v=d(t=>t.isAutoConnectFinished),{signIn:M}=useSiwx(),f=useSiwxSessionStore(t=>t.session),c=useSiwxSessionStore(t=>t.status),w=useSiwxSessionStore(t=>t.reset),b=useRef(null),l=useRef(false),s=useEffectEvent(()=>{w(),n&&n().catch(t=>{console.warn("[NovaSiwxWatcher] Failed to execute session destroyer:",t);});});useEffect(()=>{if(!o?.isConnected||!o?.address){if(b.current=null,v===false)return;(c==="authenticated"||f)&&s();}},[o?.isConnected,o?.address,v,c,f]);let O=useEffectEvent((t,d)=>o?.connectorType===t&&o.address===d),S=useEffectEvent(()=>{if(!(!o?.isConnected||!o.address||!o.signMessage))try{let t={address:String(o.address),chainId:o.chainId,signMessage:o.signMessage,isConnected:o.isConnected},d=getSatelliteSiwxFields(t,{domain:m,uri:B,statement:A,expirationTime:W,expirationSeconds:z,notBefore:F,requestId:H,resources:L});if(c==="authenticated"&&isSessionMatchingConnection(f,t)||b.current===d.address)return;if(b.current=d.address,!u){console.warn("[NovaSiwxWatcher] Verifier not provided, skipping SIWX auto-authentication.");return}let{connectorType:C,address:x}=o,R=N=>{let I=N instanceof Error?N.message:String(N);console.warn("[NovaSiwxWatcher] SIWX authentication rejected or failed:",I),C&&O(C,x)&&y(C),w(),V?.(I);};l.current=!0,M({signer:o.signMessage,verifier:u,getNonce:i,fields:d,onSuccess:p,onError:R}).catch(R).finally(()=>{l.current=!1;});}catch(t){console.warn("[NovaSiwxWatcher] Failed to build SIWX fields:",t);}});return useEffect(()=>{!r||!o?.isConnected||!o?.address||!o?.chainId||o.signMessage&&(l.current||c==="building"||c==="signing"||c==="verifying"||S());},[o?.isConnected,o?.address,o?.chainId,o?.signMessage,o?.connectorType,r,c,f?.address]),null}var Xe=({labels:e,children:r})=>jsx(ee,{labels:e,children:r}),$e=({customization:e})=>jsx(Z,{customization:e}),Ue=(e,r)=>deepMerge(e,r||{}),_e=e=>e,je=e=>e,Je=(e,r,i)=>e;function Qe({labels:e,children:r,appChains:i,solanaRPCUrls:u,transactionPool:n,pulsarAdapter:m,withImpersonated:B,withBalance:A,withChain:W,popularConnectors:z,customConnectorGroups:F,legal:H$1,siwx:L,customization:p,pagination:V}){let o=d(J=>J.activeConnection),y=d(J=>J.connectionError),{LabelsProvider:v=Xe,ErrorsProvider:M=$e}=p?.components??{},{merge:f=Ue,transform:c$1=_e}=p?.labels??{},{transform:w=je}=p?.contextValue??{},{providerTree:b=Je}=p?.rendering??{},l=useMemo(()=>f(a,e||{}),[e,f]),[s,O]=useState(false),[S,t$1]=useState(false),[d$1,C]=useState(false),[x,R]=useState(false),[N,I]=useState("idle"),[D,se]=useState("connectors"),[$,a$1]=useState(void 0),[P,h]=useState(void 0),[k,U]=useState(""),[K,_]=useState(false),[j,Ne]=useState("main"),we={appChains:i,solanaRPCUrls:u,withImpersonated:B,popularConnectors:z,customConnectorGroups:F,withBalance:A,withChain:W,isConnectModalOpen:s,setIsConnectModalOpen:O,isConnectedModalOpen:S,setIsConnectedModalOpen:t$1,isChainsListOpen:d$1,setIsChainsListOpen:C,isChainsListOpenMobile:x,setIsChainsListOpenMobile:R,connectedButtonStatus:N,setConnectedButtonStatus:I,connectedModalContentType:j,setConnectedModalContentType:Ne,connectModalContentType:D,setConnectModalContentType:se,selectedAdapter:$,setSelectedAdapter:a$1,activeConnector:P,setActiveConnector:h,impersonatedAddress:k,setImpersonatedAddress:U,isConnected:K,setIsConnected:_,legal:H$1},G=useMemo(()=>({isConnected:K,activeConnection:o,connectionError:y,modalStates:{isConnectModalOpen:s,isConnectedModalOpen:S,isChainsListOpen:d$1,isChainsListOpenMobile:x},contentTypes:{connectModal:D,connectedModal:j},statuses:{connectedButton:N}}),[K,o,y,s,S,d$1,x,D,j,N]),ae=useMemo(()=>c$1(l,G),[l,c$1,G]),he=w(we,G),ie=jsx(M,{customization:p?.errors}),Se=jsx(v,{labels:ae,children:r}),ce=i||u?jsx(H,{solanaRPCUrls:u,appChains:i,customization:p?.modals?.connectModal}):null,le=i||u?jsx(t,{solanaRPCUrls:u,appChains:i,transactionPool:n,pulsarAdapter:m,customization:p?.modals?.connectedModal,pagination:V}):null,xe=L?jsx(be,{...L}):null,de=jsx(c.Provider,{value:he,children:jsxs(v,{labels:ae,children:[xe,ie,r,ce,le]})}),Le=b(de,{ErrorsProvider:ie,LabelsProvider:Se,MainContent:de,ConnectModal:ce||jsx(Fragment,{}),ConnectedModal:le||jsx(Fragment,{})},G);return jsx(Fragment,{children:Le})}Qe.displayName="NovaConnectProvider";export{Z as ErrorsProvider,ee as NovaConnectLabelsProvider,Qe as NovaConnectProvider,be as NovaSiwxWatcher};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuwaio/nova-connect",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Oleksandr Tkach",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -169,30 +169,30 @@
|
|
|
169
169
|
"@solana/kit": "^8.5.0",
|
|
170
170
|
"@tailwindcss/postcss": "^4.3.3",
|
|
171
171
|
"@tailwindcss/vite": "^4.3.3",
|
|
172
|
-
"@tuwaio/nova-core": "^0.10.
|
|
173
|
-
"@tuwaio/nova-transactions": "^0.10.
|
|
172
|
+
"@tuwaio/nova-core": "^0.10.6",
|
|
173
|
+
"@tuwaio/nova-transactions": "^0.10.5",
|
|
174
174
|
"@tuwaio/orbit-core": "0.6.0",
|
|
175
175
|
"@tuwaio/orbit-evm": "0.4.0",
|
|
176
|
-
"@tuwaio/orbit-solana": "0.7.
|
|
177
|
-
"@tuwaio/pulsar-core": "0.11.
|
|
178
|
-
"@tuwaio/satellite-core": "0.11.
|
|
179
|
-
"@tuwaio/satellite-evm": "0.10.
|
|
180
|
-
"@tuwaio/satellite-react": "0.10.
|
|
181
|
-
"@tuwaio/satellite-solana": "0.11.
|
|
182
|
-
"@tuwaio/siwx-react": "0.6.
|
|
176
|
+
"@tuwaio/orbit-solana": "0.7.2",
|
|
177
|
+
"@tuwaio/pulsar-core": "0.11.1",
|
|
178
|
+
"@tuwaio/satellite-core": "0.11.2",
|
|
179
|
+
"@tuwaio/satellite-evm": "0.10.2",
|
|
180
|
+
"@tuwaio/satellite-react": "0.10.2",
|
|
181
|
+
"@tuwaio/satellite-solana": "0.11.2",
|
|
182
|
+
"@tuwaio/siwx-react": "0.6.5",
|
|
183
183
|
"@types/node": "^26.6.5",
|
|
184
184
|
"@types/react": "^19.3.0",
|
|
185
|
-
"@wagmi/core": "^3.6.
|
|
185
|
+
"@wagmi/core": "^3.6.7",
|
|
186
186
|
"@wallet-standard/react": "^1.0.3",
|
|
187
187
|
"@web3icons/common": "^0.11.53",
|
|
188
188
|
"@web3icons/react": "^4.1.24",
|
|
189
|
-
"autoprefixer": "^10.6.
|
|
189
|
+
"autoprefixer": "^10.6.2",
|
|
190
190
|
"clsx": "^2.1.1",
|
|
191
191
|
"dayjs": "^1.11.23",
|
|
192
192
|
"ethereum-blockies-base64": "^1.0.2",
|
|
193
|
-
"framer-motion": "14.
|
|
194
|
-
"immer": "^11.
|
|
195
|
-
"postcss": "^8.5.
|
|
193
|
+
"framer-motion": "14.7.1",
|
|
194
|
+
"immer": "^11.2.9",
|
|
195
|
+
"postcss": "^8.5.32",
|
|
196
196
|
"postcss-cli": "^12.0.0",
|
|
197
197
|
"react": "^19.3.1",
|
|
198
198
|
"react-toastify": "^11.1.0",
|
|
@@ -201,8 +201,8 @@
|
|
|
201
201
|
"tsup": "^9.0.0",
|
|
202
202
|
"tw-animate-css": "^1.4.0",
|
|
203
203
|
"typescript": "6.0.3",
|
|
204
|
-
"viem": "^2.57.
|
|
205
|
-
"zustand": "^5.0.
|
|
204
|
+
"viem": "^2.57.13",
|
|
205
|
+
"zustand": "^5.0.16"
|
|
206
206
|
},
|
|
207
207
|
"scripts": {
|
|
208
208
|
"start": "tsup src/index.ts --watch",
|