@ckb-ccc/connector 0.0.5-alpha.8 → 0.0.6-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/chains/nostr.svg.d.ts +2 -0
- package/dist/assets/chains/nostr.svg.d.ts.map +1 -0
- package/dist/assets/chains/nostr.svg.js +2 -0
- package/dist/connector/index.d.ts +0 -2
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +40 -51
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +5 -0
- package/dist/scenes/signers.d.ts.map +1 -1
- package/dist/scenes/signers.js +2 -0
- package/package.json +3 -3
- package/src/assets/chains/nostr.svg.ts +5 -0
- package/src/connector/index.ts +55 -65
- package/src/events/index.ts +6 -0
- package/src/scenes/signers.ts +2 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nostr.svg.d.ts","sourceRoot":"","sources":["../../../src/assets/chains/nostr.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAErB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "../utils";
|
|
2
|
+
export const NOSTR_SVG = encodeSvgToImgSrc('<svg version="1.1" id="_8" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 256 256" style="enable-background:new 0 0 256 256;" xml:space="preserve"><style type="text/css">.st0{fill:none;} .st1{fill:#FFFFFF;} .st2{fill:#662482;}</style><g><path class="st0" d="M0,0v256h256V0H0z M231.2,159.2c0,20.7,0,31.1-3.5,42.2c-4.4,12.2-14,21.8-26.2,26.2 c-11.1,3.5-21.5,3.5-42.2,3.5H96.8c-20.7,0-31.1,0-42.2-3.5c-12.2-4.4-21.8-14-26.2-26.2c-3.5-11.1-3.5-21.5-3.5-42.2V96.8 c0-20.7,0-31.1,3.5-42.2c4.4-12.2,14-21.8,26.2-26.2c11.2-3.5,21.5-3.5,42.2-3.5h62.5c20.7,0,31.1,0,42.2,3.5 c12.2,4.4,21.8,14,26.2,26.2c3.5,11.1,3.5,21.5,3.5,42.2V159.2z"/> <circle class="st1" cx="137.9" cy="99" r="12.1"/><path class="st1" d="M210.8,115.9c0-47.3-27.7-68.7-64.4-68.7c-16.4,0-31,4.4-42.4,12.5c-3.8,2.7-9,0.1-9-4.5 c0-3.1-2.5-5.7-5.7-5.7H57.7c-3.1,0-5.7,2.5-5.7,5.7v144c0,3.1,2.5,5.7,5.7,5.7h33.7c3.1,0,5.6-2.5,5.6-5.6v-8.4 c0-62.8-33.2-109.8-0.4-116c30-5.7,64.1-3,64.5,20.1c0,2,0.3,8,8.6,11.2c5,2,12.6,2.6,22.6,2.4c0,0,9.1-0.7,9.1,8.5 c0,11.5-20.4,10.7-20.4,10.7c-6.7,0.3-22.6-1.5-31.7,1.2c-4.8,1.5-9,4.2-11.5,9.1c-4.2,8.3-6.2,26.5-6.5,45.5v15.5 c0,3.1,2.5,5.7,5.7,5.7h68c3.1,0,5.7-2.5,5.7-5.7l0,0V115.9z"/><path class="st2" d="M227.6,54.6c-4.4-12.2-14-21.8-26.2-26.2c-11.1-3.5-21.5-3.5-42.2-3.5H96.8c-20.7,0-31.1,0-42.2,3.5 c-12.2,4.4-21.8,14-26.2,26.2c-3.5,11.2-3.5,21.5-3.5,42.2v62.5c0,20.7,0,31.1,3.5,42.2c4.4,12.2,14,21.8,26.2,26.2 c11.2,3.5,21.5,3.5,42.2,3.5h62.5c20.7,0,31.1,0,42.2-3.5c12.2-4.4,21.8-14,26.2-26.2c3.5-11.1,3.5-21.5,3.5-42.2V96.8 C231.2,76.1,231.2,65.7,227.6,54.6z M205.1,204.8h-68c-3.1,0-5.7-2.5-5.7-5.7v-15.5c0.3-19,2.3-37.2,6.5-45.5 c2.5-5,6.7-7.7,11.5-9.1c9-2.7,24.9-0.9,31.7-1.2c0,0,20.4,0.8,20.4-10.7c0-9.3-9.1-8.5-9.1-8.5c-10,0.3-17.7-0.4-22.6-2.4 c-8.3-3.3-8.6-9.2-8.6-11.2c-0.4-23.1-34.5-25.9-64.5-20.1c-32.8,6.2,0.4,53.3,0.4,116v8.4c-0.1,3.1-2.5,5.6-5.6,5.6H57.7 c-3.1,0-5.7-2.5-5.7-5.7v-144c0-3.1,2.5-5.7,5.7-5.7h31.7c3.1,0,5.7,2.5,5.7,5.7c0,4.7,5.2,7.2,9,4.5c11.4-8.2,26-12.5,42.4-12.5 c36.7,0,64.4,21.4,64.4,68.7v83.2l0,0C210.8,202.3,208.3,204.8,205.1,204.8z M125.7,99c0-6.7,5.4-12.1,12.1-12.1S150,92.3,150,99 s-5.4,12.1-12.1,12.1S125.7,105.8,125.7,99z"/></g></svg>');
|
|
@@ -5,8 +5,6 @@ export declare class WebComponentConnector extends LitElement {
|
|
|
5
5
|
private wallets;
|
|
6
6
|
signerFilter?: (signerInfo: ccc.SignerInfo, wallet: ccc.Wallet) => Promise<boolean>;
|
|
7
7
|
private resetListeners;
|
|
8
|
-
isOpen: boolean;
|
|
9
|
-
setIsOpen(isOpen: boolean): void;
|
|
10
8
|
name?: string;
|
|
11
9
|
icon?: string;
|
|
12
10
|
client: ccc.Client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAkB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAkB,MAAM,uBAAuB,CAAC;AA0B5D,qBACa,qBAAsB,SAAQ,UAAU;IAEnD,OAAO,CAAC,OAAO,CAA2B;IAEnC,YAAY,CAAC,EAAE,CACpB,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,KACf,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB,OAAO,CAAC,cAAc,CAAsB;IAGrC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,GAAG,CAAC,MAAM,CAAiC;IACnD,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM;IAKnC,OAAO,CAAC,KAAK,CAAiC;IAE9C,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC,OAAO,CAAC,eAAe,CAAC,CAAS;IAGjC,OAAO,CAAC,UAAU,CAAC,CAAS;IAE5B,OAAO,CAAC,UAAU,CAAC,CAAS;IAErB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IAEpB,MAAM,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAG/B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAElC,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,OAAO,CAAC,OAAO,CAAC,CAAU;YAEZ,gBAAgB;YAUhB,aAAa;IAYpB,UAAU;IAOjB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,cAAc;IAUtB,iBAAiB,IAAI,IAAI;IAMzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAoCnD,OAAO,CAAC,aAAa;YAoGP,SAAS;IAyCvB,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAe;IAC3C,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,CAAe;IAC7C,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAe;IAE3C,MAAM;IA+FN,OAAO;IAUP,OAAO,CAAC,aAAa,CAgBnB;IAEF,OAAO,CAAC,qBAAqB,CAqC3B;IAEF,MAAM,CAAC,MAAM,0BAsPX;CACH"}
|
package/dist/connector/index.js
CHANGED
|
@@ -8,13 +8,14 @@ import { ccc } from "@ckb-ccc/ccc";
|
|
|
8
8
|
import { LitElement, css, html } from "lit";
|
|
9
9
|
import { customElement, property, state } from "lit/decorators.js";
|
|
10
10
|
import { createRef, ref } from "lit/directives/ref.js";
|
|
11
|
+
import { NOSTR_SVG } from "../assets/chains/nostr.svg";
|
|
11
12
|
import { CLOSE_SVG } from "../assets/close.svg";
|
|
12
13
|
import { JOY_ID_SVG } from "../assets/joy-id.svg";
|
|
13
14
|
import { LEFT_SVG } from "../assets/left.svg";
|
|
14
15
|
import { METAMASK_SVG } from "../assets/metamask.svg";
|
|
15
16
|
import { OKX_SVG } from "../assets/okx.svg";
|
|
16
17
|
import { UNI_SAT_SVG } from "../assets/uni-sat.svg";
|
|
17
|
-
import { WillUpdateEvent } from "../events";
|
|
18
|
+
import { ClosedEvent, WillUpdateEvent } from "../events";
|
|
18
19
|
import { generateConnectingScene, generateSignersScene, generateWalletsScene, } from "../scenes";
|
|
19
20
|
import { generateConnectedScene } from "../scenes/connected";
|
|
20
21
|
import { generateNetworksScene } from "../scenes/networks";
|
|
@@ -31,7 +32,6 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
31
32
|
super(...arguments);
|
|
32
33
|
this.wallets = [];
|
|
33
34
|
this.resetListeners = [];
|
|
34
|
-
this.isOpen = false;
|
|
35
35
|
this.client = new ccc.ClientPublicTestnet();
|
|
36
36
|
this.scene = Scene.SelectingWallets;
|
|
37
37
|
this.mainRef = createRef();
|
|
@@ -50,7 +50,7 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
50
50
|
else if ([Scene.SwitchingNetworks].includes(this.scene)) {
|
|
51
51
|
this.scene = Scene.Connected;
|
|
52
52
|
}
|
|
53
|
-
this.
|
|
53
|
+
this.dispatchEvent(new ClosedEvent());
|
|
54
54
|
};
|
|
55
55
|
this.signerSelectedHandler = (wallet, signerInfo) => {
|
|
56
56
|
this.scene = Scene.Connecting;
|
|
@@ -89,9 +89,6 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
89
89
|
})();
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
|
-
setIsOpen(isOpen) {
|
|
93
|
-
this.isOpen = isOpen;
|
|
94
|
-
}
|
|
95
92
|
setClient(client) {
|
|
96
93
|
this.client = client;
|
|
97
94
|
}
|
|
@@ -115,7 +112,6 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
115
112
|
this.scene = Scene.SelectingWallets;
|
|
116
113
|
}
|
|
117
114
|
disconnect() {
|
|
118
|
-
this.signer?.signer?.disconnect();
|
|
119
115
|
this.walletName = undefined;
|
|
120
116
|
this.signerName = undefined;
|
|
121
117
|
this.saveConnection();
|
|
@@ -167,13 +163,18 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
167
163
|
reloadSigners() {
|
|
168
164
|
this.wallets = [];
|
|
169
165
|
(async () => {
|
|
170
|
-
|
|
166
|
+
const signer = this.signer;
|
|
167
|
+
if (!signer) {
|
|
171
168
|
return;
|
|
172
169
|
}
|
|
173
|
-
this.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
170
|
+
if (await signer.signer.replaceClient(this.client)) {
|
|
171
|
+
this.signer = {
|
|
172
|
+
...signer,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.signer = undefined;
|
|
177
|
+
}
|
|
177
178
|
})();
|
|
178
179
|
this.resetListeners.forEach((listener) => listener());
|
|
179
180
|
this.resetListeners = [];
|
|
@@ -192,6 +193,10 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
192
193
|
if (okxBitcoinSigner) {
|
|
193
194
|
this.addSigner("OKX Wallet", "BTC", OKX_SVG, okxBitcoinSigner);
|
|
194
195
|
}
|
|
196
|
+
const nip07Signer = ccc.Nip07.getNip07Signer(this.client);
|
|
197
|
+
if (nip07Signer) {
|
|
198
|
+
this.addSigner("Nostr", "Nostr", NOSTR_SVG, nip07Signer);
|
|
199
|
+
}
|
|
195
200
|
const eip6963Manager = new ccc.Eip6963.SignerFactory(this.client);
|
|
196
201
|
this.resetListeners.push(eip6963Manager.subscribeSigners((signer) => {
|
|
197
202
|
this.addSigner(`${signer.detail.info.name}`, "EVM", signer.detail.info.icon, signer);
|
|
@@ -263,38 +268,25 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
263
268
|
Scene.Connecting,
|
|
264
269
|
Scene.SwitchingNetworks,
|
|
265
270
|
].includes(this.scene);
|
|
266
|
-
return html
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
--background: #fff;
|
|
270
|
-
--divider: #eee;
|
|
271
|
-
--btn-primary: #f8f8f8;
|
|
272
|
-
--btn-primary-hover: #efeeee;
|
|
273
|
-
--btn-secondary: #ddd;
|
|
274
|
-
--btn-secondary-hover: #ccc;
|
|
275
|
-
color: #1e1e1e;
|
|
276
|
-
--tip-color: #666;
|
|
277
|
-
}
|
|
278
|
-
</style>
|
|
279
|
-
<div
|
|
280
|
-
class="background"
|
|
281
|
-
@click=${(event) => {
|
|
271
|
+
return html ` <div
|
|
272
|
+
class="background"
|
|
273
|
+
@click=${(event) => {
|
|
282
274
|
if (event.target === event.currentTarget) {
|
|
283
275
|
this.closedHandler();
|
|
284
276
|
}
|
|
285
277
|
}}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
278
|
+
>
|
|
279
|
+
<div class="main" ${ref(this.mainRef)}>
|
|
280
|
+
<div
|
|
281
|
+
class="header text-bold fs-lg ${title == null
|
|
290
282
|
? ""
|
|
291
283
|
: "header-divider"}"
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
284
|
+
${ref(this.headerRef)}
|
|
285
|
+
>
|
|
286
|
+
<img
|
|
287
|
+
class="back ${canBack ? "active" : ""}"
|
|
288
|
+
src=${LEFT_SVG}
|
|
289
|
+
@click=${() => {
|
|
298
290
|
if (this.scene === Scene.Connecting) {
|
|
299
291
|
if ((this.selectedWallet?.signers.length ?? 0) <= 1) {
|
|
300
292
|
this.scene = Scene.SelectingWallets;
|
|
@@ -310,17 +302,17 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
310
302
|
this.scene = Scene.Connected;
|
|
311
303
|
}
|
|
312
304
|
}}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
</div>
|
|
321
|
-
<div class="body" ${ref(this.bodyRef)}>${body}</div>
|
|
305
|
+
/>
|
|
306
|
+
${title}
|
|
307
|
+
<img
|
|
308
|
+
class="close active"
|
|
309
|
+
src=${CLOSE_SVG}
|
|
310
|
+
@click=${this.closedHandler}
|
|
311
|
+
/>
|
|
322
312
|
</div>
|
|
323
|
-
|
|
313
|
+
<div class="body" ${ref(this.bodyRef)}>${body}</div>
|
|
314
|
+
</div>
|
|
315
|
+
</div>`;
|
|
324
316
|
}
|
|
325
317
|
updated() {
|
|
326
318
|
if (!this.mainRef.value) {
|
|
@@ -583,9 +575,6 @@ __decorate([
|
|
|
583
575
|
__decorate([
|
|
584
576
|
property()
|
|
585
577
|
], WebComponentConnector.prototype, "signerFilter", void 0);
|
|
586
|
-
__decorate([
|
|
587
|
-
state()
|
|
588
|
-
], WebComponentConnector.prototype, "isOpen", void 0);
|
|
589
578
|
__decorate([
|
|
590
579
|
property()
|
|
591
580
|
], WebComponentConnector.prototype, "name", void 0);
|
package/dist/events/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;;CAIzC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;;CAIzC;AAED,qBAAa,WAAY,SAAQ,KAAK;;CAIrC"}
|
package/dist/events/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../src/scenes/signers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../src/scenes/signers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAKnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAO7D;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,KACnB,OAAO,gDA4Bb"}
|
package/dist/scenes/signers.js
CHANGED
|
@@ -2,11 +2,13 @@ import { ccc } from "@ckb-ccc/ccc";
|
|
|
2
2
|
import { html } from "lit";
|
|
3
3
|
import { repeat } from "lit/directives/repeat.js";
|
|
4
4
|
import { BTC_SVG, CKB_SVG, ETH_SVG } from "../assets/chains";
|
|
5
|
+
import { NOSTR_SVG } from "../assets/chains/nostr.svg";
|
|
5
6
|
export function signerTypeToIcon(type) {
|
|
6
7
|
return {
|
|
7
8
|
[ccc.SignerType.BTC]: BTC_SVG,
|
|
8
9
|
[ccc.SignerType.EVM]: ETH_SVG,
|
|
9
10
|
[ccc.SignerType.CKB]: CKB_SVG,
|
|
11
|
+
[ccc.SignerType.Nostr]: NOSTR_SVG,
|
|
10
12
|
}[type];
|
|
11
13
|
}
|
|
12
14
|
export function generateSignersScene(wallet, onSignerSelected) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckb-ccc/connector",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6-alpha.0",
|
|
4
4
|
"description": "Common Chains Connector UI",
|
|
5
5
|
"author": "Hanssen0 <hanssen0@hanssen0.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"access": "public"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@ckb-ccc/ccc": "0.0.
|
|
40
|
+
"@ckb-ccc/ccc": "0.0.6-alpha.0",
|
|
41
41
|
"lit": "^3.1.3"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "2cbb4f450ed88e773a353a13ad006dbe6208f67f"
|
|
44
44
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "../utils";
|
|
2
|
+
|
|
3
|
+
export const NOSTR_SVG = encodeSvgToImgSrc(
|
|
4
|
+
'<svg version="1.1" id="_8" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 256 256" style="enable-background:new 0 0 256 256;" xml:space="preserve"><style type="text/css">.st0{fill:none;} .st1{fill:#FFFFFF;} .st2{fill:#662482;}</style><g><path class="st0" d="M0,0v256h256V0H0z M231.2,159.2c0,20.7,0,31.1-3.5,42.2c-4.4,12.2-14,21.8-26.2,26.2 c-11.1,3.5-21.5,3.5-42.2,3.5H96.8c-20.7,0-31.1,0-42.2-3.5c-12.2-4.4-21.8-14-26.2-26.2c-3.5-11.1-3.5-21.5-3.5-42.2V96.8 c0-20.7,0-31.1,3.5-42.2c4.4-12.2,14-21.8,26.2-26.2c11.2-3.5,21.5-3.5,42.2-3.5h62.5c20.7,0,31.1,0,42.2,3.5 c12.2,4.4,21.8,14,26.2,26.2c3.5,11.1,3.5,21.5,3.5,42.2V159.2z"/> <circle class="st1" cx="137.9" cy="99" r="12.1"/><path class="st1" d="M210.8,115.9c0-47.3-27.7-68.7-64.4-68.7c-16.4,0-31,4.4-42.4,12.5c-3.8,2.7-9,0.1-9-4.5 c0-3.1-2.5-5.7-5.7-5.7H57.7c-3.1,0-5.7,2.5-5.7,5.7v144c0,3.1,2.5,5.7,5.7,5.7h33.7c3.1,0,5.6-2.5,5.6-5.6v-8.4 c0-62.8-33.2-109.8-0.4-116c30-5.7,64.1-3,64.5,20.1c0,2,0.3,8,8.6,11.2c5,2,12.6,2.6,22.6,2.4c0,0,9.1-0.7,9.1,8.5 c0,11.5-20.4,10.7-20.4,10.7c-6.7,0.3-22.6-1.5-31.7,1.2c-4.8,1.5-9,4.2-11.5,9.1c-4.2,8.3-6.2,26.5-6.5,45.5v15.5 c0,3.1,2.5,5.7,5.7,5.7h68c3.1,0,5.7-2.5,5.7-5.7l0,0V115.9z"/><path class="st2" d="M227.6,54.6c-4.4-12.2-14-21.8-26.2-26.2c-11.1-3.5-21.5-3.5-42.2-3.5H96.8c-20.7,0-31.1,0-42.2,3.5 c-12.2,4.4-21.8,14-26.2,26.2c-3.5,11.2-3.5,21.5-3.5,42.2v62.5c0,20.7,0,31.1,3.5,42.2c4.4,12.2,14,21.8,26.2,26.2 c11.2,3.5,21.5,3.5,42.2,3.5h62.5c20.7,0,31.1,0,42.2-3.5c12.2-4.4,21.8-14,26.2-26.2c3.5-11.1,3.5-21.5,3.5-42.2V96.8 C231.2,76.1,231.2,65.7,227.6,54.6z M205.1,204.8h-68c-3.1,0-5.7-2.5-5.7-5.7v-15.5c0.3-19,2.3-37.2,6.5-45.5 c2.5-5,6.7-7.7,11.5-9.1c9-2.7,24.9-0.9,31.7-1.2c0,0,20.4,0.8,20.4-10.7c0-9.3-9.1-8.5-9.1-8.5c-10,0.3-17.7-0.4-22.6-2.4 c-8.3-3.3-8.6-9.2-8.6-11.2c-0.4-23.1-34.5-25.9-64.5-20.1c-32.8,6.2,0.4,53.3,0.4,116v8.4c-0.1,3.1-2.5,5.6-5.6,5.6H57.7 c-3.1,0-5.7-2.5-5.7-5.7v-144c0-3.1,2.5-5.7,5.7-5.7h31.7c3.1,0,5.7,2.5,5.7,5.7c0,4.7,5.2,7.2,9,4.5c11.4-8.2,26-12.5,42.4-12.5 c36.7,0,64.4,21.4,64.4,68.7v83.2l0,0C210.8,202.3,208.3,204.8,205.1,204.8z M125.7,99c0-6.7,5.4-12.1,12.1-12.1S150,92.3,150,99 s-5.4,12.1-12.1,12.1S125.7,105.8,125.7,99z"/></g></svg>',
|
|
5
|
+
);
|
package/src/connector/index.ts
CHANGED
|
@@ -2,13 +2,14 @@ import { ccc } from "@ckb-ccc/ccc";
|
|
|
2
2
|
import { LitElement, PropertyValues, css, html } from "lit";
|
|
3
3
|
import { customElement, property, state } from "lit/decorators.js";
|
|
4
4
|
import { Ref, createRef, ref } from "lit/directives/ref.js";
|
|
5
|
+
import { NOSTR_SVG } from "../assets/chains/nostr.svg";
|
|
5
6
|
import { CLOSE_SVG } from "../assets/close.svg";
|
|
6
7
|
import { JOY_ID_SVG } from "../assets/joy-id.svg";
|
|
7
8
|
import { LEFT_SVG } from "../assets/left.svg";
|
|
8
9
|
import { METAMASK_SVG } from "../assets/metamask.svg";
|
|
9
10
|
import { OKX_SVG } from "../assets/okx.svg";
|
|
10
11
|
import { UNI_SAT_SVG } from "../assets/uni-sat.svg";
|
|
11
|
-
import { WillUpdateEvent } from "../events";
|
|
12
|
+
import { ClosedEvent, WillUpdateEvent } from "../events";
|
|
12
13
|
import {
|
|
13
14
|
generateConnectingScene,
|
|
14
15
|
generateSignersScene,
|
|
@@ -38,12 +39,6 @@ export class WebComponentConnector extends LitElement {
|
|
|
38
39
|
|
|
39
40
|
private resetListeners: (() => void)[] = [];
|
|
40
41
|
|
|
41
|
-
@state()
|
|
42
|
-
public isOpen: boolean = false;
|
|
43
|
-
public setIsOpen(isOpen: boolean) {
|
|
44
|
-
this.isOpen = isOpen;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
42
|
@property()
|
|
48
43
|
public name?: string;
|
|
49
44
|
@property()
|
|
@@ -103,7 +98,6 @@ export class WebComponentConnector extends LitElement {
|
|
|
103
98
|
}
|
|
104
99
|
|
|
105
100
|
public disconnect() {
|
|
106
|
-
this.signer?.signer?.disconnect();
|
|
107
101
|
this.walletName = undefined;
|
|
108
102
|
this.signerName = undefined;
|
|
109
103
|
this.saveConnection();
|
|
@@ -178,14 +172,18 @@ export class WebComponentConnector extends LitElement {
|
|
|
178
172
|
this.wallets = [];
|
|
179
173
|
|
|
180
174
|
(async () => {
|
|
181
|
-
|
|
175
|
+
const signer = this.signer;
|
|
176
|
+
if (!signer) {
|
|
182
177
|
return;
|
|
183
178
|
}
|
|
184
179
|
|
|
185
|
-
this.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
180
|
+
if (await signer.signer.replaceClient(this.client)) {
|
|
181
|
+
this.signer = {
|
|
182
|
+
...signer,
|
|
183
|
+
};
|
|
184
|
+
} else {
|
|
185
|
+
this.signer = undefined;
|
|
186
|
+
}
|
|
189
187
|
})();
|
|
190
188
|
|
|
191
189
|
this.resetListeners.forEach((listener) => listener());
|
|
@@ -213,6 +211,11 @@ export class WebComponentConnector extends LitElement {
|
|
|
213
211
|
this.addSigner("OKX Wallet", "BTC", OKX_SVG, okxBitcoinSigner);
|
|
214
212
|
}
|
|
215
213
|
|
|
214
|
+
const nip07Signer = ccc.Nip07.getNip07Signer(this.client);
|
|
215
|
+
if (nip07Signer) {
|
|
216
|
+
this.addSigner("Nostr", "Nostr", NOSTR_SVG, nip07Signer);
|
|
217
|
+
}
|
|
218
|
+
|
|
216
219
|
const eip6963Manager = new ccc.Eip6963.SignerFactory(this.client);
|
|
217
220
|
this.resetListeners.push(
|
|
218
221
|
eip6963Manager.subscribeSigners((signer) => {
|
|
@@ -361,61 +364,48 @@ export class WebComponentConnector extends LitElement {
|
|
|
361
364
|
Scene.SwitchingNetworks,
|
|
362
365
|
].includes(this.scene);
|
|
363
366
|
|
|
364
|
-
return html
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
--btn-primary: #f8f8f8;
|
|
370
|
-
--btn-primary-hover: #efeeee;
|
|
371
|
-
--btn-secondary: #ddd;
|
|
372
|
-
--btn-secondary-hover: #ccc;
|
|
373
|
-
color: #1e1e1e;
|
|
374
|
-
--tip-color: #666;
|
|
367
|
+
return html` <div
|
|
368
|
+
class="background"
|
|
369
|
+
@click=${(event: Event) => {
|
|
370
|
+
if (event.target === event.currentTarget) {
|
|
371
|
+
this.closedHandler();
|
|
375
372
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
>
|
|
392
|
-
<img
|
|
393
|
-
class="back ${canBack ? "active" : ""}"
|
|
394
|
-
src=${LEFT_SVG}
|
|
395
|
-
@click=${() => {
|
|
396
|
-
if (this.scene === Scene.Connecting) {
|
|
397
|
-
if ((this.selectedWallet?.signers.length ?? 0) <= 1) {
|
|
398
|
-
this.scene = Scene.SelectingWallets;
|
|
399
|
-
} else {
|
|
400
|
-
this.scene = Scene.SelectingSigners;
|
|
401
|
-
}
|
|
402
|
-
} else if (this.scene === Scene.SelectingSigners) {
|
|
373
|
+
}}
|
|
374
|
+
>
|
|
375
|
+
<div class="main" ${ref(this.mainRef)}>
|
|
376
|
+
<div
|
|
377
|
+
class="header text-bold fs-lg ${title == null
|
|
378
|
+
? ""
|
|
379
|
+
: "header-divider"}"
|
|
380
|
+
${ref(this.headerRef)}
|
|
381
|
+
>
|
|
382
|
+
<img
|
|
383
|
+
class="back ${canBack ? "active" : ""}"
|
|
384
|
+
src=${LEFT_SVG}
|
|
385
|
+
@click=${() => {
|
|
386
|
+
if (this.scene === Scene.Connecting) {
|
|
387
|
+
if ((this.selectedWallet?.signers.length ?? 0) <= 1) {
|
|
403
388
|
this.scene = Scene.SelectingWallets;
|
|
404
|
-
} else
|
|
405
|
-
this.scene = Scene.
|
|
389
|
+
} else {
|
|
390
|
+
this.scene = Scene.SelectingSigners;
|
|
406
391
|
}
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
392
|
+
} else if (this.scene === Scene.SelectingSigners) {
|
|
393
|
+
this.scene = Scene.SelectingWallets;
|
|
394
|
+
} else if (this.scene === Scene.SwitchingNetworks) {
|
|
395
|
+
this.scene = Scene.Connected;
|
|
396
|
+
}
|
|
397
|
+
}}
|
|
398
|
+
/>
|
|
399
|
+
${title}
|
|
400
|
+
<img
|
|
401
|
+
class="close active"
|
|
402
|
+
src=${CLOSE_SVG}
|
|
403
|
+
@click=${this.closedHandler}
|
|
404
|
+
/>
|
|
417
405
|
</div>
|
|
418
|
-
|
|
406
|
+
<div class="body" ${ref(this.bodyRef)}>${body}</div>
|
|
407
|
+
</div>
|
|
408
|
+
</div>`;
|
|
419
409
|
}
|
|
420
410
|
|
|
421
411
|
updated() {
|
|
@@ -443,7 +433,7 @@ export class WebComponentConnector extends LitElement {
|
|
|
443
433
|
this.scene = Scene.Connected;
|
|
444
434
|
}
|
|
445
435
|
|
|
446
|
-
this.
|
|
436
|
+
this.dispatchEvent(new ClosedEvent());
|
|
447
437
|
};
|
|
448
438
|
|
|
449
439
|
private signerSelectedHandler = (
|
package/src/events/index.ts
CHANGED
package/src/scenes/signers.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ccc } from "@ckb-ccc/ccc";
|
|
|
2
2
|
import { html } from "lit";
|
|
3
3
|
import { repeat } from "lit/directives/repeat.js";
|
|
4
4
|
import { BTC_SVG, CKB_SVG, ETH_SVG } from "../assets/chains";
|
|
5
|
+
import { NOSTR_SVG } from "../assets/chains/nostr.svg";
|
|
5
6
|
import { WalletWithSigners } from "../types";
|
|
6
7
|
|
|
7
8
|
export function signerTypeToIcon(type: ccc.SignerType): string {
|
|
@@ -9,6 +10,7 @@ export function signerTypeToIcon(type: ccc.SignerType): string {
|
|
|
9
10
|
[ccc.SignerType.BTC]: BTC_SVG,
|
|
10
11
|
[ccc.SignerType.EVM]: ETH_SVG,
|
|
11
12
|
[ccc.SignerType.CKB]: CKB_SVG,
|
|
13
|
+
[ccc.SignerType.Nostr]: NOSTR_SVG,
|
|
12
14
|
}[type];
|
|
13
15
|
}
|
|
14
16
|
|