@xyo-network/react-connected-accounts 2.77.0 → 2.77.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/dist/browser/classes/EnabledWallets.d.cts +0 -9
  2. package/dist/browser/classes/EnabledWallets.d.cts.map +1 -1
  3. package/dist/browser/classes/EnabledWallets.d.mts +0 -9
  4. package/dist/browser/classes/EnabledWallets.d.mts.map +1 -1
  5. package/dist/browser/classes/EnabledWallets.d.ts +0 -9
  6. package/dist/browser/classes/EnabledWallets.d.ts.map +1 -1
  7. package/dist/browser/hooks/useEnabledWallets.d.cts +0 -6
  8. package/dist/browser/hooks/useEnabledWallets.d.cts.map +1 -1
  9. package/dist/browser/hooks/useEnabledWallets.d.mts +0 -6
  10. package/dist/browser/hooks/useEnabledWallets.d.mts.map +1 -1
  11. package/dist/browser/hooks/useEnabledWallets.d.ts +0 -6
  12. package/dist/browser/hooks/useEnabledWallets.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +1 -577
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.js +1 -544
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/neutral/classes/EnabledWallets.d.cts +0 -9
  18. package/dist/neutral/classes/EnabledWallets.d.cts.map +1 -1
  19. package/dist/neutral/classes/EnabledWallets.d.mts +0 -9
  20. package/dist/neutral/classes/EnabledWallets.d.mts.map +1 -1
  21. package/dist/neutral/classes/EnabledWallets.d.ts +0 -9
  22. package/dist/neutral/classes/EnabledWallets.d.ts.map +1 -1
  23. package/dist/neutral/hooks/useEnabledWallets.d.cts +0 -6
  24. package/dist/neutral/hooks/useEnabledWallets.d.cts.map +1 -1
  25. package/dist/neutral/hooks/useEnabledWallets.d.mts +0 -6
  26. package/dist/neutral/hooks/useEnabledWallets.d.mts.map +1 -1
  27. package/dist/neutral/hooks/useEnabledWallets.d.ts +0 -6
  28. package/dist/neutral/hooks/useEnabledWallets.d.ts.map +1 -1
  29. package/dist/neutral/index.cjs +1 -577
  30. package/dist/neutral/index.cjs.map +1 -1
  31. package/dist/neutral/index.js +1 -544
  32. package/dist/neutral/index.js.map +1 -1
  33. package/dist/node/classes/EnabledWallets.d.cts +0 -9
  34. package/dist/node/classes/EnabledWallets.d.cts.map +1 -1
  35. package/dist/node/classes/EnabledWallets.d.mts +0 -9
  36. package/dist/node/classes/EnabledWallets.d.mts.map +1 -1
  37. package/dist/node/classes/EnabledWallets.d.ts +0 -9
  38. package/dist/node/classes/EnabledWallets.d.ts.map +1 -1
  39. package/dist/node/hooks/useEnabledWallets.d.cts +0 -6
  40. package/dist/node/hooks/useEnabledWallets.d.cts.map +1 -1
  41. package/dist/node/hooks/useEnabledWallets.d.mts +0 -6
  42. package/dist/node/hooks/useEnabledWallets.d.mts.map +1 -1
  43. package/dist/node/hooks/useEnabledWallets.d.ts +0 -6
  44. package/dist/node/hooks/useEnabledWallets.d.ts.map +1 -1
  45. package/dist/node/index.cjs +1 -608
  46. package/dist/node/index.cjs.map +1 -1
  47. package/dist/node/index.js +1 -555
  48. package/dist/node/index.js.map +1 -1
  49. package/package.json +4 -4
@@ -1,578 +1,2 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var src_exports = {};
32
- __export(src_exports, {
33
- CheckboxFormControl: () => CheckboxFormControl,
34
- ConnectWalletDialog: () => ConnectWalletDialog,
35
- ConnectedAccountsFlexbox: () => ConnectedAccountsFlexbox,
36
- ConnectedWalletState: () => ConnectedWalletState,
37
- ConnectedWalletTableCells: () => ConnectedWalletTableCells,
38
- ConnectedWalletsAccountsTableCell: () => ConnectedWalletsAccountsTableCell,
39
- ConnectedWalletsActionsTableCell: () => ConnectedWalletsActionsTableCell,
40
- ConnectedWalletsChainNameTableCell: () => ConnectedWalletsChainNameTableCell,
41
- ConnectedWalletsTable: () => ConnectedWalletsTable,
42
- ConnectedWalletsWalletTableCell: () => ConnectedWalletsWalletTableCell,
43
- EnabledEthWalletConnections: () => EnabledEthWalletConnections,
44
- RevokeWalletConnectionDialog: () => RevokeWalletConnectionDialog,
45
- WalletConnectionsTableRow: () => WalletConnectionsTableRow,
46
- useActiveProviderDialogState: () => useActiveProviderDialogState,
47
- useDetectedWallets: () => useDetectedWallets,
48
- useEnabledWallets: () => useEnabledWallets,
49
- useEnabledWalletsInner: () => useEnabledWalletsInner
50
- });
51
- module.exports = __toCommonJS(src_exports);
52
-
53
- // src/classes/EnabledWallets.ts
54
- var DEFAULT_LOCAL_STORAGE_KEY = "XYO|EnabledWallets";
55
- var EnabledEthWalletConnections = class {
56
- // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)
57
- persistPreferences = true;
58
- // Map of wallet names and their enabled/disabled state
59
- enabledWallets = {};
60
- // Map of wallet names, their enabled/disabled state, and their wallet class
61
- ethWalletsState = {};
62
- // list of listeners that want to be notified on wallet changes
63
- listeners = [];
64
- // key to use in localStorage when persisting preferences
65
- localStorageKey = DEFAULT_LOCAL_STORAGE_KEY;
66
- constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {
67
- this.localStorageKey = localStorageKey;
68
- this.reviveSettings();
69
- }
70
- get wallets() {
71
- return this.ethWalletsState;
72
- }
73
- disableWallet(rdns) {
74
- this.toggleEnabledWallet(rdns, false);
75
- }
76
- enableWallet(rdns) {
77
- this.toggleEnabledWallet(rdns, true);
78
- }
79
- /**
80
- * Given a new set of wallets, set their enabled state based off previous preferences
81
- */
82
- resetWallets(wallets) {
83
- const newWallets = {};
84
- const addWallet = ([walletName, wallet]) => {
85
- newWallets[walletName] = {
86
- // preserve the existing enabled state
87
- enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,
88
- wallet
89
- };
90
- };
91
- Object.entries(wallets).forEach(addWallet.bind(this));
92
- this.ethWalletsState = newWallets;
93
- this.emitChange();
94
- }
95
- subscribe(listener) {
96
- this.listeners = [...this.listeners, listener];
97
- return () => {
98
- this.listeners = this.listeners.filter((existingListener) => existingListener !== listener);
99
- };
100
- }
101
- toggleEnabledWallet(rdns, enabled) {
102
- if (rdns && this.ethWalletsState[rdns]) {
103
- this.ethWalletsState[rdns].enabled = enabled;
104
- this.ethWalletsState = { ...this.ethWalletsState };
105
- this.emitChange();
106
- }
107
- }
108
- emitChange() {
109
- for (const listener of this.listeners) {
110
- listener();
111
- }
112
- this.persistSettings();
113
- }
114
- isPersistance(method) {
115
- if (this.persistPreferences) {
116
- method();
117
- }
118
- }
119
- persistSettings() {
120
- this.isPersistance(() => {
121
- const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {
122
- acc[rdns] = enabled;
123
- return acc;
124
- }, {});
125
- localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets));
126
- });
127
- }
128
- reviveSettings() {
129
- this.isPersistance(() => {
130
- const existingEntries = localStorage.getItem(this.localStorageKey);
131
- try {
132
- const entries = existingEntries ? JSON.parse(existingEntries) : {};
133
- this.enabledWallets = entries;
134
- } catch (e) {
135
- console.warn(`Error parsing saved enabled wallet entries: ${e.message}`);
136
- }
137
- });
138
- }
139
- };
140
-
141
- // src/components/ConnectedAccountsFlexbox.tsx
142
- var import_material13 = require("@mui/material");
143
- var import_react_flexbox6 = require("@xylabs/react-flexbox");
144
- var import_react7 = require("react");
145
-
146
- // src/hooks/useDetectWallets.tsx
147
- var import_react_crypto = require("@xylabs/react-crypto");
148
- var import_react = require("react");
149
- var sortWallets = (wallets) => (
150
- // eslint-disable-next-line unicorn/no-array-reduce
151
- Object.values(wallets).reduce((acc, wallet) => {
152
- wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet);
153
- return acc;
154
- }, [])
155
- );
156
- var useDetectedWallets = () => {
157
- const wallets = (0, import_react_crypto.useWalletDiscovery)();
158
- const [refresh, setRefresh] = (0, import_react.useState)(0);
159
- const [sortedWallets, setSortedWallets] = (0, import_react.useState)([]);
160
- (0, import_react.useEffect)(() => {
161
- setSortedWallets(sortWallets(wallets));
162
- }, [wallets, refresh]);
163
- (0, import_react.useEffect)(() => {
164
- const listener = () => {
165
- setRefresh((refresh2) => refresh2 + 1);
166
- };
167
- window.addEventListener(import_react_crypto.AccountsChangedEventName, listener);
168
- return () => {
169
- window.removeEventListener(import_react_crypto.AccountsChangedEventName, listener);
170
- };
171
- }, [wallets]);
172
- const totalConnectedAccounts = (0, import_react.useMemo)(
173
- () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),
174
- [sortedWallets]
175
- );
176
- return { sortedWallets, totalConnectedAccounts };
177
- };
178
-
179
- // src/hooks/useEnabledWallets.tsx
180
- var import_react_crypto2 = require("@xylabs/react-crypto");
181
- var import_react2 = require("react");
182
- var enabledEthWallets;
183
- var useEnabledWalletsInner = (enabledWalletsRdns) => {
184
- const discoveredWallets = (0, import_react_crypto2.useWalletDiscovery)();
185
- const wallets = (0, import_react2.useMemo)(() => {
186
- if (enabledEthWallets === void 0)
187
- enabledEthWallets = new EnabledEthWalletConnections();
188
- enabledEthWallets.resetWallets(discoveredWallets);
189
- for (const [rdns, enabled] of Object.entries(enabledWalletsRdns ?? {}))
190
- enabledEthWallets?.toggleEnabledWallet(rdns, enabled);
191
- return enabledEthWallets;
192
- }, [discoveredWallets, enabledWalletsRdns]);
193
- return (0, import_react2.useSyncExternalStore)(wallets.subscribe.bind(wallets), () => wallets.wallets);
194
- };
195
- var useEnabledWallets = (enabledWalletsRdns) => {
196
- const wallets = useEnabledWalletsInner(enabledWalletsRdns);
197
- const enabledWallets = (0, import_react2.useMemo)(
198
- () => (
199
- // eslint-disable-next-line unicorn/no-array-reduce
200
- Object.entries(wallets).reduce((acc, [walletName, wallet]) => {
201
- if (wallet.enabled)
202
- acc[walletName] = wallet;
203
- return acc;
204
- }, {})
205
- ),
206
- [wallets]
207
- );
208
- return {
209
- disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),
210
- enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),
211
- enabledWallets,
212
- wallets
213
- };
214
- };
215
-
216
- // src/components/wallet/dialogs/connect/CheckboxFormControl.tsx
217
- var import_material = require("@mui/material");
218
- var import_jsx_runtime = require("react/jsx-runtime");
219
- var CheckboxFormControl = ({ onCheckChanged, ...props }) => {
220
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.FormControl, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_material.FormLabel, { children: [
221
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.Checkbox, { onChange: (_, checked) => onCheckChanged?.(checked) }),
222
- "Do not show this again."
223
- ] }) });
224
- };
225
-
226
- // src/components/wallet/dialogs/connect/Dialog.tsx
227
- var import_material4 = require("@mui/material");
228
-
229
- // src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx
230
- var import_icons_material = require("@mui/icons-material");
231
- var import_material2 = require("@mui/material");
232
- var import_react_crypto3 = require("@xylabs/react-crypto");
233
- var import_react_flexbox = require("@xylabs/react-flexbox");
234
-
235
- // src/img/index.ts
236
- var import_xyo_color_logo = __toESM(require("./xyo-color-logo-LHR2SMEM.svg"), 1);
237
- var import_xyo_color_logo_text_only = __toESM(require("./xyo-color-logo-text-only-QPAW5BSQ.svg"), 1);
238
-
239
- // src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx
240
- var import_jsx_runtime2 = require("react/jsx-runtime");
241
- var LinkedProvidersFlexbox = ({ icon, providerName, ...props }) => {
242
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react_flexbox.FlexRow, { gap: 4, justifyContent: "space-evenly", ...props, children: [
243
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react_flexbox.FlexCol, { gap: 0.5, children: [
244
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("img", { alt: "XYO Logo", src: import_xyo_color_logo.default, style: { height: "48px" } }),
245
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.Typography, { variant: "subtitle1", children: "XYO App" })
246
- ] }),
247
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_icons_material.SyncAlt, { fontSize: "large" }),
248
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react_flexbox.FlexCol, { gap: 0.5, children: [
249
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_crypto3.ConstrainedImage, { constrainedValue: "48px", src: icon, alt: providerName, style: { height: "48px", maxWidth: "48px" } }),
250
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material2.Typography, { variant: "subtitle1", children: providerName })
251
- ] })
252
- ] });
253
- };
254
-
255
- // src/components/wallet/dialogs/connect/Permissions.tsx
256
- var import_material3 = require("@mui/material");
257
- var import_react_flexbox2 = require("@xylabs/react-flexbox");
258
- var import_jsx_runtime3 = require("react/jsx-runtime");
259
- var WalletPermissionsFlexbox = (props) => {
260
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_react_flexbox2.FlexCol, { gap: 4, ...props, children: [
261
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material3.Typography, { fontWeight: "bold", sx: { textAlign: "center" }, children: "This will allow XYO to:" }),
262
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("ul", { children: [
263
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("li", { children: "View your wallet account(s) and address(es)" }),
264
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("li", { children: "Read-only access to browse the public blockchain(s) you select" })
265
- ] }),
266
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material3.Typography, { variant: "subtitle1", sx: { textAlign: "center" }, children: [
267
- "You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet's settings at anytime. View more on XYO's sovereign data philosophy",
268
- " ",
269
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
270
- import_material3.Link,
271
- {
272
- href: "https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty",
273
- sx: { fontWeight: "bold" },
274
- target: "_blank",
275
- children: "here"
276
- }
277
- ),
278
- "."
279
- ] })
280
- ] });
281
- };
282
-
283
- // src/components/wallet/dialogs/connect/Dialog.tsx
284
- var import_jsx_runtime4 = require("react/jsx-runtime");
285
- var ConnectWalletDialog = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {
286
- const { icon, providerName } = activeProvider ?? {};
287
- const onConnect = async () => {
288
- try {
289
- await activeProvider?.connectWallet?.();
290
- props.onClose?.({}, "escapeKeyDown");
291
- } catch (e) {
292
- console.warn(`Error connecting to wallet: ${e.message}`);
293
- }
294
- };
295
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_material4.Dialog, { PaperProps: { sx: { display: "flex", gap: 4 } }, ...props, children: [
296
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material4.DialogTitle, { sx: { textAlign: "center" }, children: "XYO Wants To Access The Blockchain on Your Behalf" }),
297
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_material4.DialogContent, { sx: { display: "flex", flexDirection: "column", gap: 4 }, children: [
298
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(LinkedProvidersFlexbox, { icon, providerName }),
299
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(WalletPermissionsFlexbox, {}),
300
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckboxFormControl, { onCheckChanged: onIgnoreConnectDialog })
301
- ] }),
302
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_material4.DialogActions, { children: [
303
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material4.Button, { variant: "outlined", onClick: () => props.onClose?.({}, "escapeKeyDown"), children: "Close" }),
304
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material4.Button, { variant: "contained", onClick: onConnect, children: "Connect" })
305
- ] })
306
- ] });
307
- };
308
-
309
- // src/components/wallet/dialogs/revoke/Dialog.tsx
310
- var import_material5 = require("@mui/material");
311
- var import_react_crypto4 = require("@xylabs/react-crypto");
312
- var import_react_flexbox3 = require("@xylabs/react-flexbox");
313
- var import_jsx_runtime5 = require("react/jsx-runtime");
314
- var RevokeWalletConnectionDialog = ({ activeProvider, ...props }) => {
315
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_material5.Dialog, { ...props, children: [
316
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_react_flexbox3.FlexRow, { gap: 2, justifyContent: "start", pl: 2, children: [
317
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_crypto4.ConstrainedImage, { src: activeProvider?.icon, constrainedValue: "24px" }),
318
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_material5.DialogTitle, { sx: { pl: 0 }, children: [
319
- "Revoke ",
320
- activeProvider?.providerName,
321
- " Access"
322
- ] })
323
- ] }),
324
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_material5.DialogContent, { children: [
325
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_material5.Typography, { children: [
326
- "Revoking access to your wallet must be done from the wallet's browser extension. Wallets grant access to specific domains please consult ",
327
- activeProvider?.providerName,
328
- "'s documentation on how to revoke access to this website:"
329
- ] }),
330
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_material5.Typography, { children: window.location.origin })
331
- ] }),
332
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_material5.DialogActions, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_material5.Button, { variant: "contained", onClick: () => props.onClose?.({}, "escapeKeyDown"), children: "Close" }) })
333
- ] });
334
- };
335
-
336
- // src/components/wallet/table/cells/Accounts.tsx
337
- var import_material6 = require("@mui/material");
338
- var import_jsx_runtime6 = require("react/jsx-runtime");
339
- var ConnectedWalletsAccountsTableCell = ({
340
- additionalAccounts,
341
- currentAccount,
342
- totalAccounts,
343
- tableCellProps
344
- }) => {
345
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_material6.TableCell, { ...tableCellProps, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
346
- import_material6.Tooltip,
347
- {
348
- sx: { cursor: totalAccounts > 0 ? "pointer" : "auto" },
349
- title: [...currentAccount ?? [], ...additionalAccounts ?? []].map((address, index) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { children: address }, index)),
350
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_material6.Typography, { children: totalAccounts })
351
- }
352
- ) });
353
- };
354
-
355
- // src/components/wallet/table/cells/Actions.tsx
356
- var import_icons_material2 = require("@mui/icons-material");
357
- var import_material7 = require("@mui/material");
358
- var import_react_flexbox4 = require("@xylabs/react-flexbox");
359
- var import_jsx_runtime7 = require("react/jsx-runtime");
360
- var ConnectedWalletsActionsTableCell = ({ connected, onConnect, onRevoke, tableCellProps }) => {
361
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_material7.TableCell, { ...tableCellProps, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_react_flexbox4.FlexRow, { gap: 2, justifyContent: "start", children: [
362
- connected ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_material7.Typography, { sx: { display: "inline-flex", gap: 0.5 }, children: [
363
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons_material2.Check, {}),
364
- "Connected"
365
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_material7.Button, { variant: "contained", onClick: onConnect, children: "Connect" }),
366
- connected ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_material7.IconButton, { onClick: onRevoke, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons_material2.InfoOutlined, {}) }) : null
367
- ] }) });
368
- };
369
-
370
- // src/components/wallet/table/cells/ChainName.tsx
371
- var import_material8 = require("@mui/material");
372
- var import_jsx_runtime8 = require("react/jsx-runtime");
373
- var ConnectedWalletsChainNameTableCell = ({ chainName, tableCellProps }) => {
374
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_material8.TableCell, { ...tableCellProps, children: chainName });
375
- };
376
-
377
- // src/components/wallet/table/cells/State.tsx
378
- var import_material9 = require("@mui/material");
379
- var import_react3 = require("react");
380
- var import_jsx_runtime9 = require("react/jsx-runtime");
381
- var ConnectedWalletState = ({ connected, walletRdns, tableCellProps }) => {
382
- const { disableWallet, enableWallet, wallets } = useEnabledWallets();
383
- const enabled = (0, import_react3.useMemo)(() => walletRdns ? wallets[walletRdns].enabled : false, [wallets, walletRdns]);
384
- const handleClick = (event) => {
385
- const checked = event.target?.checked;
386
- if (walletRdns) {
387
- checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns);
388
- }
389
- };
390
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material9.TableCell, { ...tableCellProps, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_material9.Switch, { disabled: !connected, checked: connected && enabled, onChange: handleClick }) });
391
- };
392
-
393
- // src/components/wallet/table/cells/Wallet.tsx
394
- var import_material10 = require("@mui/material");
395
- var import_react_crypto5 = require("@xylabs/react-crypto");
396
- var import_react_flexbox5 = require("@xylabs/react-flexbox");
397
- var import_jsx_runtime10 = require("react/jsx-runtime");
398
- var ConnectedWalletsWalletTableCell = ({ icon, walletName, tableCellProps }) => {
399
- const theme = (0, import_material10.useTheme)();
400
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_material10.TableCell, { ...tableCellProps, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_react_flexbox5.FlexRow, { gap: 2, justifyContent: "start", children: [
401
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_crypto5.ConstrainedImage, { constrainedValue: theme.spacing(4), src: icon }),
402
- walletName
403
- ] }) });
404
- };
405
-
406
- // src/components/wallet/table/cells/Cells.tsx
407
- var ConnectedWalletTableCells = [
408
- ConnectedWalletsWalletTableCell,
409
- ConnectedWalletsChainNameTableCell,
410
- ConnectedWalletsAccountsTableCell,
411
- ConnectedWalletsActionsTableCell,
412
- ConnectedWalletState
413
- ];
414
-
415
- // src/components/wallet/table/ConnectedWalletsTable.tsx
416
- var import_material12 = require("@mui/material");
417
- var import_react6 = require("react");
418
-
419
- // src/components/wallet/lib/TableHeadData.ts
420
- var WalletsTableHeadCells = [
421
- {
422
- disablePadding: false,
423
- id: "wallet",
424
- label: "Wallet",
425
- numeric: false,
426
- showOnMobile: true
427
- },
428
- {
429
- disablePadding: false,
430
- id: "chain",
431
- label: "Chain",
432
- numeric: false,
433
- showOnMobile: true
434
- },
435
- {
436
- disablePadding: false,
437
- id: "accounts",
438
- label: "Accounts",
439
- numeric: true,
440
- showOnMobile: true
441
- },
442
- {
443
- disablePadding: false,
444
- id: "actions",
445
- label: "Actions",
446
- numeric: false,
447
- showOnMobile: true
448
- },
449
- {
450
- disablePadding: false,
451
- id: "enabled",
452
- label: "Enabled",
453
- numeric: false,
454
- showOnMobile: true
455
- }
456
- ];
457
-
458
- // src/components/wallet/table/ConnectedWalletsTableRow.tsx
459
- var import_material11 = require("@mui/material");
460
- var import_react_crypto6 = require("@xylabs/react-crypto");
461
- var import_react4 = require("react");
462
- var import_jsx_runtime11 = require("react/jsx-runtime");
463
- var WalletConnectionsTableRow = ({
464
- ignoreConnectDialog,
465
- onConnectClick,
466
- onRevoke,
467
- wallet,
468
- ...props
469
- }) => {
470
- const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = (0, import_react_crypto6.useEthWallet)(wallet);
471
- const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : [];
472
- const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0);
473
- const connected = !!(currentAccount?.length ?? 0 > 0);
474
- const { icon, name, rdns } = (0, import_react4.useMemo)(() => providerInfo ?? { icon: void 0, name: void 0, rdns: void 0 }, [providerInfo]);
475
- const activeProvider = (0, import_react4.useMemo)(
476
- () => ({
477
- connectWallet,
478
- icon,
479
- providerName: name
480
- }),
481
- [connectWallet, icon, name]
482
- );
483
- const onRevokeLocal = (0, import_react4.useCallback)(() => {
484
- onRevoke?.(activeProvider);
485
- }, [activeProvider, onRevoke]);
486
- const onConnectLocal = (0, import_react4.useCallback)(async () => {
487
- if (ignoreConnectDialog) {
488
- await connectWallet?.();
489
- } else {
490
- onConnectClick?.(activeProvider);
491
- }
492
- }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick]);
493
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_material11.TableRow, { ...props, children: Object.values(ConnectedWalletTableCells).map((Cell, index) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
494
- Cell,
495
- {
496
- additionalAccounts,
497
- chainName,
498
- connected,
499
- currentAccount,
500
- icon,
501
- onConnect: onConnectLocal,
502
- onRevoke: onRevokeLocal,
503
- totalAccounts,
504
- walletName: name,
505
- walletRdns: rdns
506
- },
507
- index
508
- )) });
509
- };
510
-
511
- // src/components/wallet/table/hooks/useActiveProviderDialogState.tsx
512
- var import_react5 = require("react");
513
- var useActiveProviderDialogState = (setActiveProvider) => {
514
- const [show, setShow] = (0, import_react5.useState)(false);
515
- const onSetActiveProvider = (activeProvider) => {
516
- setShow(true);
517
- setActiveProvider(activeProvider);
518
- };
519
- const onClose = () => {
520
- setShow(false);
521
- setActiveProvider({});
522
- };
523
- return [show, onSetActiveProvider, onClose];
524
- };
525
-
526
- // src/components/wallet/table/ConnectedWalletsTable.tsx
527
- var import_jsx_runtime12 = require("react/jsx-runtime");
528
- var ConnectedWalletsTable = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {
529
- const [activeProvider, setActiveProvider] = (0, import_react6.useState)();
530
- const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider);
531
- const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider);
532
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
533
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_material12.Table, { ...props, children: [
534
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_material12.TableHead, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_material12.TableRow, { children: WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_material12.TableCell, { align, padding: disablePadding ? "none" : "normal", width: width ?? "auto", children: label }, id)) }) }),
535
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_material12.TableBody, { children: (wallets ?? []).map((wallet) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
536
- WalletConnectionsTableRow,
537
- {
538
- ignoreConnectDialog,
539
- onConnectClick: onSetActiveProviderConnect,
540
- onRevoke: onSetActiveProviderRevoke,
541
- wallet
542
- },
543
- wallet.providerInfo?.rdns
544
- )) })
545
- ] }),
546
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RevokeWalletConnectionDialog, { open: showRevoke, onClose: onRevokeClose, activeProvider }),
547
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
548
- ConnectWalletDialog,
549
- {
550
- activeProvider,
551
- onClose: onConnectClose,
552
- open: showConnect,
553
- onIgnoreConnectDialog
554
- }
555
- )
556
- ] });
557
- };
558
-
559
- // src/components/ConnectedAccountsFlexbox.tsx
560
- var import_jsx_runtime13 = require("react/jsx-runtime");
561
- var ConnectedAccountsFlexbox = (0, import_react7.forwardRef)(
562
- ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {
563
- const theme = (0, import_material13.useTheme)();
564
- const { totalConnectedAccounts, sortedWallets } = useDetectedWallets();
565
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_react_flexbox6.FlexCol, { alignItems: "stretch", justifyContent: "start", gap: 2, ref, ...props, children: [
566
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_react_flexbox6.FlexCol, { alignItems: "start", children: [
567
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_material13.Typography, { variant: "h2", sx: { mb: 0.5 }, children: "Detected Web3 Wallets" }),
568
- totalConnectedAccounts ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_material13.Typography, { variant: "subtitle1", color: theme.palette.secondary.main, sx: { opacity: 0.5 }, children: [
569
- "Total Connected Accounts: ",
570
- totalConnectedAccounts
571
- ] }) : null
572
- ] }),
573
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ConnectedWalletsTable, { wallets: sortedWallets, ignoreConnectDialog, onIgnoreConnectDialog })
574
- ] });
575
- }
576
- );
577
- ConnectedAccountsFlexbox.displayName = "ConnectedAccountsFlexbox";
1
+ "use strict";var He=Object.create;var H=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Xe=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var ze=(o,e)=>{for(var t in e)H(o,t,{get:e[t],enumerable:!0})},pe=(o,e,t,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Xe(e))!_e.call(o,n)&&n!==t&&H(o,n,{get:()=>e[n],enumerable:!(l=Ke(e,n))||l.enumerable});return o};var Ce=(o,e,t)=>(t=o!=null?He(Ve(o)):{},pe(e||!o||!o.__esModule?H(t,"default",{value:o,enumerable:!0}):t,o)),Je=o=>pe(H({},"__esModule",{value:!0}),o);var Ue={};ze(Ue,{CheckboxFormControl:()=>U,ConnectWalletDialog:()=>Z,ConnectedAccountsFlexbox:()=>Be,ConnectedWalletState:()=>ne,ConnectedWalletTableCells:()=>re,ConnectedWalletsAccountsTableCell:()=>ee,ConnectedWalletsActionsTableCell:()=>oe,ConnectedWalletsChainNameTableCell:()=>te,ConnectedWalletsTable:()=>ce,ConnectedWalletsWalletTableCell:()=>ae,EnabledEthWalletConnections:()=>k,RevokeWalletConnectionDialog:()=>j,WalletConnectionsTableRow:()=>ie,useActiveProviderDialogState:()=>_,useDetectedWallets:()=>$,useEnabledWallets:()=>G,useEnabledWalletsInner:()=>ge});module.exports=Je(Ue);var me="XYO|EnabledWallets",k=class{persistPreferences=!0;enabledWallets={};ethWalletsState={};listeners=[];localStorageKey=me;constructor(e=me){this.localStorageKey=e,this.reviveSettings()}get wallets(){return this.ethWalletsState}disableWallet(e){this.toggleEnabledWallet(e,!1)}enableWallet(e){this.toggleEnabledWallet(e,!0)}resetWallets(e){let t={},l=([n,a])=>{t[n]={enabled:n in this.enabledWallets?this.enabledWallets[n]:!0,wallet:a}};Object.entries(e).forEach(l.bind(this)),this.ethWalletsState=t,this.emitChange()}subscribe(e){return this.listeners=[...this.listeners,e],()=>{this.listeners=this.listeners.filter(t=>t!==e)}}toggleEnabledWallet(e,t){e&&this.ethWalletsState[e]&&(this.ethWalletsState[e].enabled=t,this.ethWalletsState={...this.ethWalletsState},this.emitChange())}emitChange(){for(let e of this.listeners)e();this.persistSettings()}isPersistance(e){this.persistPreferences&&e()}persistSettings(){this.isPersistance(()=>{let e=Object.entries(this.ethWalletsState).reduce((t,[l,{enabled:n}])=>(t[l]=n,t),{});localStorage.setItem(this.localStorageKey,JSON.stringify(e))})}reviveSettings(){this.isPersistance(()=>{let e=localStorage.getItem(this.localStorageKey);try{let t=e?JSON.parse(e):{};this.enabledWallets=t}catch(t){console.warn(`Error parsing saved enabled wallet entries: ${t.message}`)}})}};var Y=require("@mui/material"),de=require("@xylabs/react-flexbox"),Le=require("react");var R=require("@xylabs/react-crypto"),u=require("react"),$e=o=>Object.values(o).reduce((e,t)=>(t.allowedAccounts.length>0?e.unshift(t):e.push(t),e),[]),$=()=>{let o=(0,R.useWalletDiscovery)(),[e,t]=(0,u.useState)(0),[l,n]=(0,u.useState)([]);(0,u.useEffect)(()=>{n($e(o))},[o,e]),(0,u.useEffect)(()=>{let r=()=>{t(f=>f+1)};return window.addEventListener(R.AccountsChangedEventName,r),()=>{window.removeEventListener(R.AccountsChangedEventName,r)}},[o]);let a=(0,u.useMemo)(()=>Object.values(l).reduce((r,f)=>r+f.allowedAccounts.length,0),[l]);return{sortedWallets:l,totalConnectedAccounts:a}};var be=require("@xylabs/react-crypto"),I=require("react");var b,ge=o=>{let e=(0,be.useWalletDiscovery)(),t=(0,I.useMemo)(()=>{b===void 0&&(b=new k),b.resetWallets(e);for(let[l,n]of Object.entries(o??{}))b?.toggleEnabledWallet(l,n);return b},[e,o]);return(0,I.useSyncExternalStore)(t.subscribe.bind(t),()=>t.wallets)},G=o=>{let e=ge(o),t=(0,I.useMemo)(()=>Object.entries(e).reduce((l,[n,a])=>(a.enabled&&(l[n]=a),l),{}),[e]);return{disableWallet:b?.disableWallet.bind(b),enableWallet:b?.enableWallet.bind(b),enabledWallets:t,wallets:e}};var w=require("@mui/material"),L=require("react/jsx-runtime"),U=({onCheckChanged:o,...e})=>(0,L.jsx)(w.FormControl,{...e,children:(0,L.jsxs)(w.FormLabel,{children:[(0,L.jsx)(w.Checkbox,{onChange:(t,l)=>o?.(l)}),"Do not show this again."]})});var d=require("@mui/material");var he=require("@mui/icons-material"),Q=require("@mui/material"),fe=require("@xylabs/react-crypto"),B=require("@xylabs/react-flexbox");var q=Ce(require("./xyo-color-logo-LHR2SMEM.svg"),1),Ge=Ce(require("./xyo-color-logo-text-only-QPAW5BSQ.svg"),1);var C=require("react/jsx-runtime"),ve=({icon:o,providerName:e,...t})=>(0,C.jsxs)(B.FlexRow,{gap:4,justifyContent:"space-evenly",...t,children:[(0,C.jsxs)(B.FlexCol,{gap:.5,children:[(0,C.jsx)("img",{alt:"XYO Logo",src:q.default,style:{height:"48px"}}),(0,C.jsx)(Q.Typography,{variant:"subtitle1",children:"XYO App"})]}),(0,C.jsx)(he.SyncAlt,{fontSize:"large"}),(0,C.jsxs)(B.FlexCol,{gap:.5,children:[(0,C.jsx)(fe.ConstrainedImage,{constrainedValue:"48px",src:o,alt:e,style:{height:"48px",maxWidth:"48px"}}),(0,C.jsx)(Q.Typography,{variant:"subtitle1",children:e})]})]});var O=require("@mui/material"),ue=require("@xylabs/react-flexbox"),g=require("react/jsx-runtime"),We=o=>(0,g.jsxs)(ue.FlexCol,{gap:4,...o,children:[(0,g.jsx)(O.Typography,{fontWeight:"bold",sx:{textAlign:"center"},children:"This will allow XYO to:"}),(0,g.jsxs)("ul",{children:[(0,g.jsx)("li",{children:"View your wallet account(s) and address(es)"}),(0,g.jsx)("li",{children:"Read-only access to browse the public blockchain(s) you select"})]}),(0,g.jsxs)(O.Typography,{variant:"subtitle1",sx:{textAlign:"center"},children:["You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet's settings at anytime. View more on XYO's sovereign data philosophy"," ",(0,g.jsx)(O.Link,{href:"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty",sx:{fontWeight:"bold"},target:"_blank",children:"here"}),"."]})]});var c=require("react/jsx-runtime"),Z=({activeProvider:o,onIgnoreConnectDialog:e,...t})=>{let{icon:l,providerName:n}=o??{};return(0,c.jsxs)(d.Dialog,{PaperProps:{sx:{display:"flex",gap:4}},...t,children:[(0,c.jsx)(d.DialogTitle,{sx:{textAlign:"center"},children:"XYO Wants To Access The Blockchain on Your Behalf"}),(0,c.jsxs)(d.DialogContent,{sx:{display:"flex",flexDirection:"column",gap:4},children:[(0,c.jsx)(ve,{icon:l,providerName:n}),(0,c.jsx)(We,{}),(0,c.jsx)(U,{onCheckChanged:e})]}),(0,c.jsxs)(d.DialogActions,{children:[(0,c.jsx)(d.Button,{variant:"outlined",onClick:()=>t.onClose?.({},"escapeKeyDown"),children:"Close"}),(0,c.jsx)(d.Button,{variant:"contained",onClick:async()=>{try{await o?.connectWallet?.(),t.onClose?.({},"escapeKeyDown")}catch(r){console.warn(`Error connecting to wallet: ${r.message}`)}},children:"Connect"})]})]})};var s=require("@mui/material"),xe=require("@xylabs/react-crypto"),Pe=require("@xylabs/react-flexbox"),p=require("react/jsx-runtime"),j=({activeProvider:o,...e})=>(0,p.jsxs)(s.Dialog,{...e,children:[(0,p.jsxs)(Pe.FlexRow,{gap:2,justifyContent:"start",pl:2,children:[(0,p.jsx)(xe.ConstrainedImage,{src:o?.icon,constrainedValue:"24px"}),(0,p.jsxs)(s.DialogTitle,{sx:{pl:0},children:["Revoke ",o?.providerName," Access"]})]}),(0,p.jsxs)(s.DialogContent,{children:[(0,p.jsxs)(s.Typography,{children:["Revoking access to your wallet must be done from the wallet's browser extension. Wallets grant access to specific domains please consult ",o?.providerName,"'s documentation on how to revoke access to this website:"]}),(0,p.jsx)(s.Typography,{children:window.location.origin})]}),(0,p.jsx)(s.DialogActions,{children:(0,p.jsx)(s.Button,{variant:"contained",onClick:()=>e.onClose?.({},"escapeKeyDown"),children:"Close"})})]});var S=require("@mui/material"),N=require("react/jsx-runtime"),ee=({additionalAccounts:o,currentAccount:e,totalAccounts:t,tableCellProps:l})=>(0,N.jsx)(S.TableCell,{...l,children:(0,N.jsx)(S.Tooltip,{sx:{cursor:t>0?"pointer":"auto"},title:[...e??[],...o??[]].map((n,a)=>(0,N.jsx)("p",{children:n},a)),children:(0,N.jsx)(S.Typography,{children:t})})});var K=require("@mui/icons-material"),W=require("@mui/material"),Te=require("@xylabs/react-flexbox"),h=require("react/jsx-runtime"),oe=({connected:o,onConnect:e,onRevoke:t,tableCellProps:l})=>(0,h.jsx)(W.TableCell,{...l,children:(0,h.jsxs)(Te.FlexRow,{gap:2,justifyContent:"start",children:[o?(0,h.jsxs)(W.Typography,{sx:{display:"inline-flex",gap:.5},children:[(0,h.jsx)(K.Check,{}),"Connected"]}):(0,h.jsx)(W.Button,{variant:"contained",onClick:e,children:"Connect"}),o?(0,h.jsx)(W.IconButton,{onClick:t,children:(0,h.jsx)(K.InfoOutlined,{})}):null]})});var ye=require("@mui/material"),we=require("react/jsx-runtime"),te=({chainName:o,tableCellProps:e})=>(0,we.jsx)(ye.TableCell,{...e,children:o});var X=require("@mui/material"),Se=require("react");var le=require("react/jsx-runtime"),ne=({connected:o,walletRdns:e,tableCellProps:t})=>{let{disableWallet:l,enableWallet:n,wallets:a}=G(),r=(0,Se.useMemo)(()=>e?a[e].enabled:!1,[a,e]);return(0,le.jsx)(X.TableCell,{...t,children:(0,le.jsx)(X.Switch,{disabled:!o,checked:o&&r,onChange:v=>{let P=v.target?.checked;e&&(P?n?.(e):l?.(e))}})})};var V=require("@mui/material"),Ae=require("@xylabs/react-crypto"),Ee=require("@xylabs/react-flexbox"),M=require("react/jsx-runtime"),ae=({icon:o,walletName:e,tableCellProps:t})=>{let l=(0,V.useTheme)();return(0,M.jsx)(V.TableCell,{...t,children:(0,M.jsxs)(Ee.FlexRow,{gap:2,justifyContent:"start",children:[(0,M.jsx)(Ae.ConstrainedImage,{constrainedValue:l.spacing(4),src:o}),e]})})};var re=[ae,te,ee,oe,ne];var m=require("@mui/material"),Ie=require("react");var Fe=[{disablePadding:!1,id:"wallet",label:"Wallet",numeric:!1,showOnMobile:!0},{disablePadding:!1,id:"chain",label:"Chain",numeric:!1,showOnMobile:!0},{disablePadding:!1,id:"accounts",label:"Accounts",numeric:!0,showOnMobile:!0},{disablePadding:!1,id:"actions",label:"Actions",numeric:!1,showOnMobile:!0},{disablePadding:!1,id:"enabled",label:"Enabled",numeric:!1,showOnMobile:!0}];var De=require("@mui/material"),ke=require("@xylabs/react-crypto"),A=require("react");var se=require("react/jsx-runtime"),ie=({ignoreConnectDialog:o,onConnectClick:e,onRevoke:t,wallet:l,...n})=>{let{currentAccount:a,additionalAccounts:r,chainName:f,connectWallet:v,providerInfo:P}=(0,ke.useEthWallet)(l),E=a?.toString()?[a.toString()]:[],z=(r?.length??0)+(E?.length??0),T=!!(E?.length??!1),{icon:F,name:D,rdns:J}=(0,A.useMemo)(()=>P??{icon:void 0,name:void 0,rdns:void 0},[P]),y=(0,A.useMemo)(()=>({connectWallet:v,icon:F,providerName:D}),[v,F,D]),Oe=(0,A.useCallback)(()=>{t?.(y)},[y,t]),Ne=(0,A.useCallback)(async()=>{o?await v?.():e?.(y)},[y,v,o,e]);return(0,se.jsx)(De.TableRow,{...n,children:Object.values(re).map((Me,Ye)=>(0,se.jsx)(Me,{additionalAccounts:r,chainName:f,connected:T,currentAccount:E,icon:F,onConnect:Ne,onRevoke:Oe,totalAccounts:z,walletName:D,walletRdns:J},Ye))})};var Re=require("react"),_=o=>{let[e,t]=(0,Re.useState)(!1);return[e,a=>{t(!0),o(a)},()=>{t(!1),o({})}]};var i=require("react/jsx-runtime"),ce=({ignoreConnectDialog:o,onIgnoreConnectDialog:e,wallets:t,...l})=>{let[n,a]=(0,Ie.useState)(),[r,f,v]=_(a),[P,E,z]=_(a);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(m.Table,{...l,children:[(0,i.jsx)(m.TableHead,{children:(0,i.jsx)(m.TableRow,{children:Fe.map(({disablePadding:T,id:F,label:D,align:J,width:y})=>(0,i.jsx)(m.TableCell,{align:J,padding:T?"none":"normal",width:y??"auto",children:D},F))})}),(0,i.jsx)(m.TableBody,{children:(t??[]).map(T=>(0,i.jsx)(ie,{ignoreConnectDialog:o,onConnectClick:f,onRevoke:E,wallet:T},T.providerInfo?.rdns))})]}),(0,i.jsx)(j,{open:P,onClose:z,activeProvider:n}),(0,i.jsx)(Z,{activeProvider:n,onClose:v,open:r,onIgnoreConnectDialog:e})]})};var x=require("react/jsx-runtime"),Be=(0,Le.forwardRef)(({ignoreConnectDialog:o,onIgnoreConnectDialog:e,...t},l)=>{let n=(0,Y.useTheme)(),{totalConnectedAccounts:a,sortedWallets:r}=$();return(0,x.jsxs)(de.FlexCol,{alignItems:"stretch",justifyContent:"start",gap:2,ref:l,...t,children:[(0,x.jsxs)(de.FlexCol,{alignItems:"start",children:[(0,x.jsx)(Y.Typography,{variant:"h2",sx:{mb:.5},children:"Detected Web3 Wallets"}),a?(0,x.jsxs)(Y.Typography,{variant:"subtitle1",color:n.palette.secondary.main,sx:{opacity:.5},children:["Total Connected Accounts: ",a]}):null]}),(0,x.jsx)(ce,{wallets:r,ignoreConnectDialog:o,onIgnoreConnectDialog:e})]})});Be.displayName="ConnectedAccountsFlexbox";
578
2
  //# sourceMappingURL=index.cjs.map