@xyo-network/react-connected-accounts 7.4.2 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import type { Meta } from '@storybook/react-vite';
2
2
  declare const StorybookEntry: Meta;
3
- declare const Default: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./ConnectedAccountsFlexbox.tsx").ConnectedAccountsFlexboxProps>;
4
- declare const WithIgnoreDialog: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./ConnectedAccountsFlexbox.tsx").ConnectedAccountsFlexboxProps>;
3
+ declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./ConnectedAccountsFlexbox.tsx").ConnectedAccountsFlexboxProps>;
4
+ declare const WithIgnoreDialog: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./ConnectedAccountsFlexbox.tsx").ConnectedAccountsFlexboxProps>;
5
5
  export { Default, WithIgnoreDialog };
6
6
  export default StorybookEntry;
7
7
  //# sourceMappingURL=ConnectedAccountsFlexbox.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectedAccountsFlexbox.stories.d.ts","sourceRoot":"","sources":["../../../src/components/ConnectedAccountsFlexbox.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAK1D,QAAA,MAAM,cAAc,EAAE,IAQrB,CAAA;AAaD,QAAA,MAAM,OAAO,4MAAoB,CAAA;AACjC,QAAA,MAAM,gBAAgB,4MAAoC,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAEpC,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"ConnectedAccountsFlexbox.stories.d.ts","sourceRoot":"","sources":["../../../src/components/ConnectedAccountsFlexbox.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAK1D,QAAA,MAAM,cAAc,EAAE,IAQrB,CAAA;AAaD,QAAA,MAAM,OAAO,qKAAoB,CAAA;AACjC,QAAA,MAAM,gBAAgB,qKAAoC,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAEpC,eAAe,cAAc,CAAA"}
@@ -1,6 +1,12 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/classes/EnabledWallets.ts
2
5
  var DEFAULT_LOCAL_STORAGE_KEY = "XYO|EnabledWallets";
3
6
  var EnabledEthWalletConnections = class {
7
+ static {
8
+ __name(this, "EnabledEthWalletConnections");
9
+ }
4
10
  // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)
5
11
  persistPreferences = true;
6
12
  // Map of wallet names and their enabled/disabled state
@@ -25,17 +31,17 @@ var EnabledEthWalletConnections = class {
25
31
  this.toggleEnabledWallet(rdns, true);
26
32
  }
27
33
  /**
28
- * Given a new set of wallets, set their enabled state based off previous preferences
29
- */
34
+ * Given a new set of wallets, set their enabled state based off previous preferences
35
+ */
30
36
  resetWallets(wallets) {
31
37
  const newWallets = {};
32
- const addWallet = ([walletName, wallet]) => {
38
+ const addWallet = /* @__PURE__ */ __name(([walletName, wallet]) => {
33
39
  newWallets[walletName] = {
34
40
  // preserve the existing enabled state
35
41
  enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,
36
42
  wallet
37
43
  };
38
- };
44
+ }, "addWallet");
39
45
  Object.entries(wallets).forEach((wallet) => {
40
46
  if (wallet !== void 0) {
41
47
  addWallet.bind(this);
@@ -45,7 +51,10 @@ var EnabledEthWalletConnections = class {
45
51
  this.emitChange();
46
52
  }
47
53
  subscribe(listener) {
48
- this.listeners = [...this.listeners, listener];
54
+ this.listeners = [
55
+ ...this.listeners,
56
+ listener
57
+ ];
49
58
  return () => {
50
59
  this.listeners = this.listeners.filter((existingListener) => existingListener !== listener);
51
60
  };
@@ -53,7 +62,9 @@ var EnabledEthWalletConnections = class {
53
62
  toggleEnabledWallet(rdns, enabled) {
54
63
  if (rdns && this.ethWalletsState[rdns]) {
55
64
  this.ethWalletsState[rdns].enabled = enabled;
56
- this.ethWalletsState = { ...this.ethWalletsState };
65
+ this.ethWalletsState = {
66
+ ...this.ethWalletsState
67
+ };
57
68
  this.emitChange();
58
69
  }
59
70
  }
@@ -93,236 +104,221 @@ var EnabledEthWalletConnections = class {
93
104
  // src/components/ConnectedAccountsFlexbox.tsx
94
105
  import { Typography as Typography6, useTheme as useTheme2 } from "@mui/material";
95
106
  import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
107
+ import React13 from "react";
96
108
 
97
109
  // src/hooks/useDetectWallets.tsx
98
110
  import { useWalletDiscovery } from "@xylabs/react-crypto";
99
111
  import { useMemo } from "react";
100
- var sortWallets = (wallets) => {
112
+ var sortWallets = /* @__PURE__ */ __name((wallets) => {
101
113
  const result = [];
102
114
  for (const wallet of Object.values(wallets)) {
103
115
  if (wallet) {
104
- if (wallet.allowedAccounts.length > 0)
105
- result.unshift(wallet);
106
- else
107
- result.push(wallet);
116
+ if (wallet.allowedAccounts.length > 0) result.unshift(wallet);
117
+ else result.push(wallet);
108
118
  }
109
119
  }
110
120
  return result;
111
- };
112
- var useDetectedWallets = () => {
121
+ }, "sortWallets");
122
+ var useDetectedWallets = /* @__PURE__ */ __name(() => {
113
123
  const wallets = useWalletDiscovery();
114
- const sortedWallets = useMemo(() => sortWallets(wallets), [wallets]);
115
- const totalConnectedAccounts = useMemo(
116
- () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),
117
- [sortedWallets]
118
- );
119
- return { sortedWallets, totalConnectedAccounts };
120
- };
124
+ const sortedWallets = useMemo(() => sortWallets(wallets), [
125
+ wallets
126
+ ]);
127
+ const totalConnectedAccounts = useMemo(() => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0), [
128
+ sortedWallets
129
+ ]);
130
+ return {
131
+ sortedWallets,
132
+ totalConnectedAccounts
133
+ };
134
+ }, "useDetectedWallets");
121
135
 
122
136
  // src/hooks/useEnabledWallets.tsx
123
137
  import { useWalletDiscovery as useWalletDiscovery2 } from "@xylabs/react-crypto";
124
138
  import { useMemo as useMemo2, useSyncExternalStore } from "react";
125
139
  var enabledEthWallets;
126
- var useEnabledWalletsInner = (enabledWalletsRdns) => {
140
+ var useEnabledWalletsInner = /* @__PURE__ */ __name((enabledWalletsRdns) => {
127
141
  const discoveredWallets = useWalletDiscovery2();
128
142
  const wallets = useMemo2(() => {
129
143
  if (enabledEthWallets === void 0) enabledEthWallets = new EnabledEthWalletConnections();
130
144
  enabledEthWallets.resetWallets(discoveredWallets);
131
145
  for (const [rdns, enabled] of Object.entries(enabledWalletsRdns ?? {})) enabledEthWallets?.toggleEnabledWallet(rdns, enabled);
132
146
  return enabledEthWallets;
133
- }, [discoveredWallets, enabledWalletsRdns]);
147
+ }, [
148
+ discoveredWallets,
149
+ enabledWalletsRdns
150
+ ]);
134
151
  return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets);
135
- };
136
- var useEnabledWallets = (enabledWalletsRdns) => {
152
+ }, "useEnabledWalletsInner");
153
+ var useEnabledWallets = /* @__PURE__ */ __name((enabledWalletsRdns) => {
137
154
  const wallets = useEnabledWalletsInner(enabledWalletsRdns);
138
- const enabledWallets = useMemo2(
139
- () => (
140
- // eslint-disable-next-line unicorn/no-array-reduce
141
- Object.entries(wallets).reduce((acc, [walletName, wallet]) => {
142
- if (wallet.enabled) acc[walletName] = wallet;
143
- return acc;
144
- }, {})
145
- ),
146
- [wallets]
147
- );
155
+ const enabledWallets = useMemo2(() => (
156
+ // eslint-disable-next-line unicorn/no-array-reduce
157
+ Object.entries(wallets).reduce((acc, [walletName, wallet]) => {
158
+ if (wallet.enabled) acc[walletName] = wallet;
159
+ return acc;
160
+ }, {})
161
+ ), [
162
+ wallets
163
+ ]);
148
164
  return {
149
165
  disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),
150
166
  enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),
151
167
  enabledWallets,
152
168
  wallets
153
169
  };
154
- };
170
+ }, "useEnabledWallets");
155
171
 
156
172
  // src/components/wallet/dialogs/connect/CheckboxFormControl.tsx
157
- import {
158
- Checkbox,
159
- FormControl,
160
- FormLabel
161
- } from "@mui/material";
162
- import { jsx, jsxs } from "react/jsx-runtime";
163
- var CheckboxFormControl = ({ onCheckChanged, ...props }) => {
164
- return /* @__PURE__ */ jsx(FormControl, { ...props, children: /* @__PURE__ */ jsxs(FormLabel, { children: [
165
- /* @__PURE__ */ jsx(Checkbox, { onChange: (_, checked) => onCheckChanged?.(checked) }),
166
- "Do not show this again."
167
- ] }) });
168
- };
173
+ import { Checkbox, FormControl, FormLabel } from "@mui/material";
174
+ import React from "react";
175
+ var CheckboxFormControl = /* @__PURE__ */ __name(({ onCheckChanged, ...props }) => {
176
+ return /* @__PURE__ */ React.createElement(FormControl, props, /* @__PURE__ */ React.createElement(FormLabel, null, /* @__PURE__ */ React.createElement(Checkbox, {
177
+ onChange: /* @__PURE__ */ __name((_, checked) => onCheckChanged?.(checked), "onChange")
178
+ }), "Do not show this again."));
179
+ }, "CheckboxFormControl");
169
180
 
170
181
  // src/components/wallet/dialogs/connect/Dialog.tsx
171
- import {
172
- Button,
173
- Dialog,
174
- DialogActions,
175
- DialogContent,
176
- DialogTitle
177
- } from "@mui/material";
182
+ import { Button, Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material";
183
+ import React4 from "react";
178
184
 
179
185
  // src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx
180
186
  import { SyncAlt } from "@mui/icons-material";
181
187
  import { Typography } from "@mui/material";
182
188
  import { ConstrainedImage } from "@xylabs/react-crypto";
183
189
  import { FlexCol, FlexRow } from "@xylabs/react-flexbox";
190
+ import React2 from "react";
184
191
 
185
192
  // src/img/xyo-color-logo.svg
186
193
  var xyo_color_logo_default = '<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 238"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class="cls-1" d="M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z"/><path class="cls-2" d="M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z"/><path class="cls-3" d="M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z"/><path class="cls-4" d="M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z"/></svg>';
187
194
 
188
195
  // src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx
189
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
190
- var LinkedProvidersFlexbox = ({
191
- icon,
192
- providerName,
193
- ...props
194
- }) => {
195
- return /* @__PURE__ */ jsxs2(FlexRow, { gap: 4, justifyContent: "space-evenly", ...props, children: [
196
- /* @__PURE__ */ jsxs2(FlexCol, { gap: 0.5, children: [
197
- /* @__PURE__ */ jsx2("img", { alt: "XYO Logo", src: xyo_color_logo_default, style: { height: "48px" } }),
198
- /* @__PURE__ */ jsx2(Typography, { variant: "subtitle1", children: "XYO App" })
199
- ] }),
200
- /* @__PURE__ */ jsx2(SyncAlt, { fontSize: "large" }),
201
- /* @__PURE__ */ jsxs2(FlexCol, { gap: 0.5, children: [
202
- /* @__PURE__ */ jsx2(
203
- ConstrainedImage,
204
- {
205
- constrainedValue: "48px",
206
- src: icon,
207
- alt: providerName,
208
- style: { height: "48px", maxWidth: "48px" }
209
- }
210
- ),
211
- /* @__PURE__ */ jsx2(Typography, { variant: "subtitle1", children: providerName })
212
- ] })
213
- ] });
214
- };
196
+ var LinkedProvidersFlexbox = /* @__PURE__ */ __name(({ icon, providerName, ...props }) => {
197
+ return /* @__PURE__ */ React2.createElement(FlexRow, {
198
+ gap: 4,
199
+ justifyContent: "space-evenly",
200
+ ...props
201
+ }, /* @__PURE__ */ React2.createElement(FlexCol, {
202
+ gap: 0.5
203
+ }, /* @__PURE__ */ React2.createElement("img", {
204
+ alt: "XYO Logo",
205
+ src: xyo_color_logo_default,
206
+ style: {
207
+ height: "48px"
208
+ }
209
+ }), /* @__PURE__ */ React2.createElement(Typography, {
210
+ variant: "subtitle1"
211
+ }, "XYO App")), /* @__PURE__ */ React2.createElement(SyncAlt, {
212
+ fontSize: "large"
213
+ }), /* @__PURE__ */ React2.createElement(FlexCol, {
214
+ gap: 0.5
215
+ }, /* @__PURE__ */ React2.createElement(ConstrainedImage, {
216
+ constrainedValue: "48px",
217
+ src: icon,
218
+ alt: providerName,
219
+ style: {
220
+ height: "48px",
221
+ maxWidth: "48px"
222
+ }
223
+ }), /* @__PURE__ */ React2.createElement(Typography, {
224
+ variant: "subtitle1"
225
+ }, providerName)));
226
+ }, "LinkedProvidersFlexbox");
215
227
 
216
228
  // src/components/wallet/dialogs/connect/Permissions.tsx
217
229
  import { Link, Typography as Typography2 } from "@mui/material";
218
230
  import { FlexCol as FlexCol2 } from "@xylabs/react-flexbox";
219
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
220
- var WalletPermissionsFlexbox = (props) => {
221
- return /* @__PURE__ */ jsxs3(FlexCol2, { gap: 4, ...props, children: [
222
- /* @__PURE__ */ jsx3(Typography2, { fontWeight: "bold", sx: { textAlign: "center" }, children: "This will allow XYO to:" }),
223
- /* @__PURE__ */ jsxs3("ul", { children: [
224
- /* @__PURE__ */ jsx3("li", { children: "View your wallet account(s) and address(es)" }),
225
- /* @__PURE__ */ jsx3("li", { children: "Read-only access to browse the public blockchain(s) you select" })
226
- ] }),
227
- /* @__PURE__ */ jsxs3(Typography2, { variant: "subtitle1", sx: { textAlign: "center" }, children: [
228
- "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",
229
- " ",
230
- /* @__PURE__ */ jsx3(
231
- Link,
232
- {
233
- href: "https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty",
234
- sx: { fontWeight: "bold" },
235
- target: "_blank",
236
- children: "here"
237
- }
238
- ),
239
- "."
240
- ] })
241
- ] });
242
- };
231
+ import React3 from "react";
232
+ var WalletPermissionsFlexbox = /* @__PURE__ */ __name((props) => {
233
+ return /* @__PURE__ */ React3.createElement(FlexCol2, {
234
+ gap: 4,
235
+ ...props
236
+ }, /* @__PURE__ */ React3.createElement(Typography2, {
237
+ fontWeight: "bold",
238
+ sx: {
239
+ textAlign: "center"
240
+ }
241
+ }, "This will allow XYO to:"), /* @__PURE__ */ React3.createElement("ul", null, /* @__PURE__ */ React3.createElement("li", null, "View your wallet account(s) and address(es)"), /* @__PURE__ */ React3.createElement("li", null, "Read-only access to browse the public blockchain(s) you select")), /* @__PURE__ */ React3.createElement(Typography2, {
242
+ variant: "subtitle1",
243
+ sx: {
244
+ textAlign: "center"
245
+ }
246
+ }, "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", " ", /* @__PURE__ */ React3.createElement(Link, {
247
+ href: "https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty",
248
+ sx: {
249
+ fontWeight: "bold"
250
+ },
251
+ target: "_blank"
252
+ }, "here"), "."));
253
+ }, "WalletPermissionsFlexbox");
243
254
 
244
255
  // src/components/wallet/dialogs/connect/Dialog.tsx
245
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
246
- var ConnectWalletDialog = ({
247
- activeProvider,
248
- onIgnoreConnectDialog,
249
- ...props
250
- }) => {
256
+ var ConnectWalletDialog = /* @__PURE__ */ __name(({ activeProvider, onIgnoreConnectDialog, ...props }) => {
251
257
  const { icon, providerName } = activeProvider ?? {};
252
- const onConnect = async () => {
258
+ const onConnect = /* @__PURE__ */ __name(async () => {
253
259
  try {
254
260
  await activeProvider?.connectWallet?.();
255
261
  props.onClose?.({}, "escapeKeyDown");
256
262
  } catch (e) {
257
263
  console.warn(`Error connecting to wallet: ${e.message}`);
258
264
  }
259
- };
260
- return /* @__PURE__ */ jsxs4(
261
- Dialog,
262
- {
263
- slotProps: { paper: { sx: { display: "flex", gap: 4 } } },
264
- ...props,
265
- children: [
266
- /* @__PURE__ */ jsx4(DialogTitle, { sx: { textAlign: "center" }, children: "XYO Wants To Access The Blockchain on Your Behalf" }),
267
- /* @__PURE__ */ jsxs4(
268
- DialogContent,
269
- {
270
- sx: {
271
- display: "flex",
272
- flexDirection: "column",
273
- gap: 4
274
- },
275
- children: [
276
- /* @__PURE__ */ jsx4(LinkedProvidersFlexbox, { icon, providerName }),
277
- /* @__PURE__ */ jsx4(WalletPermissionsFlexbox, {}),
278
- /* @__PURE__ */ jsx4(CheckboxFormControl, { onCheckChanged: onIgnoreConnectDialog })
279
- ]
280
- }
281
- ),
282
- /* @__PURE__ */ jsxs4(DialogActions, { children: [
283
- /* @__PURE__ */ jsx4(Button, { variant: "outlined", onClick: () => props.onClose?.({}, "escapeKeyDown"), children: "Close" }),
284
- /* @__PURE__ */ jsx4(Button, { variant: "contained", onClick: onConnect, children: "Connect" })
285
- ] })
286
- ]
265
+ }, "onConnect");
266
+ return /* @__PURE__ */ React4.createElement(Dialog, {
267
+ slotProps: {
268
+ paper: {
269
+ sx: {
270
+ display: "flex",
271
+ gap: 4
272
+ }
273
+ }
274
+ },
275
+ ...props
276
+ }, /* @__PURE__ */ React4.createElement(DialogTitle, {
277
+ sx: {
278
+ textAlign: "center"
287
279
  }
288
- );
289
- };
280
+ }, "XYO Wants To Access The Blockchain on Your Behalf"), /* @__PURE__ */ React4.createElement(DialogContent, {
281
+ sx: {
282
+ display: "flex",
283
+ flexDirection: "column",
284
+ gap: 4
285
+ }
286
+ }, /* @__PURE__ */ React4.createElement(LinkedProvidersFlexbox, {
287
+ icon,
288
+ providerName
289
+ }), /* @__PURE__ */ React4.createElement(WalletPermissionsFlexbox, null), /* @__PURE__ */ React4.createElement(CheckboxFormControl, {
290
+ onCheckChanged: onIgnoreConnectDialog
291
+ })), /* @__PURE__ */ React4.createElement(DialogActions, null, /* @__PURE__ */ React4.createElement(Button, {
292
+ variant: "outlined",
293
+ onClick: /* @__PURE__ */ __name(() => props.onClose?.({}, "escapeKeyDown"), "onClick")
294
+ }, "Close"), /* @__PURE__ */ React4.createElement(Button, {
295
+ variant: "contained",
296
+ onClick: onConnect
297
+ }, "Connect")));
298
+ }, "ConnectWalletDialog");
290
299
 
291
300
  // src/components/wallet/dialogs/revoke/Dialog.tsx
292
- import {
293
- Button as Button2,
294
- Dialog as Dialog2,
295
- DialogActions as DialogActions2,
296
- DialogContent as DialogContent2,
297
- DialogTitle as DialogTitle2,
298
- Typography as Typography3
299
- } from "@mui/material";
301
+ import { Button as Button2, Dialog as Dialog2, DialogActions as DialogActions2, DialogContent as DialogContent2, DialogTitle as DialogTitle2, Typography as Typography3 } from "@mui/material";
300
302
  import { ConstrainedImage as ConstrainedImage2 } from "@xylabs/react-crypto";
301
303
  import { FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
302
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
303
- var RevokeWalletConnectionDialog = ({ activeProvider, ...props }) => {
304
- return /* @__PURE__ */ jsxs5(Dialog2, { ...props, children: [
305
- /* @__PURE__ */ jsxs5(FlexRow2, { gap: 2, justifyContent: "start", pl: 2, children: [
306
- /* @__PURE__ */ jsx5(ConstrainedImage2, { src: activeProvider?.icon, constrainedValue: "24px" }),
307
- /* @__PURE__ */ jsxs5(DialogTitle2, { sx: { pl: 0 }, children: [
308
- "Revoke",
309
- activeProvider?.providerName,
310
- " ",
311
- "Access"
312
- ] })
313
- ] }),
314
- /* @__PURE__ */ jsxs5(DialogContent2, { children: [
315
- /* @__PURE__ */ jsxs5(Typography3, { children: [
316
- "Revoking access to your wallet must be done from the wallet's browser extension. Wallets grant access to specific domains please consult",
317
- " ",
318
- activeProvider?.providerName,
319
- "'s documentation on how to revoke access to this website:"
320
- ] }),
321
- /* @__PURE__ */ jsx5(Typography3, { children: globalThis.location.origin })
322
- ] }),
323
- /* @__PURE__ */ jsx5(DialogActions2, { children: /* @__PURE__ */ jsx5(Button2, { variant: "contained", onClick: () => props.onClose?.({}, "escapeKeyDown"), children: "Close" }) })
324
- ] });
325
- };
304
+ import React5 from "react";
305
+ var RevokeWalletConnectionDialog = /* @__PURE__ */ __name(({ activeProvider, ...props }) => {
306
+ return /* @__PURE__ */ React5.createElement(Dialog2, props, /* @__PURE__ */ React5.createElement(FlexRow2, {
307
+ gap: 2,
308
+ justifyContent: "start",
309
+ pl: 2
310
+ }, /* @__PURE__ */ React5.createElement(ConstrainedImage2, {
311
+ src: activeProvider?.icon,
312
+ constrainedValue: "24px"
313
+ }), /* @__PURE__ */ React5.createElement(DialogTitle2, {
314
+ sx: {
315
+ pl: 0
316
+ }
317
+ }, "Revoke", activeProvider?.providerName, " ", "Access")), /* @__PURE__ */ React5.createElement(DialogContent2, null, /* @__PURE__ */ React5.createElement(Typography3, null, "Revoking access to your wallet must be done from the wallet's browser extension. Wallets grant access to specific domains please consult", " ", activeProvider?.providerName, "'s documentation on how to revoke access to this website:"), /* @__PURE__ */ React5.createElement(Typography3, null, globalThis.location.origin)), /* @__PURE__ */ React5.createElement(DialogActions2, null, /* @__PURE__ */ React5.createElement(Button2, {
318
+ variant: "contained",
319
+ onClick: /* @__PURE__ */ __name(() => props.onClose?.({}, "escapeKeyDown"), "onClick")
320
+ }, "Close")));
321
+ }, "RevokeWalletConnectionDialog");
326
322
 
327
323
  // src/components/wallet/lib/TableHeadData.ts
328
324
  var WalletsTableHeadCells = [
@@ -364,101 +360,89 @@ var WalletsTableHeadCells = [
364
360
  ];
365
361
 
366
362
  // src/components/wallet/table/cells/Accounts.tsx
367
- import {
368
- TableCell,
369
- Tooltip,
370
- Typography as Typography4
371
- } from "@mui/material";
372
- import { jsx as jsx6 } from "react/jsx-runtime";
373
- var ConnectedWalletsAccountsTableCell = ({
374
- additionalAccounts,
375
- currentAccount,
376
- totalAccounts,
377
- tableCellProps
378
- }) => {
379
- return /* @__PURE__ */ jsx6(TableCell, { ...tableCellProps, children: /* @__PURE__ */ jsx6(
380
- Tooltip,
381
- {
382
- sx: { cursor: totalAccounts > 0 ? "pointer" : "auto" },
383
- title: [...currentAccount ?? [], ...additionalAccounts ?? []].map((address, index) => /* @__PURE__ */ jsx6("p", { children: address }, index)),
384
- children: /* @__PURE__ */ jsx6(Typography4, { children: totalAccounts })
385
- }
386
- ) });
387
- };
363
+ import { TableCell, Tooltip, Typography as Typography4 } from "@mui/material";
364
+ import React6 from "react";
365
+ var ConnectedWalletsAccountsTableCell = /* @__PURE__ */ __name(({ additionalAccounts, currentAccount, totalAccounts, tableCellProps }) => {
366
+ return /* @__PURE__ */ React6.createElement(TableCell, tableCellProps, /* @__PURE__ */ React6.createElement(Tooltip, {
367
+ sx: {
368
+ cursor: totalAccounts > 0 ? "pointer" : "auto"
369
+ },
370
+ title: [
371
+ ...currentAccount ?? [],
372
+ ...additionalAccounts ?? []
373
+ ].map((address, index) => /* @__PURE__ */ React6.createElement("p", {
374
+ key: index
375
+ }, address))
376
+ }, /* @__PURE__ */ React6.createElement(Typography4, null, totalAccounts)));
377
+ }, "ConnectedWalletsAccountsTableCell");
388
378
 
389
379
  // src/components/wallet/table/cells/Actions.tsx
390
380
  import { Check, InfoOutlined } from "@mui/icons-material";
391
- import {
392
- Button as Button3,
393
- IconButton,
394
- TableCell as TableCell2,
395
- Typography as Typography5
396
- } from "@mui/material";
381
+ import { Button as Button3, IconButton, TableCell as TableCell2, Typography as Typography5 } from "@mui/material";
397
382
  import { FlexRow as FlexRow3 } from "@xylabs/react-flexbox";
398
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
399
- var ConnectedWalletsActionsTableCell = ({
400
- connected,
401
- onConnect,
402
- onRevoke,
403
- tableCellProps
404
- }) => {
405
- return /* @__PURE__ */ jsx7(TableCell2, { ...tableCellProps, children: /* @__PURE__ */ jsxs6(FlexRow3, { gap: 2, justifyContent: "start", children: [
406
- connected ? /* @__PURE__ */ jsxs6(Typography5, { sx: { display: "inline-flex", gap: 0.5 }, children: [
407
- /* @__PURE__ */ jsx7(Check, {}),
408
- "Connected"
409
- ] }) : /* @__PURE__ */ jsx7(Button3, { variant: "contained", onClick: onConnect, children: "Connect" }),
410
- connected ? /* @__PURE__ */ jsx7(IconButton, { onClick: onRevoke, children: /* @__PURE__ */ jsx7(InfoOutlined, {}) }) : null
411
- ] }) });
412
- };
383
+ import React7 from "react";
384
+ var ConnectedWalletsActionsTableCell = /* @__PURE__ */ __name(({ connected, onConnect, onRevoke, tableCellProps }) => {
385
+ return /* @__PURE__ */ React7.createElement(TableCell2, tableCellProps, /* @__PURE__ */ React7.createElement(FlexRow3, {
386
+ gap: 2,
387
+ justifyContent: "start"
388
+ }, connected ? /* @__PURE__ */ React7.createElement(Typography5, {
389
+ sx: {
390
+ display: "inline-flex",
391
+ gap: 0.5
392
+ }
393
+ }, /* @__PURE__ */ React7.createElement(Check, null), "Connected") : /* @__PURE__ */ React7.createElement(Button3, {
394
+ variant: "contained",
395
+ onClick: onConnect
396
+ }, "Connect"), connected ? /* @__PURE__ */ React7.createElement(IconButton, {
397
+ onClick: onRevoke
398
+ }, /* @__PURE__ */ React7.createElement(InfoOutlined, null)) : null));
399
+ }, "ConnectedWalletsActionsTableCell");
413
400
 
414
401
  // src/components/wallet/table/cells/ChainName.tsx
415
402
  import { TableCell as TableCell3 } from "@mui/material";
416
- import { jsx as jsx8 } from "react/jsx-runtime";
417
- var ConnectedWalletsChainNameTableCell = ({ chainName, tableCellProps }) => {
418
- return /* @__PURE__ */ jsx8(TableCell3, { ...tableCellProps, children: chainName });
419
- };
403
+ import React8 from "react";
404
+ var ConnectedWalletsChainNameTableCell = /* @__PURE__ */ __name(({ chainName, tableCellProps }) => {
405
+ return /* @__PURE__ */ React8.createElement(TableCell3, tableCellProps, chainName);
406
+ }, "ConnectedWalletsChainNameTableCell");
420
407
 
421
408
  // src/components/wallet/table/cells/State.tsx
422
409
  import { Switch, TableCell as TableCell4 } from "@mui/material";
423
- import { isDefined } from "@xylabs/typeof";
424
- import { useMemo as useMemo3 } from "react";
425
- import { jsx as jsx9 } from "react/jsx-runtime";
426
- var ConnectedWalletState = ({
427
- connected,
428
- walletRdns,
429
- tableCellProps
430
- }) => {
431
- const {
432
- disableWallet,
433
- enableWallet,
434
- wallets
435
- } = useEnabledWallets();
436
- const enabled = useMemo3(() => isDefined(walletRdns) ? wallets[walletRdns]?.enabled : false, [wallets, walletRdns]);
437
- const handleClick = (event) => {
410
+ import { isDefined } from "@xylabs/sdk-js";
411
+ import React9, { useMemo as useMemo3 } from "react";
412
+ var ConnectedWalletState = /* @__PURE__ */ __name(({ connected, walletRdns, tableCellProps }) => {
413
+ const { disableWallet, enableWallet, wallets } = useEnabledWallets();
414
+ const enabled = useMemo3(() => isDefined(walletRdns) ? wallets[walletRdns]?.enabled : false, [
415
+ wallets,
416
+ walletRdns
417
+ ]);
418
+ const handleClick = /* @__PURE__ */ __name((event) => {
438
419
  const checked = event.target?.checked;
439
420
  if (isDefined(walletRdns)) {
440
421
  checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns);
441
422
  }
442
- };
443
- return /* @__PURE__ */ jsx9(TableCell4, { ...tableCellProps, children: /* @__PURE__ */ jsx9(Switch, { disabled: !connected, checked: connected && enabled, onChange: handleClick }) });
444
- };
423
+ }, "handleClick");
424
+ return /* @__PURE__ */ React9.createElement(TableCell4, tableCellProps, /* @__PURE__ */ React9.createElement(Switch, {
425
+ disabled: !connected,
426
+ checked: connected && enabled,
427
+ onChange: handleClick
428
+ }));
429
+ }, "ConnectedWalletState");
445
430
 
446
431
  // src/components/wallet/table/cells/Wallet.tsx
447
432
  import { TableCell as TableCell5, useTheme } from "@mui/material";
448
433
  import { ConstrainedImage as ConstrainedImage3 } from "@xylabs/react-crypto";
449
434
  import { FlexRow as FlexRow4 } from "@xylabs/react-flexbox";
450
- import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
451
- var ConnectedWalletsWalletTableCell = ({
452
- icon,
453
- walletName,
454
- tableCellProps
455
- }) => {
435
+ import React10 from "react";
436
+ var ConnectedWalletsWalletTableCell = /* @__PURE__ */ __name(({ icon, walletName, tableCellProps }) => {
456
437
  const theme = useTheme();
457
- return /* @__PURE__ */ jsx10(TableCell5, { ...tableCellProps, children: /* @__PURE__ */ jsxs7(FlexRow4, { gap: 2, justifyContent: "start", children: [
458
- /* @__PURE__ */ jsx10(ConstrainedImage3, { constrainedValue: theme.spacing(4), src: icon }),
459
- walletName
460
- ] }) });
461
- };
438
+ return /* @__PURE__ */ React10.createElement(TableCell5, tableCellProps, /* @__PURE__ */ React10.createElement(FlexRow4, {
439
+ gap: 2,
440
+ justifyContent: "start"
441
+ }, /* @__PURE__ */ React10.createElement(ConstrainedImage3, {
442
+ constrainedValue: theme.spacing(4),
443
+ src: icon
444
+ }), walletName));
445
+ }, "ConnectedWalletsWalletTableCell");
462
446
 
463
447
  // src/components/wallet/table/cells/Cells.tsx
464
448
  var ConnectedWalletTableCells = [
@@ -470,163 +454,145 @@ var ConnectedWalletTableCells = [
470
454
  ];
471
455
 
472
456
  // src/components/wallet/table/ConnectedWalletsTable.tsx
473
- import {
474
- Table,
475
- TableBody,
476
- TableCell as TableCell6,
477
- TableHead,
478
- TableRow as TableRow2
479
- } from "@mui/material";
480
- import { useState as useState2 } from "react";
457
+ import { Table, TableBody, TableCell as TableCell6, TableHead, TableRow as TableRow2 } from "@mui/material";
458
+ import React12, { useState as useState2 } from "react";
481
459
 
482
460
  // src/components/wallet/table/ConnectedWalletsTableRow.tsx
483
461
  import { TableRow } from "@mui/material";
484
462
  import { useEthWallet } from "@xylabs/react-crypto";
485
- import { useCallback, useMemo as useMemo4 } from "react";
486
- import { jsx as jsx11 } from "react/jsx-runtime";
487
- var WalletConnectionsTableRow = ({
488
- ignoreConnectDialog,
489
- onConnectClick,
490
- onRevoke,
491
- wallet,
492
- ...props
493
- }) => {
494
- const {
495
- currentAccount: currentAccountFromWallet,
496
- additionalAccounts,
497
- chainName,
498
- connectWallet,
499
- providerInfo
500
- } = useEthWallet(wallet);
501
- const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : [];
463
+ import React11, { useCallback, useMemo as useMemo4 } from "react";
464
+ var WalletConnectionsTableRow = /* @__PURE__ */ __name(({ ignoreConnectDialog, onConnectClick, onRevoke, wallet, ...props }) => {
465
+ const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet);
466
+ const currentAccount = currentAccountFromWallet?.toString() ? [
467
+ currentAccountFromWallet.toString()
468
+ ] : [];
502
469
  const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0);
503
470
  const connected = !!currentAccount?.length;
504
- const {
505
- icon,
506
- name,
507
- rdns
508
- } = useMemo4(() => providerInfo ?? {
471
+ const { icon, name, rdns } = useMemo4(() => providerInfo ?? {
509
472
  icon: void 0,
510
473
  name: void 0,
511
474
  rdns: void 0
512
- }, [providerInfo]);
513
- const activeProvider = useMemo4(
514
- () => ({
515
- connectWallet,
516
- icon,
517
- providerName: name
518
- }),
519
- [connectWallet, icon, name]
520
- );
475
+ }, [
476
+ providerInfo
477
+ ]);
478
+ const activeProvider = useMemo4(() => ({
479
+ connectWallet,
480
+ icon,
481
+ providerName: name
482
+ }), [
483
+ connectWallet,
484
+ icon,
485
+ name
486
+ ]);
521
487
  const onRevokeLocal = useCallback(() => {
522
488
  onRevoke?.(activeProvider);
523
- }, [activeProvider, onRevoke]);
489
+ }, [
490
+ activeProvider,
491
+ onRevoke
492
+ ]);
524
493
  const onConnectLocal = useCallback(async () => {
525
494
  if (ignoreConnectDialog) {
526
495
  await connectWallet?.();
527
496
  } else {
528
497
  onConnectClick?.(activeProvider);
529
498
  }
530
- }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick]);
531
- return /* @__PURE__ */ jsx11(TableRow, { ...props, children: Object.values(ConnectedWalletTableCells).map((Cell, index) => /* @__PURE__ */ jsx11(
532
- Cell,
533
- {
534
- additionalAccounts,
535
- chainName,
536
- connected,
537
- currentAccount,
538
- icon,
539
- onConnect: onConnectLocal,
540
- onRevoke: onRevokeLocal,
541
- totalAccounts,
542
- walletName: name,
543
- walletRdns: rdns
544
- },
545
- index
546
- )) });
547
- };
499
+ }, [
500
+ activeProvider,
501
+ connectWallet,
502
+ ignoreConnectDialog,
503
+ onConnectClick
504
+ ]);
505
+ return /* @__PURE__ */ React11.createElement(TableRow, props, Object.values(ConnectedWalletTableCells).map((Cell, index) => /* @__PURE__ */ React11.createElement(Cell, {
506
+ key: index,
507
+ additionalAccounts,
508
+ chainName,
509
+ connected,
510
+ currentAccount,
511
+ icon,
512
+ onConnect: onConnectLocal,
513
+ onRevoke: onRevokeLocal,
514
+ totalAccounts,
515
+ walletName: name,
516
+ walletRdns: rdns
517
+ })));
518
+ }, "WalletConnectionsTableRow");
548
519
 
549
520
  // src/components/wallet/table/hooks/useActiveProviderDialogState.tsx
550
521
  import { useState } from "react";
551
- var useActiveProviderDialogState = (setActiveProvider) => {
522
+ var useActiveProviderDialogState = /* @__PURE__ */ __name((setActiveProvider) => {
552
523
  const [show, setShow] = useState(false);
553
- const onSetActiveProvider = (activeProvider) => {
524
+ const onSetActiveProvider = /* @__PURE__ */ __name((activeProvider) => {
554
525
  setShow(true);
555
526
  setActiveProvider(activeProvider);
556
- };
557
- const onClose = () => {
527
+ }, "onSetActiveProvider");
528
+ const onClose = /* @__PURE__ */ __name(() => {
558
529
  setShow(false);
559
530
  setActiveProvider({});
560
- };
561
- return [show, onSetActiveProvider, onClose];
562
- };
531
+ }, "onClose");
532
+ return [
533
+ show,
534
+ onSetActiveProvider,
535
+ onClose
536
+ ];
537
+ }, "useActiveProviderDialogState");
563
538
 
564
539
  // src/components/wallet/table/ConnectedWalletsTable.tsx
565
- import { Fragment, jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
566
- var ConnectedWalletsTable = ({
567
- ignoreConnectDialog,
568
- onIgnoreConnectDialog,
569
- wallets,
570
- ...props
571
- }) => {
540
+ var ConnectedWalletsTable = /* @__PURE__ */ __name(({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {
572
541
  const [activeProvider, setActiveProvider] = useState2();
573
542
  const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider);
574
543
  const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider);
575
- return /* @__PURE__ */ jsxs8(Fragment, { children: [
576
- /* @__PURE__ */ jsxs8(Table, { ...props, children: [
577
- /* @__PURE__ */ jsx12(TableHead, { children: /* @__PURE__ */ jsx12(TableRow2, { children: WalletsTableHeadCells.map(({
578
- disablePadding,
579
- id,
580
- label,
581
- align,
582
- width
583
- }) => /* @__PURE__ */ jsx12(TableCell6, { align, padding: disablePadding ? "none" : "normal", width: width ?? "auto", children: label }, id)) }) }),
584
- /* @__PURE__ */ jsx12(TableBody, { children: (wallets ?? []).map((wallet) => /* @__PURE__ */ jsx12(
585
- WalletConnectionsTableRow,
586
- {
587
- ignoreConnectDialog,
588
- onConnectClick: onSetActiveProviderConnect,
589
- onRevoke: onSetActiveProviderRevoke,
590
- wallet
591
- },
592
- wallet.providerInfo?.rdns
593
- )) })
594
- ] }),
595
- /* @__PURE__ */ jsx12(RevokeWalletConnectionDialog, { open: showRevoke, onClose: onRevokeClose, activeProvider }),
596
- /* @__PURE__ */ jsx12(
597
- ConnectWalletDialog,
598
- {
599
- activeProvider,
600
- onClose: onConnectClose,
601
- open: showConnect,
602
- onIgnoreConnectDialog
603
- }
604
- )
605
- ] });
606
- };
544
+ return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(Table, props, /* @__PURE__ */ React12.createElement(TableHead, null, /* @__PURE__ */ React12.createElement(TableRow2, null, WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => /* @__PURE__ */ React12.createElement(TableCell6, {
545
+ align,
546
+ key: id,
547
+ padding: disablePadding ? "none" : "normal",
548
+ width: width ?? "auto"
549
+ }, label)))), /* @__PURE__ */ React12.createElement(TableBody, null, (wallets ?? []).map((wallet) => /* @__PURE__ */ React12.createElement(WalletConnectionsTableRow, {
550
+ ignoreConnectDialog,
551
+ key: wallet.providerInfo?.rdns,
552
+ onConnectClick: onSetActiveProviderConnect,
553
+ onRevoke: onSetActiveProviderRevoke,
554
+ wallet
555
+ })))), /* @__PURE__ */ React12.createElement(RevokeWalletConnectionDialog, {
556
+ open: showRevoke,
557
+ onClose: onRevokeClose,
558
+ activeProvider
559
+ }), /* @__PURE__ */ React12.createElement(ConnectWalletDialog, {
560
+ activeProvider,
561
+ onClose: onConnectClose,
562
+ open: showConnect,
563
+ onIgnoreConnectDialog
564
+ }));
565
+ }, "ConnectedWalletsTable");
607
566
 
608
567
  // src/components/ConnectedAccountsFlexbox.tsx
609
- import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
610
- var ConnectedAccountsFlexbox = ({
611
- ref,
612
- ignoreConnectDialog,
613
- onIgnoreConnectDialog,
614
- ...props
615
- }) => {
568
+ var ConnectedAccountsFlexbox = /* @__PURE__ */ __name(({ ref, ignoreConnectDialog, onIgnoreConnectDialog, ...props }) => {
616
569
  const theme = useTheme2();
617
570
  const { totalConnectedAccounts, sortedWallets } = useDetectedWallets();
618
- return /* @__PURE__ */ jsxs9(FlexCol3, { alignItems: "stretch", justifyContent: "start", gap: 2, ref, ...props, children: [
619
- /* @__PURE__ */ jsxs9(FlexCol3, { alignItems: "start", children: [
620
- /* @__PURE__ */ jsx13(Typography6, { variant: "h2", sx: { mb: 0.5 }, children: "Detected Web3 Wallets" }),
621
- totalConnectedAccounts ? /* @__PURE__ */ jsxs9(Typography6, { variant: "subtitle1", color: theme.vars.palette.secondary.main, sx: { opacity: 0.5 }, children: [
622
- "Total Connected Accounts:",
623
- " ",
624
- totalConnectedAccounts
625
- ] }) : null
626
- ] }),
627
- /* @__PURE__ */ jsx13(ConnectedWalletsTable, { wallets: sortedWallets, ignoreConnectDialog, onIgnoreConnectDialog })
628
- ] });
629
- };
571
+ return /* @__PURE__ */ React13.createElement(FlexCol3, {
572
+ alignItems: "stretch",
573
+ justifyContent: "start",
574
+ gap: 2,
575
+ ref,
576
+ ...props
577
+ }, /* @__PURE__ */ React13.createElement(FlexCol3, {
578
+ alignItems: "start"
579
+ }, /* @__PURE__ */ React13.createElement(Typography6, {
580
+ variant: "h2",
581
+ sx: {
582
+ mb: 0.5
583
+ }
584
+ }, "Detected Web3 Wallets"), totalConnectedAccounts ? /* @__PURE__ */ React13.createElement(Typography6, {
585
+ variant: "subtitle1",
586
+ color: theme.vars.palette.secondary.main,
587
+ sx: {
588
+ opacity: 0.5
589
+ }
590
+ }, "Total Connected Accounts:", " ", totalConnectedAccounts) : null), /* @__PURE__ */ React13.createElement(ConnectedWalletsTable, {
591
+ wallets: sortedWallets,
592
+ ignoreConnectDialog,
593
+ onIgnoreConnectDialog
594
+ }));
595
+ }, "ConnectedAccountsFlexbox");
630
596
  ConnectedAccountsFlexbox.displayName = "ConnectedAccountsFlexbox";
631
597
  export {
632
598
  CheckboxFormControl,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/xyo-color-logo.svg","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["import type { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n // eslint-disable-next-line unicorn/no-array-for-each\n Object.entries(wallets).forEach((wallet) => {\n if (wallet !== undefined) {\n addWallet.bind(this)\n }\n })\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter(existingListener => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n // eslint-disable-next-line unicorn/no-array-reduce\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { useDetectedWallets } from '../hooks/index.ts'\nimport { ConnectedWalletsTable } from './wallet/index.ts'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = ({\n ref, ignoreConnectDialog, onIgnoreConnectDialog, ...props\n}: ConnectedAccountsFlexboxProps) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant=\"h2\" sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts\n ? (\n <Typography variant=\"subtitle1\" color={theme.vars.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts:\n {' '}\n {totalConnectedAccounts}\n </Typography>\n )\n : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n}\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import type { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\nimport { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) => {\n const result: EIP6963Connector[] = []\n\n for (const wallet of Object.values(wallets)) {\n if (wallet) {\n if (wallet.allowedAccounts.length > 0)\n result.unshift(wallet)\n else\n result.push(wallet)\n }\n }\n return result\n}\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const sortedWallets = useMemo(() => sortWallets(wallets), [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport type { EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes/index.ts'\nimport { EnabledEthWalletConnections } from '../classes/index.ts'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n for (const [rdns, enabled] of Object.entries(enabledWalletsRdns ?? {})) enabledEthWallets?.toggleEnabledWallet(rdns, enabled)\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n // eslint-disable-next-line unicorn/no-array-reduce\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import type { FormControlProps } from '@mui/material'\nimport {\n Checkbox, FormControl, FormLabel,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { ActiveProvider } from '../../lib/index.ts'\nimport { CheckboxFormControl } from './CheckboxFormControl.tsx'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox.tsx'\nimport { WalletPermissionsFlexbox } from './Permissions.tsx'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({\n activeProvider, onIgnoreConnectDialog, ...props\n}) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog\n slotProps={{ paper: { sx: { display: 'flex', gap: 4 } } }}\n {...props}\n >\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{\n display: 'flex', flexDirection: 'column', gap: 4,\n }}\n >\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { xyoColorLogo } from '../../../../img/index.ts'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({\n icon, providerName, ...props\n}) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize=\"large\" />\n <FlexCol gap={0.5}>\n <ConstrainedImage\n constrainedValue=\"48px\"\n src={icon}\n alt={providerName}\n style={{ height: '48px', maxWidth: '48px' }}\n />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class=\"cls-1\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"/><path class=\"cls-2\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"/><path class=\"cls-3\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"/><path class=\"cls-4\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"/></svg>","import { Link, Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy\n {' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography,\n} from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { ActiveProvider } from '../../lib/index.ts'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue=\"24px\" />\n <DialogTitle sx={{ pl: 0 }}>\n Revoke\n {activeProvider?.providerName}\n {' '}\n Access\n </DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult\n {' '}\n {activeProvider?.providerName}\n &apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{globalThis.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import {\n TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport {\n Button, IconButton, TableCell, Typography,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n connected, onConnect, onRevoke, tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected\n ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n )\n : (\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected\n ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n )\n : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ChangeEvent } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks/index.ts'\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({\n connected, walletRdns, tableCellProps,\n}) => {\n const {\n disableWallet, enableWallet, wallets,\n } = useEnabledWallets()\n\n const enabled = useMemo(() => (isDefined(walletRdns) ? wallets[walletRdns]?.enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (isDefined(walletRdns)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n icon, walletName, tableCellProps,\n}) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import type { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts.tsx'\nimport { ConnectedWalletsActionsTableCell } from './Actions.tsx'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName.tsx'\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\nimport { ConnectedWalletState } from './State.tsx'\nimport { ConnectedWalletsWalletTableCell } from './Wallet.tsx'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import type { TableProps } from '@mui/material'\nimport {\n Table, TableBody, TableCell, TableHead, TableRow,\n} from '@mui/material'\nimport type { EIP6963Connector } from '@xylabs/react-crypto'\nimport React, { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs/index.ts'\nimport type { ActiveProvider } from '../lib/index.ts'\nimport { WalletsTableHeadCells } from '../lib/index.ts'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow.tsx'\nimport { useActiveProviderDialogState } from './hooks/index.ts'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({\n ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props\n}) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({\n disablePadding, id, label, align, width,\n }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map(wallet => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import type { TableRowProps } from '@mui/material'\nimport { TableRow } from '@mui/material'\nimport type { EthWalletConnectorBase } from '@xylabs/react-crypto'\nimport { useEthWallet } from '@xylabs/react-crypto'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { ActiveProvider } from '../lib/index.ts'\nimport { ConnectedWalletTableCells } from './cells/index.ts'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const {\n currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo,\n } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length)\n const {\n icon, name, rdns,\n } = useMemo(() => providerInfo ?? {\n icon: undefined, name: undefined, rdns: undefined,\n }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useState } from 'react'\n\nimport type { ActiveProvider } from '../../lib/index.ts'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["Typography","useTheme","FlexCol","useWalletDiscovery","useMemo","useWalletDiscovery","useMemo","jsx","jsxs","Typography","FlexCol","jsx","jsxs","jsx","jsxs","Button","Dialog","DialogActions","DialogContent","DialogTitle","Typography","ConstrainedImage","FlexRow","jsx","jsxs","Typography","jsx","Button","TableCell","Typography","FlexRow","jsx","jsxs","TableCell","jsx","TableCell","useMemo","jsx","useMemo","TableCell","TableCell","ConstrainedImage","FlexRow","jsx","jsxs","TableCell","TableRow","useState","useMemo","jsx","useMemo","jsx","jsxs","useState","TableRow","TableCell","jsx","jsxs","useTheme","FlexCol","Typography"]}
1
+ {"version":3,"sources":["../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/xyo-color-logo.svg","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["import type { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n // eslint-disable-next-line unicorn/no-array-for-each\n Object.entries(wallets).forEach((wallet) => {\n if (wallet !== undefined) {\n addWallet.bind(this)\n }\n })\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter(existingListener => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n // eslint-disable-next-line unicorn/no-array-reduce\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { useDetectedWallets } from '../hooks/index.ts'\nimport { ConnectedWalletsTable } from './wallet/index.ts'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = ({\n ref, ignoreConnectDialog, onIgnoreConnectDialog, ...props\n}: ConnectedAccountsFlexboxProps) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant=\"h2\" sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts\n ? (\n <Typography variant=\"subtitle1\" color={theme.vars.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts:\n {' '}\n {totalConnectedAccounts}\n </Typography>\n )\n : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n}\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import type { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\nimport { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) => {\n const result: EIP6963Connector[] = []\n\n for (const wallet of Object.values(wallets)) {\n if (wallet) {\n if (wallet.allowedAccounts.length > 0)\n result.unshift(wallet)\n else\n result.push(wallet)\n }\n }\n return result\n}\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const sortedWallets = useMemo(() => sortWallets(wallets), [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport type { EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes/index.ts'\nimport { EnabledEthWalletConnections } from '../classes/index.ts'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n for (const [rdns, enabled] of Object.entries(enabledWalletsRdns ?? {})) enabledEthWallets?.toggleEnabledWallet(rdns, enabled)\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n // eslint-disable-next-line unicorn/no-array-reduce\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import type { FormControlProps } from '@mui/material'\nimport {\n Checkbox, FormControl, FormLabel,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { ActiveProvider } from '../../lib/index.ts'\nimport { CheckboxFormControl } from './CheckboxFormControl.tsx'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox.tsx'\nimport { WalletPermissionsFlexbox } from './Permissions.tsx'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({\n activeProvider, onIgnoreConnectDialog, ...props\n}) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog\n slotProps={{ paper: { sx: { display: 'flex', gap: 4 } } }}\n {...props}\n >\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{\n display: 'flex', flexDirection: 'column', gap: 4,\n }}\n >\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { xyoColorLogo } from '../../../../img/index.ts'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({\n icon, providerName, ...props\n}) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize=\"large\" />\n <FlexCol gap={0.5}>\n <ConstrainedImage\n constrainedValue=\"48px\"\n src={icon}\n alt={providerName}\n style={{ height: '48px', maxWidth: '48px' }}\n />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class=\"cls-1\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"/><path class=\"cls-2\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"/><path class=\"cls-3\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"/><path class=\"cls-4\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"/></svg>","import { Link, Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy\n {' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography,\n} from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { ActiveProvider } from '../../lib/index.ts'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue=\"24px\" />\n <DialogTitle sx={{ pl: 0 }}>\n Revoke\n {activeProvider?.providerName}\n {' '}\n Access\n </DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult\n {' '}\n {activeProvider?.providerName}\n &apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{globalThis.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import {\n TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport {\n Button, IconButton, TableCell, Typography,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n connected, onConnect, onRevoke, tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected\n ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n )\n : (\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected\n ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n )\n : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { ChangeEvent } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks/index.ts'\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({\n connected, walletRdns, tableCellProps,\n}) => {\n const {\n disableWallet, enableWallet, wallets,\n } = useEnabledWallets()\n\n const enabled = useMemo(() => (isDefined(walletRdns) ? wallets[walletRdns]?.enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (isDefined(walletRdns)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n icon, walletName, tableCellProps,\n}) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import type { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts.tsx'\nimport { ConnectedWalletsActionsTableCell } from './Actions.tsx'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName.tsx'\nimport type { ConnectedWalletTableCellProps } from './lib/index.ts'\nimport { ConnectedWalletState } from './State.tsx'\nimport { ConnectedWalletsWalletTableCell } from './Wallet.tsx'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import type { TableProps } from '@mui/material'\nimport {\n Table, TableBody, TableCell, TableHead, TableRow,\n} from '@mui/material'\nimport type { EIP6963Connector } from '@xylabs/react-crypto'\nimport React, { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs/index.ts'\nimport type { ActiveProvider } from '../lib/index.ts'\nimport { WalletsTableHeadCells } from '../lib/index.ts'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow.tsx'\nimport { useActiveProviderDialogState } from './hooks/index.ts'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({\n ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props\n}) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({\n disablePadding, id, label, align, width,\n }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map(wallet => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import type { TableRowProps } from '@mui/material'\nimport { TableRow } from '@mui/material'\nimport type { EthWalletConnectorBase } from '@xylabs/react-crypto'\nimport { useEthWallet } from '@xylabs/react-crypto'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { ActiveProvider } from '../lib/index.ts'\nimport { ConnectedWalletTableCells } from './cells/index.ts'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const {\n currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo,\n } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length)\n const {\n icon, name, rdns,\n } = useMemo(() => providerInfo ?? {\n icon: undefined, name: undefined, rdns: undefined,\n }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useState } from 'react'\n\nimport type { ActiveProvider } from '../../lib/index.ts'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["DEFAULT_LOCAL_STORAGE_KEY","EnabledEthWalletConnections","persistPreferences","enabledWallets","ethWalletsState","listeners","localStorageKey","reviveSettings","wallets","disableWallet","rdns","toggleEnabledWallet","enableWallet","resetWallets","newWallets","addWallet","walletName","wallet","enabled","Object","entries","forEach","undefined","bind","emitChange","subscribe","listener","filter","existingListener","persistSettings","isPersistance","method","reduce","acc","localStorage","setItem","JSON","stringify","existingEntries","getItem","parse","e","console","warn","message","Typography","useTheme","FlexCol","React","useWalletDiscovery","useMemo","sortWallets","wallets","result","wallet","Object","values","allowedAccounts","length","unshift","push","useDetectedWallets","useWalletDiscovery","sortedWallets","useMemo","totalConnectedAccounts","reduce","acc","useWalletDiscovery","useMemo","useSyncExternalStore","enabledEthWallets","useEnabledWalletsInner","enabledWalletsRdns","discoveredWallets","useWalletDiscovery","wallets","useMemo","undefined","EnabledEthWalletConnections","resetWallets","rdns","enabled","Object","entries","toggleEnabledWallet","useSyncExternalStore","subscribe","bind","useEnabledWallets","enabledWallets","reduce","acc","walletName","wallet","disableWallet","enableWallet","Checkbox","FormControl","FormLabel","React","CheckboxFormControl","onCheckChanged","props","FormControl","FormLabel","Checkbox","onChange","_","checked","Button","Dialog","DialogActions","DialogContent","DialogTitle","React","SyncAlt","Typography","ConstrainedImage","FlexCol","FlexRow","React","LinkedProvidersFlexbox","icon","providerName","props","React","FlexRow","gap","justifyContent","FlexCol","img","alt","src","xyoColorLogo","style","height","Typography","variant","SyncAlt","fontSize","ConstrainedImage","constrainedValue","maxWidth","Link","Typography","FlexCol","React","WalletPermissionsFlexbox","props","React","FlexCol","gap","Typography","fontWeight","sx","textAlign","ul","li","variant","Link","href","target","ConnectWalletDialog","activeProvider","onIgnoreConnectDialog","props","icon","providerName","onConnect","connectWallet","onClose","e","console","warn","message","React","Dialog","slotProps","paper","sx","display","gap","DialogTitle","textAlign","DialogContent","flexDirection","LinkedProvidersFlexbox","WalletPermissionsFlexbox","CheckboxFormControl","onCheckChanged","DialogActions","Button","variant","onClick","Button","Dialog","DialogActions","DialogContent","DialogTitle","Typography","ConstrainedImage","FlexRow","React","RevokeWalletConnectionDialog","activeProvider","props","React","Dialog","FlexRow","gap","justifyContent","pl","ConstrainedImage","src","icon","constrainedValue","DialogTitle","sx","providerName","DialogContent","Typography","globalThis","location","origin","DialogActions","Button","variant","onClick","onClose","WalletsTableHeadCells","disablePadding","id","label","numeric","showOnMobile","TableCell","Tooltip","Typography","React","ConnectedWalletsAccountsTableCell","additionalAccounts","currentAccount","totalAccounts","tableCellProps","React","TableCell","Tooltip","sx","cursor","title","map","address","index","p","key","Typography","Check","InfoOutlined","Button","IconButton","TableCell","Typography","FlexRow","React","ConnectedWalletsActionsTableCell","connected","onConnect","onRevoke","tableCellProps","React","TableCell","FlexRow","gap","justifyContent","Typography","sx","display","Check","Button","variant","onClick","IconButton","InfoOutlined","TableCell","React","ConnectedWalletsChainNameTableCell","chainName","tableCellProps","React","TableCell","Switch","TableCell","isDefined","React","useMemo","ConnectedWalletState","connected","walletRdns","tableCellProps","disableWallet","enableWallet","wallets","useEnabledWallets","enabled","useMemo","isDefined","handleClick","event","checked","target","React","TableCell","Switch","disabled","onChange","TableCell","useTheme","ConstrainedImage","FlexRow","React","ConnectedWalletsWalletTableCell","icon","walletName","tableCellProps","theme","useTheme","React","TableCell","FlexRow","gap","justifyContent","ConstrainedImage","constrainedValue","spacing","src","ConnectedWalletTableCells","ConnectedWalletsWalletTableCell","ConnectedWalletsChainNameTableCell","ConnectedWalletsAccountsTableCell","ConnectedWalletsActionsTableCell","ConnectedWalletState","Table","TableBody","TableCell","TableHead","TableRow","React","useState","TableRow","useEthWallet","React","useCallback","useMemo","WalletConnectionsTableRow","ignoreConnectDialog","onConnectClick","onRevoke","wallet","props","currentAccount","currentAccountFromWallet","additionalAccounts","chainName","connectWallet","providerInfo","useEthWallet","toString","totalAccounts","length","connected","icon","name","rdns","useMemo","undefined","activeProvider","providerName","onRevokeLocal","useCallback","onConnectLocal","React","TableRow","Object","values","ConnectedWalletTableCells","map","Cell","index","key","onConnect","walletName","walletRdns","useState","useActiveProviderDialogState","setActiveProvider","show","setShow","useState","onSetActiveProvider","activeProvider","onClose","ConnectedWalletsTable","ignoreConnectDialog","onIgnoreConnectDialog","wallets","props","activeProvider","setActiveProvider","useState","showConnect","onSetActiveProviderConnect","onConnectClose","useActiveProviderDialogState","showRevoke","onSetActiveProviderRevoke","onRevokeClose","React","Table","TableHead","TableRow","WalletsTableHeadCells","map","disablePadding","id","label","align","width","TableCell","key","padding","TableBody","wallet","WalletConnectionsTableRow","providerInfo","rdns","onConnectClick","onRevoke","RevokeWalletConnectionDialog","open","onClose","ConnectWalletDialog","ConnectedAccountsFlexbox","ref","ignoreConnectDialog","onIgnoreConnectDialog","props","theme","useTheme","totalConnectedAccounts","sortedWallets","useDetectedWallets","React","FlexCol","alignItems","justifyContent","gap","Typography","variant","sx","mb","color","vars","palette","secondary","main","opacity","ConnectedWalletsTable","wallets","displayName"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-connected-accounts",
3
- "version": "7.4.2",
3
+ "version": "7.5.0",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -43,26 +43,26 @@
43
43
  "src"
44
44
  ],
45
45
  "dependencies": {
46
- "@xylabs/react-crypto": "~7.1.8",
47
- "@xylabs/react-flexbox": "~7.1.8",
48
- "@xylabs/typeof": "~5.0.50",
49
- "@xyo-network/react-table": "^7.4.2"
46
+ "@xylabs/react-crypto": "~7.1.9",
47
+ "@xylabs/react-flexbox": "~7.1.9",
48
+ "@xylabs/typeof": "~5.0.64",
49
+ "@xyo-network/react-table": "7.5.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@mui/icons-material": "~7.3.6",
53
- "@mui/material": "~7.3.6",
54
- "@storybook/react-vite": "~10.1.4",
55
- "@types/react": "^19.2.7",
56
- "@xylabs/ts-scripts-yarn3": "~7.2.8",
57
- "@xylabs/tsconfig": "~7.2.8",
58
- "@xylabs/tsconfig-dom": "~7.2.8",
59
- "@xylabs/tsconfig-react": "~7.2.8",
60
- "react": "^19.2.1",
61
- "react-dom": "^19.2.1",
62
- "react-router-dom": "^7.10.0",
63
- "storybook": "~10.1.4",
52
+ "@mui/icons-material": "~7.3.7",
53
+ "@mui/material": "~7.3.7",
54
+ "@storybook/react-vite": "~10.2.1",
55
+ "@types/react": "^19.2.10",
56
+ "@xylabs/ts-scripts-yarn3": "~7.3.2",
57
+ "@xylabs/tsconfig": "~7.3.2",
58
+ "@xylabs/tsconfig-dom": "~7.3.2",
59
+ "@xylabs/tsconfig-react": "~7.3.2",
60
+ "react": "^19.2.4",
61
+ "react-dom": "^19.2.4",
62
+ "react-router-dom": "^7.13.0",
63
+ "storybook": "~10.2.1",
64
64
  "typescript": "^5.9.3",
65
- "vite": "~7.2.6"
65
+ "vite": "~7.3.1"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "@mui/icons-material": ">=6 <8",
@@ -75,4 +75,4 @@
75
75
  "access": "public"
76
76
  },
77
77
  "docs": "dist/docs.json"
78
- }
78
+ }
@@ -1,5 +1,5 @@
1
1
  import { Switch, TableCell } from '@mui/material'
2
- import { isDefined } from '@xylabs/typeof'
2
+ import { isDefined } from '@xylabs/sdk-js'
3
3
  import type { ChangeEvent } from 'react'
4
4
  import React, { useMemo } from 'react'
5
5