@aptos-labs/wallet-adapter-react 3.2.0 → 3.3.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 CHANGED
@@ -66,14 +66,16 @@ Import the `AptosWalletAdapterProvider`.
66
66
  import { AptosWalletAdapterProvider } from "@aptos-labs/wallet-adapter-react";
67
67
  ```
68
68
 
69
- Wrap your app with the Provider, pass it the `plugins (wallets)` you want to have on your app as an array and a `autoConnect` option (set to false by default)
69
+ Wrap your app with the Provider, pass it the relevant props.
70
70
 
71
71
  ```js
72
- const wallets = [new AptosWallet()];
72
+ const wallets = [new AptosLegacyStandardWallet()];
73
73
 
74
74
  <AptosWalletAdapterProvider
75
75
  plugins={wallets}
76
76
  autoConnect={true}
77
+ optInWallets={["Petra"]}
78
+ dappConfig={{ netwrok: network.MAINNET }}
77
79
  onError={(error) => {
78
80
  console.log("error", error);
79
81
  }}
@@ -82,6 +84,14 @@ const wallets = [new AptosWallet()];
82
84
  </AptosWalletAdapterProvider>;
83
85
  ```
84
86
 
87
+ #### Available Provider Props
88
+
89
+ - `plugins` - any legacy standard wallet, i.e a wallet that is not AIP-62 standard compatible, should be installed and passed in this array. [Check here](../../README.md#supported-wallet-packages) for a list of AIP-62 and legacy standard wallets.
90
+ - `autoConnect` - a prop indicates whether the dapp should auto connect with a previous connected wallet.
91
+ - `optInWallets` - the adapter detects and adds AIP-62 standard wallets by default, sometimes you might want to opt-in with specific wallets. This props lets you define the AIP-62 standard wallets you want to support in your dapp.
92
+ - `dappConfig` - the adapter comes built-in with AIP-62 standard SDK wallets and it needs to know what configuration your dapp is in to render the current instance.
93
+ - `onError` - a callback function to fire when the adapter throws an error
94
+
85
95
  #### Use Wallet
86
96
 
87
97
  On any page you want to use the wallet props, import `useWallet` from `@aptos-labs/wallet-adapter-react`
@@ -112,14 +122,19 @@ const {
112
122
  ### Use a UI package (recommended)
113
123
 
114
124
  As part of the wallet adapter repo we provide a wallet connect UI package that provides a wallet connect button and a wallet select modal.
115
- You can find it [here](../wallet-adapter-ant-design/) with instructions on how to use it.
125
+
126
+ The available UI Packages are
127
+
128
+ - [shadcn/ui](../wallet-adapter-react/src/WalletItem.tsx)
129
+ - [Ant Design](<(../wallet-adapter-ant-design/)>)
130
+ - [MUI](../wallet-adapter-mui-design/)
116
131
 
117
132
  #### Examples
118
133
 
119
134
  ##### Initialize Aptos
120
135
 
121
136
  ```js
122
- const aptosConfig = new AptosConfig({ network: Network.TESTNET });
137
+ const aptosConfig = new AptosConfig({ network: Network.MAINNET });
123
138
  const aptos = new Aptos(aptosConfig);
124
139
  ```
125
140
 
@@ -1,10 +1,13 @@
1
1
  import { FC, ReactNode } from "react";
2
- import type { Wallet, AvailableWallets } from "@aptos-labs/wallet-adapter-core";
2
+ import type { Wallet, Network, AvailableWallets } from "@aptos-labs/wallet-adapter-core";
3
3
  export interface AptosWalletProviderProps {
4
4
  children: ReactNode;
5
5
  plugins?: ReadonlyArray<Wallet>;
6
6
  optInWallets?: ReadonlyArray<AvailableWallets>;
7
7
  autoConnect?: boolean;
8
+ dappConfig?: {
9
+ network: Network;
10
+ };
8
11
  onError?: (error: any) => void;
9
12
  }
10
13
  /**
@@ -13,6 +16,7 @@ export interface AptosWalletProviderProps {
13
16
  * @param plugins Non AIP-62 supported wallet plugins array
14
17
  * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets
15
18
  * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet
19
+ * @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations
16
20
  * @param onError A callback function to execute when there is an error in the adapter
17
21
  *
18
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../src/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EACF,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAIV,MAAM,EAaN,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAcD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,wBAAwB,CA0PnE,CAAC"}
1
+ {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../src/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EACF,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAIV,MAAM,EAWN,OAAO,EAEP,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAcD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,wBAAwB,CA2PnE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,4 @@ export * from "@aptos-labs/wallet-adapter-core";
2
2
  export * from "./WalletItem";
3
3
  export * from "./WalletProvider";
4
4
  export * from "./useWallet";
5
- export * from "./utils";
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -24,11 +24,6 @@ __export(src_exports, {
24
24
  AptosWalletAdapterProvider: () => AptosWalletAdapterProvider,
25
25
  WalletContext: () => WalletContext,
26
26
  WalletItem: () => WalletItem,
27
- getAptosConnectWallets: () => getAptosConnectWallets,
28
- isInstallRequired: () => isInstallRequired,
29
- isInstalledOrLoadable: () => isInstalledOrLoadable,
30
- partitionWallets: () => partitionWallets,
31
- truncateAddress: () => truncateAddress,
32
27
  useWallet: () => useWallet
33
28
  });
34
29
  module.exports = __toCommonJS(src_exports);
@@ -169,12 +164,13 @@ var AptosWalletAdapterProvider = ({
169
164
  plugins,
170
165
  optInWallets,
171
166
  autoConnect = false,
167
+ dappConfig,
172
168
  onError
173
169
  }) => {
174
170
  const [{ connected, account, network, wallet }, setState] = (0, import_react3.useState)(initialState);
175
171
  const [isLoading, setIsLoading] = (0, import_react3.useState)(true);
176
172
  const walletCore = (0, import_react3.useMemo)(
177
- () => new import_wallet_adapter_core2.WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : []),
173
+ () => new import_wallet_adapter_core2.WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : [], dappConfig),
178
174
  []
179
175
  );
180
176
  const [wallets, setWallets] = (0, import_react3.useState)(walletCore.wallets);
@@ -375,50 +371,11 @@ var AptosWalletAdapterProvider = ({
375
371
  children
376
372
  });
377
373
  };
378
-
379
- // src/utils.tsx
380
- var import_wallet_adapter_core3 = require("@aptos-labs/wallet-adapter-core");
381
- function partitionWallets(wallets, partitionFunction = isInstalledOrLoadable) {
382
- const defaultWallets = [];
383
- const moreWallets = [];
384
- for (const wallet of wallets) {
385
- if (partitionFunction(wallet))
386
- defaultWallets.push(wallet);
387
- else
388
- moreWallets.push(wallet);
389
- }
390
- return { defaultWallets, moreWallets };
391
- }
392
- function isInstalledOrLoadable(wallet) {
393
- return wallet.readyState === import_wallet_adapter_core3.WalletReadyState.Installed || wallet.readyState === import_wallet_adapter_core3.WalletReadyState.Loadable;
394
- }
395
- function getAptosConnectWallets(wallets) {
396
- const { defaultWallets, moreWallets } = partitionWallets(
397
- wallets,
398
- (wallet) => wallet.url.includes("aptosconnect.app")
399
- );
400
- return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
401
- }
402
- function isInstallRequired(wallet) {
403
- const isWalletReady = isInstalledOrLoadable(wallet);
404
- const isMobile = !isWalletReady && (0, import_wallet_adapter_core3.isRedirectable)();
405
- return !isMobile && !isWalletReady;
406
- }
407
- function truncateAddress(address) {
408
- if (!address)
409
- return;
410
- return `${address.slice(0, 6)}...${address.slice(-5)}`;
411
- }
412
374
  // Annotate the CommonJS export names for ESM import in node:
413
375
  0 && (module.exports = {
414
376
  AptosWalletAdapterProvider,
415
377
  WalletContext,
416
378
  WalletItem,
417
- getAptosConnectWallets,
418
- isInstallRequired,
419
- isInstalledOrLoadable,
420
- partitionWallets,
421
- truncateAddress,
422
379
  useWallet
423
380
  });
424
381
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx","../src/utils.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\nexport * from \"./utils\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? []),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\n\n/**\n * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.\n * By default, the wallets will be partitioned by whether or not they are installed or loadable.\n * You can pass your own partition function if you wish to customize this behavior.\n */\nexport function partitionWallets(\n wallets: ReadonlyArray<AnyAptosWallet>,\n partitionFunction: (wallet: AnyAptosWallet) => boolean = isInstalledOrLoadable\n) {\n const defaultWallets: Array<AnyAptosWallet> = [];\n const moreWallets: Array<AnyAptosWallet> = [];\n\n for (const wallet of wallets) {\n if (partitionFunction(wallet)) defaultWallets.push(wallet);\n else moreWallets.push(wallet);\n }\n\n return { defaultWallets, moreWallets };\n}\n\n/** Returns true if the wallet is installed or loadable. */\nexport function isInstalledOrLoadable(wallet: AnyAptosWallet) {\n return (\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable\n );\n}\n\n/**\n * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.\n * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.\n */\nexport function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {\n const { defaultWallets, moreWallets } = partitionWallets(wallets, (wallet) =>\n wallet.url.includes(\"aptosconnect.app\")\n );\n return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };\n}\n\n/**\n * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.\n * This can be used to decide whether to show a \"Connect\" button or \"Install\" link in the UI.\n */\nexport function isInstallRequired(wallet: AnyAptosWallet) {\n const isWalletReady = isInstalledOrLoadable(wallet);\n const isMobile = !isWalletReady && isRedirectable();\n\n return !isMobile && !isWalletReady;\n}\n\n/** Truncates the provided wallet address at the middle with an ellipsis. */\nexport function truncateAddress(address: string | undefined) {\n if (!address) return;\n return `${address.slice(0, 6)}...${address.slice(-5)}`;\n}\n"],"mappings":"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","names":["import_react","import_react","import_wallet_adapter_core","network","wallet","wallets","import_wallet_adapter_core"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n dappConfig?: { network: Network };\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n dappConfig,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? [], dappConfig),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n"],"mappings":"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","names":["import_react","import_react","import_wallet_adapter_core","network","wallet","wallets"]}
package/dist/index.mjs CHANGED
@@ -149,12 +149,13 @@ var AptosWalletAdapterProvider = ({
149
149
  plugins,
150
150
  optInWallets,
151
151
  autoConnect = false,
152
+ dappConfig,
152
153
  onError
153
154
  }) => {
154
155
  const [{ connected, account, network, wallet }, setState] = useState(initialState);
155
156
  const [isLoading, setIsLoading] = useState(true);
156
157
  const walletCore = useMemo(
157
- () => new WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : []),
158
+ () => new WalletCore(plugins != null ? plugins : [], optInWallets != null ? optInWallets : [], dappConfig),
158
159
  []
159
160
  );
160
161
  const [wallets, setWallets] = useState(walletCore.wallets);
@@ -355,52 +356,10 @@ var AptosWalletAdapterProvider = ({
355
356
  children
356
357
  });
357
358
  };
358
-
359
- // src/utils.tsx
360
- import {
361
- WalletReadyState as WalletReadyState2,
362
- isRedirectable as isRedirectable2
363
- } from "@aptos-labs/wallet-adapter-core";
364
- function partitionWallets(wallets, partitionFunction = isInstalledOrLoadable) {
365
- const defaultWallets = [];
366
- const moreWallets = [];
367
- for (const wallet of wallets) {
368
- if (partitionFunction(wallet))
369
- defaultWallets.push(wallet);
370
- else
371
- moreWallets.push(wallet);
372
- }
373
- return { defaultWallets, moreWallets };
374
- }
375
- function isInstalledOrLoadable(wallet) {
376
- return wallet.readyState === WalletReadyState2.Installed || wallet.readyState === WalletReadyState2.Loadable;
377
- }
378
- function getAptosConnectWallets(wallets) {
379
- const { defaultWallets, moreWallets } = partitionWallets(
380
- wallets,
381
- (wallet) => wallet.url.includes("aptosconnect.app")
382
- );
383
- return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
384
- }
385
- function isInstallRequired(wallet) {
386
- const isWalletReady = isInstalledOrLoadable(wallet);
387
- const isMobile = !isWalletReady && isRedirectable2();
388
- return !isMobile && !isWalletReady;
389
- }
390
- function truncateAddress(address) {
391
- if (!address)
392
- return;
393
- return `${address.slice(0, 6)}...${address.slice(-5)}`;
394
- }
395
359
  export {
396
360
  AptosWalletAdapterProvider,
397
361
  WalletContext,
398
362
  WalletItem,
399
- getAptosConnectWallets,
400
- isInstallRequired,
401
- isInstalledOrLoadable,
402
- partitionWallets,
403
- truncateAddress,
404
363
  useWallet
405
364
  };
406
365
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx","../src/utils.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\nexport * from \"./utils\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? []),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\n\n/**\n * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.\n * By default, the wallets will be partitioned by whether or not they are installed or loadable.\n * You can pass your own partition function if you wish to customize this behavior.\n */\nexport function partitionWallets(\n wallets: ReadonlyArray<AnyAptosWallet>,\n partitionFunction: (wallet: AnyAptosWallet) => boolean = isInstalledOrLoadable\n) {\n const defaultWallets: Array<AnyAptosWallet> = [];\n const moreWallets: Array<AnyAptosWallet> = [];\n\n for (const wallet of wallets) {\n if (partitionFunction(wallet)) defaultWallets.push(wallet);\n else moreWallets.push(wallet);\n }\n\n return { defaultWallets, moreWallets };\n}\n\n/** Returns true if the wallet is installed or loadable. */\nexport function isInstalledOrLoadable(wallet: AnyAptosWallet) {\n return (\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable\n );\n}\n\n/**\n * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.\n * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.\n */\nexport function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {\n const { defaultWallets, moreWallets } = partitionWallets(wallets, (wallet) =>\n wallet.url.includes(\"aptosconnect.app\")\n );\n return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };\n}\n\n/**\n * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.\n * This can be used to decide whether to show a \"Connect\" button or \"Install\" link in the UI.\n */\nexport function isInstallRequired(wallet: AnyAptosWallet) {\n const isWalletReady = isInstalledOrLoadable(wallet);\n const isMobile = !isWalletReady && isRedirectable();\n\n return !isMobile && !isWalletReady;\n}\n\n/** Truncates the provided wallet address at the middle with an ellipsis. */\nexport function truncateAddress(address: string | undefined) {\n if (!address) return;\n return `${address.slice(0, 6)}...${address.slice(-5)}`;\n}\n"],"mappings":"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","names":["createContext","useContext","createContext","useContext","useCallback","jsx","network","useCallback","wallet","wallets","WalletReadyState","isRedirectable"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/WalletItem.tsx","../src/useWallet.tsx","../src/WalletProvider.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletItem\";\nexport * from \"./WalletProvider\";\nexport * from \"./useWallet\";\n","import {\n AnyAptosWallet,\n WalletReadyState,\n isRedirectable,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ReactNode,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n} from \"react\";\nimport { useWallet } from \"./useWallet\";\n\nexport interface WalletItemProps {\n /** The wallet option to be displayed. */\n wallet: AnyAptosWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n /** A class name for styling the wrapper element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default `div` provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nexport interface WalletItemElementProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AnyAptosWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst WalletItemRoot = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const connectWallet = useCallback(() => {\n connect(wallet.name);\n onConnect?.();\n }, [connect, wallet.name, onConnect]);\n\n const isWalletReady =\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n }\n);\nWalletItemRoot.displayName = \"WalletItem\";\n\nconst WalletItemIcon = forwardRef<HTMLImageElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Icon` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"img\";\n\n return (\n <Component\n ref={ref}\n src={context.wallet.icon}\n alt={`${context.wallet.name} icon`}\n className={className}\n >\n {children}\n </Component>\n );\n }\n);\nWalletItemIcon.displayName = \"WalletItem.Icon\";\n\nconst WalletItemName = forwardRef<HTMLDivElement, WalletItemElementProps>(\n ({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\"`WalletItem.Name` must be used within `WalletItem`\");\n }\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <Component ref={ref} className={className}>\n {children ?? context.wallet.name}\n </Component>\n );\n }\n);\nWalletItemName.displayName = \"WalletItem.Name\";\n\nconst WalletItemConnectButton = forwardRef<\n HTMLButtonElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.ConnectButton` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"button\";\n\n return (\n <Component ref={ref} className={className} onClick={context.connectWallet}>\n {children ?? \"Connect\"}\n </Component>\n );\n});\nWalletItemConnectButton.displayName = \"WalletItem.ConnectButton\";\n\nconst WalletItemInstallLink = forwardRef<\n HTMLAnchorElement,\n WalletItemElementProps\n>(({ className, asChild, children }, ref) => {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(\n \"`WalletItem.InstallLink` must be used within `WalletItem`\"\n );\n }\n\n const Component = asChild ? Slot : \"a\";\n\n return (\n <Component\n ref={ref}\n className={className}\n href={context.wallet.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children ?? \"Install\"}\n </Component>\n );\n});\nWalletItemInstallLink.displayName = \"WalletItem.InstallLink\";\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(WalletItemRoot, {\n Icon: WalletItemIcon,\n Name: WalletItemName,\n ConnectButton: WalletItemConnectButton,\n InstallLink: WalletItemInstallLink,\n});\n","import {\n AccountInfo,\n NetworkInfo,\n WalletInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputTransactionData,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Types,\n WalletName,\n AptosChangeNetworkOutput,\n Network,\n AptosStandardSupportedWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { createContext, useContext } from \"react\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: WalletName): void;\n disconnect(): void;\n wallet: WalletInfo | null;\n wallets?: ReadonlyArray<Wallet | AptosStandardSupportedWallet>;\n signAndSubmitTransaction(transaction: InputTransactionData): Promise<any>;\n signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator>;\n submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse>;\n signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;\n signMessageAndVerify(message: SignMessagePayload): Promise<boolean>;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n FC,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { WalletContext } from \"./useWallet\";\nimport type {\n AccountInfo,\n NetworkInfo,\n SignMessagePayload,\n Wallet,\n WalletInfo,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n AccountAuthenticator,\n PendingTransactionResponse,\n SignMessageResponse,\n WalletName,\n Types,\n InputTransactionData,\n Network,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { WalletCore } from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n plugins?: ReadonlyArray<Wallet>;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?: boolean;\n dappConfig?: { network: Network };\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: WalletInfo | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\n/**\n * Supported props to pass into the provider\n *\n * @param plugins Non AIP-62 supported wallet plugins array\n * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets\n * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet\n * @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations\n * @param onError A callback function to execute when there is an error in the adapter\n *\n */\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n plugins,\n optInWallets,\n autoConnect = false,\n dappConfig,\n onError,\n}: AptosWalletProviderProps) => {\n const [{ connected, account, network, wallet }, setState] =\n useState(initialState);\n\n // a local state to track whether wallet connect request is loading\n // https://github.com/aptos-labs/aptos-wallet-adapter/issues/94\n const [isLoading, setIsLoading] = useState<boolean>(true);\n\n const walletCore = useMemo(\n () => new WalletCore(plugins ?? [], optInWallets ?? [], dappConfig),\n []\n );\n const [wallets, setWallets] = useState<\n ReadonlyArray<Wallet | AptosStandardSupportedWallet>\n >(walletCore.wallets);\n\n const connect = async (walletName: WalletName) => {\n try {\n setIsLoading(true);\n await walletCore.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async () => {\n try {\n await walletCore.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (\n transaction: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions\n ): Promise<AccountAuthenticator> => {\n try {\n return await walletCore.signTransaction(transaction, asFeePayer, options);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: SignMessagePayload\n ): Promise<SignMessageResponse> => {\n try {\n return await walletCore.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: SignMessagePayload\n ): Promise<boolean> => {\n try {\n return await walletCore.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> => {\n try {\n return await walletCore.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData\n ) => {\n try {\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n try {\n return await walletCore.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n useEffect(() => {\n if (autoConnect) {\n if (localStorage.getItem(\"AptosWalletName\") && !connected) {\n connect(localStorage.getItem(\"AptosWalletName\") as WalletName);\n } else {\n // if we dont use autoconnect set the connect is loading to false\n setIsLoading(false);\n }\n }\n }, [autoConnect, wallets]);\n\n useEffect(() => {\n if (connected) {\n walletCore.onAccountChange();\n walletCore.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's connect event\n const handleConnect = () => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore.account,\n network: walletCore.network,\n wallet: walletCore.wallet,\n };\n });\n };\n\n // Handle the adapter's disconnect event\n const handleDisconnect = () => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore.account,\n network: walletCore.network,\n wallet: null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore.account,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback(() => {\n if (!connected) return;\n if (!walletCore.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore.network,\n };\n });\n }, [connected]);\n\n const handleReadyStateChange = (updatedWallet: Wallet) => {\n // Create a new array with updated values\n const updatedWallets = (wallets as Wallet[])?.map((wallet) => {\n if (wallet.name === updatedWallet.name) {\n // Return a new object with updated value\n return { ...wallet, readyState: updatedWallet.readyState };\n }\n return wallet;\n });\n setWallets(updatedWallets);\n };\n\n const handleStandardWalletsAdded = (\n standardWallet: Wallet | AptosStandardSupportedWallet\n ) => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n useEffect(() => {\n walletCore.on(\"connect\", handleConnect);\n walletCore.on(\"disconnect\", handleDisconnect);\n walletCore.on(\"accountChange\", handleAccountChange);\n walletCore.on(\"networkChange\", handleNetworkChange);\n walletCore.on(\"readyStateChange\", handleReadyStateChange);\n walletCore.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n return () => {\n walletCore.off(\"connect\", handleConnect);\n walletCore.off(\"disconnect\", handleDisconnect);\n walletCore.off(\"accountChange\", handleAccountChange);\n walletCore.off(\"networkChange\", handleNetworkChange);\n walletCore.off(\"readyStateChange\", handleReadyStateChange);\n walletCore.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n };\n }, [wallets, connected]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n account,\n network,\n connected,\n disconnect,\n wallet,\n wallets,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n isLoading,\n submitTransaction,\n changeNetwork,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n"],"mappings":"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","names":["createContext","useContext","createContext","useContext","useCallback","jsx","network","useCallback","wallet","wallets"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aptos-labs/wallet-adapter-react",
3
- "version": "3.2.0",
3
+ "version": "3.3.1",
4
4
  "description": "Aptos Wallet Adapter React Provider",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@radix-ui/react-slot": "^1.0.2",
41
- "@aptos-labs/wallet-adapter-core": "4.6.0"
41
+ "@aptos-labs/wallet-adapter-core": "4.8.0"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "react": "^18"
@@ -33,6 +33,7 @@ export interface AptosWalletProviderProps {
33
33
  plugins?: ReadonlyArray<Wallet>;
34
34
  optInWallets?: ReadonlyArray<AvailableWallets>;
35
35
  autoConnect?: boolean;
36
+ dappConfig?: { network: Network };
36
37
  onError?: (error: any) => void;
37
38
  }
38
39
 
@@ -54,6 +55,7 @@ const initialState: {
54
55
  * @param plugins Non AIP-62 supported wallet plugins array
55
56
  * @param optInWallets AIP-62 supported wallet names array to only include in the adapter wallets
56
57
  * @param autoConnect A boolean flag to indicate if the adapter should auto connect to a wallet
58
+ * @param dappConfig The dapp configurations to be used by SDK wallets to set their configurations
57
59
  * @param onError A callback function to execute when there is an error in the adapter
58
60
  *
59
61
  */
@@ -62,6 +64,7 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
62
64
  plugins,
63
65
  optInWallets,
64
66
  autoConnect = false,
67
+ dappConfig,
65
68
  onError,
66
69
  }: AptosWalletProviderProps) => {
67
70
  const [{ connected, account, network, wallet }, setState] =
@@ -72,7 +75,7 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
72
75
  const [isLoading, setIsLoading] = useState<boolean>(true);
73
76
 
74
77
  const walletCore = useMemo(
75
- () => new WalletCore(plugins ?? [], optInWallets ?? []),
78
+ () => new WalletCore(plugins ?? [], optInWallets ?? [], dappConfig),
76
79
  []
77
80
  );
78
81
  const [wallets, setWallets] = useState<
package/src/index.tsx CHANGED
@@ -2,4 +2,3 @@ export * from "@aptos-labs/wallet-adapter-core";
2
2
  export * from "./WalletItem";
3
3
  export * from "./WalletProvider";
4
4
  export * from "./useWallet";
5
- export * from "./utils";
package/dist/utils.d.ts DELETED
@@ -1,28 +0,0 @@
1
- import { AnyAptosWallet } from "@aptos-labs/wallet-adapter-core";
2
- /**
3
- * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.
4
- * By default, the wallets will be partitioned by whether or not they are installed or loadable.
5
- * You can pass your own partition function if you wish to customize this behavior.
6
- */
7
- export declare function partitionWallets(wallets: ReadonlyArray<AnyAptosWallet>, partitionFunction?: (wallet: AnyAptosWallet) => boolean): {
8
- defaultWallets: AnyAptosWallet[];
9
- moreWallets: AnyAptosWallet[];
10
- };
11
- /** Returns true if the wallet is installed or loadable. */
12
- export declare function isInstalledOrLoadable(wallet: AnyAptosWallet): boolean;
13
- /**
14
- * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.
15
- * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.
16
- */
17
- export declare function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>): {
18
- aptosConnectWallets: AnyAptosWallet[];
19
- otherWallets: AnyAptosWallet[];
20
- };
21
- /**
22
- * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.
23
- * This can be used to decide whether to show a "Connect" button or "Install" link in the UI.
24
- */
25
- export declare function isInstallRequired(wallet: AnyAptosWallet): boolean;
26
- /** Truncates the provided wallet address at the middle with an ellipsis. */
27
- export declare function truncateAddress(address: string | undefined): string | undefined;
28
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAGf,MAAM,iCAAiC,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,EACtC,iBAAiB,GAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAA+B;;;EAW/E;AAED,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,WAK3D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC;;;EAK5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,WAKvD;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,sBAG1D"}
package/src/utils.tsx DELETED
@@ -1,61 +0,0 @@
1
- import {
2
- AnyAptosWallet,
3
- WalletReadyState,
4
- isRedirectable,
5
- } from "@aptos-labs/wallet-adapter-core";
6
-
7
- /**
8
- * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.
9
- * By default, the wallets will be partitioned by whether or not they are installed or loadable.
10
- * You can pass your own partition function if you wish to customize this behavior.
11
- */
12
- export function partitionWallets(
13
- wallets: ReadonlyArray<AnyAptosWallet>,
14
- partitionFunction: (wallet: AnyAptosWallet) => boolean = isInstalledOrLoadable
15
- ) {
16
- const defaultWallets: Array<AnyAptosWallet> = [];
17
- const moreWallets: Array<AnyAptosWallet> = [];
18
-
19
- for (const wallet of wallets) {
20
- if (partitionFunction(wallet)) defaultWallets.push(wallet);
21
- else moreWallets.push(wallet);
22
- }
23
-
24
- return { defaultWallets, moreWallets };
25
- }
26
-
27
- /** Returns true if the wallet is installed or loadable. */
28
- export function isInstalledOrLoadable(wallet: AnyAptosWallet) {
29
- return (
30
- wallet.readyState === WalletReadyState.Installed ||
31
- wallet.readyState === WalletReadyState.Loadable
32
- );
33
- }
34
-
35
- /**
36
- * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.
37
- * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.
38
- */
39
- export function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {
40
- const { defaultWallets, moreWallets } = partitionWallets(wallets, (wallet) =>
41
- wallet.url.includes("aptosconnect.app")
42
- );
43
- return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };
44
- }
45
-
46
- /**
47
- * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.
48
- * This can be used to decide whether to show a "Connect" button or "Install" link in the UI.
49
- */
50
- export function isInstallRequired(wallet: AnyAptosWallet) {
51
- const isWalletReady = isInstalledOrLoadable(wallet);
52
- const isMobile = !isWalletReady && isRedirectable();
53
-
54
- return !isMobile && !isWalletReady;
55
- }
56
-
57
- /** Truncates the provided wallet address at the middle with an ellipsis. */
58
- export function truncateAddress(address: string | undefined) {
59
- if (!address) return;
60
- return `${address.slice(0, 6)}...${address.slice(-5)}`;
61
- }