@solana/connector 0.2.0 → 0.2.1

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.
@@ -2,14 +2,14 @@
2
2
 
3
3
  var chunkBZ2VBJCZ_js = require('./chunk-BZ2VBJCZ.js');
4
4
  var chunkSITQ4JWM_js = require('./chunk-SITQ4JWM.js');
5
- var React2 = require('react');
5
+ var React4 = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var addresses = require('@solana/addresses');
8
8
  var keys = require('@solana/keys');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
- var React2__default = /*#__PURE__*/_interopDefault(React2);
12
+ var React4__default = /*#__PURE__*/_interopDefault(React4);
13
13
 
14
14
  var logger = chunkSITQ4JWM_js.createLogger("ErrorBoundary");
15
15
  var ErrorLogger = class {
@@ -59,7 +59,7 @@ function classifyError(error) {
59
59
  context: { originalMessage: error.message }
60
60
  };
61
61
  }
62
- var ConnectorErrorBoundary = class extends React2.Component {
62
+ var ConnectorErrorBoundary = class extends React4.Component {
63
63
  constructor(props) {
64
64
  super(props);
65
65
  chunkSITQ4JWM_js.__publicField(this, "retryTimeouts", /* @__PURE__ */ new Set());
@@ -106,13 +106,13 @@ var ConnectorErrorBoundary = class extends React2.Component {
106
106
  }
107
107
  };
108
108
  function DefaultErrorFallback({ error, onRetry }) {
109
- let [isPending, startTransition] = React2.useTransition(), [isRetrying, setIsRetrying] = React2.useState(false), handleRetry = React2.useCallback(() => {
109
+ let [isPending, startTransition] = React4.useTransition(), [isRetrying, setIsRetrying] = React4.useState(false), handleRetry = React4.useCallback(() => {
110
110
  setIsRetrying(true), startTransition(() => {
111
111
  setTimeout(() => {
112
112
  onRetry(), setIsRetrying(false);
113
113
  }, 500);
114
114
  });
115
- }, [onRetry]), { title, message, actionText, showRetry } = React2.useMemo(() => {
115
+ }, [onRetry]), { title, message, actionText, showRetry } = React4.useMemo(() => {
116
116
  switch (error.type) {
117
117
  case chunkSITQ4JWM_js.WalletErrorType.USER_REJECTED:
118
118
  return {
@@ -285,25 +285,25 @@ function withErrorBoundary(Component2, errorBoundaryProps) {
285
285
  let WrappedComponent = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectorErrorBoundary, { ...errorBoundaryProps, children: /* @__PURE__ */ jsxRuntime.jsx(Component2, { ...props }) });
286
286
  return WrappedComponent.displayName = `withErrorBoundary(${Component2.displayName || Component2.name})`, WrappedComponent;
287
287
  }
288
- var WalletConnectContext = React2.createContext(null);
288
+ var WalletConnectContext = React4.createContext(null);
289
289
  function WalletConnectProvider({ children }) {
290
- let [uri, setUriState] = React2.useState(null), isMountedRef = React2.useRef(false), pendingUriRef = React2.useRef(null);
291
- React2.useEffect(() => (isMountedRef.current = true, pendingUriRef.current !== null && (setUriState(pendingUriRef.current), pendingUriRef.current = null), () => {
290
+ let [uri, setUriState] = React4.useState(null), isMountedRef = React4.useRef(false), pendingUriRef = React4.useRef(null);
291
+ React4.useEffect(() => (isMountedRef.current = true, pendingUriRef.current !== null && (setUriState(pendingUriRef.current), pendingUriRef.current = null), () => {
292
292
  isMountedRef.current = false;
293
293
  }), []);
294
- let setUri = React2.useCallback((newUri) => {
294
+ let setUri = React4.useCallback((newUri) => {
295
295
  if (!isMountedRef.current) {
296
296
  pendingUriRef.current = newUri;
297
297
  return;
298
298
  }
299
299
  setUriState(newUri);
300
- }, []), clearUri = React2.useCallback(() => {
300
+ }, []), clearUri = React4.useCallback(() => {
301
301
  pendingUriRef.current = null, isMountedRef.current && setUriState(null);
302
302
  }, []);
303
303
  return /* @__PURE__ */ jsxRuntime.jsx(WalletConnectContext.Provider, { value: { uri, setUri, clearUri }, children });
304
304
  }
305
305
  function useWalletConnectUri() {
306
- let context = React2.useContext(WalletConnectContext);
306
+ let context = React4.useContext(WalletConnectContext);
307
307
  return context || {
308
308
  uri: null,
309
309
  setUri: () => {
@@ -314,14 +314,14 @@ function useWalletConnectUri() {
314
314
  }
315
315
  var logger2 = chunkSITQ4JWM_js.createLogger("ConnectorProvider");
316
316
  chunkBZ2VBJCZ_js.installPolyfills();
317
- var ConnectorContext = React2.createContext(null);
317
+ var ConnectorContext = React4.createContext(null);
318
318
  ConnectorContext.displayName = "ConnectorContext";
319
319
  function ConnectorProviderInternal({
320
320
  children,
321
321
  config,
322
322
  mobile
323
323
  }) {
324
- let clientRef = React2.useRef(null), client = React2__default.default.useCallback(() => {
324
+ let clientRef = React4.useRef(null), client = React4__default.default.useCallback(() => {
325
325
  if (!clientRef.current)
326
326
  try {
327
327
  clientRef.current = new chunkBZ2VBJCZ_js.ConnectorClient(config), typeof window < "u" && (window.__connectorClient = clientRef.current), config?.debug && logger2.info("Client initialized successfully");
@@ -336,7 +336,7 @@ function ConnectorProviderInternal({
336
336
  }
337
337
  return clientRef.current;
338
338
  }, [config])();
339
- return React2__default.default.useEffect(() => {
339
+ return React4__default.default.useEffect(() => {
340
340
  let currentClient = clientRef.current;
341
341
  if (currentClient) {
342
342
  let privateClient = currentClient;
@@ -345,7 +345,7 @@ function ConnectorProviderInternal({
345
345
  return () => {
346
346
  typeof window < "u" && (window.__connectorClient = void 0), currentClient && typeof currentClient.destroy == "function" && currentClient.destroy();
347
347
  };
348
- }, []), React2__default.default.useEffect(() => {
348
+ }, []), React4__default.default.useEffect(() => {
349
349
  if (!mobile) return;
350
350
  let cancelled = false;
351
351
  return (async () => {
@@ -394,16 +394,16 @@ function ConnectorProvider({
394
394
  ) : /* @__PURE__ */ jsxRuntime.jsx(ConnectorProviderInternal, { config, mobile, children });
395
395
  }
396
396
  function useConnector() {
397
- let client = React2.useContext(ConnectorContext);
397
+ let client = React4.useContext(ConnectorContext);
398
398
  if (!client)
399
399
  throw new Error(
400
400
  "useConnector must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider> to use connector hooks."
401
401
  );
402
- let { uri: walletConnectUri, clearUri: clearWalletConnectUri } = useWalletConnectUri(), state = React2.useSyncExternalStore(
403
- React2__default.default.useCallback((cb) => client.subscribe(cb), [client]),
404
- React2__default.default.useCallback(() => client.getSnapshot(), [client]),
405
- React2__default.default.useCallback(() => client.getSnapshot(), [client])
406
- ), methods = React2.useMemo(
402
+ let { uri: walletConnectUri, clearUri: clearWalletConnectUri } = useWalletConnectUri(), state = React4.useSyncExternalStore(
403
+ React4__default.default.useCallback((cb) => client.subscribe(cb), [client]),
404
+ React4__default.default.useCallback(() => client.getSnapshot(), [client]),
405
+ React4__default.default.useCallback(() => client.getSnapshot(), [client])
406
+ ), methods = React4.useMemo(
407
407
  () => ({
408
408
  // Legacy (kept for backwards compatibility)
409
409
  select: client.select.bind(client),
@@ -414,7 +414,7 @@ function useConnector() {
414
414
  disconnectWallet: client.disconnectWallet.bind(client)
415
415
  }),
416
416
  [client]
417
- ), vNextFields = React2.useMemo(() => {
417
+ ), vNextFields = React4.useMemo(() => {
418
418
  let walletStatus = state.wallet, isConnected2 = walletStatus.status === "connected", isConnecting2 = walletStatus.status === "connecting", isError = walletStatus.status === "error", connectorId = null, account = null, sessionAccounts = [], walletError = null;
419
419
  walletStatus.status === "connected" ? (connectorId = walletStatus.session.connectorId, account = walletStatus.session.selectedAccount.address, sessionAccounts = walletStatus.session.accounts) : walletStatus.status === "connecting" ? connectorId = walletStatus.connectorId : walletStatus.status === "error" && (walletError = walletStatus.error, connectorId = walletStatus.connectorId ?? null);
420
420
  let connector = connectorId ? state.connectors.find((c) => c.id === connectorId) ?? null : null;
@@ -430,7 +430,7 @@ function useConnector() {
430
430
  connector
431
431
  };
432
432
  }, [state.wallet, state.connectors]);
433
- return React2.useMemo(
433
+ return React4.useMemo(
434
434
  () => ({
435
435
  ...state,
436
436
  ...methods,
@@ -442,10 +442,10 @@ function useConnector() {
442
442
  );
443
443
  }
444
444
  function useConnectorClient() {
445
- return React2.useContext(ConnectorContext);
445
+ return React4.useContext(ConnectorContext);
446
446
  }
447
447
  function AppProviderInner({ children, connectorConfig, mobile, providers = [] }) {
448
- let { setUri, clearUri } = useWalletConnectUri(), enhancedConfig = React2.useMemo(() => {
448
+ let { setUri, clearUri } = useWalletConnectUri(), enhancedConfig = React4.useMemo(() => {
449
449
  if (!connectorConfig?.walletConnect?.enabled)
450
450
  return connectorConfig;
451
451
  let wcConfig = connectorConfig.walletConnect;
@@ -471,17 +471,17 @@ function AppProvider(props) {
471
471
  }
472
472
  var UnifiedProvider = AppProvider;
473
473
  function useWallet() {
474
- let client = React2.useContext(ConnectorContext);
474
+ let client = React4.useContext(ConnectorContext);
475
475
  if (!client)
476
476
  throw new Error(
477
477
  "useWallet must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider> to use wallet hooks."
478
478
  );
479
- let walletStatus = React2.useSyncExternalStore(
480
- React2.useCallback((cb) => client.subscribe(cb), [client]),
481
- React2.useCallback(() => client.getSnapshot().wallet, [client]),
482
- React2.useCallback(() => client.getSnapshot().wallet, [client])
479
+ let walletStatus = React4.useSyncExternalStore(
480
+ React4.useCallback((cb) => client.subscribe(cb), [client]),
481
+ React4.useCallback(() => client.getSnapshot().wallet, [client]),
482
+ React4.useCallback(() => client.getSnapshot().wallet, [client])
483
483
  );
484
- return React2.useMemo(() => {
484
+ return React4.useMemo(() => {
485
485
  let status = walletStatus.status, isConnected2 = status === "connected", isConnecting2 = status === "connecting", isError = status === "error", connectorId = null, account = null, accounts = [], session = null, error = null;
486
486
  return walletStatus.status === "connected" ? (connectorId = walletStatus.session.connectorId, account = walletStatus.session.selectedAccount.address, accounts = walletStatus.session.accounts, session = walletStatus.session) : walletStatus.status === "connecting" ? connectorId = walletStatus.connectorId : walletStatus.status === "error" && (error = walletStatus.error, connectorId = walletStatus.connectorId ?? null), {
487
487
  status,
@@ -498,24 +498,24 @@ function useWallet() {
498
498
  }, [walletStatus]);
499
499
  }
500
500
  function useWalletConnectors() {
501
- let client = React2.useContext(ConnectorContext);
501
+ let client = React4.useContext(ConnectorContext);
502
502
  if (!client)
503
503
  throw new Error(
504
504
  "useWalletConnectors must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider> to use wallet hooks."
505
505
  );
506
- return React2.useSyncExternalStore(
507
- React2.useCallback((cb) => client.subscribe(cb), [client]),
508
- React2.useCallback(() => client.getSnapshot().connectors, [client]),
509
- React2.useCallback(() => client.getSnapshot().connectors, [client])
506
+ return React4.useSyncExternalStore(
507
+ React4.useCallback((cb) => client.subscribe(cb), [client]),
508
+ React4.useCallback(() => client.getSnapshot().connectors, [client]),
509
+ React4.useCallback(() => client.getSnapshot().connectors, [client])
510
510
  );
511
511
  }
512
512
  function useConnectWallet() {
513
- let client = React2.useContext(ConnectorContext), [isConnecting2, setIsConnecting] = React2.useState(false), [error, setError] = React2.useState(null);
513
+ let client = React4.useContext(ConnectorContext), [isConnecting2, setIsConnecting] = React4.useState(false), [error, setError] = React4.useState(null);
514
514
  if (!client)
515
515
  throw new Error(
516
516
  "useConnectWallet must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider> to use wallet hooks."
517
517
  );
518
- let connect = React2.useCallback(
518
+ let connect = React4.useCallback(
519
519
  async (connectorId, options) => {
520
520
  setIsConnecting(true), setError(null);
521
521
  try {
@@ -528,7 +528,7 @@ function useConnectWallet() {
528
528
  }
529
529
  },
530
530
  [client]
531
- ), resetError = React2.useCallback(() => {
531
+ ), resetError = React4.useCallback(() => {
532
532
  setError(null);
533
533
  }, []);
534
534
  return {
@@ -539,13 +539,13 @@ function useConnectWallet() {
539
539
  };
540
540
  }
541
541
  function useDisconnectWallet() {
542
- let client = React2.useContext(ConnectorContext), [isDisconnecting, setIsDisconnecting] = React2.useState(false);
542
+ let client = React4.useContext(ConnectorContext), [isDisconnecting, setIsDisconnecting] = React4.useState(false);
543
543
  if (!client)
544
544
  throw new Error(
545
545
  "useDisconnectWallet must be used within ConnectorProvider. Wrap your app with <ConnectorProvider> or <UnifiedProvider> to use wallet hooks."
546
546
  );
547
547
  return {
548
- disconnect: React2.useCallback(async () => {
548
+ disconnect: React4.useCallback(async () => {
549
549
  setIsDisconnecting(true);
550
550
  try {
551
551
  await client.disconnectWallet();
@@ -560,13 +560,13 @@ function useCluster() {
560
560
  let { cluster, clusters } = useConnector(), client = useConnectorClient();
561
561
  if (!client)
562
562
  throw new Error("useCluster must be used within ConnectorProvider");
563
- let setCluster = React2.useMemo(
563
+ let setCluster = React4.useMemo(
564
564
  () => async (id) => {
565
565
  await client.setCluster(id);
566
566
  },
567
567
  [client]
568
568
  );
569
- return React2.useMemo(() => {
569
+ return React4.useMemo(() => {
570
570
  let isMainnet = cluster ? chunkBZ2VBJCZ_js.isMainnetCluster(cluster) : false, isDevnet = cluster ? chunkBZ2VBJCZ_js.isDevnetCluster(cluster) : false, isTestnet = cluster ? chunkBZ2VBJCZ_js.isTestnetCluster(cluster) : false, isLocal = cluster ? chunkBZ2VBJCZ_js.isLocalCluster(cluster) : false, explorerUrl = cluster ? chunkBZ2VBJCZ_js.getClusterExplorerUrl(cluster) : "", type = cluster ? chunkBZ2VBJCZ_js.getClusterType(cluster) : null;
571
571
  return {
572
572
  cluster,
@@ -582,10 +582,10 @@ function useCluster() {
582
582
  }, [cluster, clusters, setCluster]);
583
583
  }
584
584
  function useAccount() {
585
- let { selectedAccount, accounts, connected, selectAccount } = useConnector(), [copied, setCopied] = React2.useState(false), copyTimeoutRef = React2__default.default.useRef(void 0), account = React2.useMemo(
585
+ let { selectedAccount, accounts, connected, selectAccount } = useConnector(), [copied, setCopied] = React4.useState(false), copyTimeoutRef = React4__default.default.useRef(void 0), account = React4.useMemo(
586
586
  () => accounts.find((a) => a.address === selectedAccount) ?? null,
587
587
  [accounts, selectedAccount]
588
- ), formatted = React2.useMemo(() => selectedAccount ? chunkBZ2VBJCZ_js.formatAddress(selectedAccount) : "", [selectedAccount]), copy = React2.useCallback(async () => selectedAccount ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkBZ2VBJCZ_js.copyAddressToClipboard(selectedAccount, {
588
+ ), formatted = React4.useMemo(() => selectedAccount ? chunkBZ2VBJCZ_js.formatAddress(selectedAccount) : "", [selectedAccount]), copy = React4.useCallback(async () => selectedAccount ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkBZ2VBJCZ_js.copyAddressToClipboard(selectedAccount, {
589
589
  onSuccess: () => {
590
590
  setCopied(true), copyTimeoutRef.current = setTimeout(() => setCopied(false), 2e3);
591
591
  }
@@ -594,9 +594,9 @@ function useAccount() {
594
594
  error: "empty_value" /* EMPTY_VALUE */,
595
595
  errorMessage: "No account selected"
596
596
  }, [selectedAccount]);
597
- return React2__default.default.useEffect(() => () => {
597
+ return React4__default.default.useEffect(() => () => {
598
598
  copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current);
599
- }, []), React2.useMemo(
599
+ }, []), React4.useMemo(
600
600
  () => ({
601
601
  address: selectedAccount,
602
602
  account,
@@ -611,7 +611,7 @@ function useAccount() {
611
611
  );
612
612
  }
613
613
  function useWalletInfo() {
614
- let { selectedWallet, wallets, connected, connecting } = useConnector(), mappedWallets = React2.useMemo(
614
+ let { selectedWallet, wallets, connected, connecting } = useConnector(), mappedWallets = React4.useMemo(
615
615
  () => wallets.map(
616
616
  (walletInfo) => ({
617
617
  name: walletInfo.wallet.name,
@@ -622,7 +622,7 @@ function useWalletInfo() {
622
622
  })
623
623
  ),
624
624
  [wallets]
625
- ), selectedWalletInfo = React2.useMemo(() => {
625
+ ), selectedWalletInfo = React4.useMemo(() => {
626
626
  if (!selectedWallet)
627
627
  return {
628
628
  name: null,
@@ -638,7 +638,7 @@ function useWalletInfo() {
638
638
  connectable: walletInfo?.connectable ?? false
639
639
  };
640
640
  }, [selectedWallet, wallets]);
641
- return React2.useMemo(
641
+ return React4.useMemo(
642
642
  () => ({
643
643
  ...selectedWalletInfo,
644
644
  connected,
@@ -649,10 +649,10 @@ function useWalletInfo() {
649
649
  );
650
650
  }
651
651
  function useTransactionSigner() {
652
- let { selectedWallet, selectedAccount, accounts, cluster, connected } = useConnector(), client = useConnectorClient(), account = React2.useMemo(
652
+ let { selectedWallet, selectedAccount, accounts, cluster, connected } = useConnector(), client = useConnectorClient(), account = React4.useMemo(
653
653
  () => accounts.find((a) => a.address === selectedAccount)?.raw ?? null,
654
654
  [accounts, selectedAccount]
655
- ), signer = React2.useMemo(() => !connected || !selectedWallet || !account ? null : chunkBZ2VBJCZ_js.createTransactionSigner({
655
+ ), signer = React4.useMemo(() => !connected || !selectedWallet || !account ? null : chunkBZ2VBJCZ_js.createTransactionSigner({
656
656
  wallet: selectedWallet,
657
657
  account,
658
658
  cluster: cluster ?? void 0,
@@ -661,7 +661,7 @@ function useTransactionSigner() {
661
661
  client.emitEvent(event);
662
662
  }
663
663
  } : void 0
664
- }), [connected, selectedWallet, account, cluster, client]), capabilities = React2.useMemo(
664
+ }), [connected, selectedWallet, account, cluster, client]), capabilities = React4.useMemo(
665
665
  () => signer?.getCapabilities() ?? {
666
666
  canSign: false,
667
667
  canSend: false,
@@ -680,14 +680,14 @@ function useTransactionSigner() {
680
680
  function useKitTransactionSigner() {
681
681
  let { signer: connectorSigner, ready } = useTransactionSigner();
682
682
  return {
683
- signer: React2.useMemo(() => connectorSigner ? chunkBZ2VBJCZ_js.createKitTransactionSigner(connectorSigner) : null, [connectorSigner]),
683
+ signer: React4.useMemo(() => connectorSigner ? chunkBZ2VBJCZ_js.createKitTransactionSigner(connectorSigner) : null, [connectorSigner]),
684
684
  ready
685
685
  };
686
686
  }
687
687
  var useGillTransactionSigner = useKitTransactionSigner;
688
688
  var logger3 = chunkSITQ4JWM_js.createLogger("useSolanaClient");
689
689
  function useSolanaClient() {
690
- let { type } = useCluster(), connectorClient = useConnectorClient(), client = React2.useMemo(() => {
690
+ let { type } = useCluster(), connectorClient = useConnectorClient(), client = React4.useMemo(() => {
691
691
  if (!type || !connectorClient) return null;
692
692
  try {
693
693
  let rpcUrl = connectorClient.getRpcUrl();
@@ -700,7 +700,7 @@ function useSolanaClient() {
700
700
  return logger3.error("Failed to create Solana client", { error }), null;
701
701
  }
702
702
  }, [type, connectorClient]);
703
- return React2.useMemo(
703
+ return React4.useMemo(
704
704
  () => ({
705
705
  client,
706
706
  ready: !!client,
@@ -711,7 +711,7 @@ function useSolanaClient() {
711
711
  }
712
712
  var useGillSolanaClient = useSolanaClient;
713
713
  function useTransactionPreparer() {
714
- let { client, ready } = useSolanaClient(), prepare = React2.useCallback(
714
+ let { client, ready } = useSolanaClient(), prepare = React4.useCallback(
715
715
  async (transaction, options = {}) => {
716
716
  if (!client)
717
717
  throw new chunkSITQ4JWM_js.NetworkError("RPC_ERROR", "Solana client not available. Cannot prepare transaction.");
@@ -725,7 +725,7 @@ function useTransactionPreparer() {
725
725
  },
726
726
  [client]
727
727
  );
728
- return React2.useMemo(
728
+ return React4.useMemo(
729
729
  () => ({
730
730
  prepare,
731
731
  ready
@@ -864,13 +864,13 @@ function useSharedQuery(key, queryFn, options = {}) {
864
864
  refetchOnMount = "stale",
865
865
  refetchIntervalMs = false,
866
866
  select
867
- } = options, queryFnRef = React2.useRef(queryFn);
867
+ } = options, queryFnRef = React4.useRef(queryFn);
868
868
  queryFnRef.current = queryFn;
869
- let stableQueryFn = React2.useCallback((signal) => queryFnRef.current(signal), []), subscribe = React2.useCallback(
869
+ let stableQueryFn = React4.useCallback((signal) => queryFnRef.current(signal), []), subscribe = React4.useCallback(
870
870
  (onChange) => key ? subscribeSharedQuery(key, onChange, cacheTimeMs) : () => {
871
871
  },
872
872
  [key, cacheTimeMs]
873
- ), emptySnapshot = React2.useMemo(
873
+ ), emptySnapshot = React4.useMemo(
874
874
  () => ({
875
875
  data: void 0,
876
876
  error: null,
@@ -879,8 +879,8 @@ function useSharedQuery(key, queryFn, options = {}) {
879
879
  isFetching: false
880
880
  }),
881
881
  []
882
- ), getSnapshot = React2.useCallback(() => key ? getOrCreateEntry(key).snapshot : emptySnapshot, [key, emptySnapshot]), snapshot = React2.useSyncExternalStore(subscribe, getSnapshot, getSnapshot), selectedData = React2.useMemo(() => select ? select(snapshot.data) : snapshot.data, [snapshot.data, select]), prevSelectedRef = React2.useRef(selectedData), stableSelectedData = React2.useMemo(() => Object.is(prevSelectedRef.current, selectedData) ? prevSelectedRef.current : (prevSelectedRef.current = selectedData, selectedData), [selectedData]), fetchedKeyRef = React2.useRef(null);
883
- React2.useEffect(() => {
882
+ ), getSnapshot = React4.useCallback(() => key ? getOrCreateEntry(key).snapshot : emptySnapshot, [key, emptySnapshot]), snapshot = React4.useSyncExternalStore(subscribe, getSnapshot, getSnapshot), selectedData = React4.useMemo(() => select ? select(snapshot.data) : snapshot.data, [snapshot.data, select]), prevSelectedRef = React4.useRef(selectedData), stableSelectedData = React4.useMemo(() => Object.is(prevSelectedRef.current, selectedData) ? prevSelectedRef.current : (prevSelectedRef.current = selectedData, selectedData), [selectedData]), fetchedKeyRef = React4.useRef(null);
883
+ React4.useEffect(() => {
884
884
  if (!key || !enabled) {
885
885
  fetchedKeyRef.current = null;
886
886
  return;
@@ -894,7 +894,7 @@ function useSharedQuery(key, queryFn, options = {}) {
894
894
  force: refetchOnMount === true
895
895
  }).catch(() => {
896
896
  })) : fetchedKeyRef.current = key;
897
- }, [key, enabled, staleTimeMs, refetchOnMount, stableQueryFn]), React2.useEffect(() => {
897
+ }, [key, enabled, staleTimeMs, refetchOnMount, stableQueryFn]), React4.useEffect(() => {
898
898
  if (!key || !enabled || refetchIntervalMs === false) return;
899
899
  let entry = getOrCreateEntry(key);
900
900
  entry.queryFn = stableQueryFn;
@@ -904,7 +904,7 @@ function useSharedQuery(key, queryFn, options = {}) {
904
904
  count <= 1 ? entry.intervalCounts.delete(refetchIntervalMs) : entry.intervalCounts.set(refetchIntervalMs, count - 1), startOrRestartInterval(key, entry);
905
905
  };
906
906
  }, [key, enabled, refetchIntervalMs, stableQueryFn]);
907
- let refetch = React2.useCallback(
907
+ let refetch = React4.useCallback(
908
908
  async (refetchOptions) => {
909
909
  if (key)
910
910
  return fetchSharedQuery(key, stableQueryFn, {
@@ -913,12 +913,12 @@ function useSharedQuery(key, queryFn, options = {}) {
913
913
  });
914
914
  },
915
915
  [key, stableQueryFn]
916
- ), abort = React2.useCallback(() => {
916
+ ), abort = React4.useCallback(() => {
917
917
  if (!key) return;
918
918
  let entry = store.get(key);
919
919
  entry?.abortController && entry.abortController.abort();
920
920
  }, [key]);
921
- return React2.useMemo(
921
+ return React4.useMemo(
922
922
  () => ({
923
923
  data: stableSelectedData,
924
924
  error: snapshot.error,
@@ -997,13 +997,13 @@ function useWalletAssets(options = {}) {
997
997
  refetchIntervalMs = false,
998
998
  client: clientOverride,
999
999
  select
1000
- } = options, { address, connected } = useAccount(), { client: providerClient } = useSolanaClient(), rpcClient = clientOverride ?? providerClient, key = React2.useMemo(() => {
1001
- if (!enabled || !connected || !address || !rpcClient) return null;
1000
+ } = options, { account, isConnected: isConnected2 } = useWallet(), address = account ? String(account) : null, { client: providerClient } = useSolanaClient(), rpcClient = clientOverride ?? providerClient, key = React4.useMemo(() => {
1001
+ if (!enabled || !isConnected2 || !address || !rpcClient) return null;
1002
1002
  let rpcUrl = rpcClient.urlOrMoniker instanceof URL ? rpcClient.urlOrMoniker.toString() : String(rpcClient.urlOrMoniker);
1003
1003
  return getWalletAssetsQueryKey(rpcUrl, address);
1004
- }, [enabled, connected, address, rpcClient]), queryFn = React2.useCallback(
1004
+ }, [enabled, isConnected2, address, rpcClient]), queryFn = React4.useCallback(
1005
1005
  async (signal) => {
1006
- if (!connected || !address || !rpcClient)
1006
+ if (!isConnected2 || !address || !rpcClient)
1007
1007
  return { lamports: 0n, tokenAccounts: [] };
1008
1008
  if (signal.aborted)
1009
1009
  throw new DOMException("Query aborted", "AbortError");
@@ -1019,12 +1019,12 @@ function useWalletAssets(options = {}) {
1019
1019
  if (signal.aborted)
1020
1020
  throw new DOMException("Query aborted", "AbortError");
1021
1021
  let tokenAccounts = [];
1022
- for (let account of tokenAccountsResult.value) {
1023
- let parsed = parseTokenAccount(account, "token");
1022
+ for (let account2 of tokenAccountsResult.value) {
1023
+ let parsed = parseTokenAccount(account2, "token");
1024
1024
  parsed && tokenAccounts.push(parsed);
1025
1025
  }
1026
- for (let account of token2022AccountsResult.value) {
1027
- let parsed = parseTokenAccount(account, "token-2022");
1026
+ for (let account2 of token2022AccountsResult.value) {
1027
+ let parsed = parseTokenAccount(account2, "token-2022");
1028
1028
  parsed && tokenAccounts.push(parsed);
1029
1029
  }
1030
1030
  return {
@@ -1032,7 +1032,7 @@ function useWalletAssets(options = {}) {
1032
1032
  tokenAccounts
1033
1033
  };
1034
1034
  },
1035
- [connected, address, rpcClient]
1035
+ [isConnected2, address, rpcClient]
1036
1036
  ), { data, error, status, updatedAt, isFetching, refetch, abort } = useSharedQuery(
1037
1037
  key,
1038
1038
  queryFn,
@@ -1045,7 +1045,7 @@ function useWalletAssets(options = {}) {
1045
1045
  select
1046
1046
  }
1047
1047
  ), isLoading = status === "loading" || status === "idle";
1048
- return React2.useMemo(
1048
+ return React4.useMemo(
1049
1049
  () => ({
1050
1050
  data,
1051
1051
  isLoading,
@@ -1109,13 +1109,13 @@ function useBalance(options = {}) {
1109
1109
  refetchIntervalMs: autoRefresh ? refreshInterval : false,
1110
1110
  client: clientOverride,
1111
1111
  select: selectBalance
1112
- }), lamports = data?.lamports ?? 0n, tokens = data?.tokens ?? [], solBalance = React2.useMemo(() => Number(lamports) / Number(LAMPORTS_PER_SOL2), [lamports]), formattedSol = React2.useMemo(() => chunkBZ2VBJCZ_js.formatLamportsToSolSafe(lamports, { maxDecimals: 4, suffix: true }), [lamports]), visibleError = updatedAt ? null : error, refetch = React2.useCallback(
1112
+ }), lamports = data?.lamports ?? 0n, tokens = data?.tokens ?? [], solBalance = React4.useMemo(() => Number(lamports) / Number(LAMPORTS_PER_SOL2), [lamports]), formattedSol = React4.useMemo(() => chunkBZ2VBJCZ_js.formatLamportsToSolSafe(lamports, { maxDecimals: 4, suffix: true }), [lamports]), visibleError = updatedAt ? null : error, refetch = React4.useCallback(
1113
1113
  async (opts) => {
1114
1114
  await sharedRefetch(opts);
1115
1115
  },
1116
1116
  [sharedRefetch]
1117
1117
  );
1118
- return React2.useMemo(
1118
+ return React4.useMemo(
1119
1119
  () => ({
1120
1120
  solBalance,
1121
1121
  lamports,
@@ -1490,7 +1490,7 @@ function useTransactions(options = {}) {
1490
1490
  // 5 minutes
1491
1491
  refetchOnMount = "stale",
1492
1492
  client: clientOverride
1493
- } = options, { address, connected } = useAccount(), { cluster } = useCluster(), { client: providerClient } = useSolanaClient(), connectorClient = useConnectorClient(), [paginatedTransactions, setPaginatedTransactions] = React2.useState([]), [isPaginationLoading, setIsPaginationLoading] = React2.useState(false), [hasMore, setHasMore] = React2.useState(true), beforeSignatureRef = React2.useRef(void 0), rpcClient = clientOverride ?? providerClient, connectorConfig = connectorClient?.getConfig(), imageProxy = connectorConfig?.imageProxy, programLabels = connectorConfig?.programLabels, parseTransaction = React2.useCallback(
1493
+ } = options, { account, isConnected: isConnected2 } = useWallet(), address = React4.useMemo(() => account ? String(account) : null, [account]), { cluster } = useCluster(), { client: providerClient } = useSolanaClient(), connectorClient = useConnectorClient(), [paginatedTransactions, setPaginatedTransactions] = React4.useState([]), [isPaginationLoading, setIsPaginationLoading] = React4.useState(false), [hasMore, setHasMore] = React4.useState(true), beforeSignatureRef = React4.useRef(void 0), rpcClient = clientOverride ?? providerClient, connectorConfig = connectorClient?.getConfig(), imageProxy = connectorConfig?.imageProxy, programLabels = connectorConfig?.programLabels, parseTransaction = React4.useCallback(
1494
1494
  (tx, walletAddress, sig, blockTime, slot, err, explorerUrl) => {
1495
1495
  let { date, time } = formatDate(blockTime), baseInfo = {
1496
1496
  signature: sig,
@@ -1541,15 +1541,15 @@ function useTransactions(options = {}) {
1541
1541
  }
1542
1542
  },
1543
1543
  [programLabels]
1544
- ), key = React2.useMemo(() => {
1545
- if (!enabled || !connected || !address || !rpcClient || !cluster) return null;
1544
+ ), key = React4.useMemo(() => {
1545
+ if (!enabled || !isConnected2 || !address || !rpcClient || !cluster) return null;
1546
1546
  let rpcUrl = rpcClient.urlOrMoniker instanceof URL ? rpcClient.urlOrMoniker.toString() : String(rpcClient.urlOrMoniker);
1547
1547
  return getTransactionsQueryKey({ rpcUrl, address, clusterId: cluster.id, limit, fetchDetails });
1548
- }, [enabled, connected, address, rpcClient, cluster, limit, fetchDetails]);
1549
- React2.useEffect(() => {
1548
+ }, [enabled, isConnected2, address, rpcClient, cluster, limit, fetchDetails]);
1549
+ React4.useEffect(() => {
1550
1550
  beforeSignatureRef.current = void 0, setPaginatedTransactions([]), setIsPaginationLoading(false), setHasMore(true);
1551
1551
  }, [key]);
1552
- let fetchAndEnrichTransactions = React2.useCallback(
1552
+ let fetchAndEnrichTransactions = React4.useCallback(
1553
1553
  async (beforeSignature, currentCluster, signal) => {
1554
1554
  if (!rpcClient || !address)
1555
1555
  return { transactions: [], hasMore: false };
@@ -1651,15 +1651,15 @@ function useTransactions(options = {}) {
1651
1651
  };
1652
1652
  },
1653
1653
  [rpcClient, address, limit, fetchDetails, detailsConcurrency, parseTransaction, imageProxy]
1654
- ), queryFn = React2.useCallback(
1654
+ ), queryFn = React4.useCallback(
1655
1655
  async (signal) => {
1656
- if (!connected || !address || !rpcClient || !cluster)
1656
+ if (!isConnected2 || !address || !rpcClient || !cluster)
1657
1657
  return [];
1658
1658
  throwIfAborted(signal);
1659
1659
  let result = await fetchAndEnrichTransactions(void 0, cluster, signal);
1660
1660
  return throwIfAborted(signal), result.transactions;
1661
1661
  },
1662
- [connected, address, rpcClient, cluster, fetchAndEnrichTransactions]
1662
+ [isConnected2, address, rpcClient, cluster, fetchAndEnrichTransactions]
1663
1663
  ), {
1664
1664
  data: initialTransactions,
1665
1665
  error,
@@ -1674,10 +1674,10 @@ function useTransactions(options = {}) {
1674
1674
  refetchOnMount,
1675
1675
  refetchIntervalMs: autoRefresh ? refreshInterval : false
1676
1676
  });
1677
- React2.useEffect(() => {
1677
+ React4.useEffect(() => {
1678
1678
  initialTransactions && (beforeSignatureRef.current = initialTransactions.length ? initialTransactions[initialTransactions.length - 1].signature : void 0, setHasMore(initialTransactions.length === limit), setPaginatedTransactions((prev) => prev.length ? [] : prev));
1679
1679
  }, [initialTransactions, limit]);
1680
- let loadMoreFn = React2.useCallback(async () => {
1680
+ let loadMoreFn = React4.useCallback(async () => {
1681
1681
  if (!(!hasMore || isPaginationLoading || !cluster)) {
1682
1682
  setIsPaginationLoading(true);
1683
1683
  try {
@@ -1689,13 +1689,13 @@ function useTransactions(options = {}) {
1689
1689
  setIsPaginationLoading(false);
1690
1690
  }
1691
1691
  }
1692
- }, [hasMore, isPaginationLoading, cluster, fetchAndEnrichTransactions]), refetch = React2.useCallback(
1692
+ }, [hasMore, isPaginationLoading, cluster, fetchAndEnrichTransactions]), refetch = React4.useCallback(
1693
1693
  async (opts) => {
1694
1694
  beforeSignatureRef.current = void 0, setPaginatedTransactions([]), setHasMore(true), await sharedRefetch(opts);
1695
1695
  },
1696
1696
  [sharedRefetch]
1697
- ), transactions = React2.useMemo(() => [...initialTransactions ?? [], ...paginatedTransactions], [initialTransactions, paginatedTransactions]), isLoading = isInitialLoading || isPaginationLoading, visibleError = updatedAt ? null : error;
1698
- return React2.useMemo(
1697
+ ), transactions = React4.useMemo(() => [...initialTransactions ?? [], ...paginatedTransactions], [initialTransactions, paginatedTransactions]), isLoading = isInitialLoading || isPaginationLoading, visibleError = updatedAt ? null : error;
1698
+ return React4.useMemo(
1699
1699
  () => ({
1700
1700
  transactions,
1701
1701
  isLoading,
@@ -1920,7 +1920,7 @@ function useTokens(options = {}) {
1920
1920
  // 5 minutes
1921
1921
  refetchOnMount = "stale",
1922
1922
  client: clientOverride
1923
- } = options, { address, connected } = useAccount(), { type: clusterType } = useCluster(), connectorConfig = useConnectorClient()?.getConfig(), imageProxy = connectorConfig?.imageProxy, coingeckoConfig = connectorConfig?.coingecko, selectFn = React2.useCallback(
1923
+ } = options, { account, isConnected: isConnected2 } = useWallet(), address = React4.useMemo(() => account ? String(account) : null, [account]), { type: clusterType } = useCluster(), connectorConfig = useConnectorClient()?.getConfig(), imageProxy = connectorConfig?.imageProxy, coingeckoConfig = connectorConfig?.coingecko, selectFn = React4.useCallback(
1924
1924
  (assets) => selectTokens(assets, address ?? ""),
1925
1925
  [address]
1926
1926
  ), {
@@ -1938,7 +1938,7 @@ function useTokens(options = {}) {
1938
1938
  refetchIntervalMs: autoRefresh ? refreshInterval : false,
1939
1939
  client: clientOverride,
1940
1940
  select: selectFn
1941
- }), lamports = selection?.lamports ?? 0n, tokenAccounts = selection?.tokenAccounts ?? [], walletAddress = selection?.address ?? "", baseTokens = React2.useMemo(() => {
1941
+ }), lamports = selection?.lamports ?? 0n, tokenAccounts = selection?.tokenAccounts ?? [], walletAddress = selection?.address ?? "", baseTokens = React4.useMemo(() => {
1942
1942
  let result = [];
1943
1943
  includeNativeSol && walletAddress && (includeZeroBalance || lamports > 0n) && result.push({
1944
1944
  mint: NATIVE_SOL_MINT,
@@ -1949,25 +1949,25 @@ function useTokens(options = {}) {
1949
1949
  isFrozen: false,
1950
1950
  owner: walletAddress
1951
1951
  });
1952
- for (let account of tokenAccounts)
1953
- !includeZeroBalance && account.amount === 0n || result.push({
1954
- mint: account.mint,
1955
- tokenAccount: account.pubkey,
1956
- amount: account.amount,
1957
- decimals: account.decimals,
1958
- formatted: formatBalance(account.amount, account.decimals),
1959
- isFrozen: account.isFrozen,
1960
- owner: account.owner,
1961
- programId: account.programId
1952
+ for (let account2 of tokenAccounts)
1953
+ !includeZeroBalance && account2.amount === 0n || result.push({
1954
+ mint: account2.mint,
1955
+ tokenAccount: account2.pubkey,
1956
+ amount: account2.amount,
1957
+ decimals: account2.decimals,
1958
+ formatted: formatBalance(account2.amount, account2.decimals),
1959
+ isFrozen: account2.isFrozen,
1960
+ owner: account2.owner,
1961
+ programId: account2.programId
1962
1962
  });
1963
1963
  return result;
1964
- }, [lamports, tokenAccounts, walletAddress, includeNativeSol, includeZeroBalance]), mints = React2.useMemo(() => {
1964
+ }, [lamports, tokenAccounts, walletAddress, includeNativeSol, includeZeroBalance]), mints = React4.useMemo(() => {
1965
1965
  let unique = /* @__PURE__ */ new Set();
1966
1966
  for (let token of baseTokens)
1967
1967
  unique.add(token.mint);
1968
1968
  return [...unique].sort();
1969
- }, [baseTokens]), mintsKey = React2.useMemo(() => mints.join(","), [mints]), [metadataVersion, setMetadataVersion] = React2.useState(0);
1970
- React2.useEffect(() => {
1969
+ }, [baseTokens]), mintsKey = React4.useMemo(() => mints.join(","), [mints]), [metadataVersion, setMetadataVersion] = React4.useState(0);
1970
+ React4.useEffect(() => {
1971
1971
  if (!fetchMetadata || !mintsKey) return;
1972
1972
  let isMounted = true;
1973
1973
  return (async () => {
@@ -1986,7 +1986,7 @@ function useTokens(options = {}) {
1986
1986
  isMounted = false;
1987
1987
  };
1988
1988
  }, [mintsKey, fetchMetadata, coingeckoConfig, clusterType]);
1989
- let tokens = React2.useMemo(() => fetchMetadata ? baseTokens.map((token) => {
1989
+ let tokens = React4.useMemo(() => fetchMetadata ? baseTokens.map((token) => {
1990
1990
  let meta = metadataCache.get(token.mint);
1991
1991
  if (!meta) return token;
1992
1992
  let usdPrice = (meta.coingeckoId ? priceCache.get(meta.coingeckoId) : void 0)?.price ?? meta.usdPrice;
@@ -1999,18 +1999,18 @@ function useTokens(options = {}) {
1999
1999
  formattedUsd: usdPrice ? formatUsd(token.amount, token.decimals, usdPrice) : void 0
2000
2000
  };
2001
2001
  }).sort(sortByValueDesc) : baseTokens.slice().sort(sortByValueDesc), [baseTokens, fetchMetadata, imageProxy, metadataVersion]), totalAccounts = tokenAccounts.length + (includeNativeSol ? 1 : 0);
2002
- React2.useEffect(() => (startCacheCleanup(), () => stopCacheCleanup()), []);
2003
- let wasConnectedRef = React2.useRef(connected);
2004
- React2.useEffect(() => {
2005
- wasConnectedRef.current && !connected && clearTokenCaches(), wasConnectedRef.current = connected;
2006
- }, [connected]);
2007
- let visibleError = updatedAt ? null : error, refetch = React2.useCallback(
2002
+ React4.useEffect(() => (startCacheCleanup(), () => stopCacheCleanup()), []);
2003
+ let wasConnectedRef = React4.useRef(isConnected2);
2004
+ React4.useEffect(() => {
2005
+ wasConnectedRef.current && !isConnected2 && clearTokenCaches(), wasConnectedRef.current = isConnected2;
2006
+ }, [isConnected2]);
2007
+ let visibleError = updatedAt ? null : error, refetch = React4.useCallback(
2008
2008
  async (opts) => {
2009
2009
  await sharedRefetch(opts);
2010
2010
  },
2011
2011
  [sharedRefetch]
2012
2012
  );
2013
- return React2.useMemo(
2013
+ return React4.useMemo(
2014
2014
  () => ({
2015
2015
  tokens,
2016
2016
  isLoading: isFetching,
@@ -2032,17 +2032,12 @@ function DisconnectElement({
2032
2032
  onDisconnect,
2033
2033
  render
2034
2034
  }) {
2035
- let { disconnect, connecting } = useConnector(), [disconnecting, setDisconnecting] = React2__default.default.useState(false), handleDisconnect = async () => {
2036
- setDisconnecting(true);
2037
- try {
2038
- await disconnect(), onDisconnect?.();
2039
- } finally {
2040
- setDisconnecting(false);
2041
- }
2035
+ let { isConnecting: isConnecting2 } = useWallet(), { disconnect, isDisconnecting } = useDisconnectWallet(), handleDisconnect = async () => {
2036
+ await disconnect(), onDisconnect?.();
2042
2037
  };
2043
2038
  if (render)
2044
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: render({ disconnect: handleDisconnect, disconnecting }) });
2045
- let isDisabled = connecting || disconnecting, content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2039
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: render({ disconnect: handleDisconnect, disconnecting: isDisconnecting }) });
2040
+ let isDisabled = isConnecting2 || isDisconnecting, content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2046
2041
  showIcon && (icon || showIcon && !icon && /* @__PURE__ */ jsxRuntime.jsxs(
2047
2042
  "svg",
2048
2043
  {
@@ -2074,7 +2069,7 @@ function DisconnectElement({
2074
2069
  disabled: isDisabled,
2075
2070
  "data-slot": "disconnect-element",
2076
2071
  "data-variant": "button",
2077
- "data-disconnecting": disconnecting,
2072
+ "data-disconnecting": isDisconnecting,
2078
2073
  children: content
2079
2074
  }
2080
2075
  ) : variant === "link" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -2086,7 +2081,7 @@ function DisconnectElement({
2086
2081
  disabled: isDisabled,
2087
2082
  "data-slot": "disconnect-element",
2088
2083
  "data-variant": "link",
2089
- "data-disconnecting": disconnecting,
2084
+ "data-disconnecting": isDisconnecting,
2090
2085
  children: content
2091
2086
  }
2092
2087
  ) : /* @__PURE__ */ jsxRuntime.jsx(
@@ -2099,7 +2094,7 @@ function DisconnectElement({
2099
2094
  disabled: isDisabled,
2100
2095
  "data-slot": "disconnect-element",
2101
2096
  "data-variant": "menuitem",
2102
- "data-disconnecting": disconnecting,
2097
+ "data-disconnecting": isDisconnecting,
2103
2098
  children: content
2104
2099
  }
2105
2100
  );
@@ -2114,8 +2109,16 @@ function AccountElement({
2114
2109
  variant = "compact",
2115
2110
  render
2116
2111
  }) {
2117
- let { address, formatted, copy, copied } = useAccount(), { name: walletName, icon: walletIcon } = useWalletInfo();
2118
- if (render)
2112
+ let { account, connectorId } = useWallet(), connectors = useWalletConnectors(), address = React4__default.default.useMemo(() => account ? String(account) : null, [account]), formatted = React4__default.default.useMemo(() => address ? chunkBZ2VBJCZ_js.formatAddress(address) : "", [address]), connector = React4__default.default.useMemo(() => connectorId ? connectors.find((c) => c.id === connectorId) ?? null : null, [connectors, connectorId]), walletName = connector?.name ?? null, walletIcon = connector?.icon ? connector.icon : null, [copied, setCopied] = React4__default.default.useState(false), copyTimeoutRef = React4__default.default.useRef(void 0), copy = React4__default.default.useCallback(async () => address ? (copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current), await chunkBZ2VBJCZ_js.copyAddressToClipboard(address, {
2113
+ onSuccess: () => {
2114
+ setCopied(true), copyTimeoutRef.current = setTimeout(() => setCopied(false), 2e3);
2115
+ }
2116
+ })) : {
2117
+ success: false
2118
+ }, [address]);
2119
+ if (React4__default.default.useEffect(() => () => {
2120
+ copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current);
2121
+ }, []), render)
2119
2122
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: render({ address, formatted, walletName, walletIcon, copy, copied }) });
2120
2123
  if (!address) return null;
2121
2124
  let displayAddress = showFullAddress ? address : formatted, handleCopy = async (e) => {
@@ -2276,7 +2279,7 @@ function ClusterElement({
2276
2279
  labels = {},
2277
2280
  render
2278
2281
  }) {
2279
- let { cluster, clusters, setCluster, isMainnet, isDevnet, isTestnet, isLocal } = useCluster(), [isOpen, setIsOpen] = React2__default.default.useState(false);
2282
+ let { cluster, clusters, setCluster, isMainnet, isDevnet, isTestnet, isLocal } = useCluster(), [isOpen, setIsOpen] = React4__default.default.useState(false);
2280
2283
  if (render)
2281
2284
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: render({ cluster, clusters, setCluster, isMainnet, isDevnet, isTestnet, isLocal }) });
2282
2285
  if (!cluster) return null;
@@ -2487,19 +2490,28 @@ function WalletListElement({
2487
2490
  render,
2488
2491
  renderWallet
2489
2492
  }) {
2490
- let { wallets, connecting } = useWalletInfo(), { select } = useConnector(), installedWallets = wallets.filter((w) => w.installed), displayWallets = installedOnly ? installedWallets : wallets, handleSelect = async (walletName) => {
2491
- await select(walletName), onSelect?.(walletName);
2492
- }, handleConnectById = async (connectorId) => {
2493
- let wallet = wallets.find((w) => w.connectorId === connectorId);
2493
+ let connectors = useWalletConnectors(), { isConnecting: isConnectingGlobal } = useWallet(), { connect, isConnecting: isConnectingLocal } = useConnectWallet(), connecting = isConnectingGlobal || isConnectingLocal, wallets = React4__default.default.useMemo(
2494
+ () => connectors.map((c) => ({
2495
+ name: c.name,
2496
+ connectorId: c.id,
2497
+ icon: c.icon || void 0,
2498
+ installed: c.ready,
2499
+ connectable: c.ready
2500
+ })),
2501
+ [connectors]
2502
+ ), installedWallets = wallets.filter((w) => w.installed), displayWallets = installedOnly ? installedWallets : wallets, handleSelect = async (walletName) => {
2503
+ let wallet = wallets.find((w) => w.name === walletName);
2494
2504
  if (!wallet) {
2495
- let availableConnectorIds = wallets.map((w) => w.connectorId);
2505
+ let availableWalletNames = wallets.map((w) => w.name);
2496
2506
  console.warn(
2497
- `[WalletListElement] Wallet not found for connectorId: ${connectorId}. Available connectorIds (${availableConnectorIds.length}):`,
2498
- availableConnectorIds
2507
+ `[WalletListElement] Wallet not found for walletName: ${walletName}. Available wallets (${availableWalletNames.length}):`,
2508
+ availableWalletNames
2499
2509
  );
2500
2510
  return;
2501
2511
  }
2502
- await select(wallet.name), onConnect?.(connectorId);
2512
+ await connect(wallet.connectorId), onSelect?.(walletName), onConnect?.(wallet.connectorId);
2513
+ }, handleConnectById = async (connectorId) => {
2514
+ await connect(connectorId), onConnect?.(connectorId);
2503
2515
  };
2504
2516
  if (render)
2505
2517
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: render({
@@ -2568,7 +2580,7 @@ function WalletListElement({
2568
2580
  "data-variant": "grid",
2569
2581
  children: displayWallets.map((wallet) => {
2570
2582
  let handleWalletConnect = () => handleConnectById(wallet.connectorId);
2571
- return renderWallet ? /* @__PURE__ */ jsxRuntime.jsx(React2__default.default.Fragment, { children: renderWallet({
2583
+ return renderWallet ? /* @__PURE__ */ jsxRuntime.jsx(React4__default.default.Fragment, { children: renderWallet({
2572
2584
  wallet,
2573
2585
  select: handleWalletConnect,
2574
2586
  connect: handleWalletConnect,
@@ -2579,7 +2591,7 @@ function WalletListElement({
2579
2591
  type: "button",
2580
2592
  className: "ck-wallet-list-item ck-wallet-list-item--grid",
2581
2593
  onClick: handleWalletConnect,
2582
- disabled: connecting || !wallet.installed && installedOnly,
2594
+ disabled: connecting || !wallet.connectable,
2583
2595
  "data-slot": "wallet-list-item",
2584
2596
  "data-wallet": wallet.name,
2585
2597
  "data-connector-id": wallet.connectorId,
@@ -2602,7 +2614,7 @@ function WalletListElement({
2602
2614
  "data-variant": "compact",
2603
2615
  children: displayWallets.map((wallet) => {
2604
2616
  let handleWalletConnect = () => handleConnectById(wallet.connectorId);
2605
- return renderWallet ? /* @__PURE__ */ jsxRuntime.jsx(React2__default.default.Fragment, { children: renderWallet({
2617
+ return renderWallet ? /* @__PURE__ */ jsxRuntime.jsx(React4__default.default.Fragment, { children: renderWallet({
2606
2618
  wallet,
2607
2619
  select: handleWalletConnect,
2608
2620
  connect: handleWalletConnect,
@@ -2613,7 +2625,7 @@ function WalletListElement({
2613
2625
  type: "button",
2614
2626
  className: "ck-wallet-list-item ck-wallet-list-item--compact",
2615
2627
  onClick: handleWalletConnect,
2616
- disabled: connecting || !wallet.installed && installedOnly,
2628
+ disabled: connecting || !wallet.connectable,
2617
2629
  "data-slot": "wallet-list-item",
2618
2630
  "data-wallet": wallet.name,
2619
2631
  "data-connector-id": wallet.connectorId,
@@ -2635,7 +2647,7 @@ function WalletListElement({
2635
2647
  "data-variant": "list",
2636
2648
  children: displayWallets.map((wallet) => {
2637
2649
  let handleWalletConnect = () => handleConnectById(wallet.connectorId);
2638
- return renderWallet ? /* @__PURE__ */ jsxRuntime.jsx(React2__default.default.Fragment, { children: renderWallet({
2650
+ return renderWallet ? /* @__PURE__ */ jsxRuntime.jsx(React4__default.default.Fragment, { children: renderWallet({
2639
2651
  wallet,
2640
2652
  select: handleWalletConnect,
2641
2653
  connect: handleWalletConnect,
@@ -2646,7 +2658,7 @@ function WalletListElement({
2646
2658
  type: "button",
2647
2659
  className: "ck-wallet-list-item ck-wallet-list-item--list",
2648
2660
  onClick: handleWalletConnect,
2649
- disabled: connecting || !wallet.installed && installedOnly,
2661
+ disabled: connecting || !wallet.connectable,
2650
2662
  "data-slot": "wallet-list-item",
2651
2663
  "data-wallet": wallet.name,
2652
2664
  "data-connector-id": wallet.connectorId,
@@ -2722,7 +2734,7 @@ function injectStyles() {
2722
2734
  }
2723
2735
  }
2724
2736
  function SkeletonShine() {
2725
- return React2__default.default.useEffect(() => {
2737
+ return React4__default.default.useEffect(() => {
2726
2738
  injectStyles();
2727
2739
  }, []), /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ck-skeleton-shine", "data-slot": "skeleton-shine" });
2728
2740
  }
@@ -3296,5 +3308,5 @@ exports.useWalletConnectUri = useWalletConnectUri;
3296
3308
  exports.useWalletConnectors = useWalletConnectors;
3297
3309
  exports.useWalletInfo = useWalletInfo;
3298
3310
  exports.withErrorBoundary = withErrorBoundary;
3299
- //# sourceMappingURL=chunk-EM4KNOKG.js.map
3300
- //# sourceMappingURL=chunk-EM4KNOKG.js.map
3311
+ //# sourceMappingURL=chunk-4Z2F6ERB.js.map
3312
+ //# sourceMappingURL=chunk-4Z2F6ERB.js.map