@ksangkuk10/wallet-controller 1.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/_commonjs/controller.js +704 -0
- package/_commonjs/env.js +9 -0
- package/_commonjs/exception/isError.js +15 -0
- package/_commonjs/exception/mapExtensionTxError.js +46 -0
- package/_commonjs/exception/mapWalletConnectError.js +69 -0
- package/_commonjs/getChainOptions.js +57 -0
- package/_commonjs/index.js +22 -0
- package/_commonjs/modules/connect-modal/index.js +80 -0
- package/_commonjs/modules/connect-modal/style.js +161 -0
- package/_commonjs/modules/extension-router/ExtensionRouter.js +241 -0
- package/_commonjs/modules/extension-router/index.js +19 -0
- package/_commonjs/modules/extension-router/modal.js +80 -0
- package/_commonjs/modules/extension-router/modal.style.js +161 -0
- package/_commonjs/modules/extension-router/multiChannel.js +18 -0
- package/_commonjs/modules/extension-router/session.js +37 -0
- package/_commonjs/modules/extension-router/types.js +16 -0
- package/_commonjs/modules/legacy-extension/LegacyExtensionConnector.js +143 -0
- package/_commonjs/modules/legacy-extension/createFixedExtension.js +236 -0
- package/_commonjs/modules/legacy-extension/index.js +19 -0
- package/_commonjs/modules/readonly-wallet/connect.js +24 -0
- package/_commonjs/modules/readonly-wallet/index.js +20 -0
- package/_commonjs/modules/readonly-wallet/modal.js +123 -0
- package/_commonjs/modules/readonly-wallet/modal.style.js +204 -0
- package/_commonjs/modules/readonly-wallet/storage.js +40 -0
- package/_commonjs/modules/readonly-wallet/types.js +3 -0
- package/_commonjs/modules/walletconnect/connect.js +421 -0
- package/_commonjs/modules/walletconnect/errors.js +51 -0
- package/_commonjs/modules/walletconnect/impl/socket-transport/index.js +204 -0
- package/_commonjs/modules/walletconnect/impl/socket-transport/network.js +30 -0
- package/_commonjs/modules/walletconnect/index.js +22 -0
- package/_commonjs/modules/walletconnect/modal.js +147 -0
- package/_commonjs/modules/walletconnect/modal.style.js +138 -0
- package/_commonjs/modules/walletconnect/types.js +13 -0
- package/_commonjs/operators/getExtensions.js +55 -0
- package/_commonjs/operators/toConnectedWallet.js +24 -0
- package/_commonjs/operators/toLcdClient.js +15 -0
- package/_commonjs/utils/browser-check.js +47 -0
- package/_commonjs/utils/checkExtensionReady.js +28 -0
- package/_commonjs/utils/sortConnections.js +13 -0
- package/_commonjs/verifyBytes.js +19 -0
- package/controller.d.ts +220 -0
- package/controller.js +697 -0
- package/env.d.ts +2 -0
- package/env.js +5 -0
- package/exception/isError.d.ts +3 -0
- package/exception/isError.js +11 -0
- package/exception/mapExtensionTxError.d.ts +5 -0
- package/exception/mapExtensionTxError.js +41 -0
- package/exception/mapWalletConnectError.d.ts +6 -0
- package/exception/mapWalletConnectError.js +63 -0
- package/getChainOptions.d.ts +3 -0
- package/getChainOptions.js +53 -0
- package/index.d.ts +6 -0
- package/index.js +6 -0
- package/modules/connect-modal/index.d.ts +2 -0
- package/modules/connect-modal/index.js +76 -0
- package/modules/connect-modal/style.d.ts +1 -0
- package/modules/connect-modal/style.js +158 -0
- package/modules/extension-router/ExtensionRouter.d.ts +43 -0
- package/modules/extension-router/ExtensionRouter.js +237 -0
- package/modules/extension-router/index.d.ts +2 -0
- package/modules/extension-router/index.js +3 -0
- package/modules/extension-router/modal.d.ts +2 -0
- package/modules/extension-router/modal.js +76 -0
- package/modules/extension-router/modal.style.d.ts +1 -0
- package/modules/extension-router/modal.style.js +158 -0
- package/modules/extension-router/multiChannel.d.ts +13 -0
- package/modules/extension-router/multiChannel.js +14 -0
- package/modules/extension-router/session.d.ts +8 -0
- package/modules/extension-router/session.js +31 -0
- package/modules/extension-router/types.d.ts +35 -0
- package/modules/extension-router/types.js +13 -0
- package/modules/legacy-extension/LegacyExtensionConnector.d.ts +30 -0
- package/modules/legacy-extension/LegacyExtensionConnector.js +139 -0
- package/modules/legacy-extension/createFixedExtension.d.ts +46 -0
- package/modules/legacy-extension/createFixedExtension.js +232 -0
- package/modules/legacy-extension/index.d.ts +2 -0
- package/modules/legacy-extension/index.js +3 -0
- package/modules/readonly-wallet/connect.d.ts +8 -0
- package/modules/readonly-wallet/connect.js +19 -0
- package/modules/readonly-wallet/index.d.ts +3 -0
- package/modules/readonly-wallet/index.js +4 -0
- package/modules/readonly-wallet/modal.d.ts +7 -0
- package/modules/readonly-wallet/modal.js +119 -0
- package/modules/readonly-wallet/modal.style.d.ts +1 -0
- package/modules/readonly-wallet/modal.style.js +201 -0
- package/modules/readonly-wallet/storage.d.ts +4 -0
- package/modules/readonly-wallet/storage.js +34 -0
- package/modules/readonly-wallet/types.d.ts +5 -0
- package/modules/readonly-wallet/types.js +2 -0
- package/modules/walletconnect/connect.d.ts +42 -0
- package/modules/walletconnect/connect.js +390 -0
- package/modules/walletconnect/errors.d.ts +22 -0
- package/modules/walletconnect/errors.js +41 -0
- package/modules/walletconnect/impl/socket-transport/index.d.ts +39 -0
- package/modules/walletconnect/impl/socket-transport/index.js +199 -0
- package/modules/walletconnect/impl/socket-transport/network.d.ts +8 -0
- package/modules/walletconnect/impl/socket-transport/network.js +28 -0
- package/modules/walletconnect/index.d.ts +5 -0
- package/modules/walletconnect/index.js +6 -0
- package/modules/walletconnect/modal.d.ts +12 -0
- package/modules/walletconnect/modal.js +143 -0
- package/modules/walletconnect/modal.style.d.ts +1 -0
- package/modules/walletconnect/modal.style.js +135 -0
- package/modules/walletconnect/types.d.ts +24 -0
- package/modules/walletconnect/types.js +10 -0
- package/operators/getExtensions.d.ts +9 -0
- package/operators/getExtensions.js +51 -0
- package/operators/toConnectedWallet.d.ts +4 -0
- package/operators/toConnectedWallet.js +20 -0
- package/operators/toLcdClient.d.ts +4 -0
- package/operators/toLcdClient.js +11 -0
- package/package.json +550 -0
- package/utils/browser-check.d.ts +3 -0
- package/utils/browser-check.js +38 -0
- package/utils/checkExtensionReady.d.ts +6 -0
- package/utils/checkExtensionReady.js +24 -0
- package/utils/sortConnections.d.ts +2 -0
- package/utils/sortConnections.js +9 -0
- package/verifyBytes.d.ts +4 -0
- package/verifyBytes.js +15 -0
- package/~/.npm/_cacache/content-v2/sha512/ad/b5/8c87dfae7c208906a88f1997b323933e7efb4e481bcfdc559cb13199d077e1b40abcb161561a293ca59cd98aae224cd0877555e6e7a2e11021bc55ebedf4 +0 -0
- package/~/.npm/_cacache/index-v5/6a/39/c03f62d7353a7cc1411e180ec37c393f9fedcfd081fa567f67bf32e6fb68 +2 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { WebExtensionStatus, } from '@ksangkuk10/web-extension-interface';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { LegacyExtensionConnector } from '../legacy-extension';
|
|
4
|
+
import { selectModal } from './modal';
|
|
5
|
+
import { getXplaExtensions } from './multiChannel';
|
|
6
|
+
import { clearSession, getStoredSession, storeSession } from './session';
|
|
7
|
+
import { ExtensionRouterConnectorType, ExtensionRouterStatus, } from './types';
|
|
8
|
+
export class ExtensionRouter {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
this._connector = null;
|
|
12
|
+
// ---------------------------------------------
|
|
13
|
+
// states
|
|
14
|
+
// ---------------------------------------------
|
|
15
|
+
this.states = () => {
|
|
16
|
+
return this._states.asObservable();
|
|
17
|
+
};
|
|
18
|
+
this.getLastStates = () => {
|
|
19
|
+
return this._states.getValue();
|
|
20
|
+
};
|
|
21
|
+
// ---------------------------------------------
|
|
22
|
+
// behaviors
|
|
23
|
+
// ---------------------------------------------
|
|
24
|
+
this.connect = async (identifier) => {
|
|
25
|
+
var _a;
|
|
26
|
+
const extensionInfos = getXplaExtensions();
|
|
27
|
+
if (extensionInfos.length === 0) {
|
|
28
|
+
throw new Error(`[ExtensionRouter] Can't find connectors`);
|
|
29
|
+
}
|
|
30
|
+
let extensionInfo;
|
|
31
|
+
if (identifier) {
|
|
32
|
+
extensionInfo = extensionInfos.find((item) => item.identifier === identifier);
|
|
33
|
+
}
|
|
34
|
+
else if (extensionInfos.length === 1) {
|
|
35
|
+
extensionInfo = extensionInfos[0];
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const select = (_a = this.options.selectExtension) !== null && _a !== void 0 ? _a : selectModal;
|
|
39
|
+
const selectedExtensionInfo = await select(extensionInfos);
|
|
40
|
+
if (selectedExtensionInfo) {
|
|
41
|
+
extensionInfo = selectedExtensionInfo;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (extensionInfo) {
|
|
45
|
+
this.createConnector(extensionInfo);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
this.disconnect = () => {
|
|
49
|
+
var _a;
|
|
50
|
+
clearSession();
|
|
51
|
+
this._states.next({
|
|
52
|
+
type: ExtensionRouterStatus.WALLET_NOT_CONNECTED,
|
|
53
|
+
network: this.options.defaultNetwork,
|
|
54
|
+
});
|
|
55
|
+
(_a = this._connector) === null || _a === void 0 ? void 0 : _a.close();
|
|
56
|
+
this._connector = null;
|
|
57
|
+
};
|
|
58
|
+
this.requestApproval = () => {
|
|
59
|
+
if (!this._connector) {
|
|
60
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
61
|
+
}
|
|
62
|
+
this._connector.requestApproval();
|
|
63
|
+
};
|
|
64
|
+
this.refetchStates = () => {
|
|
65
|
+
if (!this._connector) {
|
|
66
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
67
|
+
}
|
|
68
|
+
this._connector.refetchStates();
|
|
69
|
+
};
|
|
70
|
+
this.post = (tx, xplaAddress) => {
|
|
71
|
+
if (!this._connector) {
|
|
72
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
73
|
+
}
|
|
74
|
+
const latestStates = this.getLastStates();
|
|
75
|
+
if (latestStates.type !== ExtensionRouterStatus.WALLET_CONNECTED) {
|
|
76
|
+
throw new Error(`[ExtensionRouter] Wallet is not connected`);
|
|
77
|
+
}
|
|
78
|
+
return this._connector.post(xplaAddress !== null && xplaAddress !== void 0 ? xplaAddress : latestStates.wallet.xplaAddress, tx);
|
|
79
|
+
};
|
|
80
|
+
this.sign = (tx, xplaAddress) => {
|
|
81
|
+
if (!this._connector) {
|
|
82
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
83
|
+
}
|
|
84
|
+
const latestStates = this.getLastStates();
|
|
85
|
+
if (latestStates.type !== ExtensionRouterStatus.WALLET_CONNECTED) {
|
|
86
|
+
throw new Error(`[ExtensionRouter] Wallet is not connected`);
|
|
87
|
+
}
|
|
88
|
+
return this._connector.sign(xplaAddress !== null && xplaAddress !== void 0 ? xplaAddress : latestStates.wallet.xplaAddress, tx);
|
|
89
|
+
};
|
|
90
|
+
this.signBytes = (bytes, xplaAddress) => {
|
|
91
|
+
if (!this._connector) {
|
|
92
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
93
|
+
}
|
|
94
|
+
const latestStates = this.getLastStates();
|
|
95
|
+
if (latestStates.type !== ExtensionRouterStatus.WALLET_CONNECTED) {
|
|
96
|
+
throw new Error(`[ExtensionRouter] Wallet is not connected`);
|
|
97
|
+
}
|
|
98
|
+
return this._connector.signBytes(xplaAddress !== null && xplaAddress !== void 0 ? xplaAddress : latestStates.wallet.xplaAddress, bytes);
|
|
99
|
+
};
|
|
100
|
+
this.hasCW20Tokens = (chainID, ...tokenAddrs) => {
|
|
101
|
+
if (!this._connector) {
|
|
102
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
103
|
+
}
|
|
104
|
+
else if (this._connector instanceof LegacyExtensionConnector) {
|
|
105
|
+
throw new Error('[ExtensionRouter] Legacy extension does not support hasCW20Tokens() ');
|
|
106
|
+
}
|
|
107
|
+
return this._connector.hasCW20Tokens(chainID, ...tokenAddrs);
|
|
108
|
+
};
|
|
109
|
+
this.addCW20Tokens = (chainID, ...tokenAddrs) => {
|
|
110
|
+
if (!this._connector) {
|
|
111
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
112
|
+
}
|
|
113
|
+
else if (this._connector instanceof LegacyExtensionConnector) {
|
|
114
|
+
throw new Error('[ExtensionRouter] Legacy extension does not support addCW20Tokens() ');
|
|
115
|
+
}
|
|
116
|
+
return this._connector.addCW20Tokens(chainID, ...tokenAddrs);
|
|
117
|
+
};
|
|
118
|
+
this.hasNetwork = (network) => {
|
|
119
|
+
if (!this._connector) {
|
|
120
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
121
|
+
}
|
|
122
|
+
else if (this._connector instanceof LegacyExtensionConnector) {
|
|
123
|
+
throw new Error('[ExtensionRouter] Legacy extension does not support hasNetwork() ');
|
|
124
|
+
}
|
|
125
|
+
return this._connector.hasNetwork(network);
|
|
126
|
+
};
|
|
127
|
+
this.addNetwork = (network) => {
|
|
128
|
+
if (!this._connector) {
|
|
129
|
+
throw new Error('[ExtensionRouter] No connector');
|
|
130
|
+
}
|
|
131
|
+
else if (this._connector instanceof LegacyExtensionConnector) {
|
|
132
|
+
throw new Error('[ExtensionRouter] Legacy extension does not support addNetwork() ');
|
|
133
|
+
}
|
|
134
|
+
return this._connector.addNetwork(network);
|
|
135
|
+
};
|
|
136
|
+
// ---------------------------------------------
|
|
137
|
+
// internal
|
|
138
|
+
// ---------------------------------------------
|
|
139
|
+
this.createConnector = (extensionInfo) => {
|
|
140
|
+
var _a;
|
|
141
|
+
(_a = this._connector) === null || _a === void 0 ? void 0 : _a.close();
|
|
142
|
+
const connectorPromise = extensionInfo.connector
|
|
143
|
+
? Promise.resolve(extensionInfo.connector())
|
|
144
|
+
: Promise.resolve(new LegacyExtensionConnector(extensionInfo.identifier));
|
|
145
|
+
connectorPromise.then((connector) => {
|
|
146
|
+
var _a;
|
|
147
|
+
connector.open((_a = this.options.hostWindow) !== null && _a !== void 0 ? _a : window, {
|
|
148
|
+
next: (nextStates) => {
|
|
149
|
+
var _a;
|
|
150
|
+
if (nextStates.type === WebExtensionStatus.INITIALIZING) {
|
|
151
|
+
this._states.next({
|
|
152
|
+
type: ExtensionRouterStatus.INITIALIZING,
|
|
153
|
+
network: this.options.defaultNetwork,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else if (nextStates.type === WebExtensionStatus.NO_AVAILABLE) {
|
|
157
|
+
this._states.next({
|
|
158
|
+
type: ExtensionRouterStatus.NO_AVAILABLE,
|
|
159
|
+
network: this.options.defaultNetwork,
|
|
160
|
+
isConnectorExists: true,
|
|
161
|
+
isApproved: nextStates.isApproved,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
else if (nextStates.wallets.length === 0) {
|
|
165
|
+
this._states.next({
|
|
166
|
+
type: ExtensionRouterStatus.WALLET_NOT_CONNECTED,
|
|
167
|
+
network: nextStates.network,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
this._states.next({
|
|
172
|
+
type: ExtensionRouterStatus.WALLET_CONNECTED,
|
|
173
|
+
network: nextStates.network,
|
|
174
|
+
wallet: nextStates.focusedWalletAddress
|
|
175
|
+
? (_a = nextStates.wallets.find((itemWallet) => itemWallet.xplaAddress ===
|
|
176
|
+
nextStates.focusedWalletAddress)) !== null && _a !== void 0 ? _a : nextStates.wallets[0]
|
|
177
|
+
: nextStates.wallets[0],
|
|
178
|
+
connectorType: connector instanceof LegacyExtensionConnector
|
|
179
|
+
? ExtensionRouterConnectorType.LEGACY
|
|
180
|
+
: ExtensionRouterConnectorType.WEB_EXTENSION,
|
|
181
|
+
supportFeatures: new Set(connector.supportFeatures()),
|
|
182
|
+
extensionInfo,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
error: (error) => {
|
|
187
|
+
console.error(error);
|
|
188
|
+
},
|
|
189
|
+
complete: () => { },
|
|
190
|
+
});
|
|
191
|
+
this._connector = connector;
|
|
192
|
+
storeSession({
|
|
193
|
+
identifier: extensionInfo.identifier,
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
this._states = new BehaviorSubject({
|
|
198
|
+
type: ExtensionRouterStatus.INITIALIZING,
|
|
199
|
+
network: options.defaultNetwork,
|
|
200
|
+
});
|
|
201
|
+
this._extensionInfos = getXplaExtensions();
|
|
202
|
+
if (this._extensionInfos.length === 0) {
|
|
203
|
+
this._states.next({
|
|
204
|
+
type: ExtensionRouterStatus.NO_AVAILABLE,
|
|
205
|
+
network: options.defaultNetwork,
|
|
206
|
+
isConnectorExists: false,
|
|
207
|
+
});
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
// ---------------------------------------------
|
|
211
|
+
// initialize session
|
|
212
|
+
// ---------------------------------------------
|
|
213
|
+
const session = getStoredSession();
|
|
214
|
+
if (session) {
|
|
215
|
+
const extensionInfo = this._extensionInfos.find((item) => item.identifier === session.identifier);
|
|
216
|
+
if (extensionInfo) {
|
|
217
|
+
this.createConnector(extensionInfo);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
console.warn(`Can't find an extension for the session "${session.identifier}"`);
|
|
222
|
+
clearSession();
|
|
223
|
+
this._states.next({
|
|
224
|
+
type: ExtensionRouterStatus.WALLET_NOT_CONNECTED,
|
|
225
|
+
network: options.defaultNetwork,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this._states.next({
|
|
231
|
+
type: ExtensionRouterStatus.WALLET_NOT_CONNECTED,
|
|
232
|
+
network: options.defaultNetwork,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0ZW5zaW9uUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0Brc2FuZ2t1azEwL3dhbGxldC1jb250cm9sbGVyL21vZHVsZXMvZXh0ZW5zaW9uLXJvdXRlci9FeHRlbnNpb25Sb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQU9MLGtCQUFrQixHQUVuQixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pFLE9BQU8sRUFDTCw0QkFBNEIsRUFFNUIscUJBQXFCLEdBQ3RCLE1BQU0sU0FBUyxDQUFDO0FBa0JqQixNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUE2QixPQUErQjtRQUEvQixZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQUZwRCxlQUFVLEdBQXFDLElBQUksQ0FBQztRQW9ENUQsZ0RBQWdEO1FBQ2hELFNBQVM7UUFDVCxnREFBZ0Q7UUFDaEQsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFRixrQkFBYSxHQUFHLEdBQUcsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELFlBQVk7UUFDWixnREFBZ0Q7UUFDaEQsWUFBTyxHQUFHLEtBQUssRUFBRSxVQUFtQixF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QUFNO2dCQUNMLE9BQU8sQ0FBQyxJQUFJLENBQ1YsNENBQTRDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FDbEUsQ0FBQztnQkFDRixZQUFZLEVBQUUsQ0FBQztnQkFFZixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDaEIsSUFBSSxFQUFFLHFCQUFxQixDQUFDLG9CQUFvQjtvQkFDaEQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2lCQUNoQyxDQUFDLENBQUM7YUFDSjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLHFCQUFxQixDQUFDLG9CQUFvQjtnQkFDaEQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2FBQ2hDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQW1RRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmtJbmZvIH0gZnJvbSAnQGtzYW5na3VrMTAvd2FsbGV0LXR5cGVzJztcbmltcG9ydCB7XG4gIFhwbGFXZWJFeHRlbnNpb25Db25uZWN0b3IsXG4gIFdlYkV4dGVuc2lvbk5ldHdvcmtJbmZvLFxuICBXZWJFeHRlbnNpb25Qb3N0UGF5bG9hZCxcbiAgV2ViRXh0ZW5zaW9uU2lnbkJ5dGVzUGF5bG9hZCxcbiAgV2ViRXh0ZW5zaW9uU2lnblBheWxvYWQsXG4gIFdlYkV4dGVuc2lvblN0YXRlcyxcbiAgV2ViRXh0ZW5zaW9uU3RhdHVzLFxuICBXZWJFeHRlbnNpb25UeFJlc3VsdCxcbn0gZnJvbSAnQGtzYW5na3VrMTAvd2ViLWV4dGVuc2lvbi1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3JlYXRlVHhPcHRpb25zLCBTaWduTW9kZSB9IGZyb20gJ0B4cGxhL3hwbGEuanMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpYmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExlZ2FjeUV4dGVuc2lvbkNvbm5lY3RvciB9IGZyb20gJy4uL2xlZ2FjeS1leHRlbnNpb24nO1xuaW1wb3J0IHsgc2VsZWN0TW9kYWwgfSBmcm9tICcuL21vZGFsJztcbmltcG9ydCB7IEV4dGVuc2lvbkluZm8sIGdldFhwbGFFeHRlbnNpb25zIH0gZnJvbSAnLi9tdWx0aUNoYW5uZWwnO1xuaW1wb3J0IHsgY2xlYXJTZXNzaW9uLCBnZXRTdG9yZWRTZXNzaW9uLCBzdG9yZVNlc3Npb24gfSBmcm9tICcuL3Nlc3Npb24nO1xuaW1wb3J0IHtcbiAgRXh0ZW5zaW9uUm91dGVyQ29ubmVjdG9yVHlwZSxcbiAgRXh0ZW5zaW9uUm91dGVyU3RhdGVzLFxuICBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblJvdXRlck9wdGlvbnMge1xuICBkZWZhdWx0TmV0d29yazogTmV0d29ya0luZm87XG4gIHNlbGVjdEV4dGVuc2lvbj86IChcbiAgICBleHRlbnNpb25JbmZvczogRXh0ZW5zaW9uSW5mb1tdLFxuICApID0+IFByb21pc2U8RXh0ZW5zaW9uSW5mbyB8IG51bGw+O1xuXG4gIGhvc3RXaW5kb3c/OiBXaW5kb3c7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIGRldmVsb3BtZW50IGZlYXR1cmVzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkYW5nZXJvdXNseV9fY2hyb21lRXh0ZW5zaW9uQ29tcGF0aWJsZUJyb3dzZXJDaGVjazogKFxuICAgIHVzZXJBZ2VudDogc3RyaW5nLFxuICApID0+IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBFeHRlbnNpb25Sb3V0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZXM6IEJlaGF2aW9yU3ViamVjdDxFeHRlbnNpb25Sb3V0ZXJTdGF0ZXM+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHRlbnNpb25JbmZvczogRXh0ZW5zaW9uSW5mb1tdO1xuXG4gIHByaXZhdGUgX2Nvbm5lY3RvcjogWHBsYVdlYkV4dGVuc2lvbkNvbm5lY3RvciB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogRXh0ZW5zaW9uUm91dGVyT3B0aW9ucykge1xuICAgIHRoaXMuX3N0YXRlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RXh0ZW5zaW9uUm91dGVyU3RhdGVzPih7XG4gICAgICB0eXBlOiBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMuSU5JVElBTElaSU5HLFxuICAgICAgbmV0d29yazogb3B0aW9ucy5kZWZhdWx0TmV0d29yayxcbiAgICB9KTtcblxuICAgIHRoaXMuX2V4dGVuc2lvbkluZm9zID0gZ2V0WHBsYUV4dGVuc2lvbnMoKTtcblxuICAgIGlmICh0aGlzLl9leHRlbnNpb25JbmZvcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX3N0YXRlcy5uZXh0KHtcbiAgICAgICAgdHlwZTogRXh0ZW5zaW9uUm91dGVyU3RhdHVzLk5PX0FWQUlMQUJMRSxcbiAgICAgICAgbmV0d29yazogb3B0aW9ucy5kZWZhdWx0TmV0d29yayxcbiAgICAgICAgaXNDb25uZWN0b3JFeGlzdHM6IGZhbHNlLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBpbml0aWFsaXplIHNlc3Npb25cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmVkU2Vzc2lvbigpO1xuXG4gICAgaWYgKHNlc3Npb24pIHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbkluZm8gPSB0aGlzLl9leHRlbnNpb25JbmZvcy5maW5kKFxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5pZGVudGlmaWVyID09PSBzZXNzaW9uLmlkZW50aWZpZXIsXG4gICAgICApO1xuXG4gICAgICBpZiAoZXh0ZW5zaW9uSW5mbykge1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbm5lY3RvcihleHRlbnNpb25JbmZvKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBDYW4ndCBmaW5kIGFuIGV4dGVuc2lvbiBmb3IgdGhlIHNlc3Npb24gXCIke3Nlc3Npb24uaWRlbnRpZmllcn1cImAsXG4gICAgICAgICk7XG4gICAgICAgIGNsZWFyU2Vzc2lvbigpO1xuXG4gICAgICAgIHRoaXMuX3N0YXRlcy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMuV0FMTEVUX05PVF9DT05ORUNURUQsXG4gICAgICAgICAgbmV0d29yazogb3B0aW9ucy5kZWZhdWx0TmV0d29yayxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3N0YXRlcy5uZXh0KHtcbiAgICAgICAgdHlwZTogRXh0ZW5zaW9uUm91dGVyU3RhdHVzLldBTExFVF9OT1RfQ09OTkVDVEVELFxuICAgICAgICBuZXR3b3JrOiBvcHRpb25zLmRlZmF1bHROZXR3b3JrLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHN0YXRlc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgc3RhdGVzID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH07XG5cbiAgZ2V0TGFzdFN0YXRlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVzLmdldFZhbHVlKCk7XG4gIH07XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIGJlaGF2aW9yc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgY29ubmVjdCA9IGFzeW5jIChpZGVudGlmaWVyPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uSW5mb3MgPSBnZXRYcGxhRXh0ZW5zaW9ucygpO1xuXG4gICAgaWYgKGV4dGVuc2lvbkluZm9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbRXh0ZW5zaW9uUm91dGVyXSBDYW4ndCBmaW5kIGNvbm5lY3RvcnNgKTtcbiAgICB9XG5cbiAgICBsZXQgZXh0ZW5zaW9uSW5mbzogRXh0ZW5zaW9uSW5mbyB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChpZGVudGlmaWVyKSB7XG4gICAgICBleHRlbnNpb25JbmZvID0gZXh0ZW5zaW9uSW5mb3MuZmluZChcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcixcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChleHRlbnNpb25JbmZvcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGV4dGVuc2lvbkluZm8gPSBleHRlbnNpb25JbmZvc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0ID0gdGhpcy5vcHRpb25zLnNlbGVjdEV4dGVuc2lvbiA/PyBzZWxlY3RNb2RhbDtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRXh0ZW5zaW9uSW5mbyA9IGF3YWl0IHNlbGVjdChleHRlbnNpb25JbmZvcyk7XG5cbiAgICAgIGlmIChzZWxlY3RlZEV4dGVuc2lvbkluZm8pIHtcbiAgICAgICAgZXh0ZW5zaW9uSW5mbyA9IHNlbGVjdGVkRXh0ZW5zaW9uSW5mbztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9uSW5mbykge1xuICAgICAgdGhpcy5jcmVhdGVDb25uZWN0b3IoZXh0ZW5zaW9uSW5mbyk7XG4gICAgfVxuICB9O1xuXG4gIGRpc2Nvbm5lY3QgPSAoKSA9PiB7XG4gICAgY2xlYXJTZXNzaW9uKCk7XG5cbiAgICB0aGlzLl9zdGF0ZXMubmV4dCh7XG4gICAgICB0eXBlOiBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMuV0FMTEVUX05PVF9DT05ORUNURUQsXG4gICAgICBuZXR3b3JrOiB0aGlzLm9wdGlvbnMuZGVmYXVsdE5ldHdvcmssXG4gICAgfSk7XG5cbiAgICB0aGlzLl9jb25uZWN0b3I/LmNsb3NlKCk7XG4gICAgdGhpcy5fY29ubmVjdG9yID0gbnVsbDtcbiAgfTtcblxuICByZXF1ZXN0QXBwcm92YWwgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0V4dGVuc2lvblJvdXRlcl0gTm8gY29ubmVjdG9yJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdG9yLnJlcXVlc3RBcHByb3ZhbCgpO1xuICB9O1xuXG4gIHJlZmV0Y2hTdGF0ZXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0V4dGVuc2lvblJvdXRlcl0gTm8gY29ubmVjdG9yJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdG9yLnJlZmV0Y2hTdGF0ZXMoKTtcbiAgfTtcblxuICBwb3N0ID0gKFxuICAgIHR4OiBDcmVhdGVUeE9wdGlvbnMsXG4gICAgeHBsYUFkZHJlc3M/OiBzdHJpbmcsXG4gICk6IFN1YnNjcmliYWJsZTxXZWJFeHRlbnNpb25UeFJlc3VsdDxXZWJFeHRlbnNpb25Qb3N0UGF5bG9hZD4+ID0+IHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbRXh0ZW5zaW9uUm91dGVyXSBObyBjb25uZWN0b3InKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXRlc3RTdGF0ZXMgPSB0aGlzLmdldExhc3RTdGF0ZXMoKTtcblxuICAgIGlmIChsYXRlc3RTdGF0ZXMudHlwZSAhPT0gRXh0ZW5zaW9uUm91dGVyU3RhdHVzLldBTExFVF9DT05ORUNURUQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW0V4dGVuc2lvblJvdXRlcl0gV2FsbGV0IGlzIG5vdCBjb25uZWN0ZWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yLnBvc3QoXG4gICAgICB4cGxhQWRkcmVzcyA/PyBsYXRlc3RTdGF0ZXMud2FsbGV0LnhwbGFBZGRyZXNzLFxuICAgICAgdHgsXG4gICAgKTtcbiAgfTtcblxuICBzaWduID0gKFxuICAgIHR4OiBDcmVhdGVUeE9wdGlvbnMgJiB7XG4gICAgICBzZXF1ZW5jZT86IG51bWJlcjtcbiAgICAgIGFjY291bnROdW1iZXI/OiBudW1iZXI7XG4gICAgICBzaWduTW9kZT86IFNpZ25Nb2RlO1xuICAgIH0sXG4gICAgeHBsYUFkZHJlc3M/OiBzdHJpbmcsXG4gICk6IFN1YnNjcmliYWJsZTxXZWJFeHRlbnNpb25UeFJlc3VsdDxXZWJFeHRlbnNpb25TaWduUGF5bG9hZD4+ID0+IHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbRXh0ZW5zaW9uUm91dGVyXSBObyBjb25uZWN0b3InKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXRlc3RTdGF0ZXMgPSB0aGlzLmdldExhc3RTdGF0ZXMoKTtcblxuICAgIGlmIChsYXRlc3RTdGF0ZXMudHlwZSAhPT0gRXh0ZW5zaW9uUm91dGVyU3RhdHVzLldBTExFVF9DT05ORUNURUQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW0V4dGVuc2lvblJvdXRlcl0gV2FsbGV0IGlzIG5vdCBjb25uZWN0ZWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yLnNpZ24oXG4gICAgICB4cGxhQWRkcmVzcyA/PyBsYXRlc3RTdGF0ZXMud2FsbGV0LnhwbGFBZGRyZXNzLFxuICAgICAgdHgsXG4gICAgKTtcbiAgfTtcblxuICBzaWduQnl0ZXMgPSAoXG4gICAgYnl0ZXM6IEJ1ZmZlcixcbiAgICB4cGxhQWRkcmVzcz86IHN0cmluZyxcbiAgKTogU3Vic2NyaWJhYmxlPFdlYkV4dGVuc2lvblR4UmVzdWx0PFdlYkV4dGVuc2lvblNpZ25CeXRlc1BheWxvYWQ+PiA9PiB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0V4dGVuc2lvblJvdXRlcl0gTm8gY29ubmVjdG9yJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbGF0ZXN0U3RhdGVzID0gdGhpcy5nZXRMYXN0U3RhdGVzKCk7XG5cbiAgICBpZiAobGF0ZXN0U3RhdGVzLnR5cGUgIT09IEV4dGVuc2lvblJvdXRlclN0YXR1cy5XQUxMRVRfQ09OTkVDVEVEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFtFeHRlbnNpb25Sb3V0ZXJdIFdhbGxldCBpcyBub3QgY29ubmVjdGVkYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rvci5zaWduQnl0ZXMoXG4gICAgICB4cGxhQWRkcmVzcyA/PyBsYXRlc3RTdGF0ZXMud2FsbGV0LnhwbGFBZGRyZXNzLFxuICAgICAgYnl0ZXMsXG4gICAgKTtcbiAgfTtcblxuICBoYXNDVzIwVG9rZW5zID0gKFxuICAgIGNoYWluSUQ6IHN0cmluZyxcbiAgICAuLi50b2tlbkFkZHJzOiBzdHJpbmdbXVxuICApOiBQcm9taXNlPHsgW3Rva2VuQWRkcjogc3RyaW5nXTogYm9vbGVhbiB9PiA9PiB7XG4gICAgaWYgKCF0aGlzLl9jb25uZWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0V4dGVuc2lvblJvdXRlcl0gTm8gY29ubmVjdG9yJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9jb25uZWN0b3IgaW5zdGFuY2VvZiBMZWdhY3lFeHRlbnNpb25Db25uZWN0b3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tFeHRlbnNpb25Sb3V0ZXJdIExlZ2FjeSBleHRlbnNpb24gZG9lcyBub3Qgc3VwcG9ydCBoYXNDVzIwVG9rZW5zKCkgJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rvci5oYXNDVzIwVG9rZW5zKGNoYWluSUQsIC4uLnRva2VuQWRkcnMpO1xuICB9O1xuXG4gIGFkZENXMjBUb2tlbnMgPSAoXG4gICAgY2hhaW5JRDogc3RyaW5nLFxuICAgIC4uLnRva2VuQWRkcnM6IHN0cmluZ1tdXG4gICk6IFByb21pc2U8eyBbdG9rZW5BZGRyOiBzdHJpbmddOiBib29sZWFuIH0+ID0+IHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbRXh0ZW5zaW9uUm91dGVyXSBObyBjb25uZWN0b3InKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Nvbm5lY3RvciBpbnN0YW5jZW9mIExlZ2FjeUV4dGVuc2lvbkNvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnW0V4dGVuc2lvblJvdXRlcl0gTGVnYWN5IGV4dGVuc2lvbiBkb2VzIG5vdCBzdXBwb3J0IGFkZENXMjBUb2tlbnMoKSAnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yLmFkZENXMjBUb2tlbnMoY2hhaW5JRCwgLi4udG9rZW5BZGRycyk7XG4gIH07XG5cbiAgaGFzTmV0d29yayA9IChcbiAgICBuZXR3b3JrOiBPbWl0PFdlYkV4dGVuc2lvbk5ldHdvcmtJbmZvLCAnbmFtZSc+LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbRXh0ZW5zaW9uUm91dGVyXSBObyBjb25uZWN0b3InKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Nvbm5lY3RvciBpbnN0YW5jZW9mIExlZ2FjeUV4dGVuc2lvbkNvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnW0V4dGVuc2lvblJvdXRlcl0gTGVnYWN5IGV4dGVuc2lvbiBkb2VzIG5vdCBzdXBwb3J0IGhhc05ldHdvcmsoKSAnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yLmhhc05ldHdvcmsobmV0d29yayk7XG4gIH07XG5cbiAgYWRkTmV0d29yayA9IChuZXR3b3JrOiBXZWJFeHRlbnNpb25OZXR3b3JrSW5mbyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGlmICghdGhpcy5fY29ubmVjdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tFeHRlbnNpb25Sb3V0ZXJdIE5vIGNvbm5lY3RvcicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fY29ubmVjdG9yIGluc3RhbmNlb2YgTGVnYWN5RXh0ZW5zaW9uQ29ubmVjdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbRXh0ZW5zaW9uUm91dGVyXSBMZWdhY3kgZXh0ZW5zaW9uIGRvZXMgbm90IHN1cHBvcnQgYWRkTmV0d29yaygpICcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0b3IuYWRkTmV0d29yayhuZXR3b3JrKTtcbiAgfTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gaW50ZXJuYWxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgY3JlYXRlQ29ubmVjdG9yID0gKGV4dGVuc2lvbkluZm86IEV4dGVuc2lvbkluZm8pID0+IHtcbiAgICB0aGlzLl9jb25uZWN0b3I/LmNsb3NlKCk7XG5cbiAgICBjb25zdCBjb25uZWN0b3JQcm9taXNlOiBQcm9taXNlPFhwbGFXZWJFeHRlbnNpb25Db25uZWN0b3I+ID1cbiAgICAgIGV4dGVuc2lvbkluZm8uY29ubmVjdG9yXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGV4dGVuc2lvbkluZm8uY29ubmVjdG9yKCkpXG4gICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgbmV3IExlZ2FjeUV4dGVuc2lvbkNvbm5lY3RvcihleHRlbnNpb25JbmZvLmlkZW50aWZpZXIpLFxuICAgICAgICAgICk7XG5cbiAgICBjb25uZWN0b3JQcm9taXNlLnRoZW4oKGNvbm5lY3RvcikgPT4ge1xuICAgICAgY29ubmVjdG9yLm9wZW4odGhpcy5vcHRpb25zLmhvc3RXaW5kb3cgPz8gd2luZG93LCB7XG4gICAgICAgIG5leHQ6IChuZXh0U3RhdGVzOiBXZWJFeHRlbnNpb25TdGF0ZXMpID0+IHtcbiAgICAgICAgICBpZiAobmV4dFN0YXRlcy50eXBlID09PSBXZWJFeHRlbnNpb25TdGF0dXMuSU5JVElBTElaSU5HKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZXMubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IEV4dGVuc2lvblJvdXRlclN0YXR1cy5JTklUSUFMSVpJTkcsXG4gICAgICAgICAgICAgIG5ldHdvcms6IHRoaXMub3B0aW9ucy5kZWZhdWx0TmV0d29yayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV4dFN0YXRlcy50eXBlID09PSBXZWJFeHRlbnNpb25TdGF0dXMuTk9fQVZBSUxBQkxFKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZXMubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IEV4dGVuc2lvblJvdXRlclN0YXR1cy5OT19BVkFJTEFCTEUsXG4gICAgICAgICAgICAgIG5ldHdvcms6IHRoaXMub3B0aW9ucy5kZWZhdWx0TmV0d29yayxcbiAgICAgICAgICAgICAgaXNDb25uZWN0b3JFeGlzdHM6IHRydWUsXG4gICAgICAgICAgICAgIGlzQXBwcm92ZWQ6IG5leHRTdGF0ZXMuaXNBcHByb3ZlZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV4dFN0YXRlcy53YWxsZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVzLm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMuV0FMTEVUX05PVF9DT05ORUNURUQsXG4gICAgICAgICAgICAgIG5ldHdvcms6IG5leHRTdGF0ZXMubmV0d29yayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZXMubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IEV4dGVuc2lvblJvdXRlclN0YXR1cy5XQUxMRVRfQ09OTkVDVEVELFxuICAgICAgICAgICAgICBuZXR3b3JrOiBuZXh0U3RhdGVzLm5ldHdvcmssXG4gICAgICAgICAgICAgIHdhbGxldDogbmV4dFN0YXRlcy5mb2N1c2VkV2FsbGV0QWRkcmVzc1xuICAgICAgICAgICAgICAgID8gbmV4dFN0YXRlcy53YWxsZXRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtV2FsbGV0KSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW1XYWxsZXQueHBsYUFkZHJlc3MgPT09XG4gICAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlcy5mb2N1c2VkV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICkgPz8gbmV4dFN0YXRlcy53YWxsZXRzWzBdXG4gICAgICAgICAgICAgICAgOiBuZXh0U3RhdGVzLndhbGxldHNbMF0sXG4gICAgICAgICAgICAgIGNvbm5lY3RvclR5cGU6XG4gICAgICAgICAgICAgICAgY29ubmVjdG9yIGluc3RhbmNlb2YgTGVnYWN5RXh0ZW5zaW9uQ29ubmVjdG9yXG4gICAgICAgICAgICAgICAgICA/IEV4dGVuc2lvblJvdXRlckNvbm5lY3RvclR5cGUuTEVHQUNZXG4gICAgICAgICAgICAgICAgICA6IEV4dGVuc2lvblJvdXRlckNvbm5lY3RvclR5cGUuV0VCX0VYVEVOU0lPTixcbiAgICAgICAgICAgICAgc3VwcG9ydEZlYXR1cmVzOiBuZXcgU2V0KGNvbm5lY3Rvci5zdXBwb3J0RmVhdHVyZXMoKSksXG4gICAgICAgICAgICAgIGV4dGVuc2lvbkluZm8sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2Nvbm5lY3RvciA9IGNvbm5lY3RvcjtcblxuICAgICAgc3RvcmVTZXNzaW9uKHtcbiAgICAgICAgaWRlbnRpZmllcjogZXh0ZW5zaW9uSW5mby5pZGVudGlmaWVyLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './ExtensionRouter';
|
|
2
|
+
export * from './types';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9leHRlbnNpb24tcm91dGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0V4dGVuc2lvblJvdXRlcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { modalStyle } from './modal.style';
|
|
2
|
+
export function selectModal(extensionInfos) {
|
|
3
|
+
return new Promise((resolve) => {
|
|
4
|
+
var _a, _b;
|
|
5
|
+
const modalContainer = document.createElement('div');
|
|
6
|
+
const styleContainer = document.createElement('style');
|
|
7
|
+
function onComplete(extensionInfo) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
resolve(extensionInfo);
|
|
10
|
+
(_a = modalContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(modalContainer);
|
|
11
|
+
(_b = styleContainer.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(styleContainer);
|
|
12
|
+
}
|
|
13
|
+
const element = createModalElement({
|
|
14
|
+
extensionInfos,
|
|
15
|
+
onComplete,
|
|
16
|
+
});
|
|
17
|
+
styleContainer.textContent = modalStyle;
|
|
18
|
+
modalContainer.appendChild(element);
|
|
19
|
+
(_a = document.querySelector('head')) === null || _a === void 0 ? void 0 : _a.appendChild(styleContainer);
|
|
20
|
+
(_b = document.querySelector('body')) === null || _b === void 0 ? void 0 : _b.appendChild(modalContainer);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function createModalElement({ extensionInfos, onComplete, }) {
|
|
24
|
+
// ---------------------------------------------
|
|
25
|
+
// container
|
|
26
|
+
// ---------------------------------------------
|
|
27
|
+
const container = document.createElement('div');
|
|
28
|
+
container.setAttribute('class', 'wallet-select-modal');
|
|
29
|
+
// ---------------------------------------------
|
|
30
|
+
// container > div.wallet-select-modal--dim
|
|
31
|
+
// ---------------------------------------------
|
|
32
|
+
const dim = document.createElement('div');
|
|
33
|
+
dim.setAttribute('class', 'wallet-select-modal--dim');
|
|
34
|
+
container.appendChild(dim);
|
|
35
|
+
// ---------------------------------------------
|
|
36
|
+
// content > div.wallet-select-modal--content
|
|
37
|
+
// ---------------------------------------------
|
|
38
|
+
const content = document.createElement('section');
|
|
39
|
+
content.setAttribute('class', 'wallet-select-modal--content');
|
|
40
|
+
container.appendChild(content);
|
|
41
|
+
// h1
|
|
42
|
+
const title = document.createElement('h1');
|
|
43
|
+
title.textContent = 'Select a Wallet';
|
|
44
|
+
content.appendChild(title);
|
|
45
|
+
// ul
|
|
46
|
+
const list = document.createElement('ul');
|
|
47
|
+
content.appendChild(list);
|
|
48
|
+
for (const extensionInfo of extensionInfos) {
|
|
49
|
+
const item = document.createElement('li');
|
|
50
|
+
const button = document.createElement('button');
|
|
51
|
+
button.addEventListener('click', () => onComplete(extensionInfo));
|
|
52
|
+
item.appendChild(button);
|
|
53
|
+
const icon = document.createElement('span');
|
|
54
|
+
icon.setAttribute('class', 'wallet-select-modal--icon');
|
|
55
|
+
button.appendChild(icon);
|
|
56
|
+
const iconImg = document.createElement('img');
|
|
57
|
+
iconImg.setAttribute('src', extensionInfo.icon);
|
|
58
|
+
iconImg.setAttribute('alt', `${extensionInfo.name} [${extensionInfo.identifier}]`);
|
|
59
|
+
icon.appendChild(iconImg);
|
|
60
|
+
const description = document.createElement('span');
|
|
61
|
+
description.setAttribute('class', 'wallet-select-modal--description');
|
|
62
|
+
description.textContent = extensionInfo.name;
|
|
63
|
+
button.appendChild(description);
|
|
64
|
+
const arrow = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
65
|
+
arrow.setAttribute('viewBox', '0 0 24 24');
|
|
66
|
+
button.appendChild(arrow);
|
|
67
|
+
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
68
|
+
path.setAttribute('d', 'M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z');
|
|
69
|
+
arrow.appendChild(path);
|
|
70
|
+
list.appendChild(item);
|
|
71
|
+
}
|
|
72
|
+
// events
|
|
73
|
+
dim.addEventListener('click', () => onComplete(null));
|
|
74
|
+
return container;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9leHRlbnNpb24tcm91dGVyL21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxVQUFVLFdBQVcsQ0FDekIsY0FBK0I7SUFFL0IsT0FBTyxJQUFJLE9BQU8sQ0FBdUIsQ0FBQyxPQUFPLEVBQUUsRUFBRTs7UUFDbkQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZELFNBQVMsVUFBVSxDQUFDLGFBQW1DOztZQUNyRCxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkIsTUFBQSxjQUFjLENBQUMsYUFBYSwwQ0FBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUQsTUFBQSxjQUFjLENBQUMsYUFBYSwwQ0FBRSxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDO1lBQ2pDLGNBQWM7WUFDZCxVQUFVO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsY0FBYyxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDeEMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwQyxNQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLDBDQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1RCxNQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLDBDQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztBQUNMLENB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VyxDQUFDLENBQUM7UUFFM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7UUFFekUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3hCO0lBRUQsU0FBUztJQUNULEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFdEQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4dGVuc2lvbkluZm8gfSBmcm9tICcuL211bHRpQ2hhbm5lbCc7XG5pbXBvcnQgeyBtb2RhbFN0eWxlIH0gZnJvbSAnLi9tb2RhbC5zdHlsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RNb2RhbChcbiAgZXh0ZW5zaW9uSW5mb3M6IEV4dGVuc2lvbkluZm9bXSxcbik6IFByb21pc2U8RXh0ZW5zaW9uSW5mbyB8IG51bGw+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPEV4dGVuc2lvbkluZm8gfCBudWxsPigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgY29uc3Qgc3R5bGVDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgZnVuY3Rpb24gb25Db21wbGV0ZShleHRlbnNpb25JbmZvOiBFeHRlbnNpb25JbmZvIHwgbnVsbCkge1xuICAgICAgcmVzb2x2ZShleHRlbnNpb25JbmZvKTtcbiAgICAgIG1vZGFsQ29udGFpbmVyLnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKG1vZGFsQ29udGFpbmVyKTtcbiAgICAgIHN0eWxlQ29udGFpbmVyLnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKHN0eWxlQ29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlTW9kYWxFbGVtZW50KHtcbiAgICAgIGV4dGVuc2lvbkluZm9zLFxuICAgICAgb25Db21wbGV0ZSxcbiAgICB9KTtcblxuICAgIHN0eWxlQ29udGFpbmVyLnRleHRDb250ZW50ID0gbW9kYWxTdHlsZTtcbiAgICBtb2RhbENvbnRhaW5lci5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKT8uYXBwZW5kQ2hpbGQoc3R5bGVDb250YWluZXIpO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKT8uYXBwZW5kQ2hpbGQobW9kYWxDb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTW9kYWxFbGVtZW50KHtcbiAgZXh0ZW5zaW9uSW5mb3MsXG4gIG9uQ29tcGxldGUsXG59OiB7XG4gIGV4dGVuc2lvbkluZm9zOiBFeHRlbnNpb25JbmZvW107XG4gIG9uQ29tcGxldGU6IChleHRlbnNpb25JbmZvOiBFeHRlbnNpb25JbmZvIHwgbnVsbCkgPT4gdm9pZDtcbn0pOiBIVE1MRWxlbWVudCB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBjb250YWluZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdjbGFzcycsICd3YWxsZXQtc2VsZWN0LW1vZGFsJyk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIGNvbnRhaW5lciA+IGRpdi53YWxsZXQtc2VsZWN0LW1vZGFsLS1kaW1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbnN0IGRpbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaW0uc2V0QXR0cmlidXRlKCdjbGFzcycsICd3YWxsZXQtc2VsZWN0LW1vZGFsLS1kaW0nKTtcblxuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZGltKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gY29udGVudCA+IGRpdi53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpO1xuICBjb250ZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnd2FsbGV0LXNlbGVjdC1tb2RhbC0tY29udGVudCcpO1xuXG4gIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250ZW50KTtcblxuICAvLyBoMVxuICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gxJyk7XG4gIHRpdGxlLnRleHRDb250ZW50ID0gJ1NlbGVjdCBhIFdhbGxldCc7XG4gIGNvbnRlbnQuYXBwZW5kQ2hpbGQodGl0bGUpO1xuXG4gIC8vIHVsXG4gIGNvbnN0IGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpO1xuICBjb250ZW50LmFwcGVuZENoaWxkKGxpc3QpO1xuXG4gIGZvciAoY29uc3QgZXh0ZW5zaW9uSW5mbyBvZiBleHRlbnNpb25JbmZvcykge1xuICAgIGNvbnN0IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuXG4gICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gb25Db21wbGV0ZShleHRlbnNpb25JbmZvKSk7XG5cbiAgICBpdGVtLmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cbiAgICBjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgIGljb24uc2V0QXR0cmlidXRlKCdjbGFzcycsICd3YWxsZXQtc2VsZWN0LW1vZGFsLS1pY29uJyk7XG5cbiAgICBidXR0b24uYXBwZW5kQ2hpbGQoaWNvbik7XG5cbiAgICBjb25zdCBpY29uSW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgaWNvbkltZy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGV4dGVuc2lvbkluZm8uaWNvbik7XG4gICAgaWNvbkltZy5zZXRBdHRyaWJ1dGUoXG4gICAgICAnYWx0JyxcbiAgICAgIGAke2V4dGVuc2lvbkluZm8ubmFtZX0gWyR7ZXh0ZW5zaW9uSW5mby5pZGVudGlmaWVyfV1gLFxuICAgICk7XG5cbiAgICBpY29uLmFwcGVuZENoaWxkKGljb25JbWcpO1xuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZGVzY3JpcHRpb24uc2V0QXR0cmlidXRlKCdjbGFzcycsICd3YWxsZXQtc2VsZWN0LW1vZGFsLS1kZXNjcmlwdGlvbicpO1xuICAgIGRlc2NyaXB0aW9uLnRleHRDb250ZW50ID0gZXh0ZW5zaW9uSW5mby5uYW1lO1xuXG4gICAgYnV0dG9uLmFwcGVuZENoaWxkKGRlc2NyaXB0aW9uKTtcblxuICAgIGNvbnN0IGFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnKTtcbiAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDI0IDI0Jyk7XG5cbiAgICBidXR0b24uYXBwZW5kQ2hpbGQoYXJyb3cpO1xuXG4gICAgY29uc3QgcGF0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncGF0aCcpO1xuICAgIHBhdGguc2V0QXR0cmlidXRlKCdkJywgJ00xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnonKTtcblxuICAgIGFycm93LmFwcGVuZENoaWxkKHBhdGgpO1xuXG4gICAgbGlzdC5hcHBlbmRDaGlsZChpdGVtKTtcbiAgfVxuXG4gIC8vIGV2ZW50c1xuICBkaW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBvbkNvbXBsZXRlKG51bGwpKTtcblxuICByZXR1cm4gY29udGFpbmVyO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const modalStyle = "\n@keyframes wallet-select-modal--dim-enter {\n 0% {\n opacity: 0;\n }\n \n 100% {\n opacity: 1;\n }\n}\n\n@keyframes wallet-select-modal--content-enter {\n 0% {\n opacity: 0;\n transform: scale(0.4);\n }\n \n 100% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.wallet-select-modal {\n position: fixed;\n z-index: 100000;\n \n color: #212121;\n \n left: 0;\n top: 0;\n width: 100vw;\n height: 100vh;\n \n font-family: sans-serif;\n \n display: grid;\n place-content: center;\n}\n\n.wallet-select-modal > .wallet-select-modal--dim {\n position: fixed;\n z-index: -1;\n \n left: 0;\n top: 0;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.3);\n \n animation: wallet-select-modal--dim-enter 0.2s ease-in-out;\n}\n\n.wallet-select-modal > .wallet-select-modal--content {\n box-sizing: border-box;\n \n border-radius: 8px;\n \n background-color: #ffffff;\n box-shadow: 0 4px 18px 3px rgba(0, 0, 0, 0.43);\n \n animation: wallet-select-modal--content-enter 0.2s ease-in-out;\n \n width: 100vw;\n max-width: 480px;\n padding: 40px;\n}\n\n.wallet-select-modal > .wallet-select-modal--content h1 {\n font-size: 20px;\n font-weight: bold;\n \n margin: 0 0 32px 0;\n \n text-align: center;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul {\n padding: 0;\n margin: 0;\n list-style: none;\n \n display: flex;\n flex-direction: column;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul li {\n border-top: 1px solid #cfd8ea;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul li:last-child {\n border-bottom: 1px solid #cfd8ea;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button {\n width: 100%;\n height: 66px;\n \n border: none;\n background-color: transparent;\n outline: none;\n cursor: pointer;\n \n display: flex;\n gap: 10px;\n align-items: center;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button:hover {\n background-color: hsl(220, 39%, 86%, 0.25);\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button .wallet-select-modal--icon {\n display: inline-grid;\n width: 50px;\n height: 50px;\n \n place-content: center;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button .wallet-select-modal--icon img {\n width: 30px;\n height: 30px;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button .wallet-select-modal--description {\n flex: 1;\n text-align: left;\n \n font-size: 16px;\n font-weight: 600;\n color: #212121;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button svg {\n width: 18px;\n height: 18px;\n \n fill: #cfd8ea;\n}\n\n.wallet-select-modal > .wallet-select-modal--content ul button:hover svg {\n fill: #2043b5;\n}\n\n@media (max-width: 450px) {\n .wallet-select-modal {\n place-content: flex-end;\n }\n \n .wallet-select-modal > .wallet-select-modal--content {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n";
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// language=css
|
|
2
|
+
export const modalStyle = `
|
|
3
|
+
@keyframes wallet-select-modal--dim-enter {
|
|
4
|
+
0% {
|
|
5
|
+
opacity: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
100% {
|
|
9
|
+
opacity: 1;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes wallet-select-modal--content-enter {
|
|
14
|
+
0% {
|
|
15
|
+
opacity: 0;
|
|
16
|
+
transform: scale(0.4);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
100% {
|
|
20
|
+
opacity: 1;
|
|
21
|
+
transform: scale(1);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.wallet-select-modal {
|
|
26
|
+
position: fixed;
|
|
27
|
+
z-index: 100000;
|
|
28
|
+
|
|
29
|
+
color: #212121;
|
|
30
|
+
|
|
31
|
+
left: 0;
|
|
32
|
+
top: 0;
|
|
33
|
+
width: 100vw;
|
|
34
|
+
height: 100vh;
|
|
35
|
+
|
|
36
|
+
font-family: sans-serif;
|
|
37
|
+
|
|
38
|
+
display: grid;
|
|
39
|
+
place-content: center;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.wallet-select-modal > .wallet-select-modal--dim {
|
|
43
|
+
position: fixed;
|
|
44
|
+
z-index: -1;
|
|
45
|
+
|
|
46
|
+
left: 0;
|
|
47
|
+
top: 0;
|
|
48
|
+
width: 100vw;
|
|
49
|
+
height: 100vh;
|
|
50
|
+
background-color: rgba(0, 0, 0, 0.3);
|
|
51
|
+
|
|
52
|
+
animation: wallet-select-modal--dim-enter 0.2s ease-in-out;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.wallet-select-modal > .wallet-select-modal--content {
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
|
|
58
|
+
border-radius: 8px;
|
|
59
|
+
|
|
60
|
+
background-color: #ffffff;
|
|
61
|
+
box-shadow: 0 4px 18px 3px rgba(0, 0, 0, 0.43);
|
|
62
|
+
|
|
63
|
+
animation: wallet-select-modal--content-enter 0.2s ease-in-out;
|
|
64
|
+
|
|
65
|
+
width: 100vw;
|
|
66
|
+
max-width: 480px;
|
|
67
|
+
padding: 40px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.wallet-select-modal > .wallet-select-modal--content h1 {
|
|
71
|
+
font-size: 20px;
|
|
72
|
+
font-weight: bold;
|
|
73
|
+
|
|
74
|
+
margin: 0 0 32px 0;
|
|
75
|
+
|
|
76
|
+
text-align: center;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.wallet-select-modal > .wallet-select-modal--content ul {
|
|
80
|
+
padding: 0;
|
|
81
|
+
margin: 0;
|
|
82
|
+
list-style: none;
|
|
83
|
+
|
|
84
|
+
display: flex;
|
|
85
|
+
flex-direction: column;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.wallet-select-modal > .wallet-select-modal--content ul li {
|
|
89
|
+
border-top: 1px solid #cfd8ea;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.wallet-select-modal > .wallet-select-modal--content ul li:last-child {
|
|
93
|
+
border-bottom: 1px solid #cfd8ea;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.wallet-select-modal > .wallet-select-modal--content ul button {
|
|
97
|
+
width: 100%;
|
|
98
|
+
height: 66px;
|
|
99
|
+
|
|
100
|
+
border: none;
|
|
101
|
+
background-color: transparent;
|
|
102
|
+
outline: none;
|
|
103
|
+
cursor: pointer;
|
|
104
|
+
|
|
105
|
+
display: flex;
|
|
106
|
+
gap: 10px;
|
|
107
|
+
align-items: center;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.wallet-select-modal > .wallet-select-modal--content ul button:hover {
|
|
111
|
+
background-color: hsl(220, 39%, 86%, 0.25);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.wallet-select-modal > .wallet-select-modal--content ul button .wallet-select-modal--icon {
|
|
115
|
+
display: inline-grid;
|
|
116
|
+
width: 50px;
|
|
117
|
+
height: 50px;
|
|
118
|
+
|
|
119
|
+
place-content: center;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.wallet-select-modal > .wallet-select-modal--content ul button .wallet-select-modal--icon img {
|
|
123
|
+
width: 30px;
|
|
124
|
+
height: 30px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.wallet-select-modal > .wallet-select-modal--content ul button .wallet-select-modal--description {
|
|
128
|
+
flex: 1;
|
|
129
|
+
text-align: left;
|
|
130
|
+
|
|
131
|
+
font-size: 16px;
|
|
132
|
+
font-weight: 600;
|
|
133
|
+
color: #212121;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.wallet-select-modal > .wallet-select-modal--content ul button svg {
|
|
137
|
+
width: 18px;
|
|
138
|
+
height: 18px;
|
|
139
|
+
|
|
140
|
+
fill: #cfd8ea;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.wallet-select-modal > .wallet-select-modal--content ul button:hover svg {
|
|
144
|
+
fill: #2043b5;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@media (max-width: 450px) {
|
|
148
|
+
.wallet-select-modal {
|
|
149
|
+
place-content: flex-end;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.wallet-select-modal > .wallet-select-modal--content {
|
|
153
|
+
border-bottom-left-radius: 0;
|
|
154
|
+
border-bottom-right-radius: 0;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
`;
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9leHRlbnNpb24tcm91dGVyL21vZGFsLnN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWU7QUFDZixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkp6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGFuZ3VhZ2U9Y3NzXG5leHBvcnQgY29uc3QgbW9kYWxTdHlsZSA9IGBcbkBrZXlmcmFtZXMgd2FsbGV0LXNlbGVjdC1tb2RhbC0tZGltLWVudGVyIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgXG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuQGtleWZyYW1lcyB3YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50LWVudGVyIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpO1xuICB9XG4gIFxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cblxuLndhbGxldC1zZWxlY3QtbW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMDAwMDtcbiAgXG4gIGNvbG9yOiAjMjEyMTIxO1xuICBcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7XG4gIFxuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLndhbGxldC1zZWxlY3QtbW9kYWwgPiAud2FsbGV0LXNlbGVjdC1tb2RhbC0tZGltIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAtMTtcbiAgXG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIFxuICBhbmltYXRpb246IHdhbGxldC1zZWxlY3QtbW9kYWwtLWRpbS1lbnRlciAwLjJzIGVhc2UtaW4tb3V0O1xufVxuXG4ud2FsbGV0LXNlbGVjdC1tb2RhbCA+IC53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50IHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC40Myk7XG4gIFxuICBhbmltYXRpb246IHdhbGxldC1zZWxlY3QtbW9kYWwtLWNvbnRlbnQtZW50ZXIgMC4ycyBlYXNlLWluLW91dDtcbiAgXG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiA0ODBweDtcbiAgcGFkZGluZzogNDBweDtcbn1cblxuLndhbGxldC1zZWxlY3QtbW9kYWwgPiAud2FsbGV0LXNlbGVjdC1tb2RhbC0tY29udGVudCBoMSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIFxuICBtYXJnaW46IDAgMCAzMnB4IDA7XG4gIFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi53YWxsZXQtc2VsZWN0LW1vZGFsID4gLndhbGxldC1zZWxlY3QtbW9kYWwtLWNvbnRlbnQgdWwge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ud2FsbGV0LXNlbGVjdC1tb2RhbCA+IC53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50IHVsIGxpIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjZmQ4ZWE7XG59XG5cbi53YWxsZXQtc2VsZWN0LW1vZGFsID4gLndhbGxldC1zZWxlY3QtbW9kYWwtLWNvbnRlbnQgdWwgbGk6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2ZkOGVhO1xufVxuXG4ud2FsbGV0LXNlbGVjdC1tb2RhbCA+IC53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50IHVsIGJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDY2cHg7XG4gIFxuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIFxuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi53YWxsZXQtc2VsZWN0LW1vZGFsID4gLndhbGxldC1zZWxlY3QtbW9kYWwtLWNvbnRlbnQgdWwgYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIyMCwgMzklLCA4NiUsIDAuMjUpO1xufVxuXG4ud2FsbGV0LXNlbGVjdC1tb2RhbCA+IC53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50IHVsIGJ1dHRvbiAud2FsbGV0LXNlbGVjdC1tb2RhbC0taWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBcbiAgcGxhY2UtY29udGVudDogY2VudGVyO1xufVxuXG4ud2FsbGV0LXNlbGVjdC1tb2RhbCA+IC53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50IHVsIGJ1dHRvbiAud2FsbGV0LXNlbGVjdC1tb2RhbC0taWNvbiBpbWcge1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMHB4O1xufVxuXG4ud2FsbGV0LXNlbGVjdC1tb2RhbCA+IC53YWxsZXQtc2VsZWN0LW1vZGFsLS1jb250ZW50IHVsIGJ1dHRvbiAud2FsbGV0LXNlbGVjdC1tb2RhbC0tZGVzY3JpcHRpb24ge1xuICBmbGV4OiAxO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBjb2xvcjogIzIxMjEyMTtcbn1cblxuLndhbGxldC1zZWxlY3QtbW9kYWwgPiAud2FsbGV0LXNlbGVjdC1tb2RhbC0tY29udGVudCB1bCBidXR0b24gc3ZnIHtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgXG4gIGZpbGw6ICNjZmQ4ZWE7XG59XG5cbi53YWxsZXQtc2VsZWN0LW1vZGFsID4gLndhbGxldC1zZWxlY3QtbW9kYWwtLWNvbnRlbnQgdWwgYnV0dG9uOmhvdmVyIHN2ZyB7XG4gIGZpbGw6ICMyMDQzYjU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0NTBweCkge1xuICAud2FsbGV0LXNlbGVjdC1tb2RhbCB7XG4gICAgcGxhY2UtY29udGVudDogZmxleC1lbmQ7XG4gIH1cbiAgXG4gIC53YWxsZXQtc2VsZWN0LW1vZGFsID4gLndhbGxldC1zZWxlY3QtbW9kYWwtLWNvbnRlbnQge1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIH1cbn1cbmA7XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { XplaWebExtensionConnector } from '@ksangkuk10/web-extension-interface';
|
|
2
|
+
export interface ExtensionInfo {
|
|
3
|
+
name: string;
|
|
4
|
+
identifier: string;
|
|
5
|
+
icon: string;
|
|
6
|
+
connector?: () => XplaWebExtensionConnector | Promise<XplaWebExtensionConnector>;
|
|
7
|
+
}
|
|
8
|
+
declare global {
|
|
9
|
+
interface Window {
|
|
10
|
+
xplaWallets: ExtensionInfo[] | undefined;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export declare function getXplaExtensions(): ExtensionInfo[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function getXplaExtensions() {
|
|
2
|
+
return Array.isArray(window.xplaWallets)
|
|
3
|
+
? window.xplaWallets
|
|
4
|
+
: window.isXplaExtensionAvailable
|
|
5
|
+
? [
|
|
6
|
+
{
|
|
7
|
+
name: 'Xpla Valut Wallet',
|
|
8
|
+
identifier: 'xplavault',
|
|
9
|
+
icon: 'https://assets.xpla.io/icon/extension/icon.png',
|
|
10
|
+
},
|
|
11
|
+
]
|
|
12
|
+
: [];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlDaGFubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0Brc2FuZ2t1azEwL3dhbGxldC1jb250cm9sbGVyL21vZHVsZXMvZXh0ZW5zaW9uLXJvdXRlci9tdWx0aUNoYW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1FBQ3BCLENBQUMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCO1lBQ2pDLENBQUMsQ0FBQztnQkFDRTtvQkFDRSxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixVQUFVLEVBQUUsV0FBVztvQkFDdkIsSUFBSSxFQUFFLGdEQUFnRDtpQkFDdkQ7YUFDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWHBsYVdlYkV4dGVuc2lvbkNvbm5lY3RvciB9IGZyb20gJ0Brc2FuZ2t1azEwL3dlYi1leHRlbnNpb24taW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25JbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgY29ubmVjdG9yPzogKCkgPT5cbiAgICB8IFhwbGFXZWJFeHRlbnNpb25Db25uZWN0b3JcbiAgICB8IFByb21pc2U8WHBsYVdlYkV4dGVuc2lvbkNvbm5lY3Rvcj47XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgeHBsYVdhbGxldHM6IEV4dGVuc2lvbkluZm9bXSB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0WHBsYUV4dGVuc2lvbnMoKTogRXh0ZW5zaW9uSW5mb1tdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkod2luZG93LnhwbGFXYWxsZXRzKVxuICAgID8gd2luZG93LnhwbGFXYWxsZXRzXG4gICAgOiB3aW5kb3cuaXNYcGxhRXh0ZW5zaW9uQXZhaWxhYmxlXG4gICAgPyBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnWHBsYSBWYWx1dCBXYWxsZXQnLFxuICAgICAgICAgIGlkZW50aWZpZXI6ICd4cGxhdmF1bHQnLFxuICAgICAgICAgIGljb246ICdodHRwczovL2Fzc2V0cy54cGxhLmlvL2ljb24vZXh0ZW5zaW9uL2ljb24ucG5nJyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICA6IFtdO1xufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const storage: Storage | undefined;
|
|
2
|
+
interface Session {
|
|
3
|
+
identifier: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function getStoredSession(): Session | undefined;
|
|
6
|
+
export declare function storeSession(session: Session): void;
|
|
7
|
+
export declare function clearSession(): void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const storage = typeof window === 'undefined' ? undefined : localStorage;
|
|
2
|
+
const SESSION_KEY = '__xpla_extension_router_session__';
|
|
3
|
+
export function getStoredSession() {
|
|
4
|
+
const data = storage === null || storage === void 0 ? void 0 : storage.getItem(SESSION_KEY);
|
|
5
|
+
if (!data) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
try {
|
|
9
|
+
const object = JSON.parse(data);
|
|
10
|
+
if ('identifier' in object) {
|
|
11
|
+
return {
|
|
12
|
+
identifier: object['identifier'],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
storage === null || storage === void 0 ? void 0 : storage.removeItem(SESSION_KEY);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (_a) {
|
|
21
|
+
storage === null || storage === void 0 ? void 0 : storage.removeItem(SESSION_KEY);
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function storeSession(session) {
|
|
26
|
+
storage === null || storage === void 0 ? void 0 : storage.setItem(SESSION_KEY, JSON.stringify(session));
|
|
27
|
+
}
|
|
28
|
+
export function clearSession() {
|
|
29
|
+
storage === null || storage === void 0 ? void 0 : storage.removeItem(SESSION_KEY);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci9tb2R1bGVzL2V4dGVuc2lvbi1yb3V0ZXIvc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztBQU1oRixNQUFNLFdBQVcsR0FBRyxtQ0FBbUMsQ0FBQztBQUV4RCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFM0MsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsSUFBSSxZQUFZLElBQUksTUFBTSxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUM7YUFDakMsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0tBQ0Y7SUFBQyxXQUFNO1FBQ04sT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxPQUFPLFNBQVMsQ0FBQztLQUNsQjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQWdCO0lBQzNDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHN0b3JhZ2UgPSB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IGxvY2FsU3RvcmFnZTtcblxuaW50ZXJmYWNlIFNlc3Npb24ge1xuICBpZGVudGlmaWVyOiBzdHJpbmc7XG59XG5cbmNvbnN0IFNFU1NJT05fS0VZID0gJ19feHBsYV9leHRlbnNpb25fcm91dGVyX3Nlc3Npb25fXyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yZWRTZXNzaW9uKCk6IFNlc3Npb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBkYXRhID0gc3RvcmFnZT8uZ2V0SXRlbShTRVNTSU9OX0tFWSk7XG5cbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgb2JqZWN0ID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgIGlmICgnaWRlbnRpZmllcicgaW4gb2JqZWN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZGVudGlmaWVyOiBvYmplY3RbJ2lkZW50aWZpZXInXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0b3JhZ2U/LnJlbW92ZUl0ZW0oU0VTU0lPTl9LRVkpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHN0b3JhZ2U/LnJlbW92ZUl0ZW0oU0VTU0lPTl9LRVkpO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3JlU2Vzc2lvbihzZXNzaW9uOiBTZXNzaW9uKSB7XG4gIHN0b3JhZ2U/LnNldEl0ZW0oU0VTU0lPTl9LRVksIEpTT04uc3RyaW5naWZ5KHNlc3Npb24pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU2Vzc2lvbigpIHtcbiAgc3RvcmFnZT8ucmVtb3ZlSXRlbShTRVNTSU9OX0tFWSk7XG59XG4iXX0=
|