@ckb-ccc/connector 0.0.3 → 0.0.4-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.
Files changed (65) hide show
  1. package/dist/advancedBarrel.d.ts +1 -0
  2. package/dist/advancedBarrel.d.ts.map +1 -1
  3. package/dist/advancedBarrel.js +1 -0
  4. package/dist/assets/chains/btc.svg.d.ts +2 -0
  5. package/dist/assets/chains/btc.svg.d.ts.map +1 -0
  6. package/dist/assets/chains/btc.svg.js +2 -0
  7. package/dist/assets/chains/eth.svg.d.ts +2 -0
  8. package/dist/assets/chains/eth.svg.d.ts.map +1 -0
  9. package/dist/assets/chains/eth.svg.js +2 -0
  10. package/dist/assets/chains/index.d.ts +3 -0
  11. package/dist/assets/chains/index.d.ts.map +1 -0
  12. package/dist/assets/chains/index.js +2 -0
  13. package/dist/assets/close.svg.d.ts +2 -0
  14. package/dist/assets/close.svg.d.ts.map +1 -0
  15. package/dist/assets/close.svg.js +2 -0
  16. package/dist/assets/retry.svg.d.ts +2 -0
  17. package/dist/assets/retry.svg.d.ts.map +1 -0
  18. package/dist/assets/retry.svg.js +2 -0
  19. package/dist/barrel.d.ts +1 -0
  20. package/dist/barrel.d.ts.map +1 -1
  21. package/dist/barrel.js +1 -0
  22. package/dist/connector/index.d.ts +19 -0
  23. package/dist/connector/index.d.ts.map +1 -0
  24. package/dist/connector/index.js +271 -0
  25. package/dist/events/index.d.ts +15 -0
  26. package/dist/events/index.d.ts.map +1 -0
  27. package/dist/events/index.js +18 -0
  28. package/dist/scenes/connecting.d.ts +3 -0
  29. package/dist/scenes/connecting.d.ts.map +1 -0
  30. package/dist/scenes/connecting.js +23 -0
  31. package/dist/scenes/index.d.ts +4 -0
  32. package/dist/scenes/index.d.ts.map +1 -0
  33. package/dist/scenes/index.js +3 -0
  34. package/dist/scenes/signers.d.ts +4 -0
  35. package/dist/scenes/signers.d.ts.map +1 -0
  36. package/dist/scenes/signers.js +30 -0
  37. package/dist/scenes/wallets.d.ts +3 -0
  38. package/dist/scenes/wallets.d.ts.map +1 -0
  39. package/dist/scenes/wallets.js +23 -0
  40. package/dist/status/index.d.ts +6 -0
  41. package/dist/status/index.d.ts.map +1 -0
  42. package/dist/status/index.js +6 -0
  43. package/package.json +3 -3
  44. package/src/advancedBarrel.ts +1 -0
  45. package/src/assets/chains/btc.svg.ts +5 -0
  46. package/src/assets/chains/eth.svg.ts +5 -0
  47. package/src/assets/chains/index.ts +2 -0
  48. package/src/assets/close.svg.ts +5 -0
  49. package/src/assets/retry.svg.ts +5 -0
  50. package/src/barrel.ts +1 -0
  51. package/src/connector/index.ts +292 -0
  52. package/src/events/index.ts +23 -0
  53. package/src/scenes/connecting.ts +29 -0
  54. package/src/scenes/index.ts +3 -0
  55. package/src/scenes/signers.ts +40 -0
  56. package/src/scenes/wallets.ts +32 -0
  57. package/src/status/index.ts +5 -0
  58. package/dist/connector.d.ts +0 -9
  59. package/dist/connector.d.ts.map +0 -1
  60. package/dist/connector.js +0 -160
  61. package/dist/events.d.ts +0 -9
  62. package/dist/events.d.ts.map +0 -1
  63. package/dist/events.js +0 -11
  64. package/src/connector.ts +0 -156
  65. package/src/events.ts +0 -13
@@ -1,2 +1,3 @@
1
1
  export * from "@ckb-ccc/ccc/advancedBarrel";
2
+ export * from "./scenes";
2
3
  //# sourceMappingURL=advancedBarrel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"advancedBarrel.d.ts","sourceRoot":"","sources":["../src/advancedBarrel.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"advancedBarrel.d.ts","sourceRoot":"","sources":["../src/advancedBarrel.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from "@ckb-ccc/ccc/advancedBarrel";
2
+ export * from "./scenes";
@@ -0,0 +1,2 @@
1
+ export declare const BTC_SVG: string;
2
+ //# sourceMappingURL=btc.svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btc.svg.d.ts","sourceRoot":"","sources":["../../../src/assets/chains/btc.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAEnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { encodeSvgToImgSrc } from "../utils";
2
+ export const BTC_SVG = encodeSvgToImgSrc('<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" height="64" width="64" version="1.1"><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-custom-link"/><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-general-link"/><style xmlns="" lang="en" type="text/css" id="dark-mode-custom-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-sheet"/><script xmlns=""/><g transform="translate(0.00630876,-0.00301984)"><path fill="#f7931a" d="m63.033,39.744c-4.274,17.143-21.637,27.576-38.782,23.301-17.138-4.274-27.571-21.638-23.295-38.78,4.272-17.145,21.635-27.579,38.775-23.305,17.144,4.274,27.576,21.64,23.302,38.784z"/><path fill="#FFF" d="m46.103,27.444c0.637-4.258-2.605-6.547-7.038-8.074l1.438-5.768-3.511-0.875-1.4,5.616c-0.923-0.23-1.871-0.447-2.813-0.662l1.41-5.653-3.509-0.875-1.439,5.766c-0.764-0.174-1.514-0.346-2.242-0.527l0.004-0.018-4.842-1.209-0.934,3.75s2.605,0.597,2.55,0.634c1.422,0.355,1.679,1.296,1.636,2.042l-1.638,6.571c0.098,0.025,0.225,0.061,0.365,0.117-0.117-0.029-0.242-0.061-0.371-0.092l-2.296,9.205c-0.174,0.432-0.615,1.08-1.609,0.834,0.035,0.051-2.552-0.637-2.552-0.637l-1.743,4.019,4.569,1.139c0.85,0.213,1.683,0.436,2.503,0.646l-1.453,5.834,3.507,0.875,1.439-5.772c0.958,0.26,1.888,0.5,2.798,0.726l-1.434,5.745,3.511,0.875,1.453-5.823c5.987,1.133,10.489,0.676,12.384-4.739,1.527-4.36-0.076-6.875-3.226-8.515,2.294-0.529,4.022-2.038,4.483-5.155zm-8.022,11.249c-1.085,4.36-8.426,2.003-10.806,1.412l1.928-7.729c2.38,0.594,10.012,1.77,8.878,6.317zm1.086-11.312c-0.99,3.966-7.1,1.951-9.082,1.457l1.748-7.01c1.982,0.494,8.365,1.416,7.334,5.553z"/></g><script xmlns=""/></svg>');
@@ -0,0 +1,2 @@
1
+ export declare const ETH_SVG: string;
2
+ //# sourceMappingURL=eth.svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eth.svg.d.ts","sourceRoot":"","sources":["../../../src/assets/chains/eth.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAEnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { encodeSvgToImgSrc } from "../utils";
2
+ export const ETH_SVG = encodeSvgToImgSrc('<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_46_558)"><circle cx="16" cy="16" r="16" fill="#627EEA"/><path d="M15.9957 20.4203L9.14282 16.3876L15.9957 5.14258V20.4203Z" fill="white"/><path d="M15.9957 26.8573L9.30029 17.396L15.9957 21.3511V26.8573Z" fill="white"/><path d="M16.2319 20.4203L23.0849 16.3876L16.2319 5.14258V20.4203Z" fill="#C1CCF7"/><path d="M16.3107 26.8573L23.0848 17.396L16.3107 21.3511V26.8573Z" fill="#C1CCF7"/></g><defs><clipPath id="clip0_46_558"><rect width="32" height="32" fill="white"/></clipPath></defs></svg>');
@@ -0,0 +1,3 @@
1
+ export * from "./btc.svg";
2
+ export * from "./eth.svg";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/assets/chains/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./btc.svg";
2
+ export * from "./eth.svg";
@@ -0,0 +1,2 @@
1
+ export declare const CLOSE_SVG: string;
2
+ //# sourceMappingURL=close.svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.svg.d.ts","sourceRoot":"","sources":["../../src/assets/close.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAErB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { encodeSvgToImgSrc } from "./utils";
2
+ export const CLOSE_SVG = encodeSvgToImgSrc('<svg width="12" height="12" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"><path d="M10.8989 1.0512C10.5085 0.660741 9.87543 0.660703 9.48493 1.05111L5.94897 4.58624L2.41397 1.05124C2.0235 0.660772 1.39043 0.660773 0.999968 1.05124C0.609503 1.4417 0.609503 2.07477 0.999969 2.46524L4.53497 6.00024L0.999968 9.53524C0.609503 9.9257 0.609503 10.5588 0.999968 10.9492C1.39043 11.3397 2.0235 11.3397 2.41397 10.9492L5.94897 7.41424L9.48493 10.9494C9.87543 11.3398 10.5085 11.3397 10.8989 10.9493C11.2894 10.5588 11.2894 9.92568 10.8989 9.5352L7.36397 6.00024L10.8989 2.46528C11.2894 2.07479 11.2894 1.44168 10.8989 1.0512Z"/></svg>');
@@ -0,0 +1,2 @@
1
+ export declare const RETRY_SVG: string;
2
+ //# sourceMappingURL=retry.svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.svg.d.ts","sourceRoot":"","sources":["../../src/assets/retry.svg.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAErB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { encodeSvgToImgSrc } from "./utils";
2
+ export const RETRY_SVG = encodeSvgToImgSrc('<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.398 1.16864C11.0369 1.16864 10.7961 1.41021 10.7961 1.77256V2.37648C10.1941 1.531 9.35141 0.866684 8.38828 0.504333C5.37851 -0.82429 1.82699 0.564725 0.502691 3.58432C-0.821607 6.60392 0.562886 10.167 3.57265 11.4957C6.58242 12.8243 10.1339 11.4353 11.4582 8.41568H11.398C11.398 8.05333 11.1573 7.81176 10.7961 7.81176C10.4349 7.81176 10.1941 8.05333 10.1941 8.41568H10.1339C9.59219 9.32156 8.80965 10.0463 7.78633 10.469C5.31832 11.4957 2.54933 10.2878 1.52601 7.81176C0.502691 5.33569 1.7066 2.49727 4.17461 1.531C6.40183 0.564725 8.93004 1.531 10.1339 3.58432H8.99023C8.62906 3.58432 8.38828 3.82589 8.38828 4.18824C8.38828 4.55059 8.62906 4.79216 8.99023 4.79216H11.398C11.7592 4.79216 12 4.55059 12 4.18824V1.77256C12 1.41021 11.7592 1.16864 11.398 1.16864Z" fill="#1E1E1E"/></svg>');
package/dist/barrel.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "@ckb-ccc/ccc";
2
2
  export * from "./connector";
3
3
  export * from "./events";
4
+ export * from "./status";
4
5
  //# sourceMappingURL=barrel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"barrel.d.ts","sourceRoot":"","sources":["../src/barrel.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"barrel.d.ts","sourceRoot":"","sources":["../src/barrel.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
package/dist/barrel.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "@ckb-ccc/ccc";
2
2
  export * from "./connector";
3
3
  export * from "./events";
4
+ export * from "./status";
@@ -0,0 +1,19 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ import { LitElement } from "lit";
3
+ import { ConnectorStatus } from "../status";
4
+ export declare class WebComponentConnector extends LitElement {
5
+ private wallets;
6
+ private existedEip6963;
7
+ isOpen: boolean;
8
+ wallet?: ccc.Wallet;
9
+ signer?: ccc.SignerInfo;
10
+ status: ConnectorStatus;
11
+ connectedCallback(): void;
12
+ addSigner(name: string, icon: string, type: ccc.SignerType, signer: ccc.Signer): void;
13
+ render(): import("lit").TemplateResult<1>;
14
+ private onClose;
15
+ private onWalletSelected;
16
+ private onSignerSelected;
17
+ static styles: import("lit").CSSResult;
18
+ }
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,EAAa,MAAM,KAAK,CAAC;AAW5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,qBACa,qBAAsB,SAAQ,UAAU;IAEnD,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,cAAc,CAAgB;IAG/B,MAAM,EAAE,OAAO,CAAS;IAGxB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IAEpB,MAAM,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAExB,MAAM,EAAE,eAAe,CAAmC;IAEjE,iBAAiB,IAAI,IAAI;IAkCzB,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM;IAkBpB,MAAM;IAmDN,OAAO,CAAC,OAAO,CAGb;IAEF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,gBAAgB,CAStB;IAEF,MAAM,CAAC,MAAM,0BAqIX;CACH"}
@@ -0,0 +1,271 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ccc } from "@ckb-ccc/ccc";
8
+ import { LitElement, css, html } from "lit";
9
+ import { customElement, property, state } from "lit/decorators.js";
10
+ import { CLOSE_SVG } from "../assets/close.svg";
11
+ import { OKX_SVG } from "../assets/okx.svg";
12
+ import { UNI_SAT_SVG } from "../assets/uni-sat.svg";
13
+ import { CloseEvent, SignerChangedEvent, StatusChangedEvent } from "../events";
14
+ import { generateConnectingScene, generateSignersScene, generateWalletsScene, } from "../scenes";
15
+ import { ConnectorStatus } from "../status";
16
+ let WebComponentConnector = class WebComponentConnector extends LitElement {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.wallets = [];
20
+ this.existedEip6963 = [];
21
+ this.isOpen = false;
22
+ this.status = ConnectorStatus.SelectingSigner;
23
+ this.onClose = () => {
24
+ this.dispatchEvent(new SignerChangedEvent());
25
+ this.dispatchEvent(new CloseEvent());
26
+ };
27
+ this.onWalletSelected = (wallet) => {
28
+ this.dispatchEvent(new SignerChangedEvent(wallet, this.signer));
29
+ };
30
+ this.onSignerSelected = (wallet, signer) => {
31
+ this.dispatchEvent(new StatusChangedEvent(ConnectorStatus.Connecting));
32
+ this.dispatchEvent(new SignerChangedEvent(wallet, signer));
33
+ (async () => {
34
+ await signer.signer.connect();
35
+ this.dispatchEvent(new StatusChangedEvent(ConnectorStatus.Idle));
36
+ this.dispatchEvent(new CloseEvent());
37
+ })();
38
+ };
39
+ }
40
+ connectedCallback() {
41
+ super.connectedCallback();
42
+ const client = new ccc.ClientPublicTestnet();
43
+ const uniSatSigner = ccc.UniSat.getUniSatSigner(client);
44
+ if (uniSatSigner) {
45
+ this.addSigner("UniSat", UNI_SAT_SVG, ccc.SignerType.BTC, uniSatSigner);
46
+ }
47
+ const okxBitcoinSigner = ccc.Okx.getOKXBitcoinSigner(client);
48
+ if (okxBitcoinSigner) {
49
+ this.addSigner("OKX Wallet", OKX_SVG, ccc.SignerType.BTC, okxBitcoinSigner);
50
+ }
51
+ const eip6963Manager = new ccc.Eip6963.SignerFactory(client);
52
+ eip6963Manager.subscribeSigners((signer) => {
53
+ if (this.existedEip6963.indexOf(signer.detail.info.uuid) !== -1) {
54
+ return;
55
+ }
56
+ this.existedEip6963.push(signer.detail.info.uuid);
57
+ this.addSigner(`${signer.detail.info.name}`, signer.detail.info.icon, ccc.SignerType.EVM, signer);
58
+ });
59
+ }
60
+ addSigner(name, icon, type, signer) {
61
+ const wallet = this.wallets.find((wallet) => wallet.name === name);
62
+ if (wallet) {
63
+ wallet.signers.push({ type, signer });
64
+ this.wallets = [...this.wallets];
65
+ }
66
+ else {
67
+ this.wallets = [
68
+ ...this.wallets,
69
+ {
70
+ name,
71
+ icon,
72
+ signers: [{ type, signer }],
73
+ },
74
+ ];
75
+ }
76
+ }
77
+ render() {
78
+ const [title, body] = (() => {
79
+ if (!this.wallet) {
80
+ return generateWalletsScene(this.wallets, this.onWalletSelected, this.onSignerSelected);
81
+ }
82
+ if (!this.signer) {
83
+ return generateSignersScene(this.wallet, this.onSignerSelected);
84
+ }
85
+ return generateConnectingScene(this.wallet, this.signer, this.onSignerSelected);
86
+ })();
87
+ return html `<style>
88
+ :host {
89
+ ${this.isOpen ? "" : "display: none;"}
90
+ --background: #fff;
91
+ --divider: #eee;
92
+ --btn-primary: #f8f8f8;
93
+ --btn-primary-hover: #efeeee;
94
+ --btn-secondary: #ddd;
95
+ --btn-icon: #e9e4de;
96
+ color: #1e1e1e;
97
+ --tip-color: #666;
98
+ }
99
+ </style>
100
+ <div
101
+ class="background"
102
+ @click=${(event) => {
103
+ if (event.target === event.currentTarget) {
104
+ this.onClose();
105
+ }
106
+ }}
107
+ >
108
+ <div class="main">
109
+ <div class="header text-bold fs-big">
110
+ <div class="back"></div>
111
+ ${title}
112
+ <img class="close" src=${CLOSE_SVG} @click=${this.onClose} />
113
+ </div>
114
+ <div class="body">${body}</div>
115
+ </div>
116
+ </div>`;
117
+ }
118
+ };
119
+ WebComponentConnector.styles = css `
120
+ :host {
121
+ width: 100vw;
122
+ height: 100vh;
123
+ position: fixed;
124
+ left: 0;
125
+ top: 0;
126
+ }
127
+
128
+ button {
129
+ background: none;
130
+ color: inherit;
131
+ border: none;
132
+ padding: 0;
133
+ font: inherit;
134
+ cursor: pointer;
135
+ outline: inherit;
136
+ }
137
+
138
+ .text-bold {
139
+ font-weight: bold;
140
+ }
141
+
142
+ .text-tip {
143
+ color: var(--tip-color);
144
+ }
145
+
146
+ .fs-big {
147
+ font-size: 1.2rem;
148
+ }
149
+
150
+ .mb-1 {
151
+ margin-bottom: 0.7rem;
152
+ }
153
+ .mb-2 {
154
+ margin-bottom: 1rem;
155
+ }
156
+ .mt-1 {
157
+ margin-top: 0.7rem;
158
+ }
159
+ .mt-2 {
160
+ margin-top: 1rem;
161
+ }
162
+
163
+ .background {
164
+ width: 100%;
165
+ height: 100%;
166
+ background: rgba(18, 19, 24, 0.7);
167
+ }
168
+
169
+ .main {
170
+ position: fixed;
171
+ left: 50%;
172
+ top: 50%;
173
+ transform: translate(-50%, -50%);
174
+ background: var(--background);
175
+ border-radius: 1.2rem;
176
+ }
177
+
178
+ .header {
179
+ display: flex;
180
+ justify-content: space-between;
181
+ align-items: center;
182
+ padding: 1rem 1.3rem;
183
+ border-bottom: 1px solid var(--divider);
184
+ }
185
+
186
+ .close,
187
+ .back {
188
+ width: 0.8rem;
189
+ height: 0.8rem;
190
+ cursor: pointer;
191
+ }
192
+
193
+ .body {
194
+ padding: 1.4rem 1.3rem;
195
+ min-width: 20rem;
196
+ display: flex;
197
+ flex-direction: column;
198
+ align-items: center;
199
+ }
200
+
201
+ .btn-primary {
202
+ width: 100%;
203
+ display: flex;
204
+ align-items: center;
205
+ justify-content: start;
206
+ padding: 0.75rem 1rem;
207
+ background: var(--btn-primary);
208
+ border-radius: 0.4rem;
209
+ transition: background 0.3s ease-in-out;
210
+ }
211
+
212
+ .btn-primary img {
213
+ width: 2rem;
214
+ height: 2rem;
215
+ margin-right: 1rem;
216
+ border-radius: 0.4rem;
217
+ background: var(--btn-icon);
218
+ }
219
+
220
+ .btn-primary:hover {
221
+ background: var(--btn-primary-hover);
222
+ }
223
+
224
+ .btn-secondary {
225
+ display: flex;
226
+ align-items: center;
227
+ padding: 0.25rem 1rem;
228
+ background: var(--btn-secondary);
229
+ border-radius: 9999px;
230
+ transition: background 0.3s ease-in-out;
231
+ }
232
+
233
+ .btn-secondary img {
234
+ width: 0.8rem;
235
+ height: 0.8rem;
236
+ margin-right: 0.5rem;
237
+ }
238
+
239
+ .wallet-icon {
240
+ width: 4rem;
241
+ height: 4rem;
242
+ margin-bottom: 0.5rem;
243
+ border-radius: 0.8rem;
244
+ background: var(--btn-icon);
245
+ }
246
+
247
+ .connecting-wallet-icon {
248
+ width: 5rem;
249
+ height: 5rem;
250
+ border-radius: 1rem;
251
+ }
252
+ `;
253
+ __decorate([
254
+ state()
255
+ ], WebComponentConnector.prototype, "wallets", void 0);
256
+ __decorate([
257
+ property()
258
+ ], WebComponentConnector.prototype, "isOpen", void 0);
259
+ __decorate([
260
+ property()
261
+ ], WebComponentConnector.prototype, "wallet", void 0);
262
+ __decorate([
263
+ property()
264
+ ], WebComponentConnector.prototype, "signer", void 0);
265
+ __decorate([
266
+ property()
267
+ ], WebComponentConnector.prototype, "status", void 0);
268
+ WebComponentConnector = __decorate([
269
+ customElement("ccc-connector")
270
+ ], WebComponentConnector);
271
+ export { WebComponentConnector };
@@ -0,0 +1,15 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ import { ConnectorStatus } from "../status";
3
+ export declare class SignerChangedEvent extends Event {
4
+ readonly wallet?: ccc.Wallet | undefined;
5
+ readonly signerInfo?: ccc.SignerInfo | undefined;
6
+ constructor(wallet?: ccc.Wallet | undefined, signerInfo?: ccc.SignerInfo | undefined);
7
+ }
8
+ export declare class StatusChangedEvent extends Event {
9
+ readonly status: ConnectorStatus;
10
+ constructor(status: ConnectorStatus);
11
+ }
12
+ export declare class CloseEvent extends Event {
13
+ constructor();
14
+ }
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,MAAM,CAAC;aACP,UAAU,CAAC;gBADX,MAAM,CAAC,wBAAY,EACnB,UAAU,CAAC,4BAAgB;CAI9C;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aACf,MAAM,EAAE,eAAe;gBAAvB,MAAM,EAAE,eAAe;CAGpD;AAED,qBAAa,UAAW,SAAQ,KAAK;;CAIpC"}
@@ -0,0 +1,18 @@
1
+ export class SignerChangedEvent extends Event {
2
+ constructor(wallet, signerInfo) {
3
+ super("signerChanged", { composed: true });
4
+ this.wallet = wallet;
5
+ this.signerInfo = signerInfo;
6
+ }
7
+ }
8
+ export class StatusChangedEvent extends Event {
9
+ constructor(status) {
10
+ super("statusChanged", { composed: true });
11
+ this.status = status;
12
+ }
13
+ }
14
+ export class CloseEvent extends Event {
15
+ constructor() {
16
+ super("close", { composed: true });
17
+ }
18
+ }
@@ -0,0 +1,3 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ export declare function generateConnectingScene(wallet: ccc.Wallet, signer: ccc.SignerInfo, onSignerSelected: (wallet: ccc.Wallet, signer: ccc.SignerInfo) => unknown): (string | import("lit").TemplateResult<1>)[];
3
+ //# sourceMappingURL=connecting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connecting.d.ts","sourceRoot":"","sources":["../../src/scenes/connecting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAInC,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,KAAK,OAAO,gDAqB1E"}
@@ -0,0 +1,23 @@
1
+ import { html } from "lit";
2
+ import { RETRY_SVG } from "../assets/retry.svg";
3
+ export function generateConnectingScene(wallet, signer, onSignerSelected) {
4
+ return [
5
+ wallet.name,
6
+ html `
7
+ <img
8
+ class="connecting-wallet-icon mb-1"
9
+ src=${wallet.icon}
10
+ alt=${wallet.name}
11
+ />
12
+ <span class="text-bold">Opening ${wallet.name}...</span>
13
+ <span class="text-tip">Confirm connection in the wallet</span>
14
+ <button
15
+ class="btn-secondary mt-2 mb-2"
16
+ @click=${() => onSignerSelected(wallet, signer)}
17
+ >
18
+ <img src=${RETRY_SVG} alt="retry" />
19
+ Try again
20
+ </button>
21
+ `,
22
+ ];
23
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./connecting";
2
+ export * from "./signers";
3
+ export * from "./wallets";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scenes/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./connecting";
2
+ export * from "./signers";
3
+ export * from "./wallets";
@@ -0,0 +1,4 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ export declare function signerTypeToIcon(type: ccc.SignerType): string;
3
+ export declare function generateSignersScene(wallet: ccc.Wallet, onSignerSelected: (wallet: ccc.Wallet, signer: ccc.SignerInfo) => unknown): (string | import("lit").TemplateResult<1>)[];
4
+ //# sourceMappingURL=signers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../src/scenes/signers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAKnC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAK7D;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,KAAK,OAAO,gDAyB1E"}
@@ -0,0 +1,30 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ import { html } from "lit";
3
+ import { repeat } from "lit/directives/repeat.js";
4
+ import { BTC_SVG, ETH_SVG } from "../assets/chains";
5
+ export function signerTypeToIcon(type) {
6
+ return {
7
+ [ccc.SignerType.BTC]: BTC_SVG,
8
+ [ccc.SignerType.EVM]: ETH_SVG,
9
+ }[type];
10
+ }
11
+ export function generateSignersScene(wallet, onSignerSelected) {
12
+ return [
13
+ "Select a Chain",
14
+ html `
15
+ <img class="wallet-icon" src=${wallet.icon} alt=${wallet.name} />
16
+ <span class="mb-2">${wallet.name}</span>
17
+ ${repeat(wallet.signers, (signer) => signer.type, (signer) => html `
18
+ <button
19
+ class="btn-primary mb-1"
20
+ @click=${async () => {
21
+ onSignerSelected(wallet, signer);
22
+ }}
23
+ >
24
+ <img src=${signerTypeToIcon(signer.type)} alt=${signer.type} />
25
+ ${signer.type}
26
+ </button>
27
+ `)}
28
+ `,
29
+ ];
30
+ }
@@ -0,0 +1,3 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ export declare function generateWalletsScene(wallets: ccc.Wallet[], onWalletSelected: (wallet: ccc.Wallet) => unknown, onSignerSelected: (wallet: ccc.Wallet, signer: ccc.SignerInfo) => unknown): unknown[];
3
+ //# sourceMappingURL=wallets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/scenes/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAInC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,EACrB,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,OAAO,EACjD,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,KAAK,OAAO,aAwB1E"}
@@ -0,0 +1,23 @@
1
+ import { html } from "lit";
2
+ import { repeat } from "lit/directives/repeat.js";
3
+ export function generateWalletsScene(wallets, onWalletSelected, onSignerSelected) {
4
+ return [
5
+ "Connect Wallet",
6
+ repeat(wallets, (wallet) => wallet.name, (wallet) => html `
7
+ <button
8
+ class="btn-primary mb-1"
9
+ @click=${async () => {
10
+ if (wallet.signers.length === 1) {
11
+ onSignerSelected(wallet, wallet.signers[0]);
12
+ }
13
+ else {
14
+ onWalletSelected(wallet);
15
+ }
16
+ }}
17
+ >
18
+ <img src=${wallet.icon} alt=${wallet.name} />
19
+ ${wallet.name}
20
+ </button>
21
+ `),
22
+ ];
23
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ConnectorStatus {
2
+ SelectingSigner = "SelectingSigner",
3
+ Connecting = "Connecting",
4
+ Idle = "Idle"
5
+ }
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/status/index.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,IAAI,SAAS;CACd"}
@@ -0,0 +1,6 @@
1
+ export var ConnectorStatus;
2
+ (function (ConnectorStatus) {
3
+ ConnectorStatus["SelectingSigner"] = "SelectingSigner";
4
+ ConnectorStatus["Connecting"] = "Connecting";
5
+ ConnectorStatus["Idle"] = "Idle";
6
+ })(ConnectorStatus || (ConnectorStatus = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckb-ccc/connector",
3
- "version": "0.0.3",
3
+ "version": "0.0.4-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.3",
40
+ "@ckb-ccc/ccc": "0.0.4-alpha.0",
41
41
  "lit": "^3.1.3"
42
42
  },
43
- "gitHead": "9df1bbe0007136568914d8a73fe39f898d636a12"
43
+ "gitHead": "e49045ed4b2778c92d6f49b79c17125245141a21"
44
44
  }
@@ -1 +1,2 @@
1
1
  export * from "@ckb-ccc/ccc/advancedBarrel";
2
+ export * from "./scenes";
@@ -0,0 +1,5 @@
1
+ import { encodeSvgToImgSrc } from "../utils";
2
+
3
+ export const BTC_SVG = encodeSvgToImgSrc(
4
+ '<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" height="64" width="64" version="1.1"><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-custom-link"/><link xmlns="" type="text/css" rel="stylesheet" id="dark-mode-general-link"/><style xmlns="" lang="en" type="text/css" id="dark-mode-custom-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-style"/><style xmlns="" lang="en" type="text/css" id="dark-mode-native-sheet"/><script xmlns=""/><g transform="translate(0.00630876,-0.00301984)"><path fill="#f7931a" d="m63.033,39.744c-4.274,17.143-21.637,27.576-38.782,23.301-17.138-4.274-27.571-21.638-23.295-38.78,4.272-17.145,21.635-27.579,38.775-23.305,17.144,4.274,27.576,21.64,23.302,38.784z"/><path fill="#FFF" d="m46.103,27.444c0.637-4.258-2.605-6.547-7.038-8.074l1.438-5.768-3.511-0.875-1.4,5.616c-0.923-0.23-1.871-0.447-2.813-0.662l1.41-5.653-3.509-0.875-1.439,5.766c-0.764-0.174-1.514-0.346-2.242-0.527l0.004-0.018-4.842-1.209-0.934,3.75s2.605,0.597,2.55,0.634c1.422,0.355,1.679,1.296,1.636,2.042l-1.638,6.571c0.098,0.025,0.225,0.061,0.365,0.117-0.117-0.029-0.242-0.061-0.371-0.092l-2.296,9.205c-0.174,0.432-0.615,1.08-1.609,0.834,0.035,0.051-2.552-0.637-2.552-0.637l-1.743,4.019,4.569,1.139c0.85,0.213,1.683,0.436,2.503,0.646l-1.453,5.834,3.507,0.875,1.439-5.772c0.958,0.26,1.888,0.5,2.798,0.726l-1.434,5.745,3.511,0.875,1.453-5.823c5.987,1.133,10.489,0.676,12.384-4.739,1.527-4.36-0.076-6.875-3.226-8.515,2.294-0.529,4.022-2.038,4.483-5.155zm-8.022,11.249c-1.085,4.36-8.426,2.003-10.806,1.412l1.928-7.729c2.38,0.594,10.012,1.77,8.878,6.317zm1.086-11.312c-0.99,3.966-7.1,1.951-9.082,1.457l1.748-7.01c1.982,0.494,8.365,1.416,7.334,5.553z"/></g><script xmlns=""/></svg>',
5
+ );
@@ -0,0 +1,5 @@
1
+ import { encodeSvgToImgSrc } from "../utils";
2
+
3
+ export const ETH_SVG = encodeSvgToImgSrc(
4
+ '<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_46_558)"><circle cx="16" cy="16" r="16" fill="#627EEA"/><path d="M15.9957 20.4203L9.14282 16.3876L15.9957 5.14258V20.4203Z" fill="white"/><path d="M15.9957 26.8573L9.30029 17.396L15.9957 21.3511V26.8573Z" fill="white"/><path d="M16.2319 20.4203L23.0849 16.3876L16.2319 5.14258V20.4203Z" fill="#C1CCF7"/><path d="M16.3107 26.8573L23.0848 17.396L16.3107 21.3511V26.8573Z" fill="#C1CCF7"/></g><defs><clipPath id="clip0_46_558"><rect width="32" height="32" fill="white"/></clipPath></defs></svg>',
5
+ );
@@ -0,0 +1,2 @@
1
+ export * from "./btc.svg";
2
+ export * from "./eth.svg";
@@ -0,0 +1,5 @@
1
+ import { encodeSvgToImgSrc } from "./utils";
2
+
3
+ export const CLOSE_SVG = encodeSvgToImgSrc(
4
+ '<svg width="12" height="12" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"><path d="M10.8989 1.0512C10.5085 0.660741 9.87543 0.660703 9.48493 1.05111L5.94897 4.58624L2.41397 1.05124C2.0235 0.660772 1.39043 0.660773 0.999968 1.05124C0.609503 1.4417 0.609503 2.07477 0.999969 2.46524L4.53497 6.00024L0.999968 9.53524C0.609503 9.9257 0.609503 10.5588 0.999968 10.9492C1.39043 11.3397 2.0235 11.3397 2.41397 10.9492L5.94897 7.41424L9.48493 10.9494C9.87543 11.3398 10.5085 11.3397 10.8989 10.9493C11.2894 10.5588 11.2894 9.92568 10.8989 9.5352L7.36397 6.00024L10.8989 2.46528C11.2894 2.07479 11.2894 1.44168 10.8989 1.0512Z"/></svg>',
5
+ );
@@ -0,0 +1,5 @@
1
+ import { encodeSvgToImgSrc } from "./utils";
2
+
3
+ export const RETRY_SVG = encodeSvgToImgSrc(
4
+ '<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.398 1.16864C11.0369 1.16864 10.7961 1.41021 10.7961 1.77256V2.37648C10.1941 1.531 9.35141 0.866684 8.38828 0.504333C5.37851 -0.82429 1.82699 0.564725 0.502691 3.58432C-0.821607 6.60392 0.562886 10.167 3.57265 11.4957C6.58242 12.8243 10.1339 11.4353 11.4582 8.41568H11.398C11.398 8.05333 11.1573 7.81176 10.7961 7.81176C10.4349 7.81176 10.1941 8.05333 10.1941 8.41568H10.1339C9.59219 9.32156 8.80965 10.0463 7.78633 10.469C5.31832 11.4957 2.54933 10.2878 1.52601 7.81176C0.502691 5.33569 1.7066 2.49727 4.17461 1.531C6.40183 0.564725 8.93004 1.531 10.1339 3.58432H8.99023C8.62906 3.58432 8.38828 3.82589 8.38828 4.18824C8.38828 4.55059 8.62906 4.79216 8.99023 4.79216H11.398C11.7592 4.79216 12 4.55059 12 4.18824V1.77256C12 1.41021 11.7592 1.16864 11.398 1.16864Z" fill="#1E1E1E"/></svg>',
5
+ );