@tuwaio/nova-connect 1.0.0-fix-indep-alpha.3.549de94 → 1.0.0-fix-indep-alpha.5.6193060

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.
Files changed (78) hide show
  1. package/dist/{chunk-S2OWIMXG.cjs → chunk-4QL7WUAL.cjs} +3 -3
  2. package/dist/chunk-4QL7WUAL.cjs.map +1 -0
  3. package/dist/chunk-6ZNK56AI.js +2 -0
  4. package/dist/chunk-6ZNK56AI.js.map +1 -0
  5. package/dist/chunk-7SDYHBUU.js +3 -0
  6. package/dist/chunk-7SDYHBUU.js.map +1 -0
  7. package/dist/chunk-KHTOKJXG.js +2 -0
  8. package/dist/chunk-KHTOKJXG.js.map +1 -0
  9. package/dist/chunk-PUEGOPQT.cjs +2 -0
  10. package/dist/chunk-PUEGOPQT.cjs.map +1 -0
  11. package/dist/chunk-PVAIL24L.cjs +6 -0
  12. package/dist/{chunk-JGLDANME.js.map → chunk-PVAIL24L.cjs.map} +1 -1
  13. package/dist/chunk-S5TAJFN7.js +6 -0
  14. package/dist/chunk-S5TAJFN7.js.map +1 -0
  15. package/dist/chunk-V5GQCWQZ.cjs +2 -0
  16. package/dist/chunk-V5GQCWQZ.cjs.map +1 -0
  17. package/dist/components/index.cjs +1 -1
  18. package/dist/components/index.js +1 -1
  19. package/dist/evm/index.cjs +1 -1
  20. package/dist/evm/index.cjs.map +1 -1
  21. package/dist/evm/index.d.cts +16 -4
  22. package/dist/evm/index.d.ts +16 -4
  23. package/dist/evm/index.js +1 -1
  24. package/dist/evm/index.js.map +1 -1
  25. package/dist/evm-2NGLNESD.js +2 -0
  26. package/dist/evm-2NGLNESD.js.map +1 -0
  27. package/dist/evm-QOQXZDXD.cjs +2 -0
  28. package/dist/evm-QOQXZDXD.cjs.map +1 -0
  29. package/dist/{getChainsListByConnectorType-W6UDLFBJ.js → getChainsListByConnectorType-654NGZVM.js} +2 -2
  30. package/dist/{getChainsListByConnectorType-W6UDLFBJ.js.map → getChainsListByConnectorType-654NGZVM.js.map} +1 -1
  31. package/dist/getChainsListByConnectorType-G4LPWG63.cjs +2 -0
  32. package/dist/{getChainsListByConnectorType-ZDMZCWJQ.cjs.map → getChainsListByConnectorType-G4LPWG63.cjs.map} +1 -1
  33. package/dist/hooks/index.cjs +1 -1
  34. package/dist/hooks/index.js +1 -1
  35. package/dist/index.cjs +1 -1
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.d.cts +13 -11
  38. package/dist/index.d.ts +13 -11
  39. package/dist/index.js +1 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/satellite/index.cjs +1 -1
  42. package/dist/satellite/index.d.cts +4 -0
  43. package/dist/satellite/index.d.ts +4 -0
  44. package/dist/satellite/index.js +1 -1
  45. package/dist/solana/index.cjs +1 -1
  46. package/dist/solana/index.cjs.map +1 -1
  47. package/dist/solana/index.d.cts +13 -6
  48. package/dist/solana/index.d.ts +13 -6
  49. package/dist/solana/index.js +1 -1
  50. package/dist/solana/index.js.map +1 -1
  51. package/dist/solana-BWAWRAWW.cjs +2 -0
  52. package/dist/solana-BWAWRAWW.cjs.map +1 -0
  53. package/dist/solana-DRLKIVWR.js +2 -0
  54. package/dist/solana-DRLKIVWR.js.map +1 -0
  55. package/package.json +3 -3
  56. package/dist/chunk-2T6SPFUT.js +0 -2
  57. package/dist/chunk-2T6SPFUT.js.map +0 -1
  58. package/dist/chunk-43RGAIHU.cjs +0 -2
  59. package/dist/chunk-43RGAIHU.cjs.map +0 -1
  60. package/dist/chunk-GEKUE6DA.js +0 -2
  61. package/dist/chunk-GEKUE6DA.js.map +0 -1
  62. package/dist/chunk-JGLDANME.js +0 -6
  63. package/dist/chunk-OEG3F2P2.js +0 -3
  64. package/dist/chunk-OEG3F2P2.js.map +0 -1
  65. package/dist/chunk-S2OWIMXG.cjs.map +0 -1
  66. package/dist/chunk-SHVZSXXR.cjs +0 -6
  67. package/dist/chunk-SHVZSXXR.cjs.map +0 -1
  68. package/dist/chunk-TCSUZ35B.cjs +0 -2
  69. package/dist/chunk-TCSUZ35B.cjs.map +0 -1
  70. package/dist/evm-HEAZFJ7Q.js +0 -2
  71. package/dist/evm-HEAZFJ7Q.js.map +0 -1
  72. package/dist/evm-OMPZNXHK.cjs +0 -2
  73. package/dist/evm-OMPZNXHK.cjs.map +0 -1
  74. package/dist/getChainsListByConnectorType-ZDMZCWJQ.cjs +0 -2
  75. package/dist/solana-MGGAOLA3.cjs +0 -2
  76. package/dist/solana-MGGAOLA3.cjs.map +0 -1
  77. package/dist/solana-XBTO6NEP.js +0 -2
  78. package/dist/solana-XBTO6NEP.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -11,7 +11,9 @@ import { N as NovaConnectLabels } from './types-eao2UQcC.cjs';
11
11
  import { BaseConnector } from '@tuwaio/satellite-core';
12
12
  import { I as InitialChains, C as ChainIdentifierArray } from './types-DGsiEwne.cjs';
13
13
  export { A as AllChainConfigs } from './types-DGsiEwne.cjs';
14
+ export { getSatelliteExports } from './satellite/index.cjs';
14
15
  import { Connector } from '@tuwaio/satellite-react';
16
+ export { AllConnectors, Connection, Connector, SatelliteConnectProvider, SatelliteConnectProviderProps, SatelliteStoreContext, useInitializeAutoConnect, useSatelliteConnectStore } from '@tuwaio/satellite-react';
15
17
  import '@tuwaio/pulsar-core';
16
18
  import '@tuwaio/nova-core';
17
19
  import 'framer-motion';
@@ -689,26 +691,26 @@ interface ChainAdapter {
689
691
  *
690
692
  * @param config Chain configuration data (format varies by blockchain)
691
693
  * @param chains Optional array of specific chains to filter or process
692
- * @returns Array of chain identifiers (numbers for EVM, strings for Solana)
694
+ * @returns Promise resolving to array of chain identifiers (numbers for EVM, strings for Solana)
693
695
  *
694
696
  * @example
695
697
  * ```typescript
696
698
  * // EVM chains
697
- * const evmChains = adapter.getChains([
699
+ * const evmChains = await adapter.getChains([
698
700
  * { id: 1, name: 'Ethereum' },
699
701
  * { id: 56, name: 'BSC' }
700
702
  * ]);
701
703
  * // Returns: [1, 56]
702
704
  *
703
705
  * // Solana clusters
704
- * const solanaClusters = adapter.getChains({
706
+ * const solanaClusters = await adapter.getChains({
705
707
  * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',
706
708
  * devnet: 'https://api.devnet.solana.com'
707
709
  * });
708
710
  * // Returns: ['mainnet-beta', 'devnet']
709
711
  * ```
710
712
  */
711
- getChains(config: any, chains?: any): (string | number)[];
713
+ getChains(config: any, chains?: any): Promise<(string | number)[]>;
712
714
  /**
713
715
  * Validates whether a chain identifier array conforms to this adapter's expected format.
714
716
  *
@@ -738,17 +740,17 @@ interface ChainAdapter {
738
740
  * This method is specific to Solana and returns the configured cluster names
739
741
  * that can be used for connections. Not applicable to other blockchain types.
740
742
  *
741
- * @returns Array of available cluster names
743
+ * @returns Promise resolving to array of available cluster names
742
744
  * @optional This method is only available on Solana adapters
743
745
  *
744
746
  * @example
745
747
  * ```typescript
746
748
  * const solanaAdapter = await createSolanaAdapter();
747
- * const clusters = solanaAdapter.getAvailableClusters?.();
749
+ * const clusters = await solanaAdapter.getAvailableClusters?.();
748
750
  * // Might return: ['mainnet-beta', 'devnet', 'testnet', 'localnet']
749
751
  * ```
750
752
  */
751
- getAvailableClusters?(): string[];
753
+ getAvailableClusters?(): Promise<string[]>;
752
754
  /**
753
755
  * Validates whether a cluster name is valid for Solana.
754
756
  *
@@ -756,17 +758,17 @@ interface ChainAdapter {
756
758
  * is a known/valid Solana cluster moniker. Not applicable to other blockchain types.
757
759
  *
758
760
  * @param cluster Cluster name to validate
759
- * @returns True if the cluster name is valid for Solana
761
+ * @returns Promise resolving to true if the cluster name is valid for Solana
760
762
  * @optional This method is only available on Solana adapters
761
763
  *
762
764
  * @example
763
765
  * ```typescript
764
766
  * const solanaAdapter = await createSolanaAdapter();
765
- * const isValid = solanaAdapter.isValidCluster?.('mainnet-beta'); // true
766
- * const isInvalid = solanaAdapter.isValidCluster?.('invalid-cluster'); // false
767
+ * const isValid = await solanaAdapter.isValidCluster?.('mainnet-beta'); // true
768
+ * const isInvalid = await solanaAdapter.isValidCluster?.('invalid-cluster'); // false
767
769
  * ```
768
770
  */
769
- isValidCluster?(cluster: string): boolean;
771
+ isValidCluster?(cluster: string): Promise<boolean>;
770
772
  }
771
773
  /**
772
774
  * Represents the current loading state of a blockchain adapter.
package/dist/index.d.ts CHANGED
@@ -11,7 +11,9 @@ import { N as NovaConnectLabels } from './types-eao2UQcC.js';
11
11
  import { BaseConnector } from '@tuwaio/satellite-core';
12
12
  import { I as InitialChains, C as ChainIdentifierArray } from './types-DGsiEwne.js';
13
13
  export { A as AllChainConfigs } from './types-DGsiEwne.js';
14
+ export { getSatelliteExports } from './satellite/index.js';
14
15
  import { Connector } from '@tuwaio/satellite-react';
16
+ export { AllConnectors, Connection, Connector, SatelliteConnectProvider, SatelliteConnectProviderProps, SatelliteStoreContext, useInitializeAutoConnect, useSatelliteConnectStore } from '@tuwaio/satellite-react';
15
17
  import '@tuwaio/pulsar-core';
16
18
  import '@tuwaio/nova-core';
17
19
  import 'framer-motion';
@@ -689,26 +691,26 @@ interface ChainAdapter {
689
691
  *
690
692
  * @param config Chain configuration data (format varies by blockchain)
691
693
  * @param chains Optional array of specific chains to filter or process
692
- * @returns Array of chain identifiers (numbers for EVM, strings for Solana)
694
+ * @returns Promise resolving to array of chain identifiers (numbers for EVM, strings for Solana)
693
695
  *
694
696
  * @example
695
697
  * ```typescript
696
698
  * // EVM chains
697
- * const evmChains = adapter.getChains([
699
+ * const evmChains = await adapter.getChains([
698
700
  * { id: 1, name: 'Ethereum' },
699
701
  * { id: 56, name: 'BSC' }
700
702
  * ]);
701
703
  * // Returns: [1, 56]
702
704
  *
703
705
  * // Solana clusters
704
- * const solanaClusters = adapter.getChains({
706
+ * const solanaClusters = await adapter.getChains({
705
707
  * 'mainnet-beta': 'https://api.mainnet-beta.solana.com',
706
708
  * devnet: 'https://api.devnet.solana.com'
707
709
  * });
708
710
  * // Returns: ['mainnet-beta', 'devnet']
709
711
  * ```
710
712
  */
711
- getChains(config: any, chains?: any): (string | number)[];
713
+ getChains(config: any, chains?: any): Promise<(string | number)[]>;
712
714
  /**
713
715
  * Validates whether a chain identifier array conforms to this adapter's expected format.
714
716
  *
@@ -738,17 +740,17 @@ interface ChainAdapter {
738
740
  * This method is specific to Solana and returns the configured cluster names
739
741
  * that can be used for connections. Not applicable to other blockchain types.
740
742
  *
741
- * @returns Array of available cluster names
743
+ * @returns Promise resolving to array of available cluster names
742
744
  * @optional This method is only available on Solana adapters
743
745
  *
744
746
  * @example
745
747
  * ```typescript
746
748
  * const solanaAdapter = await createSolanaAdapter();
747
- * const clusters = solanaAdapter.getAvailableClusters?.();
749
+ * const clusters = await solanaAdapter.getAvailableClusters?.();
748
750
  * // Might return: ['mainnet-beta', 'devnet', 'testnet', 'localnet']
749
751
  * ```
750
752
  */
751
- getAvailableClusters?(): string[];
753
+ getAvailableClusters?(): Promise<string[]>;
752
754
  /**
753
755
  * Validates whether a cluster name is valid for Solana.
754
756
  *
@@ -756,17 +758,17 @@ interface ChainAdapter {
756
758
  * is a known/valid Solana cluster moniker. Not applicable to other blockchain types.
757
759
  *
758
760
  * @param cluster Cluster name to validate
759
- * @returns True if the cluster name is valid for Solana
761
+ * @returns Promise resolving to true if the cluster name is valid for Solana
760
762
  * @optional This method is only available on Solana adapters
761
763
  *
762
764
  * @example
763
765
  * ```typescript
764
766
  * const solanaAdapter = await createSolanaAdapter();
765
- * const isValid = solanaAdapter.isValidCluster?.('mainnet-beta'); // true
766
- * const isInvalid = solanaAdapter.isValidCluster?.('invalid-cluster'); // false
767
+ * const isValid = await solanaAdapter.isValidCluster?.('mainnet-beta'); // true
768
+ * const isInvalid = await solanaAdapter.isValidCluster?.('invalid-cluster'); // false
767
769
  * ```
768
770
  */
769
- isValidCluster?(cluster: string): boolean;
771
+ isValidCluster?(cluster: string): Promise<boolean>;
770
772
  }
771
773
  /**
772
774
  * Represents the current loading state of a blockchain adapter.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {A,v,z,s,C,y,B,r,D}from'./chunk-JGLDANME.js';import {d,h as h$1,u,q,p,x,g,c}from'./chunk-OEG3F2P2.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,r as getAvailableChainIds,y as getAvailableSolanaClusters,q as getConnectChainId,u as getFilteredConnectors,s as getGroupedConnectors,n as getLabelWithFallback,w as getNetworkIcon,t as hasAvailableConnectors,v as hasConnectorsForAdapter,k as hasLabel,p as isAddress,m as isDefaultLabels,z as isValidSolanaCluster,x as networksLinks,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,A as useWalletChainsList,B as useWalletNativeBalance}from'./chunk-OEG3F2P2.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-GEKUE6DA.js';import {a}from'./chunk-3BMX6JWH.js';import {h,f}from'./chunk-2T6SPFUT.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,impersonatedHelpers,OrbitAdapter}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var fe=({title:o,rawError:e,onCopyComplete:n,errorType:r,isConnected:t,...p})=>jsx(D,{title:o,rawError:e,onCopyComplete:n,customization:p.customization}),ve=o=>{let e=h$1();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":e.somethingWentWrong})},ge=(o,e)=>{o(e.title,e.rawError,e.errorKey);},be=o=>{o();},ye=(o,e)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",e.substring(0,100));},Te=o=>o,Me=o=>o;function Eo({containerId:o="nova-connect-errors",position:e="top-center",autoClose:n=7e3,draggable:r=false,customization:t}){let p=h$1(),C=h(l=>l.switchNetworkError),R=h(l=>l.activeConnection),B=h(l=>l.connectionError),{ToastError:h$2=fe,Container:g=ve}=t?.components??{},{showError:d=ge,dismissError:O=be,onCopyComplete:H=ye}=t?.handlers??{},{errorTitle:T=Te,errorHash:E=Me}=t??{},D=useRef(new Set),x=useRef(null),s=useMemo(()=>{let l=!!B,y=!!C,P=!!R?.isConnected;return {hasWalletError:l,hasSwitchError:y,isConnected:P,hasAnyError:l||y,primaryError:B||C||null,errorType:l?"wallet":y?"switch":null}},[B,C,R?.isConnected]),z=useMemo(()=>{switch(s.errorType){case "wallet":return p.connectionError;case "switch":return p.errorWhenChainSwitching;default:return p.somethingWentWrong}},[s.errorType,p]),m=useMemo(()=>T(z,{errorType:s.errorType}),[T,z,s.errorType]),I=useMemo(()=>s.primaryError?`${s.errorType}-${s.primaryError.substring(0,50)}`:null,[s.primaryError,s.errorType]),f=useMemo(()=>E(I,{primaryError:s.primaryError,errorType:s.errorType}),[E,I,s.primaryError,s.errorType]),M=useCallback(()=>{O(()=>{x.current&&(toast.dismiss(x.current),x.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((l,y)=>{H(l,y,s.errorType);},[H,s.errorType]),a=useCallback((l,y,P)=>{if(M(),!D.current.has(P))try{let V={containerId:o,toastId:P,onClose:()=>{D.current.delete(P),x.current=null;}},K=t?.toastOptions?.error?.({title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected}),J={...V,...K};toast.error(jsx(h$2,{title:l,rawError:y,errorType:s.errorType,isConnected:s.isConnected,onCopyComplete:Q=>F(Q,y),customization:t?.toastErrorCustomization}),J),D.current.add(P),x.current=P;}catch(V){console.error("Failed to show error toast:",V);}},[M,o,t?.toastOptions?.error,t?.toastErrorCustomization,h$2,s.errorType,s.isConnected,F]),v=useCallback((l,y,P)=>{d(a,{title:l,rawError:y,errorKey:P,errorType:s.errorType});},[a,d,s.errorType]);useEffect(()=>{let{hasAnyError:l,isConnected:y,primaryError:P}=s;if(y&&!l){M(),D.current.clear();return}if(l&&P&&f){if(y&&s.errorType!=="switch")return;v(m,P,f);}},[s,m,f,v,M]),useEffect(()=>()=>{M(),D.current.clear();},[M]);let b=useMemo(()=>t?.classNames?.container?t.classNames.container({hasErrors:s.hasAnyError,errorType:s.errorType}):"novacon:p-0 novacon:bg-transparent",[t,s.hasAnyError,s.errorType]),u=useMemo(()=>({containerId:o,position:e,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:n,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:r,pauseOnHover:true,theme:"light",transition:Bounce}),[o,e,n,r]),N=useMemo(()=>({...u,...t?.containerProps,className:b}),[u,t?.containerProps,b]);return jsx(g,{...N})}Eo.displayName="ErrorsProvider";function No({labels:o,children:e}){let n=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let t=["connectWallet","disconnect","connecting","connected","error","success"].filter(p=>!(p in o));t.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${t.join(", ")}`);}return jsx(g.Provider,{value:n,children:e})}No.displayName="NovaConnectLabelsProvider";function Ie(o,e){if(!o||!Array.isArray(o)||!e)return;let n=o.find(r=>r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"?formatConnectorName(r.name)===e:false);return n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?n.name:void 0}var Xo=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("div",{ref:t,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...r,children:e}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("div",{ref:t,className:o,...r,children:jsx(DialogHeader,{children:e})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:e,modalData:n,...r},t)=>jsx("button",{ref:t,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:e,...r,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx(DialogTitle,{ref:t,className:cn("novacon:flex novacon:items-center",o),...r,children:e}));oe.displayName="DefaultTitle";var ee=forwardRef(({className:o,onClick:e,modalData:n,...r},t)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:t,type:"button",onClick:e,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...r,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("main",{ref:t,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...r,children:e}));te.displayName="DefaultMainContent";var ne=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("footer",{ref:t,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...r,children:e}));ne.displayName="DefaultFooter";var re=forwardRef(({className:o,onClick:e,children:n,modalData:r,...t},p)=>jsx("button",{ref:p,type:"button",onClick:e,className:cn(standardButtonClasses,o),...t,children:n}));re.displayName="DefaultBackButton";var ae=forwardRef(({className:o,onClick:e,children:n,disabled:r,loading:t,buttonConfig:p,modalData:C,...R},B)=>jsx("button",{ref:B,type:"button",onClick:e,disabled:r||t,className:cn(standardButtonClasses,o),...R,children:t?"Loading...":n}));ae.displayName="DefaultActionButton";var se=forwardRef(({className:o,children:e,modalData:n,...r},t)=>jsx("span",{ref:t,className:cn("novacon:sr-only",o),...r,children:e}));se.displayName="DefaultActionDescription";var ie=forwardRef(({children:o,className:e,...n},r)=>{let{modalData:t,...p}=n;return jsx("div",{ref:r,className:e,...p,children:o})});ie.displayName="DefaultEmptyState";var wo=memo(({appChains:o,solanaRPCUrls:e,withImpersonated:n,customization:r={}})=>{let{isConnectModalOpen:t,setIsConnectModalOpen:p$1,setConnectModalContentType:C$1,setActiveConnector:R,setImpersonatedAddress:B$1,setIsConnected:h$2,connectModalContentType:g,selectedAdapter:d$1,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:E}=d(),D=h(c=>c.connectionError),x$1=h(c=>c.getConnectors),s$1=h(c=>c.connect),z$1=h(c=>c.activeConnection),m=h$1(),I=useContext(f),f$1=useMemo(()=>{if(t)return x$1()},[t,x$1]),M=useMemo(()=>u({connectors:f$1,selectedAdapter:d$1}),[f$1,d$1]),F=useMemo(()=>D?typeof D=="string"?new Error(D):D:null,[D]),a=useMemo(()=>({contentType:g,selectedAdapter:d$1,activeConnector:T,impersonatedAddress:E,isConnected:H,isOpen:t,error:F,connectors:f$1,filteredConnectors:M,labels:m}),[g,d$1,T,E,H,t,F,f$1,M,m]);useEffect(()=>{t&&(C$1("connectors"),O(void 0),R(void 0),B$1(""),h$2(false));},[t]);let{components:v$1={},classNames:b={},handlers:u$1={},config:N={},childComponents:l={}}=r,y$1=v$1.ModalContainer||Xo,P=v$1.ModalHeader||Yo,V=v$1.InfoButton||Zo,K=v$1.Title||oe,J=v$1.CloseButton||ee,Q=v$1.MainContent||te,X=v$1.Footer||ne,io=v$1.BackButton||re,Y=v$1.ActionButton||ae,lo=v$1.ActionDescription||se,G=v$1.EmptyState||ie,go=v$1.Dialog||Dialog,co=v$1.DialogContent||DialogContent,to=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(g){case "about":return m.aboutWallets;case "getWallet":return m.getWallet;case "connecting":return d$1&&T&&f$1&&Ie(f$1[d$1],T)||m.connectingEllipsis;case "impersonate":return m.connectImpersonatedWallet;default:return m.connectWallet}},[g,d$1,T,f$1,m]),Z=useCallback(()=>"connectors",[g]),oo=useCallback(c=>{u$1?.onOpenChange?u$1.onOpenChange(c,a):p$1(c);},[u$1?.onOpenChange,a,p$1]),bo=useCallback(()=>{let c=()=>C$1(Z());u$1?.onBack?u$1.onBack(a,c):c();},[u$1?.onBack,a,C$1,Z]),yo=useCallback(()=>{u$1?.onInfoClick?u$1.onInfoClick(a):C$1("about");},[u$1?.onInfoClick,a,C$1]),_=useCallback(async(c,To)=>{await s$1({connectorType:c,chainId:q({appChains:o,selectedAdapter:To,solanaRPCUrls:e})});try{await waitFor(()=>I?.getState().activeConnection?.isConnected),h$2(!0);let Mo=setTimeout(()=>p$1(!1),400),me=setTimeout(()=>h$2(!1),500);await delay(null,500),clearTimeout(Mo),clearTimeout(me);}catch(Mo){console.error(Mo);}},[s$1,o,d$1,e]),j=useCallback(async(c,To)=>{O(c),C$1("connecting"),await _(To,c);},[_]),ko=useCallback(c=>{R(formatConnectorName(c.name)),c.adapters.length===1?(O(c.adapters[0]),C$1(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting")):d$1?C$1(formatConnectorName(c.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(c.name)==="impersonatedwallet"?C$1("impersonate"):C$1("network");},[d$1]),ce=useCallback(()=>{switch(g){case "network":return jsx(B,{activeConnector:T,connectors:M,onClick:j,customization:l.networkSelections});case "connectors":return f$1?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(f$1),selectedAdapter:d$1,onSelect:c=>O(c),customization:l.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(f$1).length===1,connectors:M,selectedAdapter:d$1,onClick:ko,setContentType:C$1,appChains:o,solanaRPCUrls:e,setIsConnected:h$2,setIsOpen:p$1,withImpersonated:n,customization:l.connectorsSelections})]}):jsx(G,{className:b.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsx(s,{customization:l.aboutWallets});case "getWallet":return jsx(z,{customization:l.getWallet});case "connecting":return jsx(v,{selectedAdapter:d$1,connectors:M,activeConnector:T,isConnected:H,customization:l.connecting});case "impersonate":return jsx(A,{selectedAdapter:d$1,impersonatedAddress:E,setImpersonatedAddress:B$1,customization:l.impersonateForm})}},[g,T,M,j,l,f$1,d$1,ko,H,E]),$=useCallback(()=>{switch(g){case "connectors":return {title:m.iDontHaveWallet,onClick:()=>{u$1.onActionClick?.connectors?u$1.onActionClick.connectors(a):C$1("getWallet");}};case "getWallet":return {title:m.choseWallet,onClick:()=>{u$1.onActionClick?.getWallet?u$1.onActionClick.getWallet(a):window.open(x[d$1??Object.keys(f$1)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:m.learnMore,onClick:()=>{u$1.onActionClick?.about?u$1.onActionClick.about(a):window.open(x[d$1??Object.keys(f$1)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:m.connect,onClick:async()=>{if(u$1.onActionClick?.impersonate)await u$1.onActionClick.impersonate(a);else {let c=E.trim();if(D||!c||p(c)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(c),C$1("connecting"),await _(getConnectorTypeFromName(d$1??OrbitAdapter.EVM,T??""),d$1??OrbitAdapter.EVM);}}};case "connecting":return D&&d$1&&T?{title:m.tryAgain,onClick:async()=>{u$1.onActionClick?.connecting?await u$1.onActionClick.connecting(a):await _(getConnectorTypeFromName(d$1,T),d$1);}}:void 0}},[g,m,u$1,a,d$1,f$1,E,D,_,T])(),de=useCallback(()=>{switch(g){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 ""}},[g]);return jsx(go,{open:t,onOpenChange:oo,children:jsx(co,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(to,{layout:true,transition:{layout:{duration:N.animation?.disabled?0:N.animation?.layoutDuration??1e-4}},children:jsxs(y$1,{className:b.modalContainer?.({modalData:a}),modalData:a,children:[jsxs(P,{className:b.header?.({modalData:a}),modalData:a,children:[jsxs(K,{className:b.title?.({modalData:a}),modalData:a,children:[g==="connectors"&&jsx(V,{className:b.infoButton?.({modalData:a}),onClick:yo,"aria-label":N.ariaLabels?.infoButton?.(a)||`${m.learnMore} ${m.aboutWallets}`,modalData:a}),no()]}),jsx(J,{className:b.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":N.ariaLabels?.closeButton?.(a)||m.closeModal,modalData:a})]}),jsx(Q,{className:b.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxs(X,{className:b.footer?.({modalData:a}),modalData:a,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g!=="connectors"&&jsx(io,{className:b.backButton?.({modalData:a}),onClick:bo,"aria-label":N.ariaLabels?.backButton?.(a)||`${m.back} to previous step`,modalData:a,children:m.back})}),$&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(Y,{className:b.actionButton?.({modalData:a,buttonConfig:$}),onClick:$.onClick,disabled:$.disabled,loading:$.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:$,children:$.title}),jsx(lo,{id:"bottom-action-description",className:b.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});wo.displayName="ConnectModal";var Ve=({labels:o,children:e})=>jsx(No,{labels:o,children:e}),Ue=({customization:o})=>jsx(Eo,{customization:o}),qe=(o,e)=>deepMerge(o,e||{}),Ge=o=>o,_e=o=>o,je=(o,e,n)=>o;function $e({labels:o,children:e,appChains:n,solanaRPCUrls:r$1,transactionPool:t,pulsarAdapter:p,withImpersonated:C,withBalance:R,withChain:B,customization:h$1}){let g=h(j=>j.activeConnection),d=h(j=>j.connectionError),{LabelsProvider:O=Ve,ErrorsProvider:H=Ue}=h$1?.components??{},{merge:T=qe,transform:E=Ge}=h$1?.labels??{},{transform:D=_e}=h$1?.contextValue??{},{providerTree:x=je}=h$1?.rendering??{},s=useMemo(()=>T(a,o||{}),[o,T]),[z,m]=useState(false),[I,f]=useState(false),[M,F]=useState(false),[a$1,v]=useState(false),[b,u]=useState("idle"),[N,l]=useState("connectors"),[y,P]=useState(void 0),[V,K]=useState(void 0),[J,Q]=useState(""),[X,io]=useState(false),[Y,lo]=useState("main"),G=useMemo(()=>({isConnected:X,activeConnection:g,connectionError:d,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:I,isChainsListOpen:M,isChainsListOpenMobile:a$1},contentTypes:{connectModal:N,connectedModal:Y},statuses:{connectedButton:b}}),[X,g,d,z,I,M,a$1,N,Y,b]),go=useMemo(()=>E(s,G),[s,E,G]),co=useMemo(()=>D({appChains:n,solanaRPCUrls:r$1,withImpersonated:C,withBalance:R,withChain:B,isConnectModalOpen:z,setIsConnectModalOpen:m,isConnectedModalOpen:I,setIsConnectedModalOpen:f,isChainsListOpen:M,setIsChainsListOpen:F,isChainsListOpenMobile:a$1,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:u,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:N,setConnectModalContentType:l,selectedAdapter:y,setSelectedAdapter:P,activeConnector:V,setActiveConnector:K,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:io},G),[n,r$1,C,R,B,z,m,I,f,M,F,a$1,v,b,u,Y,lo,N,l,y,P,V,K,J,Q,X,io,D,G]),to=jsx(H,{customization:h$1?.errors}),no=jsx(O,{labels:go,children:e}),Z=n||r$1?jsx(wo,{withImpersonated:C,solanaRPCUrls:r$1,appChains:n,customization:h$1?.modals?.connectModal}):null,oo=n||r$1?jsx(r,{solanaRPCUrls:r$1,appChains:n,transactionPool:t,pulsarAdapter:p,customization:h$1?.modals?.connectedModal}):null,bo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),yo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),_=x(yo,{ErrorsProvider:to,LabelsProvider:no,MainContent:bo,ConnectModal:Z||jsx(Fragment,{}),ConnectedModal:oo||jsx(Fragment,{})},G);return jsx(Fragment,{children:_})}$e.displayName="NovaConnectProvider";var so=typeof process<"u"&&process.env?.NODE_ENV==="production";async function Qn(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-W6UDLFBJ.js');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-evm") && require("viem")); } catch { return false; }')()}catch{return false}try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-solana") && require("gill")); } catch { return false; }')()}catch{return false}try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function Xn(){try{if(!await fo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};if(so)try{let r=new Function('try { return require("./evm"); } catch { return null; }')();return r?{available:!0,...r}:{available:!1,error:"Failed to load EVM module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load EVM module"}}return {available:!0,...await import('./evm/index.js')}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function Yn(){try{if(!await vo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};if(so)try{let r=new Function('try { return require("./solana"); } catch { return null; }')();return r?{available:!0,...r}:{available:!1,error:"Failed to load Solana module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load Solana module"}}return {available:!0,...await import('./solana/index.js')}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function Zn(){let o={evm:false,solana:false,errors:[]};try{let e=await fo(),n=await vo();if(e||n)if(so)try{let t=new Function('try { return require("./utils/getChainsListByConnectorType"); } catch { return null; }')();if(!t)return o.errors.push("Failed to load chain adapter utilities"),o;let p=[];e&&p.push(OrbitAdapter.EVM),n&&p.push(OrbitAdapter.SOLANA),await t.preloadChainAdapters(p),o.evm=e,o.solana=n;}catch(r){let t=r instanceof Error?r.message:"Failed to initialize chain adapters";o.errors.push(t);}else {let{preloadChainAdapters:r}=await import('./getChainsListByConnectorType-W6UDLFBJ.js'),t=[];e&&t.push(OrbitAdapter.EVM),n&&t.push(OrbitAdapter.SOLANA),await r(t),o.evm=e,o.solana=n;}else o.errors.push("No blockchain packages available for initialization");}catch(e){let n=e instanceof Error?e.message:"Unknown initialization error";o.errors.push(n);}return o}async function or(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?fo():vo()}export{Eo as ErrorsProvider,No as NovaConnectLabelsProvider,$e as NovaConnectProvider,Qn as getBlockchainUtilities,Xn as getEvmUtils,Yn as getSolanaUtils,Zn as initializeBlockchainSupport,or as isAdapterSupported};//# sourceMappingURL=index.js.map
1
+ import {A,v,z,s,C,y,B,r,D}from'./chunk-S5TAJFN7.js';import {d,h,u,q,p,x,g as g$1,c}from'./chunk-7SDYHBUU.js';export{g as NovaConnectLabelsContext,c as NovaConnectProviderContext,b as NovaConnectProviderError,o as createLabelsSubset,r as getAvailableChainIds,y as getAvailableSolanaClusters,q as getConnectChainId,u as getFilteredConnectors,s as getGroupedConnectors,n as getLabelWithFallback,w as getNetworkIcon,t as hasAvailableConnectors,v as hasConnectorsForAdapter,k as hasLabel,p as isAddress,m as isDefaultLabels,z as isValidSolanaCluster,x as networksLinks,a as useGetWalletNameAndAvatar,e as useHasNovaConnectContext,l as useLabelsByCategory,d as useNovaConnect,i as useNovaConnectLabel,h as useNovaConnectLabels,j as useNovaConnectLabelsSubset,f as useNovaConnectOptional,A as useWalletChainsList,B as useWalletNativeBalance}from'./chunk-7SDYHBUU.js';export{k as getAdapterStatus,l as getAllAdaptersStatus,g as getAvailableSolanaClustersAsync,b as getChainsListByConnectorType,a as getChainsListByConnectorTypeAsync,b as getChainsListByConnectorTypeSync,i as getWalletChains,e as isEvmChainList,c as isEvmChainListAsync,e as isEvmChainListSync,f as isSolanaChainList,d as isSolanaChainListAsync,f as isSolanaChainListSync,h as isValidSolanaClusterAsync,j as preloadChainAdapters}from'./chunk-KHTOKJXG.js';import {a}from'./chunk-3BMX6JWH.js';import {i,g}from'./chunk-6ZNK56AI.js';export{b as AllConnectors,c as Connection,d as Connector,e as SatelliteConnectProvider,f as SatelliteConnectProviderProps,g as SatelliteStoreContext,a as getSatelliteExports,h as useInitializeAutoConnect,i as useSatelliteConnectStore}from'./chunk-6ZNK56AI.js';import {waitFor,delay,formatConnectorName,getConnectorTypeFromName,impersonatedHelpers,OrbitAdapter}from'@tuwaio/orbit-core';import {cn,DialogHeader,DialogTitle,DialogClose,CloseIcon,standardButtonClasses,Dialog,DialogContent,ToastCloseButton,deepMerge}from'@tuwaio/nova-core';import {forwardRef,memo,useContext,useMemo,useEffect,useCallback,useRef,useState}from'react';import {toast,Bounce,ToastContainer}from'react-toastify';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {InformationCircleIcon}from'@heroicons/react/24/outline';import {motion}from'framer-motion';var fe=({title:o,rawError:t,onCopyComplete:r,errorType:n,isConnected:e,...l})=>jsx(D,{title:o,rawError:t,onCopyComplete:r,customization:l.customization}),ve=o=>{let t=h();return jsx(ToastContainer,{...o,role:"alert","aria-live":"assertive","aria-label":t.somethingWentWrong})},ge=(o,t)=>{o(t.title,t.rawError,t.errorKey);},be=o=>{o();},ye=(o,t)=>{o&&process.env.NODE_ENV==="development"&&console.log("Error copied to clipboard:",t.substring(0,100));},Te=o=>o,Ee=o=>o;function Po({containerId:o="nova-connect-errors",position:t="top-center",autoClose:r=7e3,draggable:n=false,customization:e}){let l=h(),s=i(d=>d.switchNetworkError),x=i(d=>d.activeConnection),k=i(d=>d.connectionError),{ToastError:h$1=fe,Container:g=ve}=e?.components??{},{showError:u=ge,dismissError:O=be,onCopyComplete:H=ye}=e?.handlers??{},{errorTitle:T=Te,errorHash:P=Ee}=e??{},M=useRef(new Set),R=useRef(null),i$1=useMemo(()=>{let d=!!k,y=!!s,D=!!x?.isConnected;return {hasWalletError:d,hasSwitchError:y,isConnected:D,hasAnyError:d||y,primaryError:k||s||null,errorType:d?"wallet":y?"switch":null}},[k,s,x?.isConnected]),z=useMemo(()=>{switch(i$1.errorType){case "wallet":return l.connectionError;case "switch":return l.errorWhenChainSwitching;default:return l.somethingWentWrong}},[i$1.errorType,l]),p=useMemo(()=>T(z,{errorType:i$1.errorType}),[T,z,i$1.errorType]),I=useMemo(()=>i$1.primaryError?`${i$1.errorType}-${i$1.primaryError.substring(0,50)}`:null,[i$1.primaryError,i$1.errorType]),f=useMemo(()=>P(I,{primaryError:i$1.primaryError,errorType:i$1.errorType}),[P,I,i$1.primaryError,i$1.errorType]),E=useCallback(()=>{O(()=>{R.current&&(toast.dismiss(R.current),R.current=null),toast.dismiss({containerId:o});});},[o,O]),F=useCallback((d,y)=>{H(d,y,i$1.errorType);},[H,i$1.errorType]),a=useCallback((d,y,D)=>{if(E(),!M.current.has(D))try{let V={containerId:o,toastId:D,onClose:()=>{M.current.delete(D),R.current=null;}},K=e?.toastOptions?.error?.({title:d,rawError:y,errorType:i$1.errorType,isConnected:i$1.isConnected}),J={...V,...K};toast.error(jsx(h$1,{title:d,rawError:y,errorType:i$1.errorType,isConnected:i$1.isConnected,onCopyComplete:Q=>F(Q,y),customization:e?.toastErrorCustomization}),J),M.current.add(D),R.current=D;}catch(V){console.error("Failed to show error toast:",V);}},[E,o,e?.toastOptions?.error,e?.toastErrorCustomization,h$1,i$1.errorType,i$1.isConnected,F]),v=useCallback((d,y,D)=>{u(a,{title:d,rawError:y,errorKey:D,errorType:i$1.errorType});},[a,u,i$1.errorType]);useEffect(()=>{let{hasAnyError:d,isConnected:y,primaryError:D}=i$1;if(y&&!d){E(),M.current.clear();return}if(d&&D&&f){if(y&&i$1.errorType!=="switch")return;v(p,D,f);}},[i$1,p,f,v,E]),useEffect(()=>()=>{E(),M.current.clear();},[E]);let b=useMemo(()=>e?.classNames?.container?e.classNames.container({hasErrors:i$1.hasAnyError,errorType:i$1.errorType}):"novacon:p-0 novacon:bg-transparent",[e,i$1.hasAnyError,i$1.errorType]),C=useMemo(()=>({containerId:o,position:t,closeOnClick:false,icon:false,closeButton:ToastCloseButton,autoClose:r,hideProgressBar:false,newestOnTop:false,pauseOnFocusLoss:false,draggable:n,pauseOnHover:true,theme:"light",transition:Bounce}),[o,t,r,n]),N=useMemo(()=>({...C,...e?.containerProps,className:b}),[C,e?.containerProps,b]);return jsx(g,{...N})}Po.displayName="ErrorsProvider";function No({labels:o,children:t}){let r=useMemo(()=>o,[o]);if(process.env.NODE_ENV==="development"){(!o||typeof o!="object")&&console.warn("NovaConnectLabelsProvider: labels prop should be an object");let e=["connectWallet","disconnect","connecting","connected","error","success"].filter(l=>!(l in o));e.length>0&&console.warn(`NovaConnectLabelsProvider: Missing required labels: ${e.join(", ")}`);}return jsx(g$1.Provider,{value:r,children:t})}No.displayName="NovaConnectLabelsProvider";function Ie(o,t){if(!o||!Array.isArray(o)||!t)return;let r=o.find(n=>n&&typeof n=="object"&&"name"in n&&typeof n.name=="string"?formatConnectorName(n.name)===t:false);if(r&&typeof r=="object"&&"name"in r&&typeof r.name=="string")return r.name}var Xo=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("div",{ref:e,className:cn("novacon:relative novacon:flex novacon:w-full novacon:flex-col",o),...n,children:t}));Xo.displayName="DefaultModalContainer";var Yo=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("div",{ref:e,className:o,...n,children:jsx(DialogHeader,{children:t})}));Yo.displayName="DefaultModalHeader";var Zo=forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsx("button",{ref:e,className:cn("novacon:cursor-pointer novacon:text-[var(--tuwa-text-secondary)] novacon:transition novacon:duration-300 novacon:ease-in-out novacon:active:scale-75 novacon:hover:scale-110",o),type:"button",onClick:t,...n,children:jsx(InformationCircleIcon,{width:20,height:20,className:"novacon:mr-1","aria-hidden":"true"})}));Zo.displayName="DefaultInfoButton";var oe=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx(DialogTitle,{ref:e,className:cn("novacon:flex novacon:items-center",o),...n,children:t}));oe.displayName="DefaultTitle";var ee=forwardRef(({className:o,onClick:t,modalData:r,...n},e)=>jsx(DialogClose,{asChild:true,children:jsx("button",{ref:e,type:"button",onClick:t,className:cn("novacon:cursor-pointer novacon:rounded-full novacon:p-1 novacon:text-[var(--tuwa-text-tertiary)] novacon:transition-colors novacon:hover:bg-[var(--tuwa-bg-muted)] novacon:hover:text-[var(--tuwa-text-primary)]",o),...n,children:jsx(CloseIcon,{"aria-hidden":"true"})})}));ee.displayName="DefaultCloseButton";var te=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("main",{ref:e,className:cn("novacon:flex novacon:flex-col novacon:gap-4 novacon:p-4",o),id:"connect-modal-content",role:"main",...n,children:t}));te.displayName="DefaultMainContent";var ne=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("footer",{ref:e,className:cn("novacon:flex novacon:w-full novacon:items-center novacon:justify-between novacon:border-t novacon:border-[var(--tuwa-border-primary)] novacon:p-4",o),role:"contentinfo",...n,children:t}));ne.displayName="DefaultFooter";var re=forwardRef(({className:o,onClick:t,children:r,modalData:n,...e},l)=>jsx("button",{ref:l,type:"button",onClick:t,className:cn(standardButtonClasses,o),...e,children:r}));re.displayName="DefaultBackButton";var ae=forwardRef(({className:o,onClick:t,children:r,disabled:n,loading:e,buttonConfig:l,modalData:s,...x},k)=>jsx("button",{ref:k,type:"button",onClick:t,disabled:n||e,className:cn(standardButtonClasses,o),...x,children:e?"Loading...":r}));ae.displayName="DefaultActionButton";var se=forwardRef(({className:o,children:t,modalData:r,...n},e)=>jsx("span",{ref:e,className:cn("novacon:sr-only",o),...n,children:t}));se.displayName="DefaultActionDescription";var ie=forwardRef(({children:o,className:t,...r},n)=>{let{modalData:e,...l}=r;return jsx("div",{ref:n,className:t,...l,children:o})});ie.displayName="DefaultEmptyState";var wo=memo(({appChains:o,solanaRPCUrls:t,withImpersonated:r,customization:n={}})=>{let{isConnectModalOpen:e,setIsConnectModalOpen:l,setConnectModalContentType:s$1,setActiveConnector:x$1,setImpersonatedAddress:k,setIsConnected:h$1,connectModalContentType:g$1,selectedAdapter:u$1,setSelectedAdapter:O,isConnected:H,activeConnector:T,impersonatedAddress:P}=d(),M=i(m=>m.connectionError),R=i(m=>m.getConnectors),i$1=i(m=>m.connect),z$1=i(m=>m.activeConnection),p$1=h(),I=useContext(g),f=useMemo(()=>{if(e)return R()},[e,R]),E=useMemo(()=>u({connectors:f,selectedAdapter:u$1}),[f,u$1]),F=useMemo(()=>M?typeof M=="string"?new Error(M):M:null,[M]),a=useMemo(()=>({contentType:g$1,selectedAdapter:u$1,activeConnector:T,impersonatedAddress:P,isConnected:H,isOpen:e,error:F,connectors:f,filteredConnectors:E,labels:p$1}),[g$1,u$1,T,P,H,e,F,f,E,p$1]);useEffect(()=>{e&&(s$1("connectors"),O(void 0),x$1(void 0),k(""),h$1(false));},[e]);let{components:v$1={},classNames:b={},handlers:C$1={},config:N={},childComponents:d$1={}}=n,y$1=v$1.ModalContainer||Xo,D=v$1.ModalHeader||Yo,V=v$1.InfoButton||Zo,K=v$1.Title||oe,J=v$1.CloseButton||ee,Q=v$1.MainContent||te,X=v$1.Footer||ne,io=v$1.BackButton||re,Y=v$1.ActionButton||ae,lo=v$1.ActionDescription||se,G=v$1.EmptyState||ie,go=v$1.Dialog||Dialog,co=v$1.DialogContent||DialogContent,to=v$1.MotionDiv||motion.div,no=useCallback(()=>{switch(g$1){case "about":return p$1.aboutWallets;case "getWallet":return p$1.getWallet;case "connecting":return u$1&&T&&f&&Ie(f[u$1],T)||p$1.connectingEllipsis;case "impersonate":return p$1.connectImpersonatedWallet;default:return p$1.connectWallet}},[g$1,u$1,T,f,p$1]),Z=useCallback(()=>"connectors",[g$1]),oo=useCallback(m=>{C$1?.onOpenChange?C$1.onOpenChange(m,a):l(m);},[C$1?.onOpenChange,a,l]),bo=useCallback(()=>{let m=()=>s$1(Z());C$1?.onBack?C$1.onBack(a,m):m();},[C$1?.onBack,a,s$1,Z]),yo=useCallback(()=>{C$1?.onInfoClick?C$1.onInfoClick(a):s$1("about");},[C$1?.onInfoClick,a,s$1]),_=useCallback(async(m,To)=>{await i$1({connectorType:m,chainId:q({appChains:o,selectedAdapter:To,solanaRPCUrls:t})});try{await waitFor(()=>I?.getState().activeConnection?.isConnected),h$1(!0);let Eo=setTimeout(()=>l(!1),400),me=setTimeout(()=>h$1(!1),500);await delay(null,500),clearTimeout(Eo),clearTimeout(me);}catch(Eo){console.error(Eo);}},[i$1,o,u$1,t]),j=useCallback(async(m,To)=>{O(m),s$1("connecting"),await _(To,m);},[_]),Bo=useCallback(m=>{x$1(formatConnectorName(m.name)),m.adapters.length===1?(O(m.adapters[0]),s$1(formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting")):u$1?s$1(formatConnectorName(m.name)==="impersonatedwallet"?"impersonate":"connecting"):formatConnectorName(m.name)==="impersonatedwallet"?s$1("impersonate"):s$1("network");},[u$1]),ce=useCallback(()=>{switch(g$1){case "network":return jsx(B,{activeConnector:T,connectors:E,onClick:j,customization:d$1.networkSelections});case "connectors":return f?jsxs(Fragment,{children:[jsx(C,{networks:Object.keys(f),selectedAdapter:u$1,onSelect:m=>O(m),customization:d$1.networkTabs}),jsx(y,{isOnlyOneNetwork:Object.keys(f).length===1,connectors:E,selectedAdapter:u$1,onClick:Bo,setContentType:s$1,appChains:o,solanaRPCUrls:t,setIsConnected:h$1,setIsOpen:l,withImpersonated:r,customization:d$1.connectorsSelections})]}):jsx(G,{className:b.emptyConnectors?.({modalData:a}),modalData:a,children:"No connectors available"});case "about":return jsx(s,{customization:d$1.aboutWallets});case "getWallet":return jsx(z,{customization:d$1.getWallet});case "connecting":return jsx(v,{selectedAdapter:u$1,connectors:E,activeConnector:T,isConnected:H,customization:d$1.connecting});case "impersonate":return jsx(A,{selectedAdapter:u$1,impersonatedAddress:P,setImpersonatedAddress:k,customization:d$1.impersonateForm})}},[g$1,T,E,j,d$1,f,u$1,Bo,H,P]),$=useCallback(()=>{switch(g$1){case "connectors":return {title:p$1.iDontHaveWallet,onClick:()=>{C$1.onActionClick?.connectors?C$1.onActionClick.connectors(a):s$1("getWallet");}};case "getWallet":return {title:p$1.choseWallet,onClick:()=>{C$1.onActionClick?.getWallet?C$1.onActionClick.getWallet(a):window.open(x[u$1??Object.keys(f)[0]]?.choseWallet,"_blank","noopener,noreferrer");}};case "about":return {title:p$1.learnMore,onClick:()=>{C$1.onActionClick?.about?C$1.onActionClick.about(a):window.open(x[u$1??Object.keys(f)[0]]?.about,"_blank","noopener,noreferrer");}};case "impersonate":return {title:p$1.connect,onClick:async()=>{if(C$1.onActionClick?.impersonate)await C$1.onActionClick.impersonate(a);else {let m=P.trim();if(M||!m||p(m)||z$1?.isConnected)return;impersonatedHelpers.setImpersonated(m),s$1("connecting"),await _(getConnectorTypeFromName(u$1??OrbitAdapter.EVM,T??""),u$1??OrbitAdapter.EVM);}}};case "connecting":return M&&u$1&&T?{title:p$1.tryAgain,onClick:async()=>{C$1.onActionClick?.connecting?await C$1.onActionClick.connecting(a):await _(getConnectorTypeFromName(u$1,T),u$1);}}:void 0}},[g$1,p$1,C$1,a,u$1,f,P,M,_,T])(),de=useCallback(()=>{switch(g$1){case "getWallet":return "Opens external wallet selection page";case "about":return "Opens external documentation";case "impersonate":return "Connects with impersonated wallet address";case "connecting":return "Retries wallet connection";default:return ""}},[g$1]);return jsx(go,{open:e,onOpenChange:oo,children:jsx(co,{className:cn("novacon:w-full novacon:sm:max-w-md"),children:jsx(to,{layout:true,transition:{layout:{duration:N.animation?.disabled?0:N.animation?.layoutDuration??1e-4}},children:jsxs(y$1,{className:b.modalContainer?.({modalData:a}),modalData:a,children:[jsxs(D,{className:b.header?.({modalData:a}),modalData:a,children:[jsxs(K,{className:b.title?.({modalData:a}),modalData:a,children:[g$1==="connectors"&&jsx(V,{className:b.infoButton?.({modalData:a}),onClick:yo,"aria-label":N.ariaLabels?.infoButton?.(a)||`${p$1.learnMore} ${p$1.aboutWallets}`,modalData:a}),no()]}),jsx(J,{className:b.closeButton?.({modalData:a}),onClick:()=>oo(false),"aria-label":N.ariaLabels?.closeButton?.(a)||p$1.closeModal,modalData:a})]}),jsx(Q,{className:b.mainContent?.({modalData:a}),modalData:a,children:ce()}),jsxs(X,{className:b.footer?.({modalData:a}),modalData:a,children:[jsx("div",{className:"novacon:flex novacon:items-center novacon:gap-4",children:g$1!=="connectors"&&jsx(io,{className:b.backButton?.({modalData:a}),onClick:bo,"aria-label":N.ariaLabels?.backButton?.(a)||`${p$1.back} to previous step`,modalData:a,children:p$1.back})}),$&&jsxs("div",{className:"novacon:flex novacon:items-center novacon:gap-3",children:[jsx(Y,{className:b.actionButton?.({modalData:a,buttonConfig:$}),onClick:$.onClick,disabled:$.disabled,loading:$.loading,"aria-describedby":"bottom-action-description",modalData:a,buttonConfig:$,children:$.title}),jsx(lo,{id:"bottom-action-description",className:b.actionDescription?.({modalData:a}),modalData:a,children:de()})]})]})]})})})})});wo.displayName="ConnectModal";var Ve=({labels:o,children:t})=>jsx(No,{labels:o,children:t}),Ue=({customization:o})=>jsx(Po,{customization:o}),qe=(o,t)=>deepMerge(o,t||{}),Ge=o=>o,_e=o=>o,je=(o,t,r)=>o;function $e({labels:o,children:t,appChains:r$1,solanaRPCUrls:n,transactionPool:e,pulsarAdapter:l,withImpersonated:s,withBalance:x,withChain:k,customization:h}){let g=i(j=>j.activeConnection),u=i(j=>j.connectionError),{LabelsProvider:O=Ve,ErrorsProvider:H=Ue}=h?.components??{},{merge:T=qe,transform:P=Ge}=h?.labels??{},{transform:M=_e}=h?.contextValue??{},{providerTree:R=je}=h?.rendering??{},i$1=useMemo(()=>T(a,o||{}),[o,T]),[z,p]=useState(false),[I,f]=useState(false),[E,F]=useState(false),[a$1,v]=useState(false),[b,C]=useState("idle"),[N,d]=useState("connectors"),[y,D]=useState(void 0),[V,K]=useState(void 0),[J,Q]=useState(""),[X,io]=useState(false),[Y,lo]=useState("main"),G=useMemo(()=>({isConnected:X,activeConnection:g,connectionError:u,modalStates:{isConnectModalOpen:z,isConnectedModalOpen:I,isChainsListOpen:E,isChainsListOpenMobile:a$1},contentTypes:{connectModal:N,connectedModal:Y},statuses:{connectedButton:b}}),[X,g,u,z,I,E,a$1,N,Y,b]),go=useMemo(()=>P(i$1,G),[i$1,P,G]),co=useMemo(()=>M({appChains:r$1,solanaRPCUrls:n,withImpersonated:s,withBalance:x,withChain:k,isConnectModalOpen:z,setIsConnectModalOpen:p,isConnectedModalOpen:I,setIsConnectedModalOpen:f,isChainsListOpen:E,setIsChainsListOpen:F,isChainsListOpenMobile:a$1,setIsChainsListOpenMobile:v,connectedButtonStatus:b,setConnectedButtonStatus:C,connectedModalContentType:Y,setConnectedModalContentType:lo,connectModalContentType:N,setConnectModalContentType:d,selectedAdapter:y,setSelectedAdapter:D,activeConnector:V,setActiveConnector:K,impersonatedAddress:J,setImpersonatedAddress:Q,isConnected:X,setIsConnected:io},G),[r$1,n,s,x,k,z,p,I,f,E,F,a$1,v,b,C,Y,lo,N,d,y,D,V,K,J,Q,X,io,M,G]),to=jsx(H,{customization:h?.errors}),no=jsx(O,{labels:go,children:t}),Z=r$1||n?jsx(wo,{withImpersonated:s,solanaRPCUrls:n,appChains:r$1,customization:h?.modals?.connectModal}):null,oo=r$1||n?jsx(r,{solanaRPCUrls:n,appChains:r$1,transactionPool:e,pulsarAdapter:l,customization:h?.modals?.connectedModal}):null,bo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),yo=jsxs(c.Provider,{value:co,children:[to,no,Z,oo]}),_=R(yo,{ErrorsProvider:to,LabelsProvider:no,MainContent:bo,ConnectModal:Z||jsx(Fragment,{}),ConnectedModal:oo||jsx(Fragment,{})},G);return jsx(Fragment,{children:_})}$e.displayName="NovaConnectProvider";var so=typeof process<"u"&&process.env?.NODE_ENV==="production";async function nr(){let{getAllAdaptersStatus:o}=await import('./getChainsListByConnectorType-654NGZVM.js');return {hasEvmUtils:await fo(),hasSolanaUtils:await vo(),adaptersStatus:o()}}async function fo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-evm") && require("viem")); } catch { return false; }')()}catch{return false}try{return await import('viem'),await import('@tuwaio/orbit-evm'),!0}catch{return false}}async function vo(){if(so)try{return new Function('try { return Boolean(require("@tuwaio/orbit-solana") && require("gill")); } catch { return false; }')()}catch{return false}try{return await import('gill'),await import('@tuwaio/orbit-solana'),!0}catch{return false}}async function rr(){try{if(!await fo())return {available:!1,error:"EVM packages (viem, @tuwaio/orbit-evm) not available"};if(so)try{let e=new Function('try { return require("./evm"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getEvmExports!="function"){l({available:!1,error:"EVM module does not have getEvmExports function"});return}e.getEvmExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load EVM exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load EVM exports"});});}):{available:!1,error:"Failed to load EVM module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load EVM module"}}let t=await import('./evm/index.js'),r=await t.getEvmExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load EVM exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"EVM utilities not available"}}}async function ar(){try{if(!await vo())return {available:!1,error:"Solana packages (gill, @tuwaio/orbit-solana) not available"};if(so)try{let e=new Function('try { return require("./solana"); } catch { return null; }')();return e?new Promise(l=>{if(typeof e.getSolanaExports!="function"){l({available:!1,error:"Solana module does not have getSolanaExports function"});return}e.getSolanaExports().then(s=>{if(!s.available){l({available:!1,error:s.error||"Failed to load Solana exports"});return}l({...e,...s});}).catch(s=>{l({available:!1,error:s instanceof Error?s.message:"Failed to load Solana exports"});});}):{available:!1,error:"Failed to load Solana module"}}catch(n){return {available:!1,error:n instanceof Error?n.message:"Failed to load Solana module"}}let t=await import('./solana/index.js'),r=await t.getSolanaExports();return r.available?{...t,...r}:{available:!1,error:r.error||"Failed to load Solana exports"}}catch(o){return {available:false,error:o instanceof Error?o.message:"Solana utilities not available"}}}async function sr(){let o={evm:false,solana:false,errors:[]};try{let t=await fo(),r=await vo();if(t||r)if(so)try{let e=new Function('try { return require("./utils/getChainsListByConnectorType"); } catch { return null; }')();if(!e)return o.errors.push("Failed to load chain adapter utilities"),o;let l=[];t&&l.push(OrbitAdapter.EVM),r&&l.push(OrbitAdapter.SOLANA),await e.preloadChainAdapters(l),o.evm=t,o.solana=r;}catch(n){let e=n instanceof Error?n.message:"Failed to initialize chain adapters";o.errors.push(e);}else {let{preloadChainAdapters:n}=await import('./getChainsListByConnectorType-654NGZVM.js'),e=[];t&&e.push(OrbitAdapter.EVM),r&&e.push(OrbitAdapter.SOLANA),await n(e),o.evm=t,o.solana=r;}else o.errors.push("No blockchain packages available for initialization");}catch(t){let r=t instanceof Error?t.message:"Unknown initialization error";o.errors.push(r);}return o}async function ir(o){return o===OrbitAdapter.Starknet||o!==OrbitAdapter.EVM&&o!==OrbitAdapter.SOLANA?false:o===OrbitAdapter.EVM?fo():vo()}export{Po as ErrorsProvider,No as NovaConnectLabelsProvider,$e as NovaConnectProvider,nr as getBlockchainUtilities,rr as getEvmUtils,ar as getSolanaUtils,sr as initializeBlockchainSupport,ir as isAdapterSupported};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map