@mysten/dapp-kit 0.10.2 → 0.11.0
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/CHANGELOG.md +25 -0
- package/README.md +3 -4
- package/dist/cjs/components/AccountDropdownMenu.css +15 -11
- package/dist/cjs/components/AccountDropdownMenu.css.css +15 -11
- package/dist/cjs/components/AccountDropdownMenu.css.css.map +3 -3
- package/dist/cjs/components/AccountDropdownMenu.css.d.ts +1 -0
- package/dist/cjs/components/AccountDropdownMenu.css.js +6 -4
- package/dist/cjs/components/AccountDropdownMenu.css.js.map +2 -2
- package/dist/cjs/components/AccountDropdownMenu.css.map +3 -3
- package/dist/cjs/components/AccountDropdownMenu.js +6 -5
- package/dist/cjs/components/AccountDropdownMenu.js.map +2 -2
- package/dist/cjs/components/ConnectButton.css +15 -11
- package/dist/cjs/components/ConnectButton.css.map +3 -3
- package/dist/cjs/components/ConnectButton.js +16 -9
- package/dist/cjs/components/ConnectButton.js.map +3 -3
- package/dist/cjs/components/WalletProvider.d.ts +5 -5
- package/dist/cjs/components/WalletProvider.js +54 -32
- package/dist/cjs/components/WalletProvider.js.map +4 -4
- package/dist/cjs/components/connect-modal/ConnectModal.js +10 -4
- package/dist/cjs/components/connect-modal/ConnectModal.js.map +3 -3
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +8 -2
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +3 -3
- package/dist/cjs/constants/walletDefaults.d.ts +5 -0
- package/dist/cjs/constants/walletDefaults.js +53 -0
- package/dist/cjs/constants/walletDefaults.js.map +7 -0
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +9 -1
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +3 -3
- package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +1 -1
- package/dist/cjs/index.css +15 -11
- package/dist/cjs/index.css.map +3 -3
- package/dist/cjs/index.js +64 -41
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/utils/stateStorage.d.ts +2 -0
- package/dist/cjs/utils/stateStorage.js +40 -0
- package/dist/cjs/utils/stateStorage.js.map +7 -0
- package/dist/cjs/utils/walletUtils.d.ts +1 -0
- package/dist/cjs/utils/walletUtils.js +5 -1
- package/dist/cjs/utils/walletUtils.js.map +2 -2
- package/dist/cjs/walletStore.d.ts +2 -2
- package/dist/cjs/walletStore.js +9 -1
- package/dist/cjs/walletStore.js.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.css +15 -11
- package/dist/esm/components/AccountDropdownMenu.css.css +15 -11
- package/dist/esm/components/AccountDropdownMenu.css.css.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.css.d.ts +1 -0
- package/dist/esm/components/AccountDropdownMenu.css.js +6 -4
- package/dist/esm/components/AccountDropdownMenu.css.js.map +2 -2
- package/dist/esm/components/AccountDropdownMenu.css.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.js +6 -5
- package/dist/esm/components/AccountDropdownMenu.js.map +2 -2
- package/dist/esm/components/ConnectButton.css +15 -11
- package/dist/esm/components/ConnectButton.css.map +3 -3
- package/dist/esm/components/ConnectButton.js +16 -9
- package/dist/esm/components/ConnectButton.js.map +3 -3
- package/dist/esm/components/WalletProvider.d.ts +5 -5
- package/dist/esm/components/WalletProvider.js +52 -30
- package/dist/esm/components/WalletProvider.js.map +4 -4
- package/dist/esm/components/connect-modal/ConnectModal.js +10 -4
- package/dist/esm/components/connect-modal/ConnectModal.js.map +3 -3
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js +8 -2
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +3 -3
- package/dist/esm/constants/walletDefaults.d.ts +5 -0
- package/dist/esm/constants/walletDefaults.js +30 -0
- package/dist/esm/constants/walletDefaults.js.map +7 -0
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js +9 -1
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +3 -3
- package/dist/esm/hooks/wallet/useWalletsChanged.js.map +1 -1
- package/dist/esm/index.css +15 -11
- package/dist/esm/index.css.map +3 -3
- package/dist/esm/index.js +62 -39
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/utils/stateStorage.d.ts +2 -0
- package/dist/esm/utils/stateStorage.js +19 -0
- package/dist/esm/utils/stateStorage.js.map +7 -0
- package/dist/esm/utils/walletUtils.d.ts +1 -0
- package/dist/esm/utils/walletUtils.js +5 -1
- package/dist/esm/utils/walletUtils.js.map +2 -2
- package/dist/esm/walletStore.js +9 -1
- package/dist/esm/walletStore.js.map +3 -3
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -5
- package/src/components/AccountDropdownMenu.css.ts +4 -0
- package/src/components/AccountDropdownMenu.tsx +1 -1
- package/src/components/WalletProvider.tsx +14 -13
- package/src/components/connect-modal/ConnectModal.tsx +6 -2
- package/src/components/connect-modal/wallet-list/WalletList.tsx +3 -2
- package/src/constants/walletDefaults.ts +17 -0
- package/src/hooks/wallet/useAutoConnectWallet.ts +4 -1
- package/src/utils/stateStorage.ts +19 -0
- package/src/utils/walletUtils.ts +4 -0
- package/src/walletStore.ts +4 -2
package/dist/esm/index.js
CHANGED
|
@@ -136,6 +136,25 @@ function getSelectedAccount(connectedAccounts, accountAddress) {
|
|
|
136
136
|
return connectedAccounts[0];
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
// src/utils/walletUtils.ts
|
|
140
|
+
import { getWallets, isWalletWithRequiredFeatureSet } from "@mysten/wallet-standard";
|
|
141
|
+
function getRegisteredWallets(preferredWallets, requiredFeatures) {
|
|
142
|
+
const walletsApi = getWallets();
|
|
143
|
+
const wallets = walletsApi.get();
|
|
144
|
+
const suiWallets = wallets.filter(
|
|
145
|
+
(wallet) => isWalletWithRequiredFeatureSet(wallet, requiredFeatures)
|
|
146
|
+
);
|
|
147
|
+
return [
|
|
148
|
+
// Preferred wallets, in order:
|
|
149
|
+
...preferredWallets.map((name) => suiWallets.find((wallet) => wallet.name === name)).filter(Boolean),
|
|
150
|
+
// Wallets in default order:
|
|
151
|
+
...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name))
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function getWalletUniqueIdentifier(wallet) {
|
|
155
|
+
return wallet?.id ?? wallet?.name;
|
|
156
|
+
}
|
|
157
|
+
|
|
139
158
|
// src/components/icons/BackIcon.tsx
|
|
140
159
|
import { jsx } from "react/jsx-runtime";
|
|
141
160
|
function BackIcon(props) {
|
|
@@ -450,10 +469,10 @@ function WalletList({ selectedWalletName, onPlaceholderClick, onSelect }) {
|
|
|
450
469
|
{
|
|
451
470
|
name: wallet.name,
|
|
452
471
|
icon: wallet.icon,
|
|
453
|
-
isSelected: wallet
|
|
472
|
+
isSelected: getWalletUniqueIdentifier(wallet) === selectedWalletName,
|
|
454
473
|
onClick: () => onSelect(wallet)
|
|
455
474
|
},
|
|
456
|
-
wallet
|
|
475
|
+
getWalletUniqueIdentifier(wallet)
|
|
457
476
|
)) : /* @__PURE__ */ jsx14(
|
|
458
477
|
WalletListItem,
|
|
459
478
|
{
|
|
@@ -528,10 +547,10 @@ function ConnectModal({ trigger, open, defaultOpen, onOpenChange }) {
|
|
|
528
547
|
/* @__PURE__ */ jsx15(
|
|
529
548
|
WalletList,
|
|
530
549
|
{
|
|
531
|
-
selectedWalletName: selectedWallet
|
|
550
|
+
selectedWalletName: getWalletUniqueIdentifier(selectedWallet),
|
|
532
551
|
onPlaceholderClick: () => setCurrentView("getting-started"),
|
|
533
552
|
onSelect: (wallet) => {
|
|
534
|
-
if (selectedWallet
|
|
553
|
+
if (getWalletUniqueIdentifier(selectedWallet) !== getWalletUniqueIdentifier(wallet)) {
|
|
535
554
|
setSelectedWallet(wallet);
|
|
536
555
|
connectWallet(wallet);
|
|
537
556
|
}
|
|
@@ -779,10 +798,11 @@ function useSwitchAccount({
|
|
|
779
798
|
|
|
780
799
|
// src/components/AccountDropdownMenu.css.ts
|
|
781
800
|
var connectedAccount = "AccountDropdownMenu_connectedAccount__div2ql0";
|
|
782
|
-
var
|
|
783
|
-
var
|
|
784
|
-
var
|
|
785
|
-
var
|
|
801
|
+
var menuContainer = "AccountDropdownMenu_menuContainer__div2ql1";
|
|
802
|
+
var menuContent = "AccountDropdownMenu_menuContent__div2ql2";
|
|
803
|
+
var menuItem = "AccountDropdownMenu_menuItem__div2ql3";
|
|
804
|
+
var separator = "AccountDropdownMenu_separator__div2ql5";
|
|
805
|
+
var switchAccountMenuItem = "AccountDropdownMenu_switchAccountMenuItem__div2ql4";
|
|
786
806
|
|
|
787
807
|
// src/components/icons/CheckIcon.tsx
|
|
788
808
|
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
@@ -824,7 +844,7 @@ function AccountDropdownMenu({ currentAccount }) {
|
|
|
824
844
|
/* @__PURE__ */ jsx19(Text, { mono: true, weight: "bold", children: currentAccount.label ?? domain ?? formatAddress(currentAccount.address) }),
|
|
825
845
|
/* @__PURE__ */ jsx19(ChevronIcon, {})
|
|
826
846
|
] }) }) }),
|
|
827
|
-
/* @__PURE__ */ jsx19(DropdownMenu.Portal, { children: /* @__PURE__ */ jsx19(StyleMarker, { children: /* @__PURE__ */ jsxs8(DropdownMenu.Content, { className: menuContent, children: [
|
|
847
|
+
/* @__PURE__ */ jsx19(DropdownMenu.Portal, { children: /* @__PURE__ */ jsx19(StyleMarker, { className: menuContainer, children: /* @__PURE__ */ jsxs8(DropdownMenu.Content, { className: menuContent, children: [
|
|
828
848
|
accounts.map((account) => /* @__PURE__ */ jsx19(
|
|
829
849
|
AccountDropdownMenuItem,
|
|
830
850
|
{
|
|
@@ -882,6 +902,30 @@ function ConnectButton({
|
|
|
882
902
|
// src/components/WalletProvider.tsx
|
|
883
903
|
import { useRef } from "react";
|
|
884
904
|
|
|
905
|
+
// src/utils/stateStorage.ts
|
|
906
|
+
function createInMemoryStore() {
|
|
907
|
+
const store = /* @__PURE__ */ new Map();
|
|
908
|
+
return {
|
|
909
|
+
getItem(key) {
|
|
910
|
+
return store.get(key);
|
|
911
|
+
},
|
|
912
|
+
setItem(key, value) {
|
|
913
|
+
store.set(key, value);
|
|
914
|
+
},
|
|
915
|
+
removeItem(key) {
|
|
916
|
+
store.delete(key);
|
|
917
|
+
}
|
|
918
|
+
};
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
// src/constants/walletDefaults.ts
|
|
922
|
+
var SUI_WALLET_NAME = "Sui Wallet";
|
|
923
|
+
var DEFAULT_STORAGE = typeof window !== "undefined" && window.localStorage ? localStorage : createInMemoryStore();
|
|
924
|
+
var DEFAULT_STORAGE_KEY = "sui-dapp-kit:wallet-connection-info";
|
|
925
|
+
var DEFAULT_REQUIRED_FEATURES = [
|
|
926
|
+
"sui:signTransactionBlock"
|
|
927
|
+
];
|
|
928
|
+
|
|
885
929
|
// src/hooks/wallet/useAutoConnectWallet.ts
|
|
886
930
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
887
931
|
import { useLayoutEffect, useState as useState3 } from "react";
|
|
@@ -915,7 +959,9 @@ function useAutoConnectWallet() {
|
|
|
915
959
|
if (!lastConnectedWalletName || !lastConnectedAccountAddress || isConnected) {
|
|
916
960
|
return "attempted";
|
|
917
961
|
}
|
|
918
|
-
const wallet = wallets.find(
|
|
962
|
+
const wallet = wallets.find(
|
|
963
|
+
(wallet2) => getWalletUniqueIdentifier(wallet2) === lastConnectedWalletName
|
|
964
|
+
);
|
|
919
965
|
if (wallet) {
|
|
920
966
|
await connectWallet({
|
|
921
967
|
wallet,
|
|
@@ -955,7 +1001,7 @@ function useAutoConnectWallet() {
|
|
|
955
1001
|
|
|
956
1002
|
// src/hooks/wallet/useUnsafeBurnerWallet.ts
|
|
957
1003
|
import { Ed25519Keypair } from "@mysten/sui.js/keypairs/ed25519";
|
|
958
|
-
import { getWallets, ReadonlyWalletAccount, SUI_CHAINS } from "@mysten/wallet-standard";
|
|
1004
|
+
import { getWallets as getWallets2, ReadonlyWalletAccount, SUI_CHAINS } from "@mysten/wallet-standard";
|
|
959
1005
|
import { useEffect } from "react";
|
|
960
1006
|
var WALLET_NAME = "Unsafe Burner Wallet";
|
|
961
1007
|
function useUnsafeBurnerWallet(enabled) {
|
|
@@ -970,7 +1016,7 @@ function useUnsafeBurnerWallet(enabled) {
|
|
|
970
1016
|
}
|
|
971
1017
|
function registerUnsafeBurnerWallet(suiClient) {
|
|
972
1018
|
var _on, _connect, _signPersonalMessage, _signTransactionBlock, _signAndExecuteTransactionBlock;
|
|
973
|
-
const walletsApi =
|
|
1019
|
+
const walletsApi = getWallets2();
|
|
974
1020
|
const registeredWallets = walletsApi.get();
|
|
975
1021
|
if (registeredWallets.find((wallet) => wallet.name === WALLET_NAME)) {
|
|
976
1022
|
console.warn(
|
|
@@ -1090,24 +1136,6 @@ function useWalletPropertiesChanged() {
|
|
|
1090
1136
|
// src/hooks/wallet/useWalletsChanged.ts
|
|
1091
1137
|
import { getWallets as getWallets3 } from "@mysten/wallet-standard";
|
|
1092
1138
|
import { useEffect as useEffect3 } from "react";
|
|
1093
|
-
|
|
1094
|
-
// src/utils/walletUtils.ts
|
|
1095
|
-
import { getWallets as getWallets2, isWalletWithRequiredFeatureSet } from "@mysten/wallet-standard";
|
|
1096
|
-
function getRegisteredWallets(preferredWallets, requiredFeatures) {
|
|
1097
|
-
const walletsApi = getWallets2();
|
|
1098
|
-
const wallets = walletsApi.get();
|
|
1099
|
-
const suiWallets = wallets.filter(
|
|
1100
|
-
(wallet) => isWalletWithRequiredFeatureSet(wallet, requiredFeatures)
|
|
1101
|
-
);
|
|
1102
|
-
return [
|
|
1103
|
-
// Preferred wallets, in order:
|
|
1104
|
-
...preferredWallets.map((name) => suiWallets.find((wallet) => wallet.name === name)).filter(Boolean),
|
|
1105
|
-
// Wallets in default order:
|
|
1106
|
-
...suiWallets.filter((wallet) => !preferredWallets.includes(wallet.name))
|
|
1107
|
-
];
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
// src/hooks/wallet/useWalletsChanged.ts
|
|
1111
1139
|
function useWalletsChanged(preferredWallets, requiredFeatures) {
|
|
1112
1140
|
const setWalletRegistered = useWalletStore((state) => state.setWalletRegistered);
|
|
1113
1141
|
const setWalletUnregistered = useWalletStore((state) => state.setWalletUnregistered);
|
|
@@ -1218,7 +1246,7 @@ function createWalletStore({
|
|
|
1218
1246
|
accounts: connectedAccounts,
|
|
1219
1247
|
currentWallet: wallet,
|
|
1220
1248
|
currentAccount: selectedAccount,
|
|
1221
|
-
lastConnectedWalletName: wallet
|
|
1249
|
+
lastConnectedWalletName: getWalletUniqueIdentifier(wallet),
|
|
1222
1250
|
lastConnectedAccountAddress: selectedAccount?.address,
|
|
1223
1251
|
connectionStatus: "connected"
|
|
1224
1252
|
}));
|
|
@@ -1373,15 +1401,10 @@ function cssStringFromTheme(theme) {
|
|
|
1373
1401
|
|
|
1374
1402
|
// src/components/WalletProvider.tsx
|
|
1375
1403
|
import { jsx as jsx22, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1376
|
-
var SUI_WALLET_NAME = "Sui Wallet";
|
|
1377
|
-
var DEFAULT_STORAGE_KEY = "sui-dapp-kit:wallet-connection-info";
|
|
1378
|
-
var DEFAULT_REQUIRED_FEATURES = [
|
|
1379
|
-
"sui:signTransactionBlock"
|
|
1380
|
-
];
|
|
1381
1404
|
function WalletProvider({
|
|
1382
1405
|
preferredWallets = [SUI_WALLET_NAME],
|
|
1383
1406
|
requiredFeatures = DEFAULT_REQUIRED_FEATURES,
|
|
1384
|
-
storage =
|
|
1407
|
+
storage = DEFAULT_STORAGE,
|
|
1385
1408
|
storageKey = DEFAULT_STORAGE_KEY,
|
|
1386
1409
|
enableUnsafeBurner = false,
|
|
1387
1410
|
autoConnect = false,
|
|
@@ -1392,8 +1415,8 @@ function WalletProvider({
|
|
|
1392
1415
|
createWalletStore({
|
|
1393
1416
|
autoConnectEnabled: autoConnect,
|
|
1394
1417
|
wallets: getRegisteredWallets(preferredWallets, requiredFeatures),
|
|
1395
|
-
|
|
1396
|
-
|
|
1418
|
+
storage: storage || createInMemoryStore(),
|
|
1419
|
+
storageKey
|
|
1397
1420
|
})
|
|
1398
1421
|
);
|
|
1399
1422
|
return /* @__PURE__ */ jsx22(WalletContext.Provider, { value: storeRef.current, children: /* @__PURE__ */ jsxs9(
|