@meshsdk/react 1.6.0-alpha.21 → 1.6.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/dist/index.cjs +567 -0
- package/dist/index.css +13 -0
- package/dist/index.d.cts +72 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.js +528 -0
- package/package.json +37 -15
- package/.eslintrc.js +0 -3
- package/.turbo/turbo-build$colon$docs.log +0 -15
- package/.turbo/turbo-build$colon$mesh.log +0 -9
- package/.turbo/turbo-build.log +0 -9
- package/postcss.config.js +0 -9
- package/src/cardano-wallet/checkmark.tsx +0 -10
- package/src/cardano-wallet/chevron-down.tsx +0 -17
- package/src/cardano-wallet/index.tsx +0 -106
- package/src/cardano-wallet/menu-item.tsx +0 -28
- package/src/cardano-wallet/wallet-balance.tsx +0 -36
- package/src/common/button.tsx +0 -22
- package/src/contexts/WalletContext.ts +0 -76
- package/src/contexts/index.tsx +0 -16
- package/src/hooks/index.ts +0 -9
- package/src/hooks/useAddress.ts +0 -21
- package/src/hooks/useAssets.ts +0 -19
- package/src/hooks/useLovelace.ts +0 -17
- package/src/hooks/useNetwork.ts +0 -17
- package/src/hooks/useRewardAddress.ts +0 -21
- package/src/hooks/useWallet.ts +0 -31
- package/src/hooks/useWalletList.ts +0 -14
- package/src/hooks/useWalletSubmit.ts +0 -40
- package/src/hooks/useWalletTx.ts +0 -32
- package/src/index.ts +0 -5
- package/src/mesh-badge/index.tsx +0 -17
- package/src/mesh-badge/mesh-logo.tsx +0 -10
- package/src/stake-button/index.tsx +0 -152
- package/src/styles.css +0 -3
- package/tailwind.config.ts +0 -11
- package/tsconfig.json +0 -8
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { Asset, Wallet, AccountInfo } from '@meshsdk/common';
|
|
3
|
+
import * as _meshsdk_wallet from '@meshsdk/wallet';
|
|
4
|
+
import { BrowserWallet } from '@meshsdk/wallet';
|
|
5
|
+
import * as react from 'react';
|
|
6
|
+
|
|
7
|
+
interface ButtonProps$1 {
|
|
8
|
+
label?: string;
|
|
9
|
+
onConnected?: Function;
|
|
10
|
+
isDark?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const CardanoWallet: ({ label, onConnected, isDark, }: ButtonProps$1) => react_jsx_runtime.JSX.Element;
|
|
13
|
+
|
|
14
|
+
interface WalletContext {
|
|
15
|
+
hasConnectedWallet: boolean;
|
|
16
|
+
connectedWalletInstance: BrowserWallet;
|
|
17
|
+
connectedWalletName: string;
|
|
18
|
+
connectingWallet: boolean;
|
|
19
|
+
connectWallet?: (walletName: string) => Promise<void>;
|
|
20
|
+
disconnect?: () => void;
|
|
21
|
+
error?: unknown;
|
|
22
|
+
}
|
|
23
|
+
declare const WalletContext: react.Context<WalletContext>;
|
|
24
|
+
|
|
25
|
+
interface Props {
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
}
|
|
28
|
+
declare const MeshProvider: React.FC<Props>;
|
|
29
|
+
|
|
30
|
+
declare const useAddress: (accountId?: number) => string | undefined;
|
|
31
|
+
|
|
32
|
+
declare const useAssets: () => Asset[] | undefined;
|
|
33
|
+
|
|
34
|
+
declare const useWalletList: () => Wallet[];
|
|
35
|
+
|
|
36
|
+
declare const useLovelace: () => string | undefined;
|
|
37
|
+
|
|
38
|
+
declare const useNetwork: () => number | undefined;
|
|
39
|
+
|
|
40
|
+
declare const useRewardAddress: (accountId?: number) => string | undefined;
|
|
41
|
+
|
|
42
|
+
declare const useWallet: () => {
|
|
43
|
+
name: string;
|
|
44
|
+
connecting: boolean;
|
|
45
|
+
connected: boolean;
|
|
46
|
+
wallet: _meshsdk_wallet.BrowserWallet;
|
|
47
|
+
connect: (walletName: string) => Promise<void>;
|
|
48
|
+
disconnect: () => void;
|
|
49
|
+
error: unknown;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
declare const useWalletSubmit: () => {
|
|
53
|
+
error: unknown;
|
|
54
|
+
result: string | undefined;
|
|
55
|
+
submitting: boolean;
|
|
56
|
+
submitTx: (signedTx: string) => Promise<void>;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
declare const MeshBadge: ({ isDark }: {
|
|
60
|
+
isDark?: boolean | undefined;
|
|
61
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
62
|
+
|
|
63
|
+
interface ButtonProps {
|
|
64
|
+
label?: string;
|
|
65
|
+
isDark?: boolean;
|
|
66
|
+
poolId: string;
|
|
67
|
+
onCheck: (rewardAddress: string) => Promise<AccountInfo>;
|
|
68
|
+
onDelegated?: () => void;
|
|
69
|
+
}
|
|
70
|
+
declare const StakeButton: ({ label, isDark, poolId, onCheck, onDelegated, }: ButtonProps) => react_jsx_runtime.JSX.Element;
|
|
71
|
+
|
|
72
|
+
export { CardanoWallet, MeshBadge, MeshProvider, StakeButton, WalletContext, useAddress, useAssets, useLovelace, useNetwork, useRewardAddress, useWallet, useWalletList, useWalletSubmit };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
// src/cardano-wallet/index.tsx
|
|
2
|
+
import { useEffect as useEffect7, useState as useState9 } from "react";
|
|
3
|
+
import { BrowserWallet as BrowserWallet3 } from "@meshsdk/wallet";
|
|
4
|
+
|
|
5
|
+
// src/common/button.tsx
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
function Button({
|
|
8
|
+
children,
|
|
9
|
+
isDarkMode = false,
|
|
10
|
+
hideMenuList = false,
|
|
11
|
+
setHideMenuList
|
|
12
|
+
}) {
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
"button",
|
|
15
|
+
{
|
|
16
|
+
className: `ui-mr-menu-list ui-flex ui-w-60 ui-items-center ui-justify-center ui-rounded-t-md ui-border ui-px-4 ui-py-2 ui-text-lg ui-font-normal ui-shadow-sm ${isDarkMode ? `ui-bg-neutral-950 ui-text-neutral-50` : `ui-bg-neutral-50 ui-text-neutral-950`}`,
|
|
17
|
+
onClick: () => setHideMenuList && setHideMenuList(!hideMenuList),
|
|
18
|
+
children
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/hooks/useAddress.ts
|
|
24
|
+
import { useContext, useEffect, useState as useState2 } from "react";
|
|
25
|
+
|
|
26
|
+
// src/contexts/WalletContext.ts
|
|
27
|
+
import { createContext, useCallback, useState } from "react";
|
|
28
|
+
import { BrowserWallet } from "@meshsdk/wallet";
|
|
29
|
+
var INITIAL_STATE = {
|
|
30
|
+
walletName: "",
|
|
31
|
+
walletInstance: {}
|
|
32
|
+
};
|
|
33
|
+
var useWalletStore = () => {
|
|
34
|
+
const [error, setError] = useState(void 0);
|
|
35
|
+
const [connectingWallet, setConnectingWallet] = useState(false);
|
|
36
|
+
const [connectedWalletInstance, setConnectedWalletInstance] = useState(INITIAL_STATE.walletInstance);
|
|
37
|
+
const [connectedWalletName, setConnectedWalletName] = useState(
|
|
38
|
+
INITIAL_STATE.walletName
|
|
39
|
+
);
|
|
40
|
+
const connectWallet = useCallback(async (walletName) => {
|
|
41
|
+
setConnectingWallet(true);
|
|
42
|
+
try {
|
|
43
|
+
const walletInstance = await BrowserWallet.enable(walletName);
|
|
44
|
+
setConnectedWalletInstance(walletInstance);
|
|
45
|
+
setConnectedWalletName(walletName);
|
|
46
|
+
setError(void 0);
|
|
47
|
+
} catch (error2) {
|
|
48
|
+
setError(error2);
|
|
49
|
+
console.error(error2);
|
|
50
|
+
}
|
|
51
|
+
setConnectingWallet(false);
|
|
52
|
+
}, []);
|
|
53
|
+
const disconnect = useCallback(() => {
|
|
54
|
+
setConnectedWalletName(INITIAL_STATE.walletName);
|
|
55
|
+
setConnectedWalletInstance(INITIAL_STATE.walletInstance);
|
|
56
|
+
}, []);
|
|
57
|
+
return {
|
|
58
|
+
hasConnectedWallet: INITIAL_STATE.walletName !== connectedWalletName,
|
|
59
|
+
connectedWalletInstance,
|
|
60
|
+
connectedWalletName,
|
|
61
|
+
connectingWallet,
|
|
62
|
+
connectWallet,
|
|
63
|
+
disconnect,
|
|
64
|
+
// setWallet,
|
|
65
|
+
error
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
var WalletContext = createContext({
|
|
69
|
+
hasConnectedWallet: false,
|
|
70
|
+
connectedWalletInstance: INITIAL_STATE.walletInstance,
|
|
71
|
+
connectedWalletName: INITIAL_STATE.walletName,
|
|
72
|
+
connectingWallet: false
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// src/contexts/index.tsx
|
|
76
|
+
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
|
77
|
+
var MeshProvider = (props) => {
|
|
78
|
+
const store = useWalletStore();
|
|
79
|
+
return /* @__PURE__ */ jsx2(WalletContext.Provider, { value: store, children: /* @__PURE__ */ jsx2(Fragment, { children: props.children }) });
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// src/hooks/useAddress.ts
|
|
83
|
+
var useAddress = (accountId = 0) => {
|
|
84
|
+
const [address, setAddress] = useState2();
|
|
85
|
+
const { hasConnectedWallet, connectedWalletName, connectedWalletInstance } = useContext(WalletContext);
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
if (hasConnectedWallet) {
|
|
88
|
+
connectedWalletInstance.getUsedAddresses().then((addresses) => {
|
|
89
|
+
if (addresses[accountId]) {
|
|
90
|
+
setAddress(addresses[accountId]);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}, [accountId, connectedWalletName]);
|
|
95
|
+
return address;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/hooks/useAssets.ts
|
|
99
|
+
import { useContext as useContext2, useEffect as useEffect2, useState as useState3 } from "react";
|
|
100
|
+
var useAssets = () => {
|
|
101
|
+
const [assets, setAssets] = useState3();
|
|
102
|
+
const { hasConnectedWallet, connectedWalletName, connectedWalletInstance } = useContext2(WalletContext);
|
|
103
|
+
useEffect2(() => {
|
|
104
|
+
if (hasConnectedWallet) {
|
|
105
|
+
connectedWalletInstance.getAssets().then(setAssets);
|
|
106
|
+
}
|
|
107
|
+
}, [connectedWalletName]);
|
|
108
|
+
return assets;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/hooks/useWalletList.ts
|
|
112
|
+
import { useEffect as useEffect3, useState as useState4 } from "react";
|
|
113
|
+
import { BrowserWallet as BrowserWallet2 } from "@meshsdk/wallet";
|
|
114
|
+
var useWalletList = () => {
|
|
115
|
+
const [wallets, setWallets] = useState4([]);
|
|
116
|
+
useEffect3(() => {
|
|
117
|
+
setWallets(BrowserWallet2.getInstalledWallets());
|
|
118
|
+
}, []);
|
|
119
|
+
return wallets;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
// src/hooks/useLovelace.ts
|
|
123
|
+
import { useContext as useContext3, useEffect as useEffect4, useState as useState5 } from "react";
|
|
124
|
+
var useLovelace = () => {
|
|
125
|
+
const [lovelace, setLovelace] = useState5();
|
|
126
|
+
const { hasConnectedWallet, connectedWalletName, connectedWalletInstance } = useContext3(WalletContext);
|
|
127
|
+
useEffect4(() => {
|
|
128
|
+
if (hasConnectedWallet) {
|
|
129
|
+
connectedWalletInstance.getLovelace().then(setLovelace);
|
|
130
|
+
}
|
|
131
|
+
}, [connectedWalletName]);
|
|
132
|
+
return lovelace;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// src/hooks/useNetwork.ts
|
|
136
|
+
import { useContext as useContext4, useEffect as useEffect5, useState as useState6 } from "react";
|
|
137
|
+
var useNetwork = () => {
|
|
138
|
+
const [networkId, setNetworkId] = useState6();
|
|
139
|
+
const { hasConnectedWallet, connectedWalletName, connectedWalletInstance } = useContext4(WalletContext);
|
|
140
|
+
useEffect5(() => {
|
|
141
|
+
if (hasConnectedWallet) {
|
|
142
|
+
connectedWalletInstance.getNetworkId().then(setNetworkId);
|
|
143
|
+
}
|
|
144
|
+
}, [connectedWalletName]);
|
|
145
|
+
return networkId;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
// src/hooks/useRewardAddress.ts
|
|
149
|
+
import { useContext as useContext5, useEffect as useEffect6, useState as useState7 } from "react";
|
|
150
|
+
var useRewardAddress = (accountId = 0) => {
|
|
151
|
+
const [rewardAddress, setRewardAddress] = useState7();
|
|
152
|
+
const { hasConnectedWallet, connectedWalletName, connectedWalletInstance } = useContext5(WalletContext);
|
|
153
|
+
useEffect6(() => {
|
|
154
|
+
if (hasConnectedWallet) {
|
|
155
|
+
connectedWalletInstance.getRewardAddresses().then((addresses) => {
|
|
156
|
+
if (addresses[accountId]) {
|
|
157
|
+
setRewardAddress(addresses[accountId]);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}, [accountId, connectedWalletName]);
|
|
162
|
+
return rewardAddress;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// src/hooks/useWallet.ts
|
|
166
|
+
import { useContext as useContext6 } from "react";
|
|
167
|
+
var useWallet = () => {
|
|
168
|
+
const {
|
|
169
|
+
hasConnectedWallet,
|
|
170
|
+
connectedWalletName,
|
|
171
|
+
connectedWalletInstance,
|
|
172
|
+
connectingWallet,
|
|
173
|
+
connectWallet,
|
|
174
|
+
disconnect,
|
|
175
|
+
error
|
|
176
|
+
} = useContext6(WalletContext);
|
|
177
|
+
if (connectWallet === void 0 || disconnect === void 0) {
|
|
178
|
+
throw new Error(
|
|
179
|
+
"Can't call useWallet outside of the WalletProvider context"
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
name: connectedWalletName,
|
|
184
|
+
connecting: connectingWallet,
|
|
185
|
+
connected: hasConnectedWallet,
|
|
186
|
+
wallet: connectedWalletInstance,
|
|
187
|
+
connect: connectWallet,
|
|
188
|
+
disconnect,
|
|
189
|
+
error
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// src/hooks/useWalletSubmit.ts
|
|
194
|
+
import { useCallback as useCallback2, useContext as useContext7, useState as useState8 } from "react";
|
|
195
|
+
var useWalletSubmit = () => {
|
|
196
|
+
const [error, setError] = useState8();
|
|
197
|
+
const [result, setResult] = useState8();
|
|
198
|
+
const [submitting, setSubmitting] = useState8(false);
|
|
199
|
+
const { hasConnectedWallet, connectedWalletInstance } = useContext7(WalletContext);
|
|
200
|
+
const submitTx = useCallback2(async (signedTx) => {
|
|
201
|
+
setSubmitting(true);
|
|
202
|
+
try {
|
|
203
|
+
if (hasConnectedWallet) {
|
|
204
|
+
const txHash = await connectedWalletInstance.submitTx(signedTx);
|
|
205
|
+
setError(void 0);
|
|
206
|
+
setResult(txHash);
|
|
207
|
+
}
|
|
208
|
+
throw new Error(
|
|
209
|
+
"Please make sure to connect a wallet before calling useWalletSubmit"
|
|
210
|
+
);
|
|
211
|
+
} catch (error2) {
|
|
212
|
+
setError(error2);
|
|
213
|
+
console.error(error2);
|
|
214
|
+
}
|
|
215
|
+
setSubmitting(false);
|
|
216
|
+
}, []);
|
|
217
|
+
return {
|
|
218
|
+
error,
|
|
219
|
+
result,
|
|
220
|
+
submitting,
|
|
221
|
+
submitTx
|
|
222
|
+
};
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
// src/cardano-wallet/menu-item.tsx
|
|
226
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
227
|
+
function MenuItem({
|
|
228
|
+
icon,
|
|
229
|
+
label,
|
|
230
|
+
action,
|
|
231
|
+
active
|
|
232
|
+
}) {
|
|
233
|
+
return /* @__PURE__ */ jsxs(
|
|
234
|
+
"div",
|
|
235
|
+
{
|
|
236
|
+
className: "ui-flex ui-cursor-pointer ui-items-center ui-px-4 ui-py-2 ui-opacity-80 hover:ui-opacity-100 ui-h-16",
|
|
237
|
+
onClick: action,
|
|
238
|
+
children: [
|
|
239
|
+
icon && /* @__PURE__ */ jsx3("img", { className: "ui-pr-2 ui-m-1 ui-h-8", src: icon }),
|
|
240
|
+
/* @__PURE__ */ jsx3("span", { className: "ui-mr-menu-item ui-text-xl ui-font-normal", children: label.split(" ").map((word) => {
|
|
241
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
242
|
+
}).join(" ") })
|
|
243
|
+
]
|
|
244
|
+
}
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// src/cardano-wallet/chevron-down.tsx
|
|
249
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
250
|
+
var ChevronDown = () => /* @__PURE__ */ jsx4(
|
|
251
|
+
"svg",
|
|
252
|
+
{
|
|
253
|
+
className: "ui-m-2 ui-h-6",
|
|
254
|
+
fill: "none",
|
|
255
|
+
"aria-hidden": "true",
|
|
256
|
+
viewBox: "0 0 24 24",
|
|
257
|
+
stroke: "currentColor",
|
|
258
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
259
|
+
children: /* @__PURE__ */ jsx4(
|
|
260
|
+
"path",
|
|
261
|
+
{
|
|
262
|
+
strokeLinecap: "round",
|
|
263
|
+
strokeLinejoin: "round",
|
|
264
|
+
strokeWidth: "2",
|
|
265
|
+
d: "M19 9l-7 7-7-7"
|
|
266
|
+
}
|
|
267
|
+
)
|
|
268
|
+
}
|
|
269
|
+
);
|
|
270
|
+
|
|
271
|
+
// src/cardano-wallet/wallet-balance.tsx
|
|
272
|
+
import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
273
|
+
var WalletBalance = ({
|
|
274
|
+
connected,
|
|
275
|
+
connecting,
|
|
276
|
+
label,
|
|
277
|
+
wallet
|
|
278
|
+
}) => {
|
|
279
|
+
const lovelace = useLovelace();
|
|
280
|
+
return connected && lovelace && wallet?.icon ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
281
|
+
/* @__PURE__ */ jsx5("img", { className: "ui-m-2 ui-h-6", src: wallet.icon }),
|
|
282
|
+
"\u20B3",
|
|
283
|
+
" ",
|
|
284
|
+
parseInt((parseInt(lovelace, 10) / 1e6).toString(), 10),
|
|
285
|
+
".",
|
|
286
|
+
/* @__PURE__ */ jsx5("span", { className: "ui-text-xs", children: lovelace.substring(lovelace.length - 6) })
|
|
287
|
+
] }) : connected && wallet?.icon ? /* @__PURE__ */ jsx5(Fragment2, { children: /* @__PURE__ */ jsx5("img", { className: "ui-m-2 ui-h-6", src: wallet.icon }) }) : connecting ? /* @__PURE__ */ jsx5(Fragment2, { children: "Connecting..." }) : /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
288
|
+
label,
|
|
289
|
+
" ",
|
|
290
|
+
/* @__PURE__ */ jsx5(ChevronDown, {})
|
|
291
|
+
] });
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
// src/cardano-wallet/index.tsx
|
|
295
|
+
import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
296
|
+
var CardanoWallet = ({
|
|
297
|
+
label = "Connect Wallet",
|
|
298
|
+
onConnected = void 0,
|
|
299
|
+
isDark = false
|
|
300
|
+
}) => {
|
|
301
|
+
const [isDarkMode, setIsDarkMode] = useState9(false);
|
|
302
|
+
const [hideMenuList, setHideMenuList] = useState9(true);
|
|
303
|
+
const [wallets, setWallets] = useState9([]);
|
|
304
|
+
const { connect, connecting, connected, disconnect, name } = useWallet();
|
|
305
|
+
useEffect7(() => {
|
|
306
|
+
if (connected && onConnected) {
|
|
307
|
+
onConnected();
|
|
308
|
+
}
|
|
309
|
+
}, [connected]);
|
|
310
|
+
useEffect7(() => {
|
|
311
|
+
setWallets(BrowserWallet3.getInstalledWallets());
|
|
312
|
+
}, []);
|
|
313
|
+
useEffect7(() => {
|
|
314
|
+
setIsDarkMode(isDark);
|
|
315
|
+
}, [isDark]);
|
|
316
|
+
return /* @__PURE__ */ jsxs3(
|
|
317
|
+
"div",
|
|
318
|
+
{
|
|
319
|
+
className: "w-fit",
|
|
320
|
+
onMouseEnter: () => setHideMenuList(false),
|
|
321
|
+
onMouseLeave: () => setHideMenuList(true),
|
|
322
|
+
children: [
|
|
323
|
+
/* @__PURE__ */ jsx6(
|
|
324
|
+
Button,
|
|
325
|
+
{
|
|
326
|
+
isDarkMode,
|
|
327
|
+
hideMenuList,
|
|
328
|
+
setHideMenuList,
|
|
329
|
+
children: /* @__PURE__ */ jsx6(
|
|
330
|
+
WalletBalance,
|
|
331
|
+
{
|
|
332
|
+
connected,
|
|
333
|
+
connecting,
|
|
334
|
+
label,
|
|
335
|
+
wallet: wallets.find((wallet) => wallet.name === name)
|
|
336
|
+
}
|
|
337
|
+
)
|
|
338
|
+
}
|
|
339
|
+
),
|
|
340
|
+
/* @__PURE__ */ jsx6(
|
|
341
|
+
"div",
|
|
342
|
+
{
|
|
343
|
+
className: `ui-mr-menu-list ui-absolute ui-w-60 ui-rounded-b-md ui-border ui-text-center ui-shadow-sm ui-backdrop-blur ${hideMenuList && "ui-hidden"} ${isDarkMode ? `ui-bg-neutral-950 ui-text-neutral-50` : `ui-bg-neutral-50 ui-text-neutral-950`}`,
|
|
344
|
+
children: !connected && wallets.length > 0 ? /* @__PURE__ */ jsx6(Fragment3, { children: wallets.map((wallet, index) => /* @__PURE__ */ jsx6(
|
|
345
|
+
MenuItem,
|
|
346
|
+
{
|
|
347
|
+
icon: wallet.icon,
|
|
348
|
+
label: wallet.name,
|
|
349
|
+
action: () => {
|
|
350
|
+
connect(wallet.name);
|
|
351
|
+
setHideMenuList(!hideMenuList);
|
|
352
|
+
},
|
|
353
|
+
active: name === wallet.name
|
|
354
|
+
},
|
|
355
|
+
index
|
|
356
|
+
)) }) : wallets.length === 0 ? /* @__PURE__ */ jsx6("span", { children: "No Wallet Found" }) : /* @__PURE__ */ jsx6(Fragment3, { children: /* @__PURE__ */ jsx6(
|
|
357
|
+
MenuItem,
|
|
358
|
+
{
|
|
359
|
+
active: false,
|
|
360
|
+
label: "disconnect",
|
|
361
|
+
action: disconnect,
|
|
362
|
+
icon: void 0
|
|
363
|
+
}
|
|
364
|
+
) })
|
|
365
|
+
}
|
|
366
|
+
)
|
|
367
|
+
]
|
|
368
|
+
}
|
|
369
|
+
);
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
// src/mesh-badge/mesh-logo.tsx
|
|
373
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
374
|
+
var MeshLogo = () => /* @__PURE__ */ jsx7(
|
|
375
|
+
"svg",
|
|
376
|
+
{
|
|
377
|
+
className: "ui-h-16 ui-p-2",
|
|
378
|
+
fill: "currentColor",
|
|
379
|
+
viewBox: "0 0 300 200",
|
|
380
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
381
|
+
children: /* @__PURE__ */ jsx7("path", { d: "m289 127-45-60-45-60c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-37 49.3c-2 2.7-6 2.7-8 0l-37-49.3c-.9-1.3-2.4-2-4-2s-3.1.7-4 2l-45 60-45 60c-1.3 1.8-1.3 4.2 0 6l45 60c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l37-49.3c2-2.7 6-2.7 8 0l37 49.3c.9 1.3 2.4 2 4 2s3.1-.7 4-2l45-60c1.3-1.8 1.3-4.2 0-6zm-90-103.3 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-90 0 32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0l-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0zm-53 152.6-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0zm90 0-32.5-43.3c-1.3-1.8-1.3-4.2 0-6l32.5-43.3c2-2.7 6-2.7 8 0l32.5 43.3c1.3 1.8 1.3 4.2 0 6l-32.5 43.3c-2 2.7-6 2.7-8 0z" })
|
|
382
|
+
}
|
|
383
|
+
);
|
|
384
|
+
|
|
385
|
+
// src/mesh-badge/index.tsx
|
|
386
|
+
import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
387
|
+
var MeshBadge = ({ isDark = false }) => /* @__PURE__ */ jsxs4(
|
|
388
|
+
"a",
|
|
389
|
+
{
|
|
390
|
+
className: `ui-flex ui-max-w-fit ui-flex-col ui-items-center ui-rounded-md ui-border ui-border-solid ui-border-current ui-p-1 ui-text-xl ui-font-semibold ui-no-underline ${isDark ? `ui-bg-neutral-950 ui-text-neutral-50` : `ui-bg-neutral-50 ui-text-neutral-950`}`,
|
|
391
|
+
style: {
|
|
392
|
+
color: isDark ? "#EEEEEE" : "#111111",
|
|
393
|
+
backgroundColor: isDark ? "#111111" : "#EEEEEE"
|
|
394
|
+
},
|
|
395
|
+
href: "https://meshjs.dev/",
|
|
396
|
+
rel: "noopener noreferrer",
|
|
397
|
+
target: "_blank",
|
|
398
|
+
children: [
|
|
399
|
+
/* @__PURE__ */ jsx8(MeshLogo, {}),
|
|
400
|
+
"Mesh"
|
|
401
|
+
]
|
|
402
|
+
}
|
|
403
|
+
);
|
|
404
|
+
|
|
405
|
+
// src/stake-button/index.tsx
|
|
406
|
+
import { useEffect as useEffect8, useState as useState10 } from "react";
|
|
407
|
+
import { Transaction } from "@meshsdk/transaction";
|
|
408
|
+
import { Fragment as Fragment4, jsx as jsx9 } from "react/jsx-runtime";
|
|
409
|
+
var StakeButton = ({
|
|
410
|
+
label = "Stake your ADA",
|
|
411
|
+
isDark = false,
|
|
412
|
+
poolId,
|
|
413
|
+
onCheck,
|
|
414
|
+
onDelegated = void 0
|
|
415
|
+
}) => {
|
|
416
|
+
const [isDarkMode, setIsDarkMode] = useState10(false);
|
|
417
|
+
const { connected } = useWallet();
|
|
418
|
+
useEffect8(() => {
|
|
419
|
+
setIsDarkMode(isDark);
|
|
420
|
+
}, [isDark]);
|
|
421
|
+
return /* @__PURE__ */ jsx9(Fragment4, { children: connected ? /* @__PURE__ */ jsx9(Button, { isDarkMode, children: /* @__PURE__ */ jsx9(
|
|
422
|
+
Delegate,
|
|
423
|
+
{
|
|
424
|
+
poolId,
|
|
425
|
+
onCheck,
|
|
426
|
+
onDelegated
|
|
427
|
+
}
|
|
428
|
+
) }) : /* @__PURE__ */ jsx9(CardanoWallet, { label, isDark }) });
|
|
429
|
+
};
|
|
430
|
+
var Delegate = ({
|
|
431
|
+
poolId,
|
|
432
|
+
onCheck,
|
|
433
|
+
onDelegated
|
|
434
|
+
}) => {
|
|
435
|
+
const { wallet } = useWallet();
|
|
436
|
+
const rewardAddress = useRewardAddress();
|
|
437
|
+
const [error, setError] = useState10();
|
|
438
|
+
const [checking, setChecking] = useState10(false);
|
|
439
|
+
const [accountInfo, setAccountInfo] = useState10();
|
|
440
|
+
const [processing, setProcessing] = useState10(false);
|
|
441
|
+
const [done, setDone] = useState10(false);
|
|
442
|
+
const checkAccountStatus = async () => {
|
|
443
|
+
try {
|
|
444
|
+
setChecking(true);
|
|
445
|
+
if (rewardAddress) {
|
|
446
|
+
const info = await onCheck(rewardAddress);
|
|
447
|
+
setAccountInfo(info);
|
|
448
|
+
}
|
|
449
|
+
setChecking(false);
|
|
450
|
+
} catch (error2) {
|
|
451
|
+
setError(error2);
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
const registerAddress = async () => {
|
|
455
|
+
setProcessing(true);
|
|
456
|
+
setDone(false);
|
|
457
|
+
try {
|
|
458
|
+
if (rewardAddress) {
|
|
459
|
+
const tx = new Transaction({ initiator: wallet }).registerStake(rewardAddress).delegateStake(rewardAddress, poolId);
|
|
460
|
+
const unsignedTx = await tx.build();
|
|
461
|
+
const signedTx = await wallet.signTx(unsignedTx);
|
|
462
|
+
const txHash = await wallet.submitTx(signedTx);
|
|
463
|
+
if (onDelegated) {
|
|
464
|
+
onDelegated();
|
|
465
|
+
}
|
|
466
|
+
setDone(true);
|
|
467
|
+
}
|
|
468
|
+
} catch (error2) {
|
|
469
|
+
console.error("error", error2);
|
|
470
|
+
setError(error2);
|
|
471
|
+
}
|
|
472
|
+
setProcessing(false);
|
|
473
|
+
};
|
|
474
|
+
const delegateStake = async () => {
|
|
475
|
+
setProcessing(true);
|
|
476
|
+
setDone(false);
|
|
477
|
+
try {
|
|
478
|
+
if (rewardAddress) {
|
|
479
|
+
const tx = new Transaction({ initiator: wallet }).delegateStake(
|
|
480
|
+
rewardAddress,
|
|
481
|
+
poolId
|
|
482
|
+
);
|
|
483
|
+
const unsignedTx = await tx.build();
|
|
484
|
+
const signedTx = await wallet.signTx(unsignedTx);
|
|
485
|
+
const txHash = await wallet.submitTx(signedTx);
|
|
486
|
+
setDone(true);
|
|
487
|
+
}
|
|
488
|
+
} catch (error2) {
|
|
489
|
+
console.error("error", error2);
|
|
490
|
+
setError(error2);
|
|
491
|
+
}
|
|
492
|
+
setProcessing(false);
|
|
493
|
+
};
|
|
494
|
+
useEffect8(() => {
|
|
495
|
+
checkAccountStatus();
|
|
496
|
+
}, [rewardAddress]);
|
|
497
|
+
if (checking) {
|
|
498
|
+
return /* @__PURE__ */ jsx9("span", { children: "Checking..." });
|
|
499
|
+
}
|
|
500
|
+
if (processing) {
|
|
501
|
+
return /* @__PURE__ */ jsx9("span", { children: "Loading..." });
|
|
502
|
+
}
|
|
503
|
+
if (done) {
|
|
504
|
+
return /* @__PURE__ */ jsx9("span", { children: "Stake Delegated" });
|
|
505
|
+
}
|
|
506
|
+
if (accountInfo?.active) {
|
|
507
|
+
return accountInfo.poolId === poolId ? /* @__PURE__ */ jsx9("span", { children: "Stake Delegated" }) : (
|
|
508
|
+
// <span onClick={delegateStake}>Delegate Stake</span>
|
|
509
|
+
/* @__PURE__ */ jsx9("span", { onClick: registerAddress, children: "Begin Staking" })
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
return /* @__PURE__ */ jsx9("span", { onClick: registerAddress, children: "Begin Staking" });
|
|
513
|
+
};
|
|
514
|
+
export {
|
|
515
|
+
CardanoWallet,
|
|
516
|
+
MeshBadge,
|
|
517
|
+
MeshProvider,
|
|
518
|
+
StakeButton,
|
|
519
|
+
WalletContext,
|
|
520
|
+
useAddress,
|
|
521
|
+
useAssets,
|
|
522
|
+
useLovelace,
|
|
523
|
+
useNetwork,
|
|
524
|
+
useRewardAddress,
|
|
525
|
+
useWallet,
|
|
526
|
+
useWalletList,
|
|
527
|
+
useWalletSubmit
|
|
528
|
+
};
|
package/package.json
CHANGED
|
@@ -1,30 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshsdk/react",
|
|
3
|
-
"version": "1.6.
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
"version": "1.6.1",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./dist/index.cjs",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"type": "module",
|
|
7
9
|
"exports": {
|
|
8
10
|
"./styles.css": "./dist/index.css",
|
|
9
|
-
".":
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs",
|
|
14
|
+
"types": "./dist/index.d.ts"
|
|
15
|
+
}
|
|
10
16
|
},
|
|
11
|
-
"
|
|
17
|
+
"files": [
|
|
18
|
+
"dist/**"
|
|
19
|
+
],
|
|
12
20
|
"scripts": {
|
|
13
|
-
"build:mesh": "tailwindcss -i ./src/styles.css -o ./dist/index.css",
|
|
21
|
+
"build:mesh": "tsup src/index.ts --format esm,cjs --dts && tailwindcss -i ./src/styles.css -o ./dist/index.css",
|
|
14
22
|
"lint": "eslint",
|
|
15
|
-
"
|
|
23
|
+
"dev_old": "tailwindcss -i ./src/styles.css -o ./dist/index.css --watch",
|
|
24
|
+
"dev": "tsup src/index.ts --format esm,cjs --watch --dts",
|
|
16
25
|
"type-check": "tsc --noEmit",
|
|
17
26
|
"clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules",
|
|
18
27
|
"format": "prettier --check . --ignore-path ../../.gitignore"
|
|
19
28
|
},
|
|
20
|
-
"
|
|
29
|
+
"dependencies": {
|
|
21
30
|
"react": "^18.2.0",
|
|
22
|
-
"@meshsdk/
|
|
31
|
+
"@meshsdk/common": "*",
|
|
32
|
+
"@meshsdk/transaction": "*",
|
|
33
|
+
"@meshsdk/wallet": "*"
|
|
23
34
|
},
|
|
24
35
|
"devDependencies": {
|
|
25
|
-
"@meshsdk/eslint-config": "
|
|
26
|
-
"@meshsdk/tailwind-config": "
|
|
27
|
-
"@meshsdk/typescript-config": "
|
|
36
|
+
"@meshsdk/eslint-config": "*",
|
|
37
|
+
"@meshsdk/tailwind-config": "*",
|
|
38
|
+
"@meshsdk/typescript-config": "*",
|
|
28
39
|
"@types/react": "^18.2.61",
|
|
29
40
|
"autoprefixer": "^10.4.18",
|
|
30
41
|
"postcss": "^8.4.35",
|
|
@@ -32,5 +43,16 @@
|
|
|
32
43
|
"tailwindcss": "^3.4.1",
|
|
33
44
|
"typescript": "latest"
|
|
34
45
|
},
|
|
35
|
-
"prettier": "@meshsdk/prettier-config"
|
|
36
|
-
|
|
46
|
+
"prettier": "@meshsdk/prettier-config",
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
49
|
+
},
|
|
50
|
+
"license": "Apache-2.0",
|
|
51
|
+
"keywords": [
|
|
52
|
+
"cardano",
|
|
53
|
+
"ada",
|
|
54
|
+
"web3",
|
|
55
|
+
"blockchain",
|
|
56
|
+
"sdk"
|
|
57
|
+
]
|
|
58
|
+
}
|
package/.eslintrc.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @meshsdk/react@0.0.1 build:docs
|
|
3
|
-
> typedoc src/index.ts --json ../../apps/docs/src/data/mesh-react.json
|
|
4
|
-
|
|
5
|
-
[1G[0K[31m[91merror[0m[90m TS2209: [0mThe project root is ambiguous, but is required to resolve export map entry '.' in file '/Users/jingles/Documents/GitHub/mesh-v2/packages/mesh-react/package.json'. Supply the `rootDir` compiler option to disambiguate.
|
|
6
|
-
[39m
|
|
7
|
-
[31m[91m[error][0m Found 1 errors and 0 warnings[39m
|
|
8
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m Lifecycle script `build:docs` failed with error:
|
|
9
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m [94mcode[39m [33m3[39m
|
|
10
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m [94mpath[39m /Users/jingles/Documents/GitHub/mesh-v2/packages/mesh-react
|
|
11
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m [94mworkspace[39m @meshsdk/react@0.0.1
|
|
12
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m [94mlocation[39m /Users/jingles/Documents/GitHub/mesh-v2/packages/mesh-react
|
|
13
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m command failed
|
|
14
|
-
[1G[0K⠙[1G[0K[1mnpm[22m [31merror[39m [94mcommand[39m sh -c typedoc src/index.ts --json ../../apps/docs/src/data/mesh-react.json
|
|
15
|
-
[1G[0K⠙[1G[0K
|