@tuwaio/nova-connect 0.1.5 → 0.1.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 +40 -45
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Nova Connect
|
|
1
|
+
# TUWA Nova Connect
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@tuwaio/nova-connect)
|
|
4
4
|
[](./LICENSE)
|
|
@@ -26,7 +26,6 @@ Built on top of the Satellite Connect ecosystem, Nova Connect offers a unified i
|
|
|
26
26
|
- **♿ Accessibility**: Full ARIA and keyboard navigation support.
|
|
27
27
|
- **🎭 Internationalization**: Support for multiple languages.
|
|
28
28
|
- **🔄 State Management**: Zustand-based store for efficient state management.
|
|
29
|
-
- **📱 Responsiveness**: Mobile-first design.
|
|
30
29
|
|
|
31
30
|
---
|
|
32
31
|
|
|
@@ -34,7 +33,7 @@ Built on top of the Satellite Connect ecosystem, Nova Connect offers a unified i
|
|
|
34
33
|
|
|
35
34
|
### Requirements
|
|
36
35
|
- React 19+
|
|
37
|
-
- Node.js
|
|
36
|
+
- Node.js 20+
|
|
38
37
|
- TypeScript 5.9+
|
|
39
38
|
|
|
40
39
|
```bash
|
|
@@ -56,55 +55,66 @@ yarn add @tuwaio/nova-connect @tuwaio/satellite-core @tuwaio/orbit-core @tuwaio/
|
|
|
56
55
|
|
|
57
56
|
```tsx
|
|
58
57
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
59
|
-
import { satelliteEVMAdapter } from '@tuwaio/satellite-evm';
|
|
60
|
-
import {
|
|
58
|
+
import { satelliteEVMAdapter, createDefaultTransports, initAllConnectors } from '@tuwaio/satellite-evm';
|
|
59
|
+
import { NovaConnectProvider } from '@tuwaio/nova-connect';
|
|
60
|
+
import { SatelliteConnectProvider } from '@tuwaio/nova-connect/satellite';
|
|
61
61
|
import { EVMWalletsWatcher } from '@tuwaio/nova-connect/evm';
|
|
62
62
|
import { SolanaWalletsWatcher } from '@tuwaio/nova-connect/solana';
|
|
63
|
-
import {
|
|
64
|
-
import { createDefaultTransports, initAllConnectors } from '@tuwaio/satellite-evm';
|
|
65
|
-
import { createConfig } from '@wagmi/core';
|
|
66
|
-
import { ReactNode } from 'react';
|
|
63
|
+
import { satelliteSolanaAdapter } from '@tuwaio/satellite-solana';
|
|
67
64
|
import { WagmiProvider } from 'wagmi';
|
|
68
|
-
import {
|
|
65
|
+
import { ReactNode } from 'react';
|
|
66
|
+
import { createConfig, http } from '@wagmi/core';
|
|
67
|
+
import { mainnet, sepolia } from 'viem/chains';
|
|
68
|
+
import type { Chain } from 'viem/chains';
|
|
69
69
|
|
|
70
70
|
export const appConfig = {
|
|
71
|
-
appName: '
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
export const solanaRPCUrls = {
|
|
75
|
-
mainnet: 'https://api.mainnet-beta.solana.com',
|
|
71
|
+
appName: 'Satellite EVM Test App',
|
|
72
|
+
// Ensure you have WalletConnect Project ID in your environment variables
|
|
73
|
+
projectId: process.env.NEXT_PUBLIC_WALLET_PROJECT_ID ?? 'YOUR_OWN_PROJECT_ID',
|
|
76
74
|
};
|
|
77
75
|
|
|
78
|
-
export const appEVMChains = [
|
|
76
|
+
export const appEVMChains = [
|
|
77
|
+
mainnet,
|
|
78
|
+
sepolia,
|
|
79
|
+
] as readonly [Chain, ...Chain[]];
|
|
79
80
|
|
|
80
81
|
export const wagmiConfig = createConfig({
|
|
81
82
|
connectors: initAllConnectors({
|
|
82
83
|
...appConfig,
|
|
84
|
+
// Optional: Add app details for WalletConnect modal
|
|
85
|
+
description: 'My awesome dApp',
|
|
86
|
+
appUrl: '[https://my-dapp.com](https://my-dapp.com)',
|
|
87
|
+
appIcons: ['[https://my-dapp.com/icon.png](https://my-dapp.com/icon.png)'],
|
|
83
88
|
}),
|
|
84
|
-
transports: createDefaultTransports(appEVMChains),
|
|
89
|
+
transports: createDefaultTransports(appEVMChains), // Automatically creates http transports
|
|
85
90
|
chains: appEVMChains,
|
|
86
|
-
ssr: true,
|
|
87
|
-
syncConnectedChain: true,
|
|
91
|
+
ssr: true, // Enable SSR support if needed (e.g., in Next.js)
|
|
88
92
|
});
|
|
89
93
|
|
|
90
|
-
const
|
|
94
|
+
export const solanaRPCUrls = {
|
|
95
|
+
devnet: 'https://api.devnet.solana.com',
|
|
96
|
+
};
|
|
91
97
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
...appConfig,
|
|
95
|
-
});
|
|
98
|
+
|
|
99
|
+
const queryClient = new QueryClient();
|
|
96
100
|
|
|
97
101
|
export function Providers({ children }: { children: ReactNode }) {
|
|
98
102
|
return (
|
|
99
103
|
<WagmiProvider config={wagmiConfig}>
|
|
100
104
|
<QueryClientProvider client={queryClient}>
|
|
101
105
|
<SatelliteConnectProvider
|
|
102
|
-
|
|
103
|
-
|
|
106
|
+
adapter={[satelliteEVMAdapter(wagmiConfig), satelliteSolanaAdapter({ rpcUrls: solanaRPCUrls })]}
|
|
107
|
+
autoConnect={true}
|
|
104
108
|
>
|
|
105
|
-
<EVMWalletsWatcher />
|
|
109
|
+
<EVMWalletsWatcher wagmiConfig={wagmiConfig} />
|
|
106
110
|
<SolanaWalletsWatcher />
|
|
107
|
-
<NovaConnectProvider
|
|
111
|
+
<NovaConnectProvider
|
|
112
|
+
appChains={appEVMChains}
|
|
113
|
+
solanaRPCUrls={solanaRPCUrls}
|
|
114
|
+
withImpersonated
|
|
115
|
+
withBalance
|
|
116
|
+
withChain
|
|
117
|
+
>
|
|
108
118
|
{children}
|
|
109
119
|
</NovaConnectProvider>
|
|
110
120
|
</SatelliteConnectProvider>
|
|
@@ -117,18 +127,12 @@ export function Providers({ children }: { children: ReactNode }) {
|
|
|
117
127
|
### Using ConnectButton
|
|
118
128
|
|
|
119
129
|
```tsx
|
|
120
|
-
import { ConnectButton } from '@tuwaio/nova-connect';
|
|
130
|
+
import { ConnectButton } from '@tuwaio/nova-connect/components';
|
|
121
131
|
|
|
122
132
|
function App() {
|
|
123
133
|
return (
|
|
124
134
|
<div>
|
|
125
|
-
<ConnectButton
|
|
126
|
-
appChains={appEVMChains}
|
|
127
|
-
solanaRPCUrls={solanaRPCUrls}
|
|
128
|
-
withImpersonated
|
|
129
|
-
withBalance
|
|
130
|
-
withChain
|
|
131
|
-
/>
|
|
135
|
+
<ConnectButton />
|
|
132
136
|
</div>
|
|
133
137
|
);
|
|
134
138
|
}
|
|
@@ -141,7 +145,6 @@ function App() {
|
|
|
141
145
|
### 1. **ConnectButton**
|
|
142
146
|
|
|
143
147
|
- Main component for wallet connection.
|
|
144
|
-
- Built-in support for balance display and network selector.
|
|
145
148
|
- Full customization system.
|
|
146
149
|
|
|
147
150
|
### 2. **NovaConnectProvider**
|
|
@@ -150,10 +153,6 @@ function App() {
|
|
|
150
153
|
- Customizable error handling.
|
|
151
154
|
- Flexible internationalization system.
|
|
152
155
|
|
|
153
|
-
### 3. **Hooks**
|
|
154
|
-
|
|
155
|
-
- `useWalletBalance`: Get the wallet balance.
|
|
156
|
-
|
|
157
156
|
-----
|
|
158
157
|
|
|
159
158
|
## 🌍 Internationalization
|
|
@@ -198,7 +197,3 @@ If you find this library useful, please consider supporting its development. Eve
|
|
|
198
197
|
## 📄 License
|
|
199
198
|
|
|
200
199
|
This project is licensed under the **Apache-2.0 License** - see the [LICENSE](./LICENSE) file for details.
|
|
201
|
-
|
|
202
|
-
## 👥 Contributors
|
|
203
|
-
|
|
204
|
-
- **Oleksandr Tkach** - [GitHub](https://github.com/Argeare5)
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunkDPOT7DDY_cjs=require('./chunk-DPOT7DDY.cjs'),chunkNMQZA377_cjs=require('./chunk-NMQZA377.cjs'),chunk7FTV55DQ_cjs=require('./chunk-7FTV55DQ.cjs'),chunkQERPNHKX_cjs=require('./chunk-QERPNHKX.cjs'),chunkOA6MB7CZ_cjs=require('./chunk-OA6MB7CZ.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion'),gill=require('gill');var pe=({title:o,rawError:e,onCopyComplete:a,errorType:r,isConnected:t,...f})=>jsxRuntime.jsx(chunkDPOT7DDY_cjs.N,{title:o,rawError:e,onCopyComplete:a,customization:f.customization}),ue=o=>{let e=chunk7FTV55DQ_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ce=(o,e)=>{o(e.title,e.rawError,e.errorKey);},fe=o=>{o();},ve=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},ye=o=>o,ge=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:a=7e3,draggable:r=false,customization:t}){let f=chunk7FTV55DQ_cjs.h(),u=chunkOA6MB7CZ_cjs.h(l=>l.switchNetworkError),R=chunkOA6MB7CZ_cjs.h(l=>l.activeWallet),B=chunkOA6MB7CZ_cjs.h(l=>l.walletConnectionError),{ToastError:N=pe,Container:y=ue}=t?.components??{},{showError:d=Ce,dismissError:O=fe,onCopyComplete:S=ve}=t?.handlers??{},{errorTitle:D=ye,errorHash:E=ge}=t??{},M=react.useRef(new Set),x=react.useRef(null),s=react.useMemo(()=>{let l=!!B,b=!!u,P=!!R?.isConnected;return {hasWalletError:l,hasSwitchError:b,isConnected:P,hasAnyError:l||b,primaryError:B||u||null,errorType:l?"wallet":b?"switch":null}},[B,u,R?.isConnected]),H=react.useMemo(()=>{switch(s.errorType){case "wallet":return f.walletConnectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=react.useMemo(()=>D(H,{errorType:s.errorType}),[D,H,s.errorType]),z=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>E(z,{primaryError:s.primaryError,errorType:s.errorType}),[E,z,s.primaryError,s.errorType]),T=react.useCallback(()=>{O(()=>{x.current&&(reactToastify.toast.dismiss(x.current),x.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),F=react.useCallback((l,b)=>{S(l,b,s.errorType);},[S,s.errorType]),n=react.useCallback((l,b,P)=>{if(T(),!M.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{M.current.delete(P),x.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:b,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};reactToastify.toast.error(jsxRuntime.jsx(N,{title:l,rawError:b,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,b),customization:t?.toastErrorCustomization}),q),M.current.add(P),x.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[T,o,t?.toastOptions?.error,t?.toastErrorCustomization,N,s.errorType,s.isConnected,F]),v=react.useCallback((l,b,P)=>{d(n,{title:l,rawError:b,errorKey:P,errorType:s.errorType});},[n,d,s.errorType]);react.useEffect(()=>{let{hasAnyError:l,isConnected:b,primaryError:P}=s;if(b&&!l){T(),M.current.clear();return}if(l&&P&&C){if(b&&s.errorType!=="switch")return;v(m,P,C);}},[s,m,C,v,T]),react.useEffect(()=>()=>{T(),M.current.clear();},[T]);let g=react.useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=react.useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,autoClose:a,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,e,a,r]),h=react.useMemo(()=>({...p,...t?.containerProps,className:g}),[p,t?.containerProps,g]);return jsxRuntime.jsx(y,{...h})}Mo.displayName="ErrorsProvider";function Po({labels:o,children:e}){let a=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunk7FTV55DQ_cjs.g.Provider,{value:a,children:e})}Po.displayName="NovaConnectLabelsProvider";function He(o,e){if(!o||!Array.isArray(o)||!e)return;let a=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?orbitCore.formatWalletName(r.name)===e:false);return a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?a.name:void 0}var qo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("div",{ref:t,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));qo.displayName="DefaultModalContainer";var Jo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("div",{ref:t,className:o,...r,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:e})}));Jo.displayName="DefaultModalHeader";var Qo=react.forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsxRuntime.jsx("button",{ref:t,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...r,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Qo.displayName="DefaultInfoButton";var Xo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:t,className:novaCore.cn("novacon:flex novacon:items-center",o),...r,children:e}));Xo.displayName="DefaultTitle";var Yo=react.forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:t,type:"button",onClick:e,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...r,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));Yo.displayName="DefaultCloseButton";var Zo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("main",{ref:t,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...r,children:e}));Zo.displayName="DefaultMainContent";var oe=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("footer",{ref:t,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...r,children:e}));oe.displayName="DefaultFooter";var ee=react.forwardRef(({className:o,onClick:e,children:a,modalData:r,...t},f)=>jsxRuntime.jsx("button",{ref:f,type:"button",onClick:e,className:novaCore.cn(novaCore.standardButtonClasses,o),...t,children:a}));ee.displayName="DefaultBackButton";var te=react.forwardRef(({className:o,onClick:e,children:a,disabled:r,loading:t,buttonConfig:f,modalData:u,...R},B)=>jsxRuntime.jsx("button",{ref:B,type:"button",onClick:e,disabled:r||t,className:novaCore.cn(novaCore.standardButtonClasses,o),...R,children:t?"Loading...":a}));te.displayName="DefaultActionButton";var ne=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("span",{ref:t,className:novaCore.cn("novacon:sr-only",o),...r,children:e}));ne.displayName="DefaultActionDescription";var re=react.forwardRef(({children:o,className:e,...a},r)=>{let{modalData:t,...f}=a;return jsxRuntime.jsx("div",{ref:r,className:e,...f,children:o})});re.displayName="DefaultEmptyState";var No=react.memo(({appChains:o,solanaRPCUrls:e,withImpersonated:a,customization:r={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:f,setConnectModalContentType:u,setActiveConnector:R,setImpersonatedAddress:B,setIsConnected:N,connectModalContentType:y,selectedAdapter:d,setSelectedAdapter:O,isConnected:S,activeConnector:D,impersonatedAddress:E}=chunk7FTV55DQ_cjs.d(),M=chunkOA6MB7CZ_cjs.h(c=>c.walletConnectionError),x=chunkOA6MB7CZ_cjs.h(c=>c.getConnectors),s=chunkOA6MB7CZ_cjs.h(c=>c.connect),H=chunkOA6MB7CZ_cjs.h(c=>c.activeWallet),m=chunk7FTV55DQ_cjs.h(),z=react.useContext(chunkOA6MB7CZ_cjs.f),C=react.useMemo(()=>{if(t)return x()},[t,x]),T=react.useMemo(()=>chunkDPOT7DDY_cjs.f({connectors:C,selectedAdapter:d}),[C,d]),F=react.useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),n=react.useMemo(()=>({contentType:y,selectedAdapter:d,activeConnector:D,impersonatedAddress:E,isConnected:S,isOpen:t,error:F,connectors:C,filteredConnectors:T,labels:m}),[y,d,D,E,S,t,F,C,T,m]);react.useEffect(()=>{t&&(u("connectors"),O(void 0),R(void 0),B(""),N(false));},[t]);let{components:v={},classNames:g={},handlers:p={},config:h={},childComponents:l={}}=r,b=v.ModalContainer||qo,P=v.ModalHeader||Jo,V=v.InfoButton||Qo,_=v.Title||Xo,q=v.CloseButton||Yo,J=v.MainContent||Zo,Q=v.Footer||oe,so=v.BackButton||ee,X=v.ActionButton||te,io=v.ActionDescription||ne,G=v.EmptyState||re,Co=v.Dialog||novaCore.Dialog,lo=v.DialogContent||novaCore.DialogContent,eo=v.MotionDiv||framerMotion.motion.div,to=react.useCallback(()=>{switch(y){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d&&D&&C&&He(C[d],D)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[y,d,D,C,m]),Y=react.useCallback(()=>"connectors",[y]),Z=react.useCallback(c=>{p?.onOpenChange?p.onOpenChange(c,n):f(c);},[p?.onOpenChange,n,f]),fo=react.useCallback(()=>{let c=()=>u(Y());p?.onBack?p.onBack(n,c):c();},[p?.onBack,n,u,Y]),vo=react.useCallback(()=>{p?.onInfoClick?p.onInfoClick(n):u("about");},[p?.onInfoClick,n,u]),$=react.useCallback(async(c,yo)=>{await s({walletType:c,chainId:chunkDPOT7DDY_cjs.b({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await orbitCore.waitFor(()=>z?.getState().activeWallet?.isConnected),N(!0);let go=setTimeout(()=>f(!1),400),le=setTimeout(()=>N(!1),500);await orbitCore.delay(null,500),clearTimeout(go),clearTimeout(le);}catch(go){console.error(go);}},[s,o,d,e]),j=react.useCallback(async(c,yo)=>{O(c),u("connecting"),await $(yo,c);},[$]),Bo=react.useCallback(c=>{R(orbitCore.formatWalletName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(orbitCore.formatWalletName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d?u(orbitCore.formatWalletName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatWalletName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d]),se=react.useCallback(()=>{switch(y){case "network":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.L,{activeConnector:D,connectors:T,onClick:j,customization:l.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkDPOT7DDY_cjs.M,{networks:Object.keys(C),selectedAdapter:d,onSelect:c=>O(c),customization:l.networkTabs}),jsxRuntime.jsx(chunkDPOT7DDY_cjs.I,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:T,selectedAdapter:d,onClick:Bo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:N,setIsOpen:f,withImpersonated:a,customization:l.connectorsSelections})]}):jsxRuntime.jsx(G,{className:g.emptyConnectors?.({modalData:n}),modalData:n,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.C,{customization:l.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.J,{customization:l.getWallet});case "connecting":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.F,{selectedAdapter:d,connectors:T,activeConnector:D,isConnected:S,customization:l.connecting});case "impersonate":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.K,{impersonatedAddress:E,setImpersonatedAddress:B,customization:l.impersonateForm})}},[y,D,T,j,l,C,d,Bo,S,E]),K=react.useCallback(()=>{switch(y){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p.onActionClick?.connectors?p.onActionClick.connectors(n):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p.onActionClick?.getWallet?p.onActionClick.getWallet(n):window.open(chunkDPOT7DDY_cjs.i[d??Object.keys(C)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p.onActionClick?.about?p.onActionClick.about(n):window.open(chunkDPOT7DDY_cjs.i[d??Object.keys(C)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p.onActionClick?.impersonate)await p.onActionClick.impersonate(n);else {let c=E.trim();if(M||!c||gill.isAddress(c)||H?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(c),await $(`${d??orbitCore.OrbitAdapter.EVM}:impersonatedwallet`,d??orbitCore.OrbitAdapter.EVM),u("connecting");}}};case "connecting":return M&&d&&D?{title:m.tryAgain,onClick:async()=>{p.onActionClick?.connecting?await p.onActionClick.connecting(n):await $(orbitCore.getWalletTypeFromConnectorName(d,D),d);}}:void 0}},[y,m,p,n,d,C,E,M,$,D])(),ie=react.useCallback(()=>{switch(y){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[y]);return jsxRuntime.jsx(Co,{open:t,onOpenChange:Z,children:jsxRuntime.jsx(lo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(eo,{layout:true,transition:{layout:{duration:h.animation?.disabled?0:h.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(b,{className:g.modalContainer?.({modalData:n}),modalData:n,children:[jsxRuntime.jsxs(P,{className:g.header?.({modalData:n}),modalData:n,children:[jsxRuntime.jsxs(_,{className:g.title?.({modalData:n}),modalData:n,children:[y==="connectors"&&jsxRuntime.jsx(V,{className:g.infoButton?.({modalData:n}),onClick:vo,"aria-label":h.ariaLabels?.infoButton?.(n)||`${m.learnMore} ${m.aboutWallets}`,modalData:n}),to()]}),jsxRuntime.jsx(q,{className:g.closeButton?.({modalData:n}),onClick:()=>Z(false),"aria-label":h.ariaLabels?.closeButton?.(n)||m.closeModal,modalData:n})]}),jsxRuntime.jsx(J,{className:g.mainContent?.({modalData:n}),modalData:n,children:se()}),jsxRuntime.jsxs(Q,{className:g.footer?.({modalData:n}),modalData:n,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:y!=="connectors"&&jsxRuntime.jsx(so,{className:g.backButton?.({modalData:n}),onClick:fo,"aria-label":h.ariaLabels?.backButton?.(n)||`${m.back} to previous step`,modalData:n,children:m.back})}),K&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(X,{className:g.actionButton?.({modalData:n,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:n,buttonConfig:K,children:K.title}),jsxRuntime.jsx(io,{id:"bottom-action-description",className:g.actionDescription?.({modalData:n}),modalData:n,children:ie()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsxRuntime.jsx(Po,{labels:o,children:e}),Ve=({customization:o})=>jsxRuntime.jsx(Mo,{customization:o}),Ue=(o,e)=>novaCore.deepMerge(o,e||{}),Ge=o=>o,$e=o=>o,je=(o,e,a)=>o;function Ke({labels:o,children:e,appChains:a,solanaRPCUrls:r,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:R,withChain:B,customization:N}){let y=chunkOA6MB7CZ_cjs.h(j=>j.activeWallet),d=chunkOA6MB7CZ_cjs.h(j=>j.walletConnectionError),{LabelsProvider:O=Fe,ErrorsProvider:S=Ve}=N?.components??{},{merge:D=Ue,transform:E=Ge}=N?.labels??{},{transform:M=$e}=N?.contextValue??{},{providerTree:x=je}=N?.rendering??{},s=react.useMemo(()=>D(chunkQERPNHKX_cjs.a,o||{}),[o,D]),[H,m]=react.useState(false),[z,C]=react.useState(false),[T,F]=react.useState(false),[n,v]=react.useState(false),[g,p]=react.useState("idle"),[h,l]=react.useState("connectors"),[b,P]=react.useState(void 0),[V,_]=react.useState(void 0),[q,J]=react.useState(""),[Q,so]=react.useState(false),[X,io]=react.useState("main"),G=react.useMemo(()=>({isConnected:Q,activeWallet:y,walletConnectionError:d,modalStates:{isConnectModalOpen:H,isConnectedModalOpen:z,isChainsListOpen:T,isChainsListOpenMobile:n},contentTypes:{connectModal:h,connectedModal:X},statuses:{connectedButton:g}}),[Q,y,d,H,z,T,n,h,X,g]),Co=react.useMemo(()=>E(s,G),[s,E,G]),lo=react.useMemo(()=>M({appChains:a,solanaRPCUrls:r,withImpersonated:u,withBalance:R,withChain:B,isConnectModalOpen:H,setIsConnectModalOpen:m,isConnectedModalOpen:z,setIsConnectedModalOpen:C,isChainsListOpen:T,setIsChainsListOpen:F,isChainsListOpenMobile:n,setIsChainsListOpenMobile:v,connectedButtonStatus:g,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h,setConnectModalContentType:l,selectedAdapter:b,setSelectedAdapter:P,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[a,r,u,R,B,H,m,z,C,T,F,n,v,g,p,X,io,h,l,b,P,V,_,q,J,Q,so,M,G]),eo=jsxRuntime.jsx(S,{customization:N?.errors}),to=jsxRuntime.jsx(O,{labels:Co,children:e}),Y=a&&r?jsxRuntime.jsx(No,{withImpersonated:u,solanaRPCUrls:r,appChains:a,customization:N?.modals?.connectModal}):null,Z=a&&r?jsxRuntime.jsx(chunkDPOT7DDY_cjs.B,{solanaRPCUrls:r,appChains:a,transactionPool:t,pulsarAdapter:f,customization:N?.modals?.connectedModal}):null,fo=jsxRuntime.jsxs(chunk7FTV55DQ_cjs.c.Provider,{value:lo,children:[eo,to,Y,Z]}),vo=jsxRuntime.jsxs(chunk7FTV55DQ_cjs.c.Provider,{value:lo,children:[eo,to,Y,Z]}),$=x(vo,{ErrorsProvider:eo,LabelsProvider:to,MainContent:fo,ConnectModal:Y||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:Z||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:$})}Ke.displayName="NovaConnectProvider";async function qn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByWalletType-CDPECVNS.cjs');return {hasEvmUtils:await ho(),hasSolanaUtils:await wo(),adaptersStatus:o()}}async function ho(){try{return await import('./utils-DZB4ZTS4.cjs'),!0}catch{return false}}async function wo(){try{return await import('./utils-H5O25MTI.cjs'),!0}catch{return false}}async function Jn(){try{return {available:!0,...await import('./evm/index.cjs')}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Qn(){try{return {available:!0,...await import('./solana/index.cjs')}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Xn(){let o={evm:false,solana:false,errors:[]};try{let{preloadChainAdapters:e}=await import('./getChainsListByWalletType-CDPECVNS.cjs');await e([orbitCore.OrbitAdapter.EVM,orbitCore.OrbitAdapter.SOLANA]),o.evm=await ho(),o.solana=await wo();}catch(e){let a=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(a);}return o}async function Yn(o){switch(o){case orbitCore.OrbitAdapter.EVM:return ho();case orbitCore.OrbitAdapter.SOLANA:return wo();case orbitCore.OrbitAdapter.Starknet:return false;default:return false}}Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.c}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.j}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.b}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.f}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.d}});Object.defineProperty(exports,"getNetworkIcon",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.h}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.e}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.g}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.k}});Object.defineProperty(exports,"networksLinks",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.i}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkNMQZA377_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkNMQZA377_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.g}});Object.defineProperty(exports,"getChainsListByWalletType",{enumerable:true,get:function(){return chunkNMQZA377_cjs.b}});Object.defineProperty(exports,"getChainsListByWalletTypeAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.a}});Object.defineProperty(exports,"getChainsListByWalletTypeSync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkNMQZA377_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkNMQZA377_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkNMQZA377_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkNMQZA377_cjs.j}});Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.o}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.n}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.m}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.f}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.p}});exports.ErrorsProvider=Mo;exports.NovaConnectLabelsProvider=Po;exports.NovaConnectProvider=Ke;exports.getBlockchainUtilities=qn;exports.getEvmUtils=Jn;exports.getSolanaUtils=Qn;exports.initializeBlockchainSupport=Xn;exports.isAdapterSupported=Yn;//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var chunkDPOT7DDY_cjs=require('./chunk-DPOT7DDY.cjs'),chunkNMQZA377_cjs=require('./chunk-NMQZA377.cjs'),chunk7FTV55DQ_cjs=require('./chunk-7FTV55DQ.cjs'),chunkQERPNHKX_cjs=require('./chunk-QERPNHKX.cjs'),chunkOA6MB7CZ_cjs=require('./chunk-OA6MB7CZ.cjs'),orbitCore=require('@tuwaio/orbit-core'),novaCore=require('@tuwaio/nova-core'),react=require('react'),reactToastify=require('react-toastify'),jsxRuntime=require('react/jsx-runtime'),outline=require('@heroicons/react/24/outline'),framerMotion=require('framer-motion'),gill=require('gill');var pe=({title:o,rawError:e,onCopyComplete:a,errorType:r,isConnected:t,...f})=>jsxRuntime.jsx(chunkDPOT7DDY_cjs.N,{title:o,rawError:e,onCopyComplete:a,customization:f.customization}),ue=o=>{let e=chunk7FTV55DQ_cjs.h();return jsxRuntime.jsx(reactToastify.ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},Ce=(o,e)=>{o(e.title,e.rawError,e.errorKey);},fe=o=>{o();},ve=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},ye=o=>o,ge=o=>o;function Mo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:a=7e3,draggable:r=false,customization:t}){let f=chunk7FTV55DQ_cjs.h(),u=chunkOA6MB7CZ_cjs.h(l=>l.switchNetworkError),R=chunkOA6MB7CZ_cjs.h(l=>l.activeWallet),B=chunkOA6MB7CZ_cjs.h(l=>l.walletConnectionError),{ToastError:N=pe,Container:y=ue}=t?.components??{},{showError:d=Ce,dismissError:O=fe,onCopyComplete:S=ve}=t?.handlers??{},{errorTitle:D=ye,errorHash:E=ge}=t??{},M=react.useRef(new Set),x=react.useRef(null),s=react.useMemo(()=>{let l=!!B,b=!!u,P=!!R?.isConnected;return {hasWalletError:l,hasSwitchError:b,isConnected:P,hasAnyError:l||b,primaryError:B||u||null,errorType:l?"wallet":b?"switch":null}},[B,u,R?.isConnected]),H=react.useMemo(()=>{switch(s.errorType){case "wallet":return f.walletConnectionError;case "switch":return f.errorWhenChainSwitching;default:return f.somethingWentWrong}},[s.errorType,f]),m=react.useMemo(()=>D(H,{errorType:s.errorType}),[D,H,s.errorType]),z=react.useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),C=react.useMemo(()=>E(z,{primaryError:s.primaryError,errorType:s.errorType}),[E,z,s.primaryError,s.errorType]),T=react.useCallback(()=>{O(()=>{x.current&&(reactToastify.toast.dismiss(x.current),x.current=null),reactToastify.toast.dismiss({containerId:o});});},[o,O]),F=react.useCallback((l,b)=>{S(l,b,s.errorType);},[S,s.errorType]),n=react.useCallback((l,b,P)=>{if(T(),!M.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{M.current.delete(P),x.current=null;}},_=t?.toastOptions?.error?.({title:l,rawError:b,errorType:s.errorType,isConnected:s.isConnected}),q={...V,..._};reactToastify.toast.error(jsxRuntime.jsx(N,{title:l,rawError:b,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:J=>F(J,b),customization:t?.toastErrorCustomization}),q),M.current.add(P),x.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[T,o,t?.toastOptions?.error,t?.toastErrorCustomization,N,s.errorType,s.isConnected,F]),v=react.useCallback((l,b,P)=>{d(n,{title:l,rawError:b,errorKey:P,errorType:s.errorType});},[n,d,s.errorType]);react.useEffect(()=>{let{hasAnyError:l,isConnected:b,primaryError:P}=s;if(b&&!l){T(),M.current.clear();return}if(l&&P&&C){if(b&&s.errorType!=="switch")return;v(m,P,C);}},[s,m,C,v,T]),react.useEffect(()=>()=>{T(),M.current.clear();},[T]);let g=react.useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),p=react.useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:novaCore.ToastCloseButton,autoClose:a,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:reactToastify.Bounce}),[o,e,a,r]),h=react.useMemo(()=>({...p,...t?.containerProps,className:g}),[p,t?.containerProps,g]);return jsxRuntime.jsx(y,{...h})}Mo.displayName="ErrorsProvider";function Po({labels:o,children:e}){let a=react.useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(f=>!(f in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsxRuntime.jsx(chunk7FTV55DQ_cjs.g.Provider,{value:a,children:e})}Po.displayName="NovaConnectLabelsProvider";function He(o,e){if(!o||!Array.isArray(o)||!e)return;let a=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?orbitCore.formatWalletName(r.name)===e:false);return a&&typeof a=="object"&&"name"in a&&typeof a.name=="string"?a.name:void 0}var qo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("div",{ref:t,className:novaCore.cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));qo.displayName="DefaultModalContainer";var Jo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("div",{ref:t,className:o,...r,children:jsxRuntime.jsx(novaCore.DialogHeader,{children:e})}));Jo.displayName="DefaultModalHeader";var Qo=react.forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsxRuntime.jsx("button",{ref:t,className:novaCore.cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...r,children:jsxRuntime.jsx(outline.InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Qo.displayName="DefaultInfoButton";var Xo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx(novaCore.DialogTitle,{ref:t,className:novaCore.cn("novacon:flex novacon:items-center",o),...r,children:e}));Xo.displayName="DefaultTitle";var Yo=react.forwardRef(({className:o,onClick:e,modalData:a,...r},t)=>jsxRuntime.jsx(novaCore.DialogClose,{asChild:true,children:jsxRuntime.jsx("button",{ref:t,type:"button",onClick:e,className:novaCore.cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...r,children:jsxRuntime.jsx(novaCore.CloseIcon,{"aria-hidden":"true"})})}));Yo.displayName="DefaultCloseButton";var Zo=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("main",{ref:t,className:novaCore.cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...r,children:e}));Zo.displayName="DefaultMainContent";var oe=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("footer",{ref:t,className:novaCore.cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...r,children:e}));oe.displayName="DefaultFooter";var ee=react.forwardRef(({className:o,onClick:e,children:a,modalData:r,...t},f)=>jsxRuntime.jsx("button",{ref:f,type:"button",onClick:e,className:novaCore.cn(novaCore.standardButtonClasses,o),...t,children:a}));ee.displayName="DefaultBackButton";var te=react.forwardRef(({className:o,onClick:e,children:a,disabled:r,loading:t,buttonConfig:f,modalData:u,...R},B)=>jsxRuntime.jsx("button",{ref:B,type:"button",onClick:e,disabled:r||t,className:novaCore.cn(novaCore.standardButtonClasses,o),...R,children:t?"Loading...":a}));te.displayName="DefaultActionButton";var ne=react.forwardRef(({className:o,children:e,modalData:a,...r},t)=>jsxRuntime.jsx("span",{ref:t,className:novaCore.cn("novacon:sr-only",o),...r,children:e}));ne.displayName="DefaultActionDescription";var re=react.forwardRef(({children:o,className:e,...a},r)=>{let{modalData:t,...f}=a;return jsxRuntime.jsx("div",{ref:r,className:e,...f,children:o})});re.displayName="DefaultEmptyState";var No=react.memo(({appChains:o,solanaRPCUrls:e,withImpersonated:a,customization:r={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:f,setConnectModalContentType:u,setActiveConnector:R,setImpersonatedAddress:B,setIsConnected:N,connectModalContentType:y,selectedAdapter:d,setSelectedAdapter:O,isConnected:S,activeConnector:D,impersonatedAddress:E}=chunk7FTV55DQ_cjs.d(),M=chunkOA6MB7CZ_cjs.h(c=>c.walletConnectionError),x=chunkOA6MB7CZ_cjs.h(c=>c.getConnectors),s=chunkOA6MB7CZ_cjs.h(c=>c.connect),H=chunkOA6MB7CZ_cjs.h(c=>c.activeWallet),m=chunk7FTV55DQ_cjs.h(),z=react.useContext(chunkOA6MB7CZ_cjs.f),C=react.useMemo(()=>{if(t)return x()},[t,x]),T=react.useMemo(()=>chunkDPOT7DDY_cjs.f({connectors:C,selectedAdapter:d}),[C,d]),F=react.useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),n=react.useMemo(()=>({contentType:y,selectedAdapter:d,activeConnector:D,impersonatedAddress:E,isConnected:S,isOpen:t,error:F,connectors:C,filteredConnectors:T,labels:m}),[y,d,D,E,S,t,F,C,T,m]);react.useEffect(()=>{t&&(u("connectors"),O(void 0),R(void 0),B(""),N(false));},[t]);let{components:v={},classNames:g={},handlers:p={},config:h={},childComponents:l={}}=r,b=v.ModalContainer||qo,P=v.ModalHeader||Jo,V=v.InfoButton||Qo,_=v.Title||Xo,q=v.CloseButton||Yo,J=v.MainContent||Zo,Q=v.Footer||oe,so=v.BackButton||ee,X=v.ActionButton||te,io=v.ActionDescription||ne,G=v.EmptyState||re,Co=v.Dialog||novaCore.Dialog,lo=v.DialogContent||novaCore.DialogContent,eo=v.MotionDiv||framerMotion.motion.div,to=react.useCallback(()=>{switch(y){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d&&D&&C&&He(C[d],D)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[y,d,D,C,m]),Y=react.useCallback(()=>"connectors",[y]),Z=react.useCallback(c=>{p?.onOpenChange?p.onOpenChange(c,n):f(c);},[p?.onOpenChange,n,f]),fo=react.useCallback(()=>{let c=()=>u(Y());p?.onBack?p.onBack(n,c):c();},[p?.onBack,n,u,Y]),vo=react.useCallback(()=>{p?.onInfoClick?p.onInfoClick(n):u("about");},[p?.onInfoClick,n,u]),$=react.useCallback(async(c,yo)=>{await s({walletType:c,chainId:chunkDPOT7DDY_cjs.b({appChains:o,selectedAdapter:yo,solanaRPCUrls:e})});try{await orbitCore.waitFor(()=>z?.getState().activeWallet?.isConnected),N(!0);let go=setTimeout(()=>f(!1),400),le=setTimeout(()=>N(!1),500);await orbitCore.delay(null,500),clearTimeout(go),clearTimeout(le);}catch(go){console.error(go);}},[s,o,d,e]),j=react.useCallback(async(c,yo)=>{O(c),u("connecting"),await $(yo,c);},[$]),Bo=react.useCallback(c=>{R(orbitCore.formatWalletName(c.name)),c.adapters.length===1?(O(c.adapters[0]),u(orbitCore.formatWalletName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d?u(orbitCore.formatWalletName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):orbitCore.formatWalletName(c.name)==="impersonatedwallet"?u("impersonate"):u("network");},[d]),se=react.useCallback(()=>{switch(y){case "network":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.L,{activeConnector:D,connectors:T,onClick:j,customization:l.networkSelections});case "connectors":return C?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(chunkDPOT7DDY_cjs.M,{networks:Object.keys(C),selectedAdapter:d,onSelect:c=>O(c),customization:l.networkTabs}),jsxRuntime.jsx(chunkDPOT7DDY_cjs.I,{isOnlyOneNetwork:Object.keys(C).length===1,connectors:T,selectedAdapter:d,onClick:Bo,setContentType:u,appChains:o,solanaRPCUrls:e,setIsConnected:N,setIsOpen:f,withImpersonated:a,customization:l.connectorsSelections})]}):jsxRuntime.jsx(G,{className:g.emptyConnectors?.({modalData:n}),modalData:n,children:"No connectors available"});case "about":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.C,{customization:l.aboutWallets});case "getWallet":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.J,{customization:l.getWallet});case "connecting":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.F,{selectedAdapter:d,connectors:T,activeConnector:D,isConnected:S,customization:l.connecting});case "impersonate":return jsxRuntime.jsx(chunkDPOT7DDY_cjs.K,{impersonatedAddress:E,setImpersonatedAddress:B,customization:l.impersonateForm})}},[y,D,T,j,l,C,d,Bo,S,E]),K=react.useCallback(()=>{switch(y){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{p.onActionClick?.connectors?p.onActionClick.connectors(n):u("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{p.onActionClick?.getWallet?p.onActionClick.getWallet(n):window.open(chunkDPOT7DDY_cjs.i[d??Object.keys(C)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{p.onActionClick?.about?p.onActionClick.about(n):window.open(chunkDPOT7DDY_cjs.i[d??Object.keys(C)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(p.onActionClick?.impersonate)await p.onActionClick.impersonate(n);else {let c=E.trim();if(M||!c||gill.isAddress(c)||H?.isConnected)return;orbitCore.impersonatedHelpers.setImpersonated(c),await $(`${d??orbitCore.OrbitAdapter.EVM}:impersonatedwallet`,d??orbitCore.OrbitAdapter.EVM),u("connecting");}}};case "connecting":return M&&d&&D?{title:m.tryAgain,onClick:async()=>{p.onActionClick?.connecting?await p.onActionClick.connecting(n):await $(orbitCore.getWalletTypeFromConnectorName(d,D),d);}}:void 0}},[y,m,p,n,d,C,E,M,$,D])(),ie=react.useCallback(()=>{switch(y){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[y]);return jsxRuntime.jsx(Co,{open:t,onOpenChange:Z,children:jsxRuntime.jsx(lo,{className:novaCore.cn("novacon:w-full novacon:sm:max-w-md"),children:jsxRuntime.jsx(eo,{layout:true,transition:{layout:{duration:h.animation?.disabled?0:h.animation?.layoutDuration??1e-4}},children:jsxRuntime.jsxs(b,{className:g.modalContainer?.({modalData:n}),modalData:n,children:[jsxRuntime.jsxs(P,{className:g.header?.({modalData:n}),modalData:n,children:[jsxRuntime.jsxs(_,{className:g.title?.({modalData:n}),modalData:n,children:[y==="connectors"&&jsxRuntime.jsx(V,{className:g.infoButton?.({modalData:n}),onClick:vo,"aria-label":h.ariaLabels?.infoButton?.(n)||`${m.learnMore} ${m.aboutWallets}`,modalData:n}),to()]}),jsxRuntime.jsx(q,{className:g.closeButton?.({modalData:n}),onClick:()=>Z(false),"aria-label":h.ariaLabels?.closeButton?.(n)||m.closeModal,modalData:n})]}),jsxRuntime.jsx(J,{className:g.mainContent?.({modalData:n}),modalData:n,children:se()}),jsxRuntime.jsxs(Q,{className:g.footer?.({modalData:n}),modalData:n,children:[jsxRuntime.jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:y!=="connectors"&&jsxRuntime.jsx(so,{className:g.backButton?.({modalData:n}),onClick:fo,"aria-label":h.ariaLabels?.backButton?.(n)||`${m.back} to previous step`,modalData:n,children:m.back})}),K&&jsxRuntime.jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsxRuntime.jsx(X,{className:g.actionButton?.({modalData:n,buttonConfig:K}),onClick:K.onClick,disabled:K.disabled,loading:K.loading,"aria-describedby":"bottom-action-description",modalData:n,buttonConfig:K,children:K.title}),jsxRuntime.jsx(io,{id:"bottom-action-description",className:g.actionDescription?.({modalData:n}),modalData:n,children:ie()})]})]})]})})})})});No.displayName="ConnectModal";var Fe=({labels:o,children:e})=>jsxRuntime.jsx(Po,{labels:o,children:e}),Ve=({customization:o})=>jsxRuntime.jsx(Mo,{customization:o}),Ue=(o,e)=>novaCore.deepMerge(o,e||{}),Ge=o=>o,$e=o=>o,je=(o,e,a)=>o;function Ke({labels:o,children:e,appChains:a,solanaRPCUrls:r,transactionPool:t,pulsarAdapter:f,withImpersonated:u,withBalance:R,withChain:B,customization:N}){let y=chunkOA6MB7CZ_cjs.h(j=>j.activeWallet),d=chunkOA6MB7CZ_cjs.h(j=>j.walletConnectionError),{LabelsProvider:O=Fe,ErrorsProvider:S=Ve}=N?.components??{},{merge:D=Ue,transform:E=Ge}=N?.labels??{},{transform:M=$e}=N?.contextValue??{},{providerTree:x=je}=N?.rendering??{},s=react.useMemo(()=>D(chunkQERPNHKX_cjs.a,o||{}),[o,D]),[H,m]=react.useState(false),[z,C]=react.useState(false),[T,F]=react.useState(false),[n,v]=react.useState(false),[g,p]=react.useState("idle"),[h,l]=react.useState("connectors"),[b,P]=react.useState(void 0),[V,_]=react.useState(void 0),[q,J]=react.useState(""),[Q,so]=react.useState(false),[X,io]=react.useState("main"),G=react.useMemo(()=>({isConnected:Q,activeWallet:y,walletConnectionError:d,modalStates:{isConnectModalOpen:H,isConnectedModalOpen:z,isChainsListOpen:T,isChainsListOpenMobile:n},contentTypes:{connectModal:h,connectedModal:X},statuses:{connectedButton:g}}),[Q,y,d,H,z,T,n,h,X,g]),Co=react.useMemo(()=>E(s,G),[s,E,G]),lo=react.useMemo(()=>M({appChains:a,solanaRPCUrls:r,withImpersonated:u,withBalance:R,withChain:B,isConnectModalOpen:H,setIsConnectModalOpen:m,isConnectedModalOpen:z,setIsConnectedModalOpen:C,isChainsListOpen:T,setIsChainsListOpen:F,isChainsListOpenMobile:n,setIsChainsListOpenMobile:v,connectedButtonStatus:g,setConnectedButtonStatus:p,connectedModalContentType:X,setConnectedModalContentType:io,connectModalContentType:h,setConnectModalContentType:l,selectedAdapter:b,setSelectedAdapter:P,activeConnector:V,setActiveConnector:_,impersonatedAddress:q,setImpersonatedAddress:J,isConnected:Q,setIsConnected:so},G),[a,r,u,R,B,H,m,z,C,T,F,n,v,g,p,X,io,h,l,b,P,V,_,q,J,Q,so,M,G]),eo=jsxRuntime.jsx(S,{customization:N?.errors}),to=jsxRuntime.jsx(O,{labels:Co,children:e}),Y=a||r?jsxRuntime.jsx(No,{withImpersonated:u,solanaRPCUrls:r,appChains:a,customization:N?.modals?.connectModal}):null,Z=a||r?jsxRuntime.jsx(chunkDPOT7DDY_cjs.B,{solanaRPCUrls:r,appChains:a,transactionPool:t,pulsarAdapter:f,customization:N?.modals?.connectedModal}):null,fo=jsxRuntime.jsxs(chunk7FTV55DQ_cjs.c.Provider,{value:lo,children:[eo,to,Y,Z]}),vo=jsxRuntime.jsxs(chunk7FTV55DQ_cjs.c.Provider,{value:lo,children:[eo,to,Y,Z]}),$=x(vo,{ErrorsProvider:eo,LabelsProvider:to,MainContent:fo,ConnectModal:Y||jsxRuntime.jsx(jsxRuntime.Fragment,{}),ConnectedModal:Z||jsxRuntime.jsx(jsxRuntime.Fragment,{})},G);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:$})}Ke.displayName="NovaConnectProvider";async function qn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByWalletType-CDPECVNS.cjs');return {hasEvmUtils:await ho(),hasSolanaUtils:await wo(),adaptersStatus:o()}}async function ho(){try{return await import('./utils-DZB4ZTS4.cjs'),!0}catch{return false}}async function wo(){try{return await import('./utils-H5O25MTI.cjs'),!0}catch{return false}}async function Jn(){try{return {available:!0,...await import('./evm/index.cjs')}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Qn(){try{return {available:!0,...await import('./solana/index.cjs')}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Xn(){let o={evm:false,solana:false,errors:[]};try{let{preloadChainAdapters:e}=await import('./getChainsListByWalletType-CDPECVNS.cjs');await e([orbitCore.OrbitAdapter.EVM,orbitCore.OrbitAdapter.SOLANA]),o.evm=await ho(),o.solana=await wo();}catch(e){let a=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(a);}return o}async function Yn(o){switch(o){case orbitCore.OrbitAdapter.EVM:return ho();case orbitCore.OrbitAdapter.SOLANA:return wo();case orbitCore.OrbitAdapter.Starknet:return false;default:return false}}Object.defineProperty(exports,"getAvailableChainIds",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.c}});Object.defineProperty(exports,"getAvailableSolanaClusters",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.j}});Object.defineProperty(exports,"getConnectChainId",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.b}});Object.defineProperty(exports,"getFilteredConnectors",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.f}});Object.defineProperty(exports,"getGroupedConnectors",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.d}});Object.defineProperty(exports,"getNetworkIcon",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.h}});Object.defineProperty(exports,"hasAvailableConnectors",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.e}});Object.defineProperty(exports,"hasConnectorsForAdapter",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.g}});Object.defineProperty(exports,"isValidSolanaCluster",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.k}});Object.defineProperty(exports,"networksLinks",{enumerable:true,get:function(){return chunkDPOT7DDY_cjs.i}});Object.defineProperty(exports,"getAdapterStatus",{enumerable:true,get:function(){return chunkNMQZA377_cjs.k}});Object.defineProperty(exports,"getAllAdaptersStatus",{enumerable:true,get:function(){return chunkNMQZA377_cjs.l}});Object.defineProperty(exports,"getAvailableSolanaClustersAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.g}});Object.defineProperty(exports,"getChainsListByWalletType",{enumerable:true,get:function(){return chunkNMQZA377_cjs.b}});Object.defineProperty(exports,"getChainsListByWalletTypeAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.a}});Object.defineProperty(exports,"getChainsListByWalletTypeSync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.b}});Object.defineProperty(exports,"getWalletChains",{enumerable:true,get:function(){return chunkNMQZA377_cjs.i}});Object.defineProperty(exports,"isEvmChainList",{enumerable:true,get:function(){return chunkNMQZA377_cjs.e}});Object.defineProperty(exports,"isEvmChainListAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.c}});Object.defineProperty(exports,"isEvmChainListSync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.e}});Object.defineProperty(exports,"isSolanaChainList",{enumerable:true,get:function(){return chunkNMQZA377_cjs.f}});Object.defineProperty(exports,"isSolanaChainListAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.d}});Object.defineProperty(exports,"isSolanaChainListSync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.f}});Object.defineProperty(exports,"isValidSolanaClusterAsync",{enumerable:true,get:function(){return chunkNMQZA377_cjs.h}});Object.defineProperty(exports,"preloadChainAdapters",{enumerable:true,get:function(){return chunkNMQZA377_cjs.j}});Object.defineProperty(exports,"NovaConnectLabelsContext",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.g}});Object.defineProperty(exports,"NovaConnectProviderContext",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.c}});Object.defineProperty(exports,"NovaConnectProviderError",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.b}});Object.defineProperty(exports,"createLabelsSubset",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.o}});Object.defineProperty(exports,"getLabelWithFallback",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.n}});Object.defineProperty(exports,"hasLabel",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.k}});Object.defineProperty(exports,"isDefaultLabels",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.m}});Object.defineProperty(exports,"useGetWalletNameAndAvatar",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.a}});Object.defineProperty(exports,"useHasNovaConnectContext",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.e}});Object.defineProperty(exports,"useLabelsByCategory",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.l}});Object.defineProperty(exports,"useNovaConnect",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.d}});Object.defineProperty(exports,"useNovaConnectLabel",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.i}});Object.defineProperty(exports,"useNovaConnectLabels",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.h}});Object.defineProperty(exports,"useNovaConnectLabelsSubset",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.j}});Object.defineProperty(exports,"useNovaConnectOptional",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.f}});Object.defineProperty(exports,"useWalletNativeBalance",{enumerable:true,get:function(){return chunk7FTV55DQ_cjs.p}});exports.ErrorsProvider=Mo;exports.NovaConnectLabelsProvider=Po;exports.NovaConnectProvider=Ke;exports.getBlockchainUtilities=qn;exports.getEvmUtils=Jn;exports.getSolanaUtils=Qn;exports.initializeBlockchainSupport=Xn;exports.isAdapterSupported=Yn;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|