@xyo-network/react-connected-accounts 2.78.0 → 2.78.2

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