@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.
- package/README.md +11 -11
- package/dist/{chunk-EM4KNOKG.js → chunk-4Z2F6ERB.js} +160 -148
- package/dist/chunk-4Z2F6ERB.js.map +1 -0
- package/dist/{chunk-RTXUS5KG.mjs → chunk-MDR4Y37Z.mjs} +81 -69
- package/dist/chunk-MDR4Y37Z.mjs.map +1 -0
- package/dist/index.js +41 -41
- package/dist/index.mjs +1 -1
- package/dist/react.d.mts +15 -3
- package/dist/react.d.ts +15 -3
- package/dist/react.js +41 -41
- package/dist/react.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-EM4KNOKG.js.map +0 -1
- package/dist/chunk-RTXUS5KG.mjs.map +0 -1
|
@@ -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
|
|
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
|
|
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
|
|
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] =
|
|
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 } =
|
|
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 =
|
|
288
|
+
var WalletConnectContext = React4.createContext(null);
|
|
289
289
|
function WalletConnectProvider({ children }) {
|
|
290
|
-
let [uri, setUriState] =
|
|
291
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
-
}, []),
|
|
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 =
|
|
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 =
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
), methods =
|
|
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 =
|
|
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
|
|
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
|
|
445
|
+
return React4.useContext(ConnectorContext);
|
|
446
446
|
}
|
|
447
447
|
function AppProviderInner({ children, connectorConfig, mobile, providers = [] }) {
|
|
448
|
-
let { setUri, clearUri } = useWalletConnectUri(), enhancedConfig =
|
|
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 =
|
|
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 =
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
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
|
|
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 =
|
|
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
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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:
|
|
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 =
|
|
563
|
+
let setCluster = React4.useMemo(
|
|
564
564
|
() => async (id) => {
|
|
565
565
|
await client.setCluster(id);
|
|
566
566
|
},
|
|
567
567
|
[client]
|
|
568
568
|
);
|
|
569
|
-
return
|
|
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] =
|
|
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 =
|
|
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
|
|
597
|
+
return React4__default.default.useEffect(() => () => {
|
|
598
598
|
copyTimeoutRef.current && clearTimeout(copyTimeoutRef.current);
|
|
599
|
-
}, []),
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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:
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
867
|
+
} = options, queryFnRef = React4.useRef(queryFn);
|
|
868
868
|
queryFnRef.current = queryFn;
|
|
869
|
-
let stableQueryFn =
|
|
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 =
|
|
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 =
|
|
883
|
-
|
|
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]),
|
|
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 =
|
|
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 =
|
|
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
|
|
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, {
|
|
1001
|
-
if (!enabled || !
|
|
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,
|
|
1004
|
+
}, [enabled, isConnected2, address, rpcClient]), queryFn = React4.useCallback(
|
|
1005
1005
|
async (signal) => {
|
|
1006
|
-
if (!
|
|
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
|
|
1023
|
-
let parsed = parseTokenAccount(
|
|
1022
|
+
for (let account2 of tokenAccountsResult.value) {
|
|
1023
|
+
let parsed = parseTokenAccount(account2, "token");
|
|
1024
1024
|
parsed && tokenAccounts.push(parsed);
|
|
1025
1025
|
}
|
|
1026
|
-
for (let
|
|
1027
|
-
let parsed = parseTokenAccount(
|
|
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
|
-
[
|
|
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
|
|
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 =
|
|
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
|
|
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, {
|
|
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 =
|
|
1545
|
-
if (!enabled || !
|
|
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,
|
|
1549
|
-
|
|
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 =
|
|
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 =
|
|
1654
|
+
), queryFn = React4.useCallback(
|
|
1655
1655
|
async (signal) => {
|
|
1656
|
-
if (!
|
|
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
|
-
[
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
1698
|
-
return
|
|
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, {
|
|
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 =
|
|
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
|
|
1953
|
-
!includeZeroBalance &&
|
|
1954
|
-
mint:
|
|
1955
|
-
tokenAccount:
|
|
1956
|
-
amount:
|
|
1957
|
-
decimals:
|
|
1958
|
-
formatted: formatBalance(
|
|
1959
|
-
isFrozen:
|
|
1960
|
-
owner:
|
|
1961
|
-
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 =
|
|
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 =
|
|
1970
|
-
|
|
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 =
|
|
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
|
-
|
|
2003
|
-
let wasConnectedRef =
|
|
2004
|
-
|
|
2005
|
-
wasConnectedRef.current && !
|
|
2006
|
-
}, [
|
|
2007
|
-
let visibleError = updatedAt ? null : error, refetch =
|
|
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
|
|
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 {
|
|
2036
|
-
|
|
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 =
|
|
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":
|
|
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":
|
|
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":
|
|
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,
|
|
2118
|
-
|
|
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] =
|
|
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
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
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
|
|
2505
|
+
let availableWalletNames = wallets.map((w) => w.name);
|
|
2496
2506
|
console.warn(
|
|
2497
|
-
`[WalletListElement] Wallet not found for
|
|
2498
|
-
|
|
2507
|
+
`[WalletListElement] Wallet not found for walletName: ${walletName}. Available wallets (${availableWalletNames.length}):`,
|
|
2508
|
+
availableWalletNames
|
|
2499
2509
|
);
|
|
2500
2510
|
return;
|
|
2501
2511
|
}
|
|
2502
|
-
await
|
|
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(
|
|
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.
|
|
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(
|
|
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.
|
|
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(
|
|
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.
|
|
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
|
|
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-
|
|
3300
|
-
//# sourceMappingURL=chunk-
|
|
3311
|
+
//# sourceMappingURL=chunk-4Z2F6ERB.js.map
|
|
3312
|
+
//# sourceMappingURL=chunk-4Z2F6ERB.js.map
|