@ckb-ccc/connector 0.0.5-alpha.0 → 0.0.5-alpha.2
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/advancedBarrel.d.ts +1 -0
- package/dist/advancedBarrel.d.ts.map +1 -1
- package/dist/advancedBarrel.js +1 -0
- package/dist/assets/chains/ckb.sm.svg.d.ts +2 -0
- package/dist/assets/chains/ckb.sm.svg.d.ts.map +1 -0
- package/dist/assets/chains/ckb.sm.svg.js +2 -0
- package/dist/assets/copy.svg.d.ts +2 -0
- package/dist/assets/copy.svg.d.ts.map +1 -0
- package/dist/assets/copy.svg.js +2 -0
- package/dist/assets/diconnect.svg.d.ts +2 -0
- package/dist/assets/diconnect.svg.d.ts.map +1 -0
- package/dist/assets/diconnect.svg.js +2 -0
- package/dist/assets/left.svg.d.ts +2 -0
- package/dist/assets/left.svg.d.ts.map +1 -0
- package/dist/assets/left.svg.js +2 -0
- package/dist/assets/swap.svg.d.ts +2 -0
- package/dist/assets/swap.svg.d.ts.map +1 -0
- package/dist/assets/swap.svg.js +2 -0
- package/dist/connector/index.d.ts +12 -0
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +278 -39
- package/dist/scenes/connected.d.ts +4 -0
- package/dist/scenes/connected.d.ts.map +1 -0
- package/dist/scenes/connected.js +71 -0
- package/dist/scenes/networks.d.ts +3 -0
- package/dist/scenes/networks.d.ts.map +1 -0
- package/dist/scenes/networks.js +38 -0
- package/dist/scenes/signers.d.ts.map +1 -1
- package/dist/scenes/signers.js +5 -2
- package/dist/scenes/wallets.d.ts +1 -1
- package/dist/scenes/wallets.d.ts.map +1 -1
- package/dist/scenes/wallets.js +9 -44
- package/dist/signerOpenLink/index.d.ts +13 -0
- package/dist/signerOpenLink/index.d.ts.map +1 -0
- package/dist/signerOpenLink/index.js +26 -0
- package/package.json +3 -3
- package/src/advancedBarrel.ts +1 -0
- package/src/assets/chains/ckb.sm.svg.ts +5 -0
- package/src/assets/copy.svg.ts +5 -0
- package/src/assets/diconnect.svg.ts +5 -0
- package/src/assets/left.svg.ts +5 -0
- package/src/assets/swap.svg.ts +5 -0
- package/src/connector/index.ts +331 -56
- package/src/scenes/connected.ts +87 -0
- package/src/scenes/networks.ts +47 -0
- package/src/scenes/signers.ts +5 -2
- package/src/scenes/wallets.ts +20 -63
- package/src/signerOpenLink/index.ts +35 -0
- package/dist.commonjs/tsconfig.commonjs.tsbuildinfo +0 -1
package/dist/advancedBarrel.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advancedBarrel.d.ts","sourceRoot":"","sources":["../src/advancedBarrel.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"advancedBarrel.d.ts","sourceRoot":"","sources":["../src/advancedBarrel.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
|
package/dist/advancedBarrel.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ckb.sm.svg.d.ts","sourceRoot":"","sources":["../../../src/assets/chains/ckb.sm.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,QAEtB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "../utils";
|
|
2
|
+
export const CKB_SM_SVG = encodeSvgToImgSrc('<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_221_415)"><path d="M0.666992 9C0.666992 11.3869 1.6152 13.6761 3.30303 15.364C4.99086 17.0518 7.28004 18 9.66699 18C12.0539 18 14.3431 17.0518 16.031 15.364C17.7188 13.6761 18.667 11.3869 18.667 9C18.667 6.61305 17.7188 4.32387 16.031 2.63604C14.3431 0.948212 12.0539 0 9.66699 0C7.28004 0 4.99086 0.948212 3.30303 2.63604C1.6152 4.32387 0.666992 6.61305 0.666992 9Z" fill="#333333"/><path d="M5.51318 4.84619V12.9231H7.60395V8.52235H9.20549L5.51318 4.84619Z" fill="white"/><path d="M11.73 4.84619V9.24696H10.1284L13.8207 12.9231V4.84619H11.73Z" fill="white"/></g><defs><clipPath id="clip0_221_415"><rect width="18" height="18" fill="white" transform="translate(0.666992)"/></clipPath></defs></svg>');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.svg.d.ts","sourceRoot":"","sources":["../../src/assets/copy.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,QAEpB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "./utils";
|
|
2
|
+
export const COPY_SVG = encodeSvgToImgSrc('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19 13.5657V6.10526C19 5.49737 18.5091 5 17.9091 5H10.5454C9.94543 5 9.45452 5.49737 9.45452 6.10526V13.5657C9.45452 14.1736 9.94543 14.671 10.5454 14.671H17.9091C18.5091 14.671 19 14.1736 19 13.5657Z" fill="#999999"/><path d="M14.5455 15.8684H9.18183C8.58183 15.8684 8.09092 15.3711 8.09092 14.7632V9.329H6.09091C5.49091 9.329 5 9.82637 5 10.4343V17.8947C5 18.5026 5.49091 19 6.09091 19H13.4546C14.0546 19 14.5455 18.5026 14.5455 17.8947V15.8684Z" fill="#999999"/></svg>');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diconnect.svg.d.ts","sourceRoot":"","sources":["../../src/assets/diconnect.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAE1B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "./utils";
|
|
2
|
+
export const DISCONNECT_SVG = encodeSvgToImgSrc('<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="32" height="32" rx="8" fill="#DDDDDD"/><path d="M20.375 16.875H14.25V15.125H20.375L19.5 13.375H21.25L23 16L21.25 18.625H19.5L20.375 16.875ZM20.9509 11.051L19.7128 12.2886C19.226 11.8 18.6473 11.4125 18.0101 11.1484C17.3729 10.8844 16.6897 10.749 16 10.75C13.1006 10.75 10.75 13.1006 10.75 16C10.75 18.8994 13.1006 21.25 16 21.25C17.4107 21.25 18.7309 20.6923 19.71 19.7147L20.9462 20.9532C20.297 21.6031 19.5259 22.1184 18.6771 22.4696C17.8283 22.8209 16.9186 23.0011 16 23C12.1341 23 9 19.8659 9 16C9 12.1341 12.1341 9 16 9C17.8816 9 19.647 9.74667 20.9509 11.051Z" fill="#666666"/></svg>');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"left.svg.d.ts","sourceRoot":"","sources":["../../src/assets/left.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,QAEpB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "./utils";
|
|
2
|
+
export const LEFT_SVG = encodeSvgToImgSrc('<svg width="8" height="14" viewBox="0 0 8 14" xmlns="http://www.w3.org/2000/svg"><path d="M6.74554 13.5C6.54646 13.5 6.35454 13.4177 6.21275 13.2695L0.720203 7.55253C0.426599 7.24573 0.426599 6.75035 0.720203 6.44355L6.21275 0.725059C6.50779 0.422747 6.98185 0.42574 7.27402 0.729549C7.5662 1.03485 7.56763 1.52723 7.27832 1.83404L2.31999 6.99729L7.27975 12.162C7.49459 12.3865 7.55904 12.7233 7.44303 13.0166C7.32415 13.3084 7.0506 13.5 6.74554 13.5Z" stroke="#1E1E1E" stroke-width="1"/></svg>');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.svg.d.ts","sourceRoot":"","sources":["../../src/assets/swap.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,QAEpB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { encodeSvgToImgSrc } from "./utils";
|
|
2
|
+
export const SWAP_SVG = encodeSvgToImgSrc('<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.30688 5.22537L11.1669 3.36536L9.30688 1.50537" stroke="#666666" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/><path d="M2.16699 3.36523H11.167" stroke="#666666" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/><path d="M4.02698 6.77539L2.16699 8.63541L4.02698 10.4954" stroke="#666666" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/><path d="M11.167 8.63525H2.16699" stroke="#666666" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/></svg>');
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/ccc";
|
|
2
2
|
import { LitElement, PropertyValues } from "lit";
|
|
3
|
+
import { Ref } from "lit/directives/ref.js";
|
|
3
4
|
export declare class WebComponentConnector extends LitElement {
|
|
4
5
|
private wallets;
|
|
6
|
+
signerFilter?: (signerInfo: ccc.SignerInfo, wallet: ccc.Wallet) => Promise<boolean>;
|
|
5
7
|
private resetListeners;
|
|
6
8
|
isOpen: boolean;
|
|
7
9
|
setIsOpen(isOpen: boolean): void;
|
|
10
|
+
name?: string;
|
|
11
|
+
icon?: string;
|
|
8
12
|
client: ccc.Client;
|
|
9
13
|
setClient(client: ccc.Client): void;
|
|
10
14
|
private scene;
|
|
@@ -14,6 +18,10 @@ export declare class WebComponentConnector extends LitElement {
|
|
|
14
18
|
private signerName?;
|
|
15
19
|
wallet?: ccc.Wallet;
|
|
16
20
|
signer?: ccc.SignerInfo;
|
|
21
|
+
private recommendAddress?;
|
|
22
|
+
private internalAddress?;
|
|
23
|
+
private balance?;
|
|
24
|
+
private updateSignerInfo;
|
|
17
25
|
private prepareSigner;
|
|
18
26
|
disconnect(): void;
|
|
19
27
|
private loadConnection;
|
|
@@ -22,7 +30,11 @@ export declare class WebComponentConnector extends LitElement {
|
|
|
22
30
|
willUpdate(changedProperties: PropertyValues): void;
|
|
23
31
|
private reloadSigners;
|
|
24
32
|
private addSigner;
|
|
33
|
+
mainRef: Ref<HTMLDivElement>;
|
|
34
|
+
headerRef: Ref<HTMLDivElement>;
|
|
35
|
+
bodyRef: Ref<HTMLDivElement>;
|
|
25
36
|
render(): import("lit").TemplateResult<1>;
|
|
37
|
+
updated(): void;
|
|
26
38
|
private closedHandler;
|
|
27
39
|
private signerSelectedHandler;
|
|
28
40
|
static styles: import("lit").CSSResult;
|
|
@@ -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;
|
|
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,MAAM,EAAE,OAAO,CAAS;IACxB,SAAS,CAAC,MAAM,EAAE,OAAO;IAKzB,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;IAGxC,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;YAShB,aAAa;IAYpB,UAAU;IAQjB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,cAAc;IAUtB,iBAAiB,IAAI,IAAI;IAMzB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAoCnD,OAAO,CAAC,aAAa;YA2FP,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;IA2GN,OAAO;IAUP,OAAO,CAAC,aAAa,CAgBnB;IAEF,OAAO,CAAC,qBAAqB,CAoB3B;IAEF,MAAM,CAAC,MAAM,0BAsPX;CACH"}
|
package/dist/connector/index.js
CHANGED
|
@@ -7,18 +7,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
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
|
+
import { createRef, ref } from "lit/directives/ref.js";
|
|
10
11
|
import { CLOSE_SVG } from "../assets/close.svg";
|
|
11
12
|
import { JOY_ID_SVG } from "../assets/joy-id.svg";
|
|
13
|
+
import { LEFT_SVG } from "../assets/left.svg";
|
|
14
|
+
import { METAMASK_SVG } from "../assets/metamask.svg";
|
|
12
15
|
import { OKX_SVG } from "../assets/okx.svg";
|
|
13
16
|
import { UNI_SAT_SVG } from "../assets/uni-sat.svg";
|
|
14
17
|
import { WillUpdateEvent } from "../events";
|
|
15
18
|
import { generateConnectingScene, generateSignersScene, generateWalletsScene, } from "../scenes";
|
|
19
|
+
import { generateConnectedScene } from "../scenes/connected";
|
|
20
|
+
import { generateNetworksScene } from "../scenes/networks";
|
|
21
|
+
import { SignerOpenLink } from "../signerOpenLink";
|
|
16
22
|
var Scene;
|
|
17
23
|
(function (Scene) {
|
|
18
24
|
Scene["SelectingWallets"] = "SelectingWallets";
|
|
19
25
|
Scene["SelectingSigners"] = "SelectingSigners";
|
|
20
26
|
Scene["Connecting"] = "Connecting";
|
|
21
27
|
Scene["Connected"] = "Connected";
|
|
28
|
+
Scene["SwitchingNetworks"] = "SwitchingNetworks";
|
|
22
29
|
})(Scene || (Scene = {}));
|
|
23
30
|
let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
24
31
|
constructor() {
|
|
@@ -28,6 +35,9 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
28
35
|
this.isOpen = false;
|
|
29
36
|
this.client = new ccc.ClientPublicTestnet();
|
|
30
37
|
this.scene = Scene.SelectingWallets;
|
|
38
|
+
this.mainRef = createRef();
|
|
39
|
+
this.headerRef = createRef();
|
|
40
|
+
this.bodyRef = createRef();
|
|
31
41
|
this.closedHandler = () => {
|
|
32
42
|
if ([
|
|
33
43
|
Scene.SelectingSigners,
|
|
@@ -38,6 +48,9 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
38
48
|
this.selectedSigner = undefined;
|
|
39
49
|
this.selectedWallet = undefined;
|
|
40
50
|
}
|
|
51
|
+
else if ([Scene.SwitchingNetworks].includes(this.scene)) {
|
|
52
|
+
this.scene = Scene.Connected;
|
|
53
|
+
}
|
|
41
54
|
this.isOpen = false;
|
|
42
55
|
};
|
|
43
56
|
this.signerSelectedHandler = (wallet, signer) => {
|
|
@@ -49,6 +62,8 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
49
62
|
if (!(await signer.signer.isConnected())) {
|
|
50
63
|
return;
|
|
51
64
|
}
|
|
65
|
+
this.recommendAddress = await signer.signer.getRecommendedAddress();
|
|
66
|
+
this.balance = await signer.signer.getBalance();
|
|
52
67
|
this.scene = Scene.Connected;
|
|
53
68
|
this.walletName = wallet.name;
|
|
54
69
|
this.signerName = signer.name;
|
|
@@ -63,22 +78,30 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
63
78
|
setClient(client) {
|
|
64
79
|
this.client = client;
|
|
65
80
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
async updateSignerInfo() {
|
|
82
|
+
if (!this.signer) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.recommendAddress = await this.signer.signer.getRecommendedAddress();
|
|
86
|
+
this.balance = await this.signer.signer.getBalance();
|
|
87
|
+
this.internalAddress = await this.signer.signer.getInternalAddress();
|
|
88
|
+
}
|
|
89
|
+
async prepareSigner() {
|
|
90
|
+
if (this.signer && (await this.signer.signer.isConnected())) {
|
|
91
|
+
await this.updateSignerInfo();
|
|
92
|
+
this.scene = Scene.Connected;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.wallet = undefined;
|
|
96
|
+
this.signer = undefined;
|
|
97
|
+
this.scene = Scene.SelectingWallets;
|
|
76
98
|
}
|
|
77
99
|
disconnect() {
|
|
78
100
|
this.signer?.signer?.disconnect();
|
|
79
101
|
this.walletName = undefined;
|
|
80
102
|
this.signerName = undefined;
|
|
81
103
|
this.saveConnection();
|
|
104
|
+
this.closedHandler();
|
|
82
105
|
}
|
|
83
106
|
loadConnection() {
|
|
84
107
|
const { signerName, walletName, } = JSON.parse(window.localStorage.getItem("ccc-connection-info") ?? "{}");
|
|
@@ -97,17 +120,26 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
97
120
|
this.reloadSigners();
|
|
98
121
|
}
|
|
99
122
|
willUpdate(changedProperties) {
|
|
100
|
-
if (changedProperties.has("client")
|
|
123
|
+
if (changedProperties.has("client") ||
|
|
124
|
+
changedProperties.has("signerFilter")) {
|
|
101
125
|
this.reloadSigners();
|
|
102
126
|
}
|
|
103
127
|
if (changedProperties.has("walletName") ||
|
|
104
|
-
changedProperties.has("wallets")
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
if (changedProperties.has("signerName") ||
|
|
128
|
+
changedProperties.has("wallets") ||
|
|
129
|
+
changedProperties.has("signerName") ||
|
|
108
130
|
changedProperties.has("wallet")) {
|
|
109
|
-
|
|
110
|
-
|
|
131
|
+
(async () => {
|
|
132
|
+
const wallet = this.wallets.find(({ name }) => name === this.walletName);
|
|
133
|
+
const signer = wallet?.signers.find(({ name }) => name === this.signerName);
|
|
134
|
+
if (signer && (await signer.signer.isConnected())) {
|
|
135
|
+
this.wallet = wallet;
|
|
136
|
+
this.signer = signer;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.wallet = undefined;
|
|
140
|
+
this.signer = undefined;
|
|
141
|
+
}
|
|
142
|
+
})();
|
|
111
143
|
}
|
|
112
144
|
if (changedProperties.has("signer")) {
|
|
113
145
|
this.prepareSigner();
|
|
@@ -127,45 +159,76 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
127
159
|
})();
|
|
128
160
|
this.resetListeners.forEach((listener) => listener());
|
|
129
161
|
this.resetListeners = [];
|
|
130
|
-
|
|
131
|
-
|
|
162
|
+
const name = this.name ??
|
|
163
|
+
document.querySelector("head title").text;
|
|
164
|
+
const icon = this.icon ??
|
|
165
|
+
document.querySelector('link[rel="icon"]').href;
|
|
166
|
+
ccc.JoyId.getJoyIdSigners(this.client, name, icon).forEach(({ signer, name }) => {
|
|
167
|
+
this.addSigner("JoyID", name, JOY_ID_SVG, signer);
|
|
132
168
|
});
|
|
133
169
|
const uniSatSigner = ccc.UniSat.getUniSatSigner(this.client);
|
|
134
170
|
if (uniSatSigner) {
|
|
135
|
-
this.addSigner("UniSat", "BTC", UNI_SAT_SVG,
|
|
171
|
+
this.addSigner("UniSat", "BTC", UNI_SAT_SVG, uniSatSigner);
|
|
136
172
|
}
|
|
137
173
|
const okxBitcoinSigner = ccc.Okx.getOKXBitcoinSigner(this.client);
|
|
138
174
|
if (okxBitcoinSigner) {
|
|
139
|
-
this.addSigner("OKX Wallet", "BTC", OKX_SVG,
|
|
175
|
+
this.addSigner("OKX Wallet", "BTC", OKX_SVG, okxBitcoinSigner);
|
|
140
176
|
}
|
|
141
177
|
const eip6963Manager = new ccc.Eip6963.SignerFactory(this.client);
|
|
142
178
|
this.resetListeners.push(eip6963Manager.subscribeSigners((signer) => {
|
|
143
|
-
this.addSigner(`${signer.detail.info.name}`, "EVM", signer.detail.info.icon,
|
|
179
|
+
this.addSigner(`${signer.detail.info.name}`, "EVM", signer.detail.info.icon, signer);
|
|
144
180
|
}));
|
|
145
|
-
|
|
146
|
-
|
|
181
|
+
// === Dummy signers ===
|
|
182
|
+
this.addSigner("MetaMask", "EVM", METAMASK_SVG, new SignerOpenLink(this.client, `https://metamask.app.link/dapp/${window.location.href}`, ccc.SignerType.EVM));
|
|
183
|
+
[ccc.SignerType.EVM, ccc.SignerType.BTC].forEach((type) => {
|
|
184
|
+
this.addSigner("OKX Wallet", type, OKX_SVG, new SignerOpenLink(this.client, "https://www.okx.com/download?deeplink=" +
|
|
185
|
+
encodeURIComponent("okx://wallet/dapp/url?dappUrl=" +
|
|
186
|
+
encodeURIComponent(window.location.href)), type));
|
|
187
|
+
});
|
|
188
|
+
this.addSigner("UniSat", ccc.SignerType.BTC, UNI_SAT_SVG, new SignerOpenLink(this.client, "https://unisat.io/download", ccc.SignerType.BTC));
|
|
189
|
+
// ===
|
|
190
|
+
}
|
|
191
|
+
async addSigner(walletName, signerName, icon, signer) {
|
|
192
|
+
const signerInfo = { name: signerName, signer };
|
|
193
|
+
if (this.signerFilter &&
|
|
194
|
+
!(await this.signerFilter(signerInfo, { name: walletName, icon }))) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
147
197
|
let updated = false;
|
|
148
198
|
const wallets = this.wallets.map((wallet) => {
|
|
149
199
|
if (wallet.name !== walletName) {
|
|
150
200
|
return wallet;
|
|
151
201
|
}
|
|
152
202
|
updated = true;
|
|
203
|
+
const allSigners = [...wallet.signers, signerInfo];
|
|
204
|
+
const signers = allSigners.filter(({ signer }) => !(signer instanceof SignerOpenLink));
|
|
153
205
|
return {
|
|
154
206
|
...wallet,
|
|
155
|
-
signers:
|
|
207
|
+
signers: signers.length !== 0 ? signers : [signerInfo],
|
|
156
208
|
};
|
|
157
209
|
});
|
|
158
210
|
if (!updated) {
|
|
159
211
|
wallets.push({
|
|
160
212
|
name: walletName,
|
|
161
213
|
icon,
|
|
162
|
-
signers: [
|
|
214
|
+
signers: [signerInfo],
|
|
163
215
|
});
|
|
164
216
|
}
|
|
165
217
|
this.wallets = wallets;
|
|
166
218
|
}
|
|
167
219
|
render() {
|
|
168
220
|
const [title, body] = (() => {
|
|
221
|
+
if (this.scene === Scene.Connected && this.wallet && this.signer) {
|
|
222
|
+
return generateConnectedScene(this.wallet, this.signer, this.recommendAddress, this.internalAddress, this.balance, this.disconnect.bind(this), () => {
|
|
223
|
+
this.scene = Scene.SwitchingNetworks;
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (this.scene === Scene.SwitchingNetworks) {
|
|
227
|
+
return generateNetworksScene(this.client, (client) => {
|
|
228
|
+
this.setClient(client);
|
|
229
|
+
this.closedHandler();
|
|
230
|
+
});
|
|
231
|
+
}
|
|
169
232
|
if (this.scene === Scene.SelectingWallets || !this.selectedWallet) {
|
|
170
233
|
return generateWalletsScene(this.wallets, (wallet) => {
|
|
171
234
|
this.selectedWallet = wallet;
|
|
@@ -177,6 +240,11 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
177
240
|
}
|
|
178
241
|
return generateConnectingScene(this.selectedWallet, this.selectedSigner, this.signerSelectedHandler);
|
|
179
242
|
})();
|
|
243
|
+
const canBack = [
|
|
244
|
+
Scene.SelectingSigners,
|
|
245
|
+
Scene.Connecting,
|
|
246
|
+
Scene.SwitchingNetworks,
|
|
247
|
+
].includes(this.scene);
|
|
180
248
|
return html `<style>
|
|
181
249
|
:host {
|
|
182
250
|
${this.isOpen ? "" : "display: none;"}
|
|
@@ -185,6 +253,7 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
185
253
|
--btn-primary: #f8f8f8;
|
|
186
254
|
--btn-primary-hover: #efeeee;
|
|
187
255
|
--btn-secondary: #ddd;
|
|
256
|
+
--btn-secondary-hover: #ccc;
|
|
188
257
|
color: #1e1e1e;
|
|
189
258
|
--tip-color: #666;
|
|
190
259
|
}
|
|
@@ -197,16 +266,51 @@ let WebComponentConnector = class WebComponentConnector extends LitElement {
|
|
|
197
266
|
}
|
|
198
267
|
}}
|
|
199
268
|
>
|
|
200
|
-
<div class="main">
|
|
201
|
-
<div
|
|
202
|
-
|
|
269
|
+
<div class="main" ${ref(this.mainRef)}>
|
|
270
|
+
<div
|
|
271
|
+
class="header text-bold fs-lg ${title == null
|
|
272
|
+
? ""
|
|
273
|
+
: "header-divider"}"
|
|
274
|
+
${ref(this.headerRef)}
|
|
275
|
+
>
|
|
276
|
+
<img
|
|
277
|
+
class="back ${canBack ? "active" : ""}"
|
|
278
|
+
src=${LEFT_SVG}
|
|
279
|
+
@click=${() => {
|
|
280
|
+
if (this.scene === Scene.Connecting) {
|
|
281
|
+
if ((this.selectedWallet?.signers.length ?? 0) <= 1) {
|
|
282
|
+
this.scene = Scene.SelectingWallets;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
this.scene = Scene.SelectingSigners;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
else if (this.scene === Scene.SelectingSigners) {
|
|
289
|
+
this.scene = Scene.SelectingWallets;
|
|
290
|
+
}
|
|
291
|
+
else if (this.scene === Scene.SwitchingNetworks) {
|
|
292
|
+
this.scene = Scene.Connected;
|
|
293
|
+
}
|
|
294
|
+
}}
|
|
295
|
+
/>
|
|
203
296
|
${title}
|
|
204
|
-
<img
|
|
297
|
+
<img
|
|
298
|
+
class="close active"
|
|
299
|
+
src=${CLOSE_SVG}
|
|
300
|
+
@click=${this.closedHandler}
|
|
301
|
+
/>
|
|
205
302
|
</div>
|
|
206
|
-
<div class="body">${body}</div>
|
|
303
|
+
<div class="body" ${ref(this.bodyRef)}>${body}</div>
|
|
207
304
|
</div>
|
|
208
305
|
</div>`;
|
|
209
306
|
}
|
|
307
|
+
updated() {
|
|
308
|
+
if (!this.mainRef.value) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
this.mainRef.value.style.height = `${(this.bodyRef.value?.clientHeight ?? 0) +
|
|
312
|
+
(this.headerRef.value?.clientHeight ?? 0)}px`;
|
|
313
|
+
}
|
|
210
314
|
};
|
|
211
315
|
WebComponentConnector.styles = css `
|
|
212
316
|
:host {
|
|
@@ -235,9 +339,18 @@ WebComponentConnector.styles = css `
|
|
|
235
339
|
color: var(--tip-color);
|
|
236
340
|
}
|
|
237
341
|
|
|
238
|
-
.fs-
|
|
342
|
+
.fs-sm {
|
|
343
|
+
font-size: 0.8rem;
|
|
344
|
+
}
|
|
345
|
+
.fs-md {
|
|
346
|
+
font-size: 1rem;
|
|
347
|
+
}
|
|
348
|
+
.fs-lg {
|
|
239
349
|
font-size: 1.2rem;
|
|
240
350
|
}
|
|
351
|
+
.fs-xl {
|
|
352
|
+
font-size: 1.5rem;
|
|
353
|
+
}
|
|
241
354
|
|
|
242
355
|
.mb-1 {
|
|
243
356
|
margin-bottom: 0.7rem;
|
|
@@ -251,6 +364,18 @@ WebComponentConnector.styles = css `
|
|
|
251
364
|
.mt-2 {
|
|
252
365
|
margin-top: 1rem;
|
|
253
366
|
}
|
|
367
|
+
.ml-1 {
|
|
368
|
+
margin-left: 0.7rem;
|
|
369
|
+
}
|
|
370
|
+
.ml-2 {
|
|
371
|
+
margin-left: 1em;
|
|
372
|
+
}
|
|
373
|
+
.mr-1 {
|
|
374
|
+
margin-right: 0.7rem;
|
|
375
|
+
}
|
|
376
|
+
.mr-2 {
|
|
377
|
+
margin-right: 1rem;
|
|
378
|
+
}
|
|
254
379
|
|
|
255
380
|
.background {
|
|
256
381
|
width: 100%;
|
|
@@ -265,25 +390,39 @@ WebComponentConnector.styles = css `
|
|
|
265
390
|
transform: translate(-50%, -50%);
|
|
266
391
|
background: var(--background);
|
|
267
392
|
border-radius: 1.2rem;
|
|
393
|
+
overflow: hidden;
|
|
394
|
+
transition: height 0.15s ease-out;
|
|
268
395
|
}
|
|
269
396
|
|
|
270
397
|
.header {
|
|
271
398
|
display: flex;
|
|
272
399
|
justify-content: space-between;
|
|
273
400
|
align-items: center;
|
|
274
|
-
padding: 1rem 1.3rem;
|
|
401
|
+
padding: 1rem 1.3rem 0.5rem;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
.header-divider {
|
|
405
|
+
padding-bottom: 1rem;
|
|
275
406
|
border-bottom: 1px solid var(--divider);
|
|
407
|
+
margin-bottom: 1rem;
|
|
276
408
|
}
|
|
277
409
|
|
|
278
410
|
.close,
|
|
279
411
|
.back {
|
|
280
412
|
width: 0.8rem;
|
|
281
413
|
height: 0.8rem;
|
|
414
|
+
opacity: 0;
|
|
415
|
+
transition: opacity 0.15s ease-in-out;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.close.active,
|
|
419
|
+
.back.active {
|
|
420
|
+
opacity: 1;
|
|
282
421
|
cursor: pointer;
|
|
283
422
|
}
|
|
284
423
|
|
|
285
424
|
.body {
|
|
286
|
-
padding: 1.
|
|
425
|
+
padding: 0 1.3rem 1.4rem;
|
|
287
426
|
min-width: 20rem;
|
|
288
427
|
display: flex;
|
|
289
428
|
flex-direction: column;
|
|
@@ -298,18 +437,23 @@ WebComponentConnector.styles = css `
|
|
|
298
437
|
padding: 0.75rem 1rem;
|
|
299
438
|
background: var(--btn-primary);
|
|
300
439
|
border-radius: 0.4rem;
|
|
301
|
-
transition: background 0.
|
|
440
|
+
transition: background 0.15s ease-in-out;
|
|
302
441
|
}
|
|
303
|
-
|
|
304
442
|
.btn-primary img {
|
|
305
443
|
width: 2rem;
|
|
306
444
|
height: 2rem;
|
|
307
445
|
margin-right: 1rem;
|
|
446
|
+
border-radius: 0.4rem;
|
|
308
447
|
}
|
|
309
|
-
|
|
310
448
|
.btn-primary:hover {
|
|
311
449
|
background: var(--btn-primary-hover);
|
|
312
450
|
}
|
|
451
|
+
.btn-primary:disabled {
|
|
452
|
+
cursor: not-allowed;
|
|
453
|
+
}
|
|
454
|
+
.btn-primary:disabled:hover {
|
|
455
|
+
background: var(--btn-primary);
|
|
456
|
+
}
|
|
313
457
|
|
|
314
458
|
.btn-secondary {
|
|
315
459
|
display: flex;
|
|
@@ -317,19 +461,28 @@ WebComponentConnector.styles = css `
|
|
|
317
461
|
padding: 0.25rem 1rem;
|
|
318
462
|
background: var(--btn-secondary);
|
|
319
463
|
border-radius: 9999px;
|
|
320
|
-
transition: background 0.
|
|
464
|
+
transition: background 0.15s ease-in-out;
|
|
321
465
|
}
|
|
322
|
-
|
|
323
466
|
.btn-secondary img {
|
|
324
467
|
width: 0.8rem;
|
|
325
468
|
height: 0.8rem;
|
|
326
469
|
margin-right: 0.5rem;
|
|
327
470
|
}
|
|
471
|
+
.btn-secondary:hover {
|
|
472
|
+
background: var(--btn-secondary-hover);
|
|
473
|
+
}
|
|
474
|
+
.btn-secondary:disabled {
|
|
475
|
+
cursor: not-allowed;
|
|
476
|
+
}
|
|
477
|
+
.btn-secondary:disabled:hover {
|
|
478
|
+
background: var(--btn-secondary);
|
|
479
|
+
}
|
|
328
480
|
|
|
329
481
|
.wallet-icon {
|
|
330
482
|
width: 4rem;
|
|
331
483
|
height: 4rem;
|
|
332
484
|
margin-bottom: 0.5rem;
|
|
485
|
+
border-radius: 0.8rem;
|
|
333
486
|
}
|
|
334
487
|
|
|
335
488
|
.connecting-wallet-icon {
|
|
@@ -337,13 +490,90 @@ WebComponentConnector.styles = css `
|
|
|
337
490
|
height: 5rem;
|
|
338
491
|
border-radius: 1rem;
|
|
339
492
|
}
|
|
493
|
+
|
|
494
|
+
.position-relative {
|
|
495
|
+
position: relative;
|
|
496
|
+
}
|
|
497
|
+
.position-absolute {
|
|
498
|
+
position: absolute;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.connected-type-icon {
|
|
502
|
+
position: absolute;
|
|
503
|
+
width: 1.5rem;
|
|
504
|
+
height: 1.5rem;
|
|
505
|
+
right: -0.5rem;
|
|
506
|
+
bottom: -0.5rem;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.text-center {
|
|
510
|
+
text-align: center;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.cursor-pointer {
|
|
514
|
+
cursor: pointer;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.flex {
|
|
518
|
+
display: flex;
|
|
519
|
+
}
|
|
520
|
+
.justify-center {
|
|
521
|
+
justify-content: center;
|
|
522
|
+
}
|
|
523
|
+
.justify-between {
|
|
524
|
+
justify-content: space-between;
|
|
525
|
+
}
|
|
526
|
+
.align-center {
|
|
527
|
+
align-items: center;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
.switch-btn-container {
|
|
531
|
+
width: 100%;
|
|
532
|
+
padding: 1rem;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.switch-line {
|
|
536
|
+
flex: 1;
|
|
537
|
+
height: 1px;
|
|
538
|
+
background-color: var(--divider);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
.switching-status-dot {
|
|
542
|
+
width: 0.5rem;
|
|
543
|
+
height: 0.5rem;
|
|
544
|
+
background: #0f0;
|
|
545
|
+
border-radius: 50%;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.copy-btn {
|
|
549
|
+
width: 1.5rem;
|
|
550
|
+
height: 1.5rem;
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.copy-btn-sm {
|
|
554
|
+
width: 1rem;
|
|
555
|
+
height: 1rem;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
.sm-chain-logo {
|
|
559
|
+
width: 1.125rem;
|
|
560
|
+
}
|
|
340
561
|
`;
|
|
341
562
|
__decorate([
|
|
342
563
|
state()
|
|
343
564
|
], WebComponentConnector.prototype, "wallets", void 0);
|
|
565
|
+
__decorate([
|
|
566
|
+
property()
|
|
567
|
+
], WebComponentConnector.prototype, "signerFilter", void 0);
|
|
344
568
|
__decorate([
|
|
345
569
|
state()
|
|
346
570
|
], WebComponentConnector.prototype, "isOpen", void 0);
|
|
571
|
+
__decorate([
|
|
572
|
+
property()
|
|
573
|
+
], WebComponentConnector.prototype, "name", void 0);
|
|
574
|
+
__decorate([
|
|
575
|
+
property()
|
|
576
|
+
], WebComponentConnector.prototype, "icon", void 0);
|
|
347
577
|
__decorate([
|
|
348
578
|
property()
|
|
349
579
|
], WebComponentConnector.prototype, "client", void 0);
|
|
@@ -368,6 +598,15 @@ __decorate([
|
|
|
368
598
|
__decorate([
|
|
369
599
|
state()
|
|
370
600
|
], WebComponentConnector.prototype, "signer", void 0);
|
|
601
|
+
__decorate([
|
|
602
|
+
state()
|
|
603
|
+
], WebComponentConnector.prototype, "recommendAddress", void 0);
|
|
604
|
+
__decorate([
|
|
605
|
+
state()
|
|
606
|
+
], WebComponentConnector.prototype, "internalAddress", void 0);
|
|
607
|
+
__decorate([
|
|
608
|
+
state()
|
|
609
|
+
], WebComponentConnector.prototype, "balance", void 0);
|
|
371
610
|
WebComponentConnector = __decorate([
|
|
372
611
|
customElement("ccc-connector")
|
|
373
612
|
], WebComponentConnector);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ccc } from "@ckb-ccc/ccc";
|
|
2
|
+
export declare function formatString(str: string | undefined, l?: number, r?: number): string | undefined;
|
|
3
|
+
export declare function generateConnectedScene(wallet: ccc.Wallet, signer: ccc.SignerInfo, recommendedAddress: string | undefined, internalAddress: string | undefined, balance: ccc.Num | undefined, disconnect: () => void, handleSwitchClick: () => void): (import("lit").TemplateResult<1> | undefined)[];
|
|
4
|
+
//# sourceMappingURL=connected.d.ts.map
|