@xyo-network/react-wallet 2.77.0 → 2.77.2
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/browser/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.cts +1 -0
- package/dist/browser/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.cts.map +1 -1
- package/dist/browser/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.mts +1 -0
- package/dist/browser/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.mts.map +1 -1
- package/dist/browser/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.ts +1 -0
- package/dist/browser/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.ts.map +1 -1
- package/dist/browser/contexts/Wallet/State.d.cts +0 -4
- package/dist/browser/contexts/Wallet/State.d.cts.map +1 -1
- package/dist/browser/contexts/Wallet/State.d.mts +0 -4
- package/dist/browser/contexts/Wallet/State.d.mts.map +1 -1
- package/dist/browser/contexts/Wallet/State.d.ts +0 -4
- package/dist/browser/contexts/Wallet/State.d.ts.map +1 -1
- package/dist/browser/contexts/Wallet/usePromise.d.cts +0 -3
- package/dist/browser/contexts/Wallet/usePromise.d.cts.map +1 -1
- package/dist/browser/contexts/Wallet/usePromise.d.mts +0 -3
- package/dist/browser/contexts/Wallet/usePromise.d.mts.map +1 -1
- package/dist/browser/contexts/Wallet/usePromise.d.ts +0 -3
- package/dist/browser/contexts/Wallet/usePromise.d.ts.map +1 -1
- package/dist/browser/index.cjs +1 -814
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +1 -802
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.cts +1 -0
- package/dist/neutral/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.cts.map +1 -1
- package/dist/neutral/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.mts +1 -0
- package/dist/neutral/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.mts.map +1 -1
- package/dist/neutral/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.ts +1 -0
- package/dist/neutral/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.ts.map +1 -1
- package/dist/neutral/contexts/Wallet/State.d.cts +0 -4
- package/dist/neutral/contexts/Wallet/State.d.cts.map +1 -1
- package/dist/neutral/contexts/Wallet/State.d.mts +0 -4
- package/dist/neutral/contexts/Wallet/State.d.mts.map +1 -1
- package/dist/neutral/contexts/Wallet/State.d.ts +0 -4
- package/dist/neutral/contexts/Wallet/State.d.ts.map +1 -1
- package/dist/neutral/contexts/Wallet/usePromise.d.cts +0 -3
- package/dist/neutral/contexts/Wallet/usePromise.d.cts.map +1 -1
- package/dist/neutral/contexts/Wallet/usePromise.d.mts +0 -3
- package/dist/neutral/contexts/Wallet/usePromise.d.mts.map +1 -1
- package/dist/neutral/contexts/Wallet/usePromise.d.ts +0 -3
- package/dist/neutral/contexts/Wallet/usePromise.d.ts.map +1 -1
- package/dist/neutral/index.cjs +1 -814
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +1 -802
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.cts +1 -0
- package/dist/node/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.cts.map +1 -1
- package/dist/node/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.mts +1 -0
- package/dist/node/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.mts.map +1 -1
- package/dist/node/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.ts +1 -0
- package/dist/node/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.d.ts.map +1 -1
- package/dist/node/contexts/Wallet/State.d.cts +0 -4
- package/dist/node/contexts/Wallet/State.d.cts.map +1 -1
- package/dist/node/contexts/Wallet/State.d.mts +0 -4
- package/dist/node/contexts/Wallet/State.d.mts.map +1 -1
- package/dist/node/contexts/Wallet/State.d.ts +0 -4
- package/dist/node/contexts/Wallet/State.d.ts.map +1 -1
- package/dist/node/contexts/Wallet/usePromise.d.cts +0 -3
- package/dist/node/contexts/Wallet/usePromise.d.cts.map +1 -1
- package/dist/node/contexts/Wallet/usePromise.d.mts +0 -3
- package/dist/node/contexts/Wallet/usePromise.d.mts.map +1 -1
- package/dist/node/contexts/Wallet/usePromise.d.ts +0 -3
- package/dist/node/contexts/Wallet/usePromise.d.ts.map +1 -1
- package/dist/node/index.cjs +1 -853
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +1 -807
- package/dist/node/index.js.map +1 -1
- package/package.json +7 -7
- package/src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx +4 -3
package/dist/neutral/index.cjs
CHANGED
|
@@ -1,815 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
DefaultSeedPhrase: () => DefaultSeedPhrase,
|
|
24
|
-
DialogActionButtons: () => DialogActionButtons,
|
|
25
|
-
InvalidPhraseTypography: () => InvalidPhraseTypography,
|
|
26
|
-
MaxAccountsTableRow: () => MaxAccountsTableRow,
|
|
27
|
-
NewPhraseTextField: () => NewPhraseTextField,
|
|
28
|
-
OverwriteWarning: () => OverwriteWarning,
|
|
29
|
-
PhraseDialogActions: () => PhraseDialogActions,
|
|
30
|
-
PhraseHeaderBox: () => PhraseHeaderBox,
|
|
31
|
-
SavedPhraseTextField: () => SavedPhraseTextField,
|
|
32
|
-
SeedPhraseContext: () => SeedPhraseContext,
|
|
33
|
-
SeedPhraseDialog: () => SeedPhraseDialog,
|
|
34
|
-
SeedPhraseDialogInner: () => SeedPhraseDialogInner,
|
|
35
|
-
SeedPhraseIconButton: () => SeedPhraseIconButton,
|
|
36
|
-
SeedPhraseProvider: () => SeedPhraseProvider,
|
|
37
|
-
SeedPhraseTableRow: () => SeedPhraseTableRow,
|
|
38
|
-
WalletAccountDetails: () => WalletAccountDetails,
|
|
39
|
-
WalletAccountSelect: () => WalletAccountSelect,
|
|
40
|
-
WalletAccountSelectBar: () => WalletAccountSelectBar,
|
|
41
|
-
WalletContext: () => WalletContext,
|
|
42
|
-
WalletProvider: () => WalletProvider,
|
|
43
|
-
colorParser: () => colorParser,
|
|
44
|
-
useAccount: () => useAccount,
|
|
45
|
-
useIndexedWalletFromContext: () => useIndexedWalletFromContext,
|
|
46
|
-
useRootWallet: () => useRootWallet,
|
|
47
|
-
useSeedPhrase: () => useSeedPhrase,
|
|
48
|
-
useSelectedWalletAccount: () => useSelectedWalletAccount,
|
|
49
|
-
useWallet: () => useWallet,
|
|
50
|
-
useWalletContext: () => useWalletContext,
|
|
51
|
-
useWalletProvided: () => useWalletProvided,
|
|
52
|
-
useWallets: () => useWallets,
|
|
53
|
-
useWrapperAccount: () => useWrapperAccount
|
|
54
|
-
});
|
|
55
|
-
module.exports = __toCommonJS(src_exports);
|
|
56
|
-
|
|
57
|
-
// src/components/MaxAccounts/MaxAccountsTableRow.tsx
|
|
58
|
-
var import_material2 = require("@mui/material");
|
|
59
|
-
var import_react_button = require("@xylabs/react-button");
|
|
60
|
-
var import_react = require("react");
|
|
61
|
-
|
|
62
|
-
// src/components/MaxAccounts/OutOfBoundsSnackBar.tsx
|
|
63
|
-
var import_material = require("@mui/material");
|
|
64
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
65
|
-
var OutOfBoundsSnackBar = ({
|
|
66
|
-
activeAccountIndex,
|
|
67
|
-
desiredMaximumAccounts,
|
|
68
|
-
setShowSnackBar,
|
|
69
|
-
showSnackBar
|
|
70
|
-
}) => {
|
|
71
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
72
|
-
import_material.Snackbar,
|
|
73
|
-
{
|
|
74
|
-
anchorOrigin: { horizontal: "center", vertical: "top" },
|
|
75
|
-
autoHideDuration: 5e3,
|
|
76
|
-
onClose: () => setShowSnackBar?.(false),
|
|
77
|
-
open: showSnackBar,
|
|
78
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_material.Alert, { severity: "error", onClose: () => setShowSnackBar?.(false), children: [
|
|
79
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.AlertTitle, { children: "Maximum Accounts Error" }),
|
|
80
|
-
"Your currently selected account number (",
|
|
81
|
-
activeAccountIndex === void 0 ? "" : activeAccountIndex + 1,
|
|
82
|
-
") cannot be greater than the desired Maximum Accounts (",
|
|
83
|
-
desiredMaximumAccounts,
|
|
84
|
-
")."
|
|
85
|
-
] })
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
// src/components/MaxAccounts/MaxAccountsTableRow.tsx
|
|
91
|
-
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
92
|
-
var MaxAccountsTableRow = ({ activeAccountIndex, changeMaxAccounts, maxAccounts }) => {
|
|
93
|
-
const [desiredMaximumAccounts, setDesiredMaximumAccounts] = (0, import_react.useState)();
|
|
94
|
-
const [showSnackBar, setShowSnackBar] = (0, import_react.useState)(false);
|
|
95
|
-
const handleChangeMaxAccounts = (change) => {
|
|
96
|
-
if (maxAccounts !== void 0 && activeAccountIndex !== void 0) {
|
|
97
|
-
switch (change) {
|
|
98
|
-
case "decrease": {
|
|
99
|
-
const desiredMaximumAccounts2 = maxAccounts - 1;
|
|
100
|
-
const validMaximumAccounts = desiredMaximumAccounts2 > 0;
|
|
101
|
-
const maxAccountsWithinRange = activeAccountIndex + 1 <= desiredMaximumAccounts2;
|
|
102
|
-
if (validMaximumAccounts && maxAccountsWithinRange) {
|
|
103
|
-
changeMaxAccounts?.(desiredMaximumAccounts2);
|
|
104
|
-
}
|
|
105
|
-
if (!maxAccountsWithinRange)
|
|
106
|
-
setShowSnackBar(true);
|
|
107
|
-
setDesiredMaximumAccounts(desiredMaximumAccounts2);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
case "increase": {
|
|
111
|
-
changeMaxAccounts?.(maxAccounts + 1);
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
default: {
|
|
115
|
-
console.error(change, "is not a recognized value");
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
} else {
|
|
119
|
-
throw new Error("Max Accounts is unset and needs a default");
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_material2.TableRow, { children: [
|
|
123
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.TableCell, { children: "Maximum Accounts" }),
|
|
124
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.TableCell, { align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.Typography, { variant: "caption", children: maxAccounts }) }),
|
|
125
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_material2.TableCell, { align: "center", children: [
|
|
126
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_material2.ButtonGroup, { children: [
|
|
127
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_button.ButtonEx, { onClick: () => handleChangeMaxAccounts("decrease"), variant: "contained", size: "small", children: "-" }),
|
|
128
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_button.ButtonEx, { onClick: () => handleChangeMaxAccounts("increase"), variant: "contained", size: "small", children: "+" })
|
|
129
|
-
] }),
|
|
130
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
131
|
-
OutOfBoundsSnackBar,
|
|
132
|
-
{
|
|
133
|
-
desiredMaximumAccounts,
|
|
134
|
-
activeAccountIndex,
|
|
135
|
-
setShowSnackBar,
|
|
136
|
-
showSnackBar
|
|
137
|
-
}
|
|
138
|
-
)
|
|
139
|
-
] })
|
|
140
|
-
] });
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
// src/components/SeedPhrase/_shared/SeedPhraseIconButton.tsx
|
|
144
|
-
var import_icons_material = require("@mui/icons-material");
|
|
145
|
-
var import_material3 = require("@mui/material");
|
|
146
|
-
var import_react2 = require("react");
|
|
147
|
-
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
148
|
-
var SeedPhraseIconButton = (props) => {
|
|
149
|
-
const [open, setOpen] = (0, import_react2.useState)(false);
|
|
150
|
-
const onClose = () => setOpen(false);
|
|
151
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
152
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.IconButton, { onClick: () => setOpen(true), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_icons_material.HelpOutline, { fontSize: "small" }) }),
|
|
153
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material3.Dialog, { open, children: [
|
|
154
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.DialogTitle, { children: "Understanding your Seed Phrase" }),
|
|
155
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material3.DialogContent, { children: [
|
|
156
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material3.Typography, { children: [
|
|
157
|
-
"Your Seed Phrase should adhere to the",
|
|
158
|
-
" ",
|
|
159
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Link, { target: "_blank", href: "https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki", children: "bip39 specification" }),
|
|
160
|
-
" ",
|
|
161
|
-
"and is used to generate accounts which identify your data on the XYO Network."
|
|
162
|
-
] }),
|
|
163
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material3.List, { children: [
|
|
164
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.ListItem, { children: "Do not share this phrase with anyone." }),
|
|
165
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.ListItem, { children: "Do not save it to a public computer." }),
|
|
166
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.ListItem, { children: "Do not use a existing phrase from another wallet (i.e. Metamask)." }),
|
|
167
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.ListItem, { children: "Do not use before copying it down somewhere safe." })
|
|
168
|
-
] })
|
|
169
|
-
] }),
|
|
170
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.DialogActions, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Button, { onClick: onClose, variant: "outlined", children: "OK" }) })
|
|
171
|
-
] })
|
|
172
|
-
] });
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
// src/components/SeedPhrase/DefaultSeedPhrase.tsx
|
|
176
|
-
var import_material4 = require("@mui/material");
|
|
177
|
-
var import_bip39 = require("@scure/bip39");
|
|
178
|
-
var import_english = require("@scure/bip39/wordlists/english");
|
|
179
|
-
var import_react3 = require("react");
|
|
180
|
-
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
181
|
-
var DefaultSeedPhrase = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {
|
|
182
|
-
const [showSnackBar, setShowSnackBar] = (0, import_react3.useState)(false);
|
|
183
|
-
(0, import_react3.useEffect)(() => {
|
|
184
|
-
if (!seedPhrase) {
|
|
185
|
-
const mnemonic = (0, import_bip39.generateMnemonic)(import_english.wordlist, 256);
|
|
186
|
-
changeSeedPhrase?.(mnemonic);
|
|
187
|
-
setShowSnackBar(true);
|
|
188
|
-
}
|
|
189
|
-
}, [changeSeedPhrase, seedPhrase]);
|
|
190
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
191
|
-
hideDefaultSeedPhraseMessage ? null : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
192
|
-
import_material4.Snackbar,
|
|
193
|
-
{
|
|
194
|
-
open: showSnackBar,
|
|
195
|
-
autoHideDuration: 5e3,
|
|
196
|
-
onClose: () => setShowSnackBar(false),
|
|
197
|
-
anchorOrigin: { horizontal: "center", vertical: "top" },
|
|
198
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_material4.Alert, { severity: "success", children: [
|
|
199
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material4.AlertTitle, { children: "Default Seed Phrase Generated" }),
|
|
200
|
-
"Go to application settings to save it."
|
|
201
|
-
] })
|
|
202
|
-
}
|
|
203
|
-
),
|
|
204
|
-
children
|
|
205
|
-
] });
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
// src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx
|
|
209
|
-
var import_material5 = require("@mui/material");
|
|
210
|
-
|
|
211
|
-
// src/contexts/SeedPhrase/Context.ts
|
|
212
|
-
var import_react_shared = require("@xyo-network/react-shared");
|
|
213
|
-
var SeedPhraseContext = (0, import_react_shared.createContextEx)();
|
|
214
|
-
|
|
215
|
-
// src/contexts/SeedPhrase/Provider.tsx
|
|
216
|
-
var import_bip392 = require("@scure/bip39");
|
|
217
|
-
var import_english2 = require("@scure/bip39/wordlists/english");
|
|
218
|
-
var import_react4 = require("react");
|
|
219
|
-
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
220
|
-
var validate = (passedPhrase) => {
|
|
221
|
-
if (!passedPhrase) {
|
|
222
|
-
return null;
|
|
223
|
-
}
|
|
224
|
-
return (0, import_bip392.validateMnemonic)(passedPhrase, import_english2.wordlist);
|
|
225
|
-
};
|
|
226
|
-
var SeedPhraseProvider = ({
|
|
227
|
-
children,
|
|
228
|
-
defaultPhrase,
|
|
229
|
-
handleChangeSeedPhrase,
|
|
230
|
-
saveCallback,
|
|
231
|
-
seedPhrase,
|
|
232
|
-
open
|
|
233
|
-
}) => {
|
|
234
|
-
const [phrase, setPhrase] = (0, import_react4.useState)();
|
|
235
|
-
const [overwriteWarning, setOverwriteWarning] = (0, import_react4.useState)(false);
|
|
236
|
-
(0, import_react4.useEffect)(() => {
|
|
237
|
-
setPhrase(defaultPhrase);
|
|
238
|
-
}, [defaultPhrase]);
|
|
239
|
-
(0, import_react4.useEffect)(() => {
|
|
240
|
-
if (seedPhrase || open) {
|
|
241
|
-
setPhrase?.(seedPhrase ?? "");
|
|
242
|
-
}
|
|
243
|
-
}, [seedPhrase, open, setPhrase]);
|
|
244
|
-
const handleGenerate = (0, import_react4.useCallback)(() => {
|
|
245
|
-
const mnemonic = (0, import_bip392.generateMnemonic)(import_english2.wordlist, 256);
|
|
246
|
-
setPhrase?.(mnemonic);
|
|
247
|
-
setOverwriteWarning?.(false);
|
|
248
|
-
}, []);
|
|
249
|
-
const handleCancelOverwrite = (0, import_react4.useCallback)(() => {
|
|
250
|
-
setOverwriteWarning?.(false);
|
|
251
|
-
}, []);
|
|
252
|
-
const handleClear = (0, import_react4.useCallback)(() => {
|
|
253
|
-
setPhrase?.("");
|
|
254
|
-
setOverwriteWarning?.(false);
|
|
255
|
-
}, []);
|
|
256
|
-
const handleSave = (0, import_react4.useCallback)(() => {
|
|
257
|
-
if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {
|
|
258
|
-
setOverwriteWarning?.(true);
|
|
259
|
-
} else {
|
|
260
|
-
handleChangeSeedPhrase?.(phrase ?? "");
|
|
261
|
-
saveCallback?.();
|
|
262
|
-
}
|
|
263
|
-
}, [handleChangeSeedPhrase, overwriteWarning, phrase, saveCallback, seedPhrase]);
|
|
264
|
-
(0, import_react4.useEffect)(() => {
|
|
265
|
-
if (!open) {
|
|
266
|
-
handleCancelOverwrite();
|
|
267
|
-
}
|
|
268
|
-
}, [handleCancelOverwrite, open]);
|
|
269
|
-
const validSeedPhrase = (0, import_react4.useMemo)(() => validate?.(seedPhrase), [seedPhrase]);
|
|
270
|
-
const validPhrase = (0, import_react4.useMemo)(() => validate?.(phrase), [phrase]);
|
|
271
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
272
|
-
SeedPhraseContext.Provider,
|
|
273
|
-
{
|
|
274
|
-
value: {
|
|
275
|
-
handleCancelOverwrite,
|
|
276
|
-
handleChangeSeedPhrase,
|
|
277
|
-
handleClear,
|
|
278
|
-
handleGenerate,
|
|
279
|
-
handleSave,
|
|
280
|
-
overwriteWarning,
|
|
281
|
-
phrase,
|
|
282
|
-
provided: true,
|
|
283
|
-
seedPhrase,
|
|
284
|
-
setOverwriteWarning,
|
|
285
|
-
setPhrase,
|
|
286
|
-
validPhrase,
|
|
287
|
-
validSeedPhrase,
|
|
288
|
-
validate
|
|
289
|
-
},
|
|
290
|
-
children
|
|
291
|
-
}
|
|
292
|
-
);
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
// src/contexts/SeedPhrase/use.tsx
|
|
296
|
-
var import_react_shared2 = require("@xyo-network/react-shared");
|
|
297
|
-
var useSeedPhrase = () => (0, import_react_shared2.useContextEx)(SeedPhraseContext, "SeedPhrase", true);
|
|
298
|
-
|
|
299
|
-
// src/contexts/Wallet/Context.ts
|
|
300
|
-
var import_react_shared3 = require("@xyo-network/react-shared");
|
|
301
|
-
var WalletContext = (0, import_react_shared3.createContextEx)();
|
|
302
|
-
|
|
303
|
-
// src/contexts/Wallet/Provider.tsx
|
|
304
|
-
var import_react_promise = require("@xylabs/react-promise");
|
|
305
|
-
var import_react5 = require("react");
|
|
306
|
-
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
307
|
-
var WalletProvider = ({
|
|
308
|
-
children,
|
|
309
|
-
defaultActiveAccountIndex = 0,
|
|
310
|
-
rootWallet = null,
|
|
311
|
-
...props
|
|
312
|
-
}) => {
|
|
313
|
-
const [activeAccountIndex, setActiveAccountIndex] = (0, import_react5.useState)(defaultActiveAccountIndex);
|
|
314
|
-
(0, import_react5.useEffect)(() => {
|
|
315
|
-
if (defaultActiveAccountIndex !== void 0) {
|
|
316
|
-
setActiveAccountIndex(defaultActiveAccountIndex);
|
|
317
|
-
}
|
|
318
|
-
}, [defaultActiveAccountIndex]);
|
|
319
|
-
const [activeAccount = null] = (0, import_react_promise.usePromise)(async () => await rootWallet?.derivePath(activeAccountIndex.toString()), [activeAccountIndex, rootWallet]);
|
|
320
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
321
|
-
WalletContext.Provider,
|
|
322
|
-
{
|
|
323
|
-
value: {
|
|
324
|
-
activeAccount,
|
|
325
|
-
activeAccountIndex,
|
|
326
|
-
provided: true,
|
|
327
|
-
rootWallet,
|
|
328
|
-
setActiveAccountIndex
|
|
329
|
-
},
|
|
330
|
-
...props,
|
|
331
|
-
children
|
|
332
|
-
}
|
|
333
|
-
);
|
|
334
|
-
};
|
|
335
|
-
|
|
336
|
-
// src/contexts/Wallet/use.ts
|
|
337
|
-
var import_react_promise2 = require("@xylabs/react-promise");
|
|
338
|
-
var import_react_shared4 = require("@xyo-network/react-shared");
|
|
339
|
-
var useWalletContext = (required = true) => {
|
|
340
|
-
return (0, import_react_shared4.useContextEx)(WalletContext, "Wallet", required);
|
|
341
|
-
};
|
|
342
|
-
var useWalletProvided = () => {
|
|
343
|
-
return (0, import_react_shared4.useProvided)(WalletContext);
|
|
344
|
-
};
|
|
345
|
-
var useRootWallet = (required = true) => {
|
|
346
|
-
const { rootWallet } = useWalletContext(required);
|
|
347
|
-
return [rootWallet, void 0];
|
|
348
|
-
};
|
|
349
|
-
var useIndexedWalletFromContext = (index, required = true) => {
|
|
350
|
-
const { rootWallet } = useWalletContext(required);
|
|
351
|
-
const [wallet] = (0, import_react_promise2.usePromise)(async () => await rootWallet?.derivePath(index.toString()) ?? rootWallet, [rootWallet, index]);
|
|
352
|
-
return [wallet, void 0];
|
|
353
|
-
};
|
|
354
|
-
var useSelectedWalletAccount = (required = true) => {
|
|
355
|
-
const { activeAccountIndex } = useWalletContext(required);
|
|
356
|
-
const [account] = useIndexedWalletFromContext(activeAccountIndex ?? 0, required);
|
|
357
|
-
return activeAccountIndex === void 0 && account === null ? [null, void 0] : [account, void 0];
|
|
358
|
-
};
|
|
359
|
-
|
|
360
|
-
// src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx
|
|
361
|
-
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
362
|
-
var DialogActionButtons = ({ onClose, ...props }) => {
|
|
363
|
-
const { handleSave, setPhrase } = useSeedPhrase();
|
|
364
|
-
const wrappedOnClose = (e) => {
|
|
365
|
-
setPhrase?.("");
|
|
366
|
-
onClose?.(e, "escapeKeyDown");
|
|
367
|
-
};
|
|
368
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_material5.DialogActions, { ...props, children: [
|
|
369
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_material5.Button, { variant: "outlined", onClick: wrappedOnClose, children: "Cancel" }),
|
|
370
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_material5.Button, { variant: "outlined", onClick: handleSave, children: "Save" })
|
|
371
|
-
] });
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
// src/components/SeedPhrase/dialog/components/fields/NewPhraseTextField.tsx
|
|
375
|
-
var import_material7 = require("@mui/material");
|
|
376
|
-
|
|
377
|
-
// src/components/SeedPhrase/dialog/components/fields/validation-messages/colorParser.ts
|
|
378
|
-
var colorParser = (conditional) => {
|
|
379
|
-
switch (conditional) {
|
|
380
|
-
case true: {
|
|
381
|
-
return "success";
|
|
382
|
-
}
|
|
383
|
-
case false: {
|
|
384
|
-
return "error";
|
|
385
|
-
}
|
|
386
|
-
default: {
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
|
|
392
|
-
// src/components/SeedPhrase/dialog/components/fields/validation-messages/InvalidPhrase.tsx
|
|
393
|
-
var import_material6 = require("@mui/material");
|
|
394
|
-
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
395
|
-
var InvalidPhraseTypography = (props) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_material6.Typography, { variant: "caption", color: "error", ...props, children: [
|
|
396
|
-
"Invalid seed phrase. See -",
|
|
397
|
-
" ",
|
|
398
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_material6.Link, { target: "_blank", href: "https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki", children: "bip39 Proposal" })
|
|
399
|
-
] });
|
|
400
|
-
|
|
401
|
-
// src/components/SeedPhrase/dialog/components/fields/validation-messages/PhraseHeaderBox.tsx
|
|
402
|
-
var import_icons_material2 = require("@mui/icons-material");
|
|
403
|
-
var import_react_flexbox = require("@xylabs/react-flexbox");
|
|
404
|
-
var import_react6 = require("react");
|
|
405
|
-
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
406
|
-
var PhraseHeaderBox = ({ children, conditional, ...props }) => {
|
|
407
|
-
const state = (0, import_react6.useMemo)(() => {
|
|
408
|
-
switch (conditional) {
|
|
409
|
-
case true: {
|
|
410
|
-
return "success";
|
|
411
|
-
}
|
|
412
|
-
case false: {
|
|
413
|
-
return "error";
|
|
414
|
-
}
|
|
415
|
-
default: {
|
|
416
|
-
return null;
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
}, [conditional]);
|
|
420
|
-
const Icon = (0, import_react6.useMemo)(() => {
|
|
421
|
-
switch (state) {
|
|
422
|
-
case "success": {
|
|
423
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons_material2.CheckCircleOutline, { fontSize: "small", color: "success" });
|
|
424
|
-
}
|
|
425
|
-
case "error": {
|
|
426
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons_material2.HighlightOff, { fontSize: "small", color: "error" });
|
|
427
|
-
}
|
|
428
|
-
default: {
|
|
429
|
-
return null;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}, [state]);
|
|
433
|
-
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_react_flexbox.FlexRow, { justifyContent: "start", columnGap: 1, ...props, children: [
|
|
434
|
-
Icon,
|
|
435
|
-
children
|
|
436
|
-
] });
|
|
437
|
-
};
|
|
438
|
-
|
|
439
|
-
// src/components/SeedPhrase/dialog/components/fields/NewPhraseTextField.tsx
|
|
440
|
-
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
441
|
-
var NewPhraseTextField = ({ children, disableColor, ...props }) => {
|
|
442
|
-
const { phrase, setPhrase, validPhrase } = useSeedPhrase();
|
|
443
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_material7.FormControl, { fullWidth: true, size: "small", sx: { display: "flex", flexDirection: "column", rowGap: 1 }, children: [
|
|
444
|
-
children,
|
|
445
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
446
|
-
import_material7.TextField,
|
|
447
|
-
{
|
|
448
|
-
focused: true,
|
|
449
|
-
color: disableColor ? void 0 : colorParser(validPhrase),
|
|
450
|
-
error: validPhrase === false,
|
|
451
|
-
helperText: validPhrase === false ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(InvalidPhraseTypography, {}) : null,
|
|
452
|
-
fullWidth: true,
|
|
453
|
-
maxRows: Number.POSITIVE_INFINITY,
|
|
454
|
-
multiline: true,
|
|
455
|
-
onChange: (e) => setPhrase?.(e.target.value),
|
|
456
|
-
value: phrase,
|
|
457
|
-
...props
|
|
458
|
-
}
|
|
459
|
-
)
|
|
460
|
-
] }) });
|
|
461
|
-
};
|
|
462
|
-
|
|
463
|
-
// src/components/SeedPhrase/dialog/components/fields/PhraseDialogActions.tsx
|
|
464
|
-
var import_material8 = require("@mui/material");
|
|
465
|
-
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
466
|
-
var PhraseDialogActions = () => {
|
|
467
|
-
const { handleClear, handleGenerate, overwriteWarning } = useSeedPhrase();
|
|
468
|
-
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_material8.DialogActions, { sx: { justifyContent: "center" }, children: [
|
|
469
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material8.Button, { disabled: overwriteWarning, variant: "outlined", onClick: handleGenerate, children: "Generate" }),
|
|
470
|
-
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material8.Button, { variant: "outlined", onClick: handleClear, children: "Clear" })
|
|
471
|
-
] });
|
|
472
|
-
};
|
|
473
|
-
|
|
474
|
-
// src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx
|
|
475
|
-
var import_material9 = require("@mui/material");
|
|
476
|
-
var import_react7 = require("react");
|
|
477
|
-
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
478
|
-
var SavedPhraseTextField = ({ showPhraseHeader, ...props }) => {
|
|
479
|
-
const { validSeedPhrase, seedPhrase } = useSeedPhrase();
|
|
480
|
-
const [visible, setVisible] = (0, import_react7.useState)(false);
|
|
481
|
-
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_material9.FormControl, { fullWidth: true, size: "small", sx: { display: "flex", flexDirection: "column", rowGap: 1 }, children: [
|
|
482
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_material9.Chip, { label: visible ? "Hide Saved Seed Phrase" : "Reveal Saved Seed Phrase", onClick: () => setVisible(!visible) }),
|
|
483
|
-
visible ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
484
|
-
showPhraseHeader ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_material9.FormLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(PhraseHeaderBox, { conditional: validSeedPhrase, children: "Saved Seed Phrase" }) }) : null,
|
|
485
|
-
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
486
|
-
import_material9.TextField,
|
|
487
|
-
{
|
|
488
|
-
defaultValue: seedPhrase,
|
|
489
|
-
disabled: true,
|
|
490
|
-
error: validSeedPhrase === false,
|
|
491
|
-
helperText: validSeedPhrase === false ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(InvalidPhraseTypography, {}) : null,
|
|
492
|
-
fullWidth: true,
|
|
493
|
-
maxRows: Number.POSITIVE_INFINITY,
|
|
494
|
-
multiline: true,
|
|
495
|
-
...props
|
|
496
|
-
}
|
|
497
|
-
)
|
|
498
|
-
] }) : null
|
|
499
|
-
] });
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
// src/components/SeedPhrase/dialog/components/OverwriteWarning.tsx
|
|
503
|
-
var import_material10 = require("@mui/material");
|
|
504
|
-
var import_react_flexbox2 = require("@xylabs/react-flexbox");
|
|
505
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
506
|
-
var OverwriteWarning = () => {
|
|
507
|
-
const { handleCancelOverwrite, handleSave } = useSeedPhrase();
|
|
508
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
509
|
-
import_material10.Alert,
|
|
510
|
-
{
|
|
511
|
-
variant: "outlined",
|
|
512
|
-
severity: "warning",
|
|
513
|
-
action: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_react_flexbox2.FlexRow, { sx: { columnGap: 1 }, children: [
|
|
514
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material10.Button, { variant: "outlined", color: "inherit", size: "small", onClick: handleSave, children: "Overwrite" }),
|
|
515
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material10.Button, { variant: "outlined", color: "inherit", size: "small", onClick: handleCancelOverwrite, children: "Cancel" })
|
|
516
|
-
] }),
|
|
517
|
-
children: "Are you sure you want to overwrite existing seed phrase? This action cannot be undone."
|
|
518
|
-
}
|
|
519
|
-
);
|
|
520
|
-
};
|
|
521
|
-
|
|
522
|
-
// src/components/SeedPhrase/dialog/SeedPhraseDialog.tsx
|
|
523
|
-
var import_material11 = require("@mui/material");
|
|
524
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
525
|
-
var SeedPhraseDialog = ({ changeSeedPhrase, seedPhrase, ...props }) => {
|
|
526
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
527
|
-
SeedPhraseProvider,
|
|
528
|
-
{
|
|
529
|
-
seedPhrase,
|
|
530
|
-
handleChangeSeedPhrase: changeSeedPhrase,
|
|
531
|
-
open: props.open,
|
|
532
|
-
saveCallback: () => props.onClose?.({}, "escapeKeyDown"),
|
|
533
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SeedPhraseDialogInner, { ...props })
|
|
534
|
-
}
|
|
535
|
-
);
|
|
536
|
-
};
|
|
537
|
-
var SeedPhraseDialogInner = (props) => {
|
|
538
|
-
const { overwriteWarning, seedPhrase, validPhrase } = useSeedPhrase();
|
|
539
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_material11.Dialog, { "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description", fullWidth: true, maxWidth: "sm", ...props, children: [
|
|
540
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_material11.DialogTitle, { id: "alert-dialog-title", children: [
|
|
541
|
-
"Update Your Seed Phrase ",
|
|
542
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SeedPhraseIconButton, {})
|
|
543
|
-
] }),
|
|
544
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_material11.DialogContent, { sx: { display: "flex", flexDirection: "column", rowGap: 2 }, children: [
|
|
545
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(NewPhraseTextField, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_material11.FormLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(PhraseHeaderBox, { conditional: validPhrase, children: "New Seed Phrase" }) }) }),
|
|
546
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(PhraseDialogActions, {}),
|
|
547
|
-
seedPhrase ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SavedPhraseTextField, {}) : null,
|
|
548
|
-
overwriteWarning ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(OverwriteWarning, {}) : null
|
|
549
|
-
] }),
|
|
550
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(DialogActionButtons, { onClose: props.onClose })
|
|
551
|
-
] });
|
|
552
|
-
};
|
|
553
|
-
|
|
554
|
-
// src/components/SeedPhrase/settings/SeedPhraseTableRow.tsx
|
|
555
|
-
var import_icons_material3 = require("@mui/icons-material");
|
|
556
|
-
var import_material12 = require("@mui/material");
|
|
557
|
-
var import_react8 = require("react");
|
|
558
|
-
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
559
|
-
var SeedPhraseTableRow = ({ changeSeedPhrase, seedPhrase, ...props }) => {
|
|
560
|
-
const [open, setOpen] = (0, import_react8.useState)(false);
|
|
561
|
-
const handleOpen = () => {
|
|
562
|
-
setOpen(true);
|
|
563
|
-
};
|
|
564
|
-
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material12.TableRow, { ...props, children: [
|
|
565
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material12.TableCell, { children: [
|
|
566
|
-
"Seed Phrase ",
|
|
567
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SeedPhraseIconButton, {})
|
|
568
|
-
] }),
|
|
569
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material12.TableCell, { align: "center", children: seedPhrase ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons_material3.RadioButtonChecked, { color: "success" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons_material3.Cancel, { color: "error" }) }),
|
|
570
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_material12.TableCell, { children: [
|
|
571
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SeedPhraseDialog, { changeSeedPhrase, open, onClose: () => setOpen(false), seedPhrase }),
|
|
572
|
-
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material12.ButtonGroup, { fullWidth: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material12.Button, { variant: "contained", size: "small", onClick: handleOpen, children: "Update" }) })
|
|
573
|
-
] })
|
|
574
|
-
] });
|
|
575
|
-
};
|
|
576
|
-
|
|
577
|
-
// src/components/WalletAccountDetails/WalletAccountDetails.tsx
|
|
578
|
-
var import_eth_address = require("@xylabs/eth-address");
|
|
579
|
-
var import_react_crypto = require("@xylabs/react-crypto");
|
|
580
|
-
var import_react_flexbox3 = require("@xylabs/react-flexbox");
|
|
581
|
-
var import_react_number_status = require("@xylabs/react-number-status");
|
|
582
|
-
var import_react_network = require("@xyo-network/react-network");
|
|
583
|
-
|
|
584
|
-
// src/hooks/useAccount.ts
|
|
585
|
-
var import_react_promise3 = require("@xylabs/react-promise");
|
|
586
|
-
var import_react9 = require("react");
|
|
587
|
-
var useAccount = ({ wallet, account, index, required = false } = {}) => {
|
|
588
|
-
const walletContextProvided = useWalletProvided();
|
|
589
|
-
const [validationError, setValidationError] = (0, import_react9.useState)();
|
|
590
|
-
if (wallet && account && !validationError) {
|
|
591
|
-
setValidationError(new Error("useAccount can not have both a wallet and an account in the parameters"));
|
|
592
|
-
}
|
|
593
|
-
if (index && account && !validationError) {
|
|
594
|
-
setValidationError(new Error("useAccount can not have both a index and an account in the parameters"));
|
|
595
|
-
}
|
|
596
|
-
const [error, setError] = (0, import_react9.useState)();
|
|
597
|
-
const [rootWallet] = useRootWallet(!wallet && required);
|
|
598
|
-
const { activeAccountIndex } = useWalletContext(false);
|
|
599
|
-
const [activeAccount] = (0, import_react_promise3.usePromise)(async () => {
|
|
600
|
-
try {
|
|
601
|
-
if (!validationError) {
|
|
602
|
-
if (wallet) {
|
|
603
|
-
return await wallet?.derivePath?.(`${index ?? 0}'\0`);
|
|
604
|
-
} else if (rootWallet) {
|
|
605
|
-
return await rootWallet?.derivePath?.(`${index ?? activeAccountIndex ?? 0}'\0`);
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
} catch (ex) {
|
|
609
|
-
const error2 = ex;
|
|
610
|
-
console.error(error2.message);
|
|
611
|
-
setError(error2);
|
|
612
|
-
}
|
|
613
|
-
}, [index, wallet, rootWallet, activeAccountIndex, validationError]);
|
|
614
|
-
if (validationError && !error) {
|
|
615
|
-
console.error(validationError.message);
|
|
616
|
-
setError(validationError);
|
|
617
|
-
}
|
|
618
|
-
return [
|
|
619
|
-
error ? void 0 : account ?? activeAccount ?? walletContextProvided ? null : void 0,
|
|
620
|
-
error
|
|
621
|
-
];
|
|
622
|
-
};
|
|
623
|
-
|
|
624
|
-
// src/hooks/useWallet.ts
|
|
625
|
-
var import_react_promise4 = require("@xylabs/react-promise");
|
|
626
|
-
var import_account = require("@xyo-network/account");
|
|
627
|
-
var import_react10 = require("react");
|
|
628
|
-
var useWallet = ({ mnemonic, wallet, path, required = false, seed } = {}) => {
|
|
629
|
-
const walletContextProvided = useWalletContext(false);
|
|
630
|
-
const [error, setError] = (0, import_react10.useState)();
|
|
631
|
-
const [contextAccount] = useSelectedWalletAccount(!wallet && required);
|
|
632
|
-
const [activeAccount] = (0, import_react_promise4.usePromise)(async () => {
|
|
633
|
-
try {
|
|
634
|
-
const newAccount = await (() => {
|
|
635
|
-
if (wallet) {
|
|
636
|
-
return wallet;
|
|
637
|
-
} else if (mnemonic) {
|
|
638
|
-
return import_account.HDWallet.fromPhrase(mnemonic);
|
|
639
|
-
} else if (seed) {
|
|
640
|
-
return import_account.HDWallet.fromSeed(seed);
|
|
641
|
-
}
|
|
642
|
-
return contextAccount;
|
|
643
|
-
})();
|
|
644
|
-
return path ? newAccount?.derivePath?.(path) : newAccount ?? wallet;
|
|
645
|
-
} catch (ex) {
|
|
646
|
-
setError(ex);
|
|
647
|
-
}
|
|
648
|
-
}, [mnemonic, contextAccount, seed, path, wallet]);
|
|
649
|
-
return [activeAccount ?? (walletContextProvided ? null : activeAccount), error];
|
|
650
|
-
};
|
|
651
|
-
|
|
652
|
-
// src/hooks/useWallets.ts
|
|
653
|
-
var import_react_promise5 = require("@xylabs/react-promise");
|
|
654
|
-
var useWallets = ({ wallet, paths }) => {
|
|
655
|
-
const walletContextProvided = useWalletContext(false);
|
|
656
|
-
const [foundWallet] = useWallet({ wallet });
|
|
657
|
-
const [wallets, error] = (0, import_react_promise5.usePromise)(
|
|
658
|
-
async () => foundWallet ? await Promise.all(paths.map((path) => foundWallet.derivePath(path))) : void 0,
|
|
659
|
-
[foundWallet, paths]
|
|
660
|
-
);
|
|
661
|
-
return [wallets ?? (walletContextProvided ? null : wallets), error];
|
|
662
|
-
};
|
|
663
|
-
|
|
664
|
-
// src/hooks/useWrapperAccount.ts
|
|
665
|
-
var import_react_promise6 = require("@xylabs/react-promise");
|
|
666
|
-
var import_account2 = require("@xyo-network/account");
|
|
667
|
-
var import_async_mutex = require("async-mutex");
|
|
668
|
-
var globalWrapperWallet;
|
|
669
|
-
var globalWrapperWalletMutex = new import_async_mutex.Mutex();
|
|
670
|
-
var useWrapperAccount = (account) => {
|
|
671
|
-
return (0, import_react_promise6.usePromise)(async () => {
|
|
672
|
-
return await globalWrapperWalletMutex.runExclusive(async () => {
|
|
673
|
-
if (account !== void 0) {
|
|
674
|
-
return account;
|
|
675
|
-
}
|
|
676
|
-
if (globalWrapperWallet) {
|
|
677
|
-
return globalWrapperWallet;
|
|
678
|
-
}
|
|
679
|
-
try {
|
|
680
|
-
globalWrapperWallet = await import_account2.HDWallet.random();
|
|
681
|
-
console.log(`Global Wrapper Wallet Creation Success: ${globalWrapperWallet.address}`);
|
|
682
|
-
} catch (ex) {
|
|
683
|
-
const error = ex;
|
|
684
|
-
console.error(`Global Wrapper Wallet Creation Failed: ${error.message}`);
|
|
685
|
-
}
|
|
686
|
-
return globalWrapperWallet;
|
|
687
|
-
});
|
|
688
|
-
}, [account]);
|
|
689
|
-
};
|
|
690
|
-
|
|
691
|
-
// src/components/WalletAccountDetails/WalletAccountDetails.tsx
|
|
692
|
-
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
693
|
-
var WalletAccountDetails = ({ exploreUrl = "https://explore.xyo.network", account, ...props }) => {
|
|
694
|
-
const [accountToUse] = useAccount({ account });
|
|
695
|
-
const { network } = (0, import_react_network.useNetwork)();
|
|
696
|
-
const exploreAddressUrl = `${exploreUrl}/recent?account=${accountToUse?.address}&network=${network?.name ?? "main"}`;
|
|
697
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_react_flexbox3.FlexCol, { ...props, children: [
|
|
698
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_crypto.EthAccountButton, { address: import_eth_address.EthAddress.fromString(accountToUse?.address) }),
|
|
699
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_react_flexbox3.FlexRow, { gap: 1, children: [
|
|
700
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_number_status.NumberStatus, { rounded: true, title: "Tokens", value: 0, to: `${exploreAddressUrl}&schema=network.xyo.account.tokens`, target: "_blank" }),
|
|
701
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_number_status.NumberStatus, { rounded: true, title: "NFTs", value: 0, to: `${exploreAddressUrl}&schema=network.xyo.account.nfts`, target: "_blank" }),
|
|
702
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_number_status.NumberStatus, { rounded: true, title: "Signatures", value: 0, to: `${exploreAddressUrl}&schema=network.xyo.account.signatures`, target: "_blank" }),
|
|
703
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_number_status.NumberStatus, { rounded: true, title: "Signins", value: 0, to: `${exploreAddressUrl}&schema=network.xyo.account.signins`, target: "_blank" })
|
|
704
|
-
] })
|
|
705
|
-
] });
|
|
706
|
-
};
|
|
707
|
-
|
|
708
|
-
// src/components/WalletAccountSelect/Select.tsx
|
|
709
|
-
var import_material13 = require("@mui/material");
|
|
710
|
-
var import_react_select = require("@xylabs/react-select");
|
|
711
|
-
var import_react_address_render = require("@xyo-network/react-address-render");
|
|
712
|
-
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
713
|
-
var arrayRange = (length, start = 0) => {
|
|
714
|
-
return [...Array.from({ length }).keys()].map((x) => x + start);
|
|
715
|
-
};
|
|
716
|
-
var WalletAccountSelect = ({
|
|
717
|
-
addressNames = {},
|
|
718
|
-
iconOnly,
|
|
719
|
-
iconSize = 24,
|
|
720
|
-
icons,
|
|
721
|
-
maxAccounts = 1,
|
|
722
|
-
showFavorite = false,
|
|
723
|
-
size,
|
|
724
|
-
variant = "outlined",
|
|
725
|
-
...props
|
|
726
|
-
}) => {
|
|
727
|
-
const { activeAccountIndex = 0, setActiveAccountIndex, rootWallet } = useWalletContext();
|
|
728
|
-
const disabled = !rootWallet || activeAccountIndex === void 0;
|
|
729
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children: rootWallet ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
730
|
-
import_react_select.SelectEx,
|
|
731
|
-
{
|
|
732
|
-
margin: "dense",
|
|
733
|
-
disabled,
|
|
734
|
-
renderValue: (selectedAccountIndex) => {
|
|
735
|
-
const Item = () => {
|
|
736
|
-
const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: rootWallet });
|
|
737
|
-
const customName = selectedAccount ? addressNames[selectedAccount.address] : void 0;
|
|
738
|
-
const favorite = !!selectedAccount && selectedAccount.address in addressNames;
|
|
739
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_material13.MenuItem, { value: selectedAccountIndex, sx: { minHeight: 0, paddingBottom: 0, paddingTop: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
740
|
-
import_react_address_render.AddressRenderRowBox,
|
|
741
|
-
{
|
|
742
|
-
disableSharedRef: true,
|
|
743
|
-
flexGrow: 1,
|
|
744
|
-
address: selectedAccount?.address,
|
|
745
|
-
iconOnly,
|
|
746
|
-
iconSize,
|
|
747
|
-
icons,
|
|
748
|
-
name: customName,
|
|
749
|
-
favorite,
|
|
750
|
-
showFavorite
|
|
751
|
-
}
|
|
752
|
-
) });
|
|
753
|
-
};
|
|
754
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Item, {});
|
|
755
|
-
},
|
|
756
|
-
value: activeAccountIndex,
|
|
757
|
-
onChange: (event) => setActiveAccountIndex?.(Number.parseInt(`${event.target.value}`)),
|
|
758
|
-
size,
|
|
759
|
-
variant,
|
|
760
|
-
...props,
|
|
761
|
-
children: arrayRange(maxAccounts).map((index) => {
|
|
762
|
-
const Item = () => {
|
|
763
|
-
const [account] = useWallet({ path: index.toString(), wallet: rootWallet });
|
|
764
|
-
const customName = account ? addressNames[account.address] : void 0;
|
|
765
|
-
const favorite = !!account && account.address in addressNames;
|
|
766
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_material13.MenuItem, { value: index, sx: { minHeight: 0, paddingBottom: 0, paddingTop: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
767
|
-
import_react_address_render.AddressRenderRowBox,
|
|
768
|
-
{
|
|
769
|
-
disableSharedRef: true,
|
|
770
|
-
flexGrow: 1,
|
|
771
|
-
address: account?.address,
|
|
772
|
-
favorite,
|
|
773
|
-
iconOnly,
|
|
774
|
-
iconSize,
|
|
775
|
-
icons,
|
|
776
|
-
name: customName,
|
|
777
|
-
showFavorite
|
|
778
|
-
}
|
|
779
|
-
) }, account?.address);
|
|
780
|
-
};
|
|
781
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Item, {}, index);
|
|
782
|
-
})
|
|
783
|
-
}
|
|
784
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_material13.CircularProgress, { size: 24 }) });
|
|
785
|
-
};
|
|
786
|
-
|
|
787
|
-
// src/components/WalletAccountSelect/SelectBar.tsx
|
|
788
|
-
var import_react_flexbox4 = require("@xylabs/react-flexbox");
|
|
789
|
-
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
790
|
-
var WalletAccountSelectBar = ({
|
|
791
|
-
addressNames = {},
|
|
792
|
-
iconOnly,
|
|
793
|
-
iconSize,
|
|
794
|
-
icons,
|
|
795
|
-
maxAccounts = 1,
|
|
796
|
-
showFavorite = false,
|
|
797
|
-
size = "small",
|
|
798
|
-
...props
|
|
799
|
-
}) => {
|
|
800
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_flexbox4.FlexCol, { alignItems: "stretch", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
801
|
-
WalletAccountSelect,
|
|
802
|
-
{
|
|
803
|
-
addressNames,
|
|
804
|
-
fullWidth: true,
|
|
805
|
-
showFavorite,
|
|
806
|
-
iconSize,
|
|
807
|
-
iconOnly,
|
|
808
|
-
icons,
|
|
809
|
-
maxAccounts,
|
|
810
|
-
size: size ?? "small",
|
|
811
|
-
variant: "outlined"
|
|
812
|
-
}
|
|
813
|
-
) });
|
|
814
|
-
};
|
|
1
|
+
"use strict";var de=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var dt=Object.getOwnPropertyNames;var ut=Object.prototype.hasOwnProperty;var mt=(e,t)=>{for(var o in t)de(e,o,{get:t[o],enumerable:!0})},pt=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of dt(t))!ut.call(e,n)&&n!==o&&de(e,n,{get:()=>t[n],enumerable:!(r=ct(t,n))||r.enumerable});return e};var ft=e=>pt(de({},"__esModule",{value:!0}),e);var At={};mt(At,{DefaultSeedPhrase:()=>xt,DialogActionButtons:()=>ge,InvalidPhraseTypography:()=>$,MaxAccountsTableRow:()=>ht,NewPhraseTextField:()=>be,OverwriteWarning:()=>Ae,PhraseDialogActions:()=>we,PhraseHeaderBox:()=>U,SavedPhraseTextField:()=>We,SeedPhraseContext:()=>N,SeedPhraseDialog:()=>Be,SeedPhraseDialogInner:()=>Xe,SeedPhraseIconButton:()=>z,SeedPhraseProvider:()=>he,SeedPhraseTableRow:()=>St,WalletAccountDetails:()=>bt,WalletAccountSelect:()=>Fe,WalletAccountSelectBar:()=>Wt,WalletContext:()=>D,WalletProvider:()=>Pt,colorParser:()=>ve,useAccount:()=>ke,useIndexedWalletFromContext:()=>Ve,useRootWallet:()=>Pe,useSeedPhrase:()=>S,useSelectedWalletAccount:()=>Se,useWallet:()=>O,useWalletContext:()=>g,useWalletProvided:()=>xe,useWallets:()=>gt,useWrapperAccount:()=>Ct});module.exports=ft(At);var W=require("@mui/material"),ue=require("@xylabs/react-button"),me=require("react");var F=require("@mui/material"),H=require("react/jsx-runtime"),De=({activeAccountIndex:e,desiredMaximumAccounts:t,setShowSnackBar:o,showSnackBar:r})=>(0,H.jsx)(F.Snackbar,{anchorOrigin:{horizontal:"center",vertical:"top"},autoHideDuration:5e3,onClose:()=>o?.(!1),open:r,children:(0,H.jsxs)(F.Alert,{severity:"error",onClose:()=>o?.(!1),children:[(0,H.jsx)(F.AlertTitle,{children:"Maximum Accounts Error"}),"Your currently selected account number (",e===void 0?"":e+1,") cannot be greater than the desired Maximum Accounts (",t,")."]})});var b=require("react/jsx-runtime"),ht=({activeAccountIndex:e,changeMaxAccounts:t,maxAccounts:o})=>{let[r,n]=(0,me.useState)(),[a,s]=(0,me.useState)(!1),c=p=>{if(o!==void 0&&e!==void 0)switch(p){case"decrease":{let i=o-1,h=i>0,x=e+1<=i;h&&x&&t?.(i),x||s(!0),n(i);return}case"increase":{t?.(o+1);return}default:console.error(p,"is not a recognized value")}else throw new Error("Max Accounts is unset and needs a default")};return(0,b.jsxs)(W.TableRow,{children:[(0,b.jsx)(W.TableCell,{children:"Maximum Accounts"}),(0,b.jsx)(W.TableCell,{align:"center",children:(0,b.jsx)(W.Typography,{variant:"caption",children:o})}),(0,b.jsxs)(W.TableCell,{align:"center",children:[(0,b.jsxs)(W.ButtonGroup,{children:[(0,b.jsx)(ue.ButtonEx,{onClick:()=>c("decrease"),variant:"contained",size:"small",children:"-"}),(0,b.jsx)(ue.ButtonEx,{onClick:()=>c("increase"),variant:"contained",size:"small",children:"+"})]}),(0,b.jsx)(De,{desiredMaximumAccounts:r,activeAccountIndex:e,setShowSnackBar:s,showSnackBar:a})]})]})};var Ee=require("@mui/icons-material"),l=require("@mui/material"),Oe=require("react"),d=require("react/jsx-runtime"),z=e=>{let[t,o]=(0,Oe.useState)(!1),r=()=>o(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.IconButton,{onClick:()=>o(!0),...e,children:(0,d.jsx)(Ee.HelpOutline,{fontSize:"small"})}),(0,d.jsxs)(l.Dialog,{open:t,children:[(0,d.jsx)(l.DialogTitle,{children:"Understanding your Seed Phrase"}),(0,d.jsxs)(l.DialogContent,{children:[(0,d.jsxs)(l.Typography,{children:["Your Seed Phrase should adhere to the"," ",(0,d.jsx)(l.Link,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 specification"})," ","and is used to generate accounts which identify your data on the XYO Network."]}),(0,d.jsxs)(l.List,{children:[(0,d.jsx)(l.ListItem,{children:"Do not share this phrase with anyone."}),(0,d.jsx)(l.ListItem,{children:"Do not save it to a public computer."}),(0,d.jsx)(l.ListItem,{children:"Do not use a existing phrase from another wallet (i.e. Metamask)."}),(0,d.jsx)(l.ListItem,{children:"Do not use before copying it down somewhere safe."})]})]}),(0,d.jsx)(l.DialogActions,{children:(0,d.jsx)(l.Button,{onClick:r,variant:"outlined",children:"OK"})})]})]})};var R=require("@mui/material"),Me=require("@scure/bip39"),He=require("@scure/bip39/wordlists/english"),Z=require("react"),I=require("react/jsx-runtime"),xt=({changeSeedPhrase:e,children:t,hideDefaultSeedPhraseMessage:o,seedPhrase:r})=>{let[n,a]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{if(!r){let s=(0,Me.generateMnemonic)(He.wordlist,256);e?.(s),a(!0)}},[e,r]),(0,I.jsxs)(I.Fragment,{children:[o?null:(0,I.jsx)(R.Snackbar,{open:n,autoHideDuration:5e3,onClose:()=>a(!1),anchorOrigin:{horizontal:"center",vertical:"top"},children:(0,I.jsxs)(R.Alert,{severity:"success",children:[(0,I.jsx)(R.AlertTitle,{children:"Default Seed Phrase Generated"}),"Go to application settings to save it."]})}),t]})};var G=require("@mui/material");var ze=require("@xyo-network/react-shared"),N=(0,ze.createContextEx)();var j=require("@scure/bip39"),fe=require("@scure/bip39/wordlists/english"),u=require("react");var Ne=require("react/jsx-runtime"),pe=e=>e?(0,j.validateMnemonic)(e,fe.wordlist):null,he=({children:e,defaultPhrase:t,handleChangeSeedPhrase:o,saveCallback:r,seedPhrase:n,open:a})=>{let[s,c]=(0,u.useState)(),[p,i]=(0,u.useState)(!1);(0,u.useEffect)(()=>{c(t)},[t]),(0,u.useEffect)(()=>{(n||a)&&c?.(n??"")},[n,a,c]);let h=(0,u.useCallback)(()=>{let M=(0,j.generateMnemonic)(fe.wordlist,256);c?.(M),i?.(!1)},[]),x=(0,u.useCallback)(()=>{i?.(!1)},[]),Q=(0,u.useCallback)(()=>{c?.(""),i?.(!1)},[]),P=(0,u.useCallback)(()=>{!p&&n&&n!==s?i?.(!0):(o?.(s??""),r?.())},[o,p,s,r,n]);(0,u.useEffect)(()=>{a||x()},[x,a]);let ie=(0,u.useMemo)(()=>pe?.(n),[n]),f=(0,u.useMemo)(()=>pe?.(s),[s]);return(0,Ne.jsx)(N.Provider,{value:{handleCancelOverwrite:x,handleChangeSeedPhrase:o,handleClear:Q,handleGenerate:h,handleSave:P,overwriteWarning:p,phrase:s,provided:!0,seedPhrase:n,setOverwriteWarning:i,setPhrase:c,validPhrase:f,validSeedPhrase:ie,validate:pe},children:e})};var Ge=require("@xyo-network/react-shared");var S=()=>(0,Ge.useContextEx)(N,"SeedPhrase",!0);var Le=require("@xyo-network/react-shared"),D=(0,Le.createContextEx)();var $e=require("@xylabs/react-promise"),ee=require("react");var _e=require("react/jsx-runtime"),Pt=({children:e,defaultActiveAccountIndex:t=0,rootWallet:o=null,...r})=>{let[n,a]=(0,ee.useState)(t);(0,ee.useEffect)(()=>{t!==void 0&&a(t)},[t]);let[s=null]=(0,$e.usePromise)(async()=>await o?.derivePath(n.toString()),[n,o]);return(0,_e.jsx)(D.Provider,{value:{activeAccount:s,activeAccountIndex:n,provided:!0,rootWallet:o,setActiveAccountIndex:a},...r,children:e})};var Ue=require("@xylabs/react-promise"),te=require("@xyo-network/react-shared");var g=(e=!0)=>(0,te.useContextEx)(D,"Wallet",e),xe=()=>(0,te.useProvided)(D),Pe=(e=!0)=>{let{rootWallet:t}=g(e);return[t,void 0]},Ve=(e,t=!0)=>{let{rootWallet:o}=g(t),[r]=(0,Ue.usePromise)(async()=>await o?.derivePath(e.toString())??o,[o,e]);return[r,void 0]},Se=(e=!0)=>{let{activeAccountIndex:t}=g(e),[o]=Ve(t??0,e);return t===void 0&&o===null?[null,void 0]:[o,void 0]};var L=require("react/jsx-runtime"),ge=({onClose:e,...t})=>{let{handleSave:o,setPhrase:r}=S();return(0,L.jsxs)(G.DialogActions,{...t,children:[(0,L.jsx)(G.Button,{variant:"outlined",onClick:a=>{r?.(""),e?.(a,"escapeKeyDown")},children:"Cancel"}),(0,L.jsx)(G.Button,{variant:"outlined",onClick:o,children:"Save"})]})};var ae=require("@mui/material");var ve=e=>{switch(e){case!0:return"success";case!1:return"error";default:return}};var oe=require("@mui/material"),re=require("react/jsx-runtime"),$=e=>(0,re.jsxs)(oe.Typography,{variant:"caption",color:"error",...e,children:["Invalid seed phrase. See -"," ",(0,re.jsx)(oe.Link,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 Proposal"})]});var ne=require("@mui/icons-material"),Ye=require("@xylabs/react-flexbox"),Ce=require("react"),_=require("react/jsx-runtime"),U=({children:e,conditional:t,...o})=>{let r=(0,Ce.useMemo)(()=>{switch(t){case!0:return"success";case!1:return"error";default:return null}},[t]),n=(0,Ce.useMemo)(()=>{switch(r){case"success":return(0,_.jsx)(ne.CheckCircleOutline,{fontSize:"small",color:"success"});case"error":return(0,_.jsx)(ne.HighlightOff,{fontSize:"small",color:"error"});default:return null}},[r]);return(0,_.jsxs)(Ye.FlexRow,{justifyContent:"start",columnGap:1,...o,children:[n,e]})};var k=require("react/jsx-runtime"),be=({children:e,disableColor:t,...o})=>{let{phrase:r,setPhrase:n,validPhrase:a}=S();return(0,k.jsx)(k.Fragment,{children:(0,k.jsxs)(ae.FormControl,{fullWidth:!0,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[e,(0,k.jsx)(ae.TextField,{focused:!0,color:t?void 0:ve(a),error:a===!1,helperText:a===!1?(0,k.jsx)($,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,onChange:s=>n?.(s.target.value),value:r,...o})]})})};var V=require("@mui/material");var Y=require("react/jsx-runtime"),we=()=>{let{handleClear:e,handleGenerate:t,overwriteWarning:o}=S();return(0,Y.jsxs)(V.DialogActions,{sx:{justifyContent:"center"},children:[(0,Y.jsx)(V.Button,{disabled:o,variant:"outlined",onClick:t,children:"Generate"}),(0,Y.jsx)(V.Button,{variant:"outlined",onClick:e,children:"Clear"})]})};var y=require("@mui/material"),Ke=require("react");var w=require("react/jsx-runtime"),We=({fullWidth:e,showPhraseHeader:t,...o})=>{let{validSeedPhrase:r,seedPhrase:n}=S(),[a,s]=(0,Ke.useState)(!1);return(0,w.jsxs)(y.FormControl,{fullWidth:e,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[(0,w.jsx)(y.Chip,{label:a?"Hide Saved Seed Phrase":"Reveal Saved Seed Phrase",onClick:()=>s(!a),sx:{alignSelf:"center"}}),a?(0,w.jsxs)(w.Fragment,{children:[t?(0,w.jsx)(y.FormLabel,{children:(0,w.jsx)(U,{conditional:r,children:"Saved Seed Phrase"})}):null,(0,w.jsx)(y.TextField,{defaultValue:n,disabled:!0,error:r===!1,helperText:r===!1?(0,w.jsx)($,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,...o})]}):null]})};var K=require("@mui/material"),qe=require("@xylabs/react-flexbox");var E=require("react/jsx-runtime"),Ae=()=>{let{handleCancelOverwrite:e,handleSave:t}=S();return(0,E.jsx)(K.Alert,{variant:"outlined",severity:"warning",action:(0,E.jsxs)(qe.FlexRow,{sx:{columnGap:1},children:[(0,E.jsx)(K.Button,{variant:"outlined",color:"inherit",size:"small",onClick:t,children:"Overwrite"}),(0,E.jsx)(K.Button,{variant:"outlined",color:"inherit",size:"small",onClick:e,children:"Cancel"})]}),children:"Are you sure you want to overwrite existing seed phrase? This action cannot be undone."})};var T=require("@mui/material");var m=require("react/jsx-runtime"),Be=({changeSeedPhrase:e,seedPhrase:t,...o})=>(0,m.jsx)(he,{seedPhrase:t,handleChangeSeedPhrase:e,open:o.open,saveCallback:()=>o.onClose?.({},"escapeKeyDown"),children:(0,m.jsx)(Xe,{...o})}),Xe=e=>{let{overwriteWarning:t,seedPhrase:o,validPhrase:r}=S();return(0,m.jsxs)(T.Dialog,{"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",fullWidth:!0,maxWidth:"sm",...e,children:[(0,m.jsxs)(T.DialogTitle,{id:"alert-dialog-title",children:["Update Your Seed Phrase ",(0,m.jsx)(z,{})]}),(0,m.jsxs)(T.DialogContent,{sx:{display:"flex",flexDirection:"column",rowGap:2},children:[(0,m.jsx)(be,{children:(0,m.jsx)(T.FormLabel,{children:(0,m.jsx)(U,{conditional:r,children:"New Seed Phrase"})})}),(0,m.jsx)(we,{}),o?(0,m.jsx)(We,{}):null,t?(0,m.jsx)(Ae,{}):null]}),(0,m.jsx)(ge,{onClose:e.onClose})]})};var se=require("@mui/icons-material"),A=require("@mui/material"),Je=require("react");var v=require("react/jsx-runtime"),St=({changeSeedPhrase:e,seedPhrase:t,...o})=>{let[r,n]=(0,Je.useState)(!1);return(0,v.jsxs)(A.TableRow,{...o,children:[(0,v.jsxs)(A.TableCell,{children:["Seed Phrase ",(0,v.jsx)(z,{})]}),(0,v.jsx)(A.TableCell,{align:"center",children:t?(0,v.jsx)(se.RadioButtonChecked,{color:"success"}):(0,v.jsx)(se.Cancel,{color:"error"})}),(0,v.jsxs)(A.TableCell,{children:[(0,v.jsx)(Be,{changeSeedPhrase:e,open:r,onClose:()=>n(!1),seedPhrase:t}),(0,v.jsx)(A.ButtonGroup,{fullWidth:!0,children:(0,v.jsx)(A.Button,{variant:"contained",size:"small",onClick:()=>{n(!0)},children:"Update"})})]})]})};var nt=require("@xylabs/eth-address"),at=require("@xylabs/react-crypto"),le=require("@xylabs/react-flexbox"),X=require("@xylabs/react-number-status"),st=require("@xyo-network/react-network");var Qe=require("@xylabs/react-promise"),Ie=require("react");var ke=({wallet:e,account:t,index:o,required:r=!1}={})=>{let n=xe(),[a,s]=(0,Ie.useState)();e&&t&&!a&&s(new Error("useAccount can not have both a wallet and an account in the parameters")),o&&t&&!a&&s(new Error("useAccount can not have both a index and an account in the parameters"));let[c,p]=(0,Ie.useState)(),[i]=Pe(!e&&r),{activeAccountIndex:h}=g(!1),[x]=(0,Qe.usePromise)(async()=>{try{if(!a){if(e)return await e?.derivePath?.(`${o??0}'\0`);if(i)return await i?.derivePath?.(`${o??h??0}'\0`)}}catch(Q){let P=Q;console.error(P.message),p(P)}},[o,e,i,h,a]);return a&&!c&&(console.error(a.message),p(a)),[c?void 0:t??x??n?null:void 0,c]};var Ze=require("@xylabs/react-promise"),ye=require("@xyo-network/account"),je=require("react");var O=({mnemonic:e,wallet:t,path:o,required:r=!1,seed:n}={})=>{let a=g(!1),[s,c]=(0,je.useState)(),[p]=Se(!t&&r),[i]=(0,Ze.usePromise)(async()=>{try{let h=await(t||(e?ye.HDWallet.fromPhrase(e):n?ye.HDWallet.fromSeed(n):p));return o?h?.derivePath?.(o):h??t}catch(h){c(h)}},[e,p,n,o,t]);return[i??(a?null:i),s]};var et=require("@xylabs/react-promise");var gt=({wallet:e,paths:t})=>{let o=g(!1),[r]=O({wallet:e}),[n,a]=(0,et.usePromise)(async()=>r?await Promise.all(t.map(s=>r.derivePath(s))):void 0,[r,t]);return[n??(o?null:n),a]};var tt=require("@xylabs/react-promise"),ot=require("@xyo-network/account"),rt=require("async-mutex"),q,vt=new rt.Mutex,Ct=e=>(0,tt.usePromise)(async()=>await vt.runExclusive(async()=>{if(e!==void 0)return e;if(q)return q;try{q=await ot.HDWallet.random(),console.log(`Global Wrapper Wallet Creation Success: ${q.address}`)}catch(t){console.error(`Global Wrapper Wallet Creation Failed: ${t.message}`)}return q}),[e]);var B=require("react/jsx-runtime"),bt=({exploreUrl:e="https://explore.xyo.network",account:t,...o})=>{let[r]=ke({account:t}),{network:n}=(0,st.useNetwork)(),a=`${e}/recent?account=${r?.address}&network=${n?.name??"main"}`;return(0,B.jsxs)(le.FlexCol,{...o,children:[(0,B.jsx)(at.EthAccountButton,{address:nt.EthAddress.fromString(r?.address)}),(0,B.jsxs)(le.FlexRow,{gap:1,children:[(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Tokens",value:0,to:`${a}&schema=network.xyo.account.tokens`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"NFTs",value:0,to:`${a}&schema=network.xyo.account.nfts`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Signatures",value:0,to:`${a}&schema=network.xyo.account.signatures`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Signins",value:0,to:`${a}&schema=network.xyo.account.signins`,target:"_blank"})]})]})};var J=require("@mui/material"),lt=require("@xylabs/react-select"),Te=require("@xyo-network/react-address-render");var C=require("react/jsx-runtime"),wt=(e,t=0)=>[...Array.from({length:e}).keys()].map(o=>o+t),Fe=({addressNames:e={},iconOnly:t,iconSize:o=24,icons:r,maxAccounts:n=1,showFavorite:a=!1,size:s,variant:c="outlined",...p})=>{let{activeAccountIndex:i=0,setActiveAccountIndex:h,rootWallet:x}=g();return(0,C.jsx)(C.Fragment,{children:x?(0,C.jsx)(lt.SelectEx,{margin:"dense",disabled:!x||i===void 0,renderValue:P=>(0,C.jsx)(()=>{let[f]=O({path:P.toString(),wallet:x}),M=f?e[f.address]:void 0,ce=!!f&&f.address in e;return(0,C.jsx)(J.MenuItem,{value:P,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:(0,C.jsx)(Te.AddressRenderRowBox,{disableSharedRef:!0,flexGrow:1,address:f?.address,iconOnly:t,iconSize:o,icons:r,name:M,favorite:ce,showFavorite:a})})},{}),value:i,onChange:P=>h?.(Number.parseInt(`${P.target.value}`)),size:s,variant:c,...p,children:wt(n).map(P=>(0,C.jsx)(()=>{let[f]=O({path:P.toString(),wallet:x}),M=f?e[f.address]:void 0,ce=!!f&&f.address in e;return(0,C.jsx)(J.MenuItem,{value:P,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:(0,C.jsx)(Te.AddressRenderRowBox,{disableSharedRef:!0,flexGrow:1,address:f?.address,favorite:ce,iconOnly:t,iconSize:o,icons:r,name:M,showFavorite:a})},f?.address)},{},P))}):(0,C.jsx)(J.CircularProgress,{size:24})})};var it=require("@xylabs/react-flexbox");var Re=require("react/jsx-runtime"),Wt=({addressNames:e={},iconOnly:t,iconSize:o,icons:r,maxAccounts:n=1,showFavorite:a=!1,size:s="small",...c})=>(0,Re.jsx)(it.FlexCol,{alignItems:"stretch",...c,children:(0,Re.jsx)(Fe,{addressNames:e,fullWidth:!0,showFavorite:a,iconSize:o,iconOnly:t,icons:r,maxAccounts:n,size:s??"small",variant:"outlined"})});
|
|
815
2
|
//# sourceMappingURL=index.cjs.map
|