@ckb-ccc/connector 0.0.9-alpha.2 → 0.0.10-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 (76) hide show
  1. package/dist/assets/chains/index.d.ts +1 -0
  2. package/dist/assets/chains/index.d.ts.map +1 -1
  3. package/dist/assets/chains/index.js +1 -0
  4. package/dist/barrel.d.ts +2 -1
  5. package/dist/barrel.d.ts.map +1 -1
  6. package/dist/barrel.js +2 -1
  7. package/dist/components/button-pill.d.ts +7 -0
  8. package/dist/components/button-pill.d.ts.map +1 -0
  9. package/dist/components/button-pill.js +54 -0
  10. package/dist/components/button.d.ts +7 -0
  11. package/dist/components/button.d.ts.map +1 -0
  12. package/dist/components/button.js +60 -0
  13. package/dist/components/copy-button.d.ts +10 -0
  14. package/dist/components/copy-button.d.ts.map +1 -0
  15. package/dist/components/copy-button.js +76 -0
  16. package/dist/components/dialog.d.ts +8 -0
  17. package/dist/components/dialog.d.ts.map +1 -0
  18. package/dist/components/dialog.js +103 -0
  19. package/dist/components/index.d.ts +5 -0
  20. package/dist/components/index.d.ts.map +1 -0
  21. package/dist/components/index.js +4 -0
  22. package/dist/connector/index.d.ts +8 -21
  23. package/dist/connector/index.d.ts.map +1 -1
  24. package/dist/connector/index.js +59 -496
  25. package/dist/scenes/connected.d.ts +12 -1
  26. package/dist/scenes/connected.d.ts.map +1 -1
  27. package/dist/scenes/connected.js +204 -59
  28. package/dist/scenes/index.d.ts +2 -3
  29. package/dist/scenes/index.d.ts.map +1 -1
  30. package/dist/scenes/index.js +2 -3
  31. package/dist/scenes/{connecting.d.ts → selecting/connecting.d.ts} +1 -1
  32. package/dist/scenes/selecting/connecting.d.ts.map +1 -0
  33. package/dist/scenes/{connecting.js → selecting/connecting.js} +5 -5
  34. package/dist/scenes/selecting/index.d.ts +19 -0
  35. package/dist/scenes/selecting/index.d.ts.map +1 -0
  36. package/dist/scenes/selecting/index.js +164 -0
  37. package/dist/scenes/{signers.d.ts → selecting/signers.d.ts} +1 -1
  38. package/dist/scenes/selecting/signers.d.ts.map +1 -0
  39. package/dist/scenes/{signers.js → selecting/signers.js} +6 -7
  40. package/dist/scenes/{wallets.d.ts → selecting/wallets.d.ts} +1 -1
  41. package/dist/scenes/selecting/wallets.d.ts.map +1 -0
  42. package/dist/scenes/{wallets.js → selecting/wallets.js} +3 -3
  43. package/dist/signers/index.d.ts +28 -0
  44. package/dist/signers/index.d.ts.map +1 -0
  45. package/dist/signers/index.js +104 -0
  46. package/package.json +3 -3
  47. package/src/assets/chains/index.ts +1 -0
  48. package/src/barrel.ts +3 -1
  49. package/src/components/button-pill.ts +48 -0
  50. package/src/components/button.ts +54 -0
  51. package/src/components/copy-button.ts +69 -0
  52. package/src/components/dialog.ts +97 -0
  53. package/src/components/index.ts +4 -0
  54. package/src/connector/index.ts +67 -596
  55. package/src/scenes/connected.ts +197 -68
  56. package/src/scenes/index.ts +2 -3
  57. package/src/scenes/{connecting.ts → selecting/connecting.ts} +6 -6
  58. package/src/scenes/selecting/index.ts +181 -0
  59. package/src/scenes/{signers.ts → selecting/signers.ts} +7 -8
  60. package/src/scenes/{wallets.ts → selecting/wallets.ts} +4 -4
  61. package/src/signers/index.ts +186 -0
  62. package/dist/assets/chains/ckb.sm.svg.d.ts +0 -2
  63. package/dist/assets/chains/ckb.sm.svg.d.ts.map +0 -1
  64. package/dist/assets/chains/ckb.sm.svg.js +0 -2
  65. package/dist/assets/copy.svg.d.ts +0 -2
  66. package/dist/assets/copy.svg.d.ts.map +0 -1
  67. package/dist/assets/copy.svg.js +0 -2
  68. package/dist/events/index.d.ts +0 -7
  69. package/dist/events/index.d.ts.map +0 -1
  70. package/dist/events/index.js +0 -10
  71. package/dist/scenes/connecting.d.ts.map +0 -1
  72. package/dist/scenes/signers.d.ts.map +0 -1
  73. package/dist/scenes/wallets.d.ts.map +0 -1
  74. package/src/assets/chains/ckb.sm.svg.ts +0 -5
  75. package/src/assets/copy.svg.ts +0 -5
  76. package/src/events/index.ts +0 -11
@@ -1,69 +1,214 @@
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
+ };
1
7
  import { ccc } from "@ckb-ccc/ccc";
2
- import { html } from "lit";
8
+ import { css, html, LitElement } from "lit";
9
+ import { customElement, property, state } from "lit/decorators.js";
3
10
  import { CKB_SVG } from "../assets/chains";
4
- import { COPY_SVG } from "../assets/copy.svg";
5
11
  import { DISCONNECT_SVG } from "../assets/diconnect.svg";
6
- import { signerTypeToIcon } from "./signers";
7
- function copyAddress(address) {
8
- if (!address) {
9
- return;
10
- }
11
- return window.navigator.clipboard.writeText(address);
12
- }
13
- export function formatString(str, l = 7, r = 5) {
12
+ import { signerTypeToIcon } from "./selecting/signers";
13
+ export function formatString(str, l = 9, r = 6) {
14
14
  if (str && str.length > l + r + 3) {
15
15
  return `${str.slice(0, l)}...${str.slice(-r)}`;
16
16
  }
17
17
  return str;
18
18
  }
19
- export function generateConnectedScene(wallet, signer, recommendedAddress, internalAddress, balance, disconnect) {
20
- return [
21
- undefined,
22
- html `
23
- <div class="position-relative">
24
- <img
25
- class="connecting-wallet-icon"
26
- src=${wallet.icon}
27
- alt=${wallet.name}
28
- />
29
- <img
30
- class="connected-type-icon"
31
- src=${signerTypeToIcon(signer.signer.type)}
32
- alt=${signer.signer.type}
19
+ let ConnectedScene = class ConnectedScene extends LitElement {
20
+ willUpdate(changedProperties) {
21
+ if (changedProperties.has("signer") && this.signer) {
22
+ this.signer
23
+ .getRecommendedAddress()
24
+ .then((v) => (this.recommendedAddress = v));
25
+ this.signer.getInternalAddress().then((v) => (this.internalAddress = v));
26
+ this.signer.getBalance().then((v) => (this.balance = v));
27
+ }
28
+ }
29
+ render() {
30
+ const { wallet, signer, internalAddress, balance, recommendedAddress } = this;
31
+ if (!wallet || !signer) {
32
+ return html `<div></div>`;
33
+ }
34
+ return html `
35
+ <ccc-dialog>
36
+ <div class="position-relative">
37
+ <img
38
+ class="connecting-wallet-icon"
39
+ src=${wallet.icon}
40
+ alt=${wallet.name}
41
+ />
42
+ <img
43
+ class="connected-type-icon"
44
+ src=${signerTypeToIcon(signer.type)}
45
+ alt=${signer.type}
46
+ />
47
+ </div>
48
+
49
+ <ccc-copy-button
50
+ value=${recommendedAddress}
51
+ class="text-bold fs-xl mt-2"
33
52
  >
34
- </img>
35
- </div>
36
-
37
- <div class="flex align-center mt-2">
38
- <span class="text-bold fs-xl">${formatString(internalAddress)}</span>
39
- <img class="cursor-pointer copy-btn" src=${COPY_SVG} alt="copy" @click=${() => copyAddress(internalAddress)}/>
40
- </div>
41
- <div class="text-bold fs-md">${ccc.fixedPointToString(balance ?? ccc.Zero)} CKB</div>
42
- <div class="flex align-center">
43
- <span class="text-bold text-tip fs-md">${formatString(recommendedAddress, 13, 7)}</span>
44
- <img class="cursor-pointer copy-btn-sm" src=${COPY_SVG} alt="copy" @click=${() => copyAddress(recommendedAddress)}/>
45
- </div>
46
-
47
- <button
48
- class="btn-primary mt-2"
49
- @click=${disconnect}
50
- >
51
- <img
52
- src=${DISCONNECT_SVG}
53
- alt="disconnect"
54
- />
55
- Disconnect
56
- </button>
57
-
58
- <div class="switch-btn-container align-center flex justify-center mt-1">
59
- <div class="switch-line"></div>
60
- <div class="switch-content flex align-center ml-2 mr-2 fs-sm">
61
- <img class="mr-1 sm-chain-logo" src=${CKB_SVG} alt="Nervos Network">
62
- ${signer.signer.client.addressPrefix === "ckb" ? "Mainnet" : "Testnet"}
63
- ${["ckb", "ckt"].includes(signer.signer.client.addressPrefix) ? "" : ` ${signer.signer.client.addressPrefix}`}
53
+ ${formatString(recommendedAddress)}
54
+ </ccc-copy-button>
55
+ <div class="text-bold fs-md">
56
+ ${ccc.fixedPointToString(balance ?? ccc.Zero)} CKB
64
57
  </div>
65
- <div class="switch-line"></div>
66
- </div>
67
- `,
68
- ];
69
- }
58
+ <ccc-copy-button
59
+ value=${internalAddress}
60
+ class="text-bold text-tip fs-md"
61
+ style="margin-top: 0.5rem"
62
+ >
63
+ ${formatString(internalAddress, 11, 9)}
64
+ </ccc-copy-button>
65
+
66
+ <ccc-button
67
+ class="mt-2"
68
+ @click=${() => this.dispatchEvent(new Event("disconnect"))}
69
+ >
70
+ <img src=${DISCONNECT_SVG} alt="disconnect" />
71
+ Disconnect
72
+ </ccc-button>
73
+
74
+ <div class="switch-btn-container">
75
+ <div class="switch-line"></div>
76
+ <div class="switch-content ml-2 mr-2 fs-sm">
77
+ <img
78
+ class="mr-1 sm-chain-logo"
79
+ src=${CKB_SVG}
80
+ alt="Nervos Network"
81
+ />
82
+ ${signer.client.addressPrefix === "ckb" ? "Mainnet" : "Testnet"}
83
+ ${["ckb", "ckt"].includes(signer.client.addressPrefix)
84
+ ? ""
85
+ : ` ${signer.client.addressPrefix}`}
86
+ </div>
87
+ <div class="switch-line"></div>
88
+ </div>
89
+ </ccc-dialog>
90
+ `;
91
+ }
92
+ updated() {
93
+ this.dispatchEvent(new Event("updated", { bubbles: true, composed: true }));
94
+ }
95
+ };
96
+ ConnectedScene.styles = css `
97
+ :host {
98
+ width: 100%;
99
+ display: flex;
100
+ flex-direction: column;
101
+ align-items: center;
102
+ }
103
+ .text-bold {
104
+ font-weight: bold;
105
+ }
106
+
107
+ .text-tip {
108
+ color: var(--tip-color);
109
+ }
110
+
111
+ .fs-sm {
112
+ font-size: 0.8rem;
113
+ }
114
+ .fs-md {
115
+ font-size: 1rem;
116
+ }
117
+ .fs-xl {
118
+ font-size: 1.5rem;
119
+ }
120
+
121
+ .mt-1 {
122
+ margin-top: 0.7rem;
123
+ }
124
+ .mt-2 {
125
+ margin-top: 1rem;
126
+ }
127
+ .ml-2 {
128
+ margin-left: 1em;
129
+ }
130
+ .mr-1 {
131
+ margin-right: 0.7rem;
132
+ }
133
+ .mr-2 {
134
+ margin-right: 1rem;
135
+ }
136
+
137
+ .connecting-wallet-icon {
138
+ width: 5rem;
139
+ height: 5rem;
140
+ border-radius: 1rem;
141
+ }
142
+
143
+ .position-relative {
144
+ position: relative;
145
+ }
146
+
147
+ .connected-type-icon {
148
+ position: absolute;
149
+ width: 1.5rem;
150
+ height: 1.5rem;
151
+ right: -0.5rem;
152
+ bottom: -0.5rem;
153
+ }
154
+
155
+ .switch-btn-container {
156
+ width: 100%;
157
+ margin-top: 1.2rem;
158
+ margin-bottom: 0.2rem;
159
+ display: flex;
160
+ justify-content: center;
161
+ align-items: center;
162
+ }
163
+
164
+ .switch-content {
165
+ display: flex;
166
+ align-items: center;
167
+ }
168
+
169
+ .switch-line {
170
+ flex: 1;
171
+ height: 1px;
172
+ background-color: var(--divider);
173
+ }
174
+
175
+ .switching-status-dot {
176
+ width: 0.5rem;
177
+ height: 0.5rem;
178
+ background: #0f0;
179
+ border-radius: 50%;
180
+ }
181
+
182
+ .copy-btn {
183
+ width: 1.5rem;
184
+ height: 1.5rem;
185
+ }
186
+
187
+ .copy-btn-sm {
188
+ width: 1rem;
189
+ height: 1rem;
190
+ }
191
+
192
+ .sm-chain-logo {
193
+ width: 1.125rem;
194
+ }
195
+ `;
196
+ __decorate([
197
+ property()
198
+ ], ConnectedScene.prototype, "wallet", void 0);
199
+ __decorate([
200
+ property()
201
+ ], ConnectedScene.prototype, "signer", void 0);
202
+ __decorate([
203
+ state()
204
+ ], ConnectedScene.prototype, "recommendedAddress", void 0);
205
+ __decorate([
206
+ state()
207
+ ], ConnectedScene.prototype, "internalAddress", void 0);
208
+ __decorate([
209
+ state()
210
+ ], ConnectedScene.prototype, "balance", void 0);
211
+ ConnectedScene = __decorate([
212
+ customElement("ccc-connected-scene")
213
+ ], ConnectedScene);
214
+ export { ConnectedScene };
@@ -1,4 +1,3 @@
1
- export * from "./connecting";
2
- export * from "./signers";
3
- export * from "./wallets";
1
+ import "./connected";
2
+ import "./selecting";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scenes/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC"}
@@ -1,3 +1,2 @@
1
- export * from "./connecting";
2
- export * from "./signers";
3
- export * from "./wallets";
1
+ import "./connected";
2
+ import "./selecting";
@@ -1,4 +1,4 @@
1
1
  import { ccc } from "@ckb-ccc/ccc";
2
- import { WalletWithSigners } from "../types";
2
+ import { WalletWithSigners } from "../../types";
3
3
  export declare function generateConnectingScene(wallet: WalletWithSigners, signer: ccc.SignerInfo, error: string | undefined, onSignerSelected: (wallet: WalletWithSigners, signer: ccc.SignerInfo) => unknown): (string | import("lit").TemplateResult<1>)[];
4
4
  //# sourceMappingURL=connecting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connecting.d.ts","sourceRoot":"","sources":["../../../src/scenes/selecting/connecting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,KACnB,OAAO,gDA2Bb"}
@@ -1,11 +1,11 @@
1
1
  import { html } from "lit";
2
- import { RETRY_SVG } from "../assets/retry.svg";
2
+ import { RETRY_SVG } from "../../assets/retry.svg";
3
3
  export function generateConnectingScene(wallet, signer, error, onSignerSelected) {
4
4
  return [
5
5
  wallet.name,
6
6
  html `
7
7
  <img
8
- class="connecting-wallet-icon mb-1"
8
+ class="connecting-wallet-icon mb-1 mt-1"
9
9
  src=${wallet.icon}
10
10
  alt=${wallet.name}
11
11
  />
@@ -17,13 +17,13 @@ export function generateConnectingScene(wallet, signer, error, onSignerSelected)
17
17
  <span class="text-tip text-center"
18
18
  >${error ?? "Confirm connection in the wallet"}</span
19
19
  >
20
- <button
21
- class="btn-secondary mt-2 mb-2"
20
+ <ccc-button-pill
21
+ class="mt-2"
22
22
  @click=${() => onSignerSelected(wallet, signer)}
23
23
  >
24
24
  <img src=${RETRY_SVG} alt="retry" />
25
25
  Try again
26
- </button>
26
+ </ccc-button-pill>
27
27
  `,
28
28
  ];
29
29
  }
@@ -0,0 +1,19 @@
1
+ import { LitElement } from "lit";
2
+ import { WalletWithSigners } from "../../types";
3
+ export declare class ConnectedEvent extends Event {
4
+ readonly walletName: string;
5
+ readonly signerName: string;
6
+ constructor(walletName: string, signerName: string);
7
+ }
8
+ export declare class SelectingScene extends LitElement {
9
+ wallets?: WalletWithSigners[];
10
+ private selectedWallet?;
11
+ private selectedSigner?;
12
+ private connectingError?;
13
+ render(): import("lit").TemplateResult<1>;
14
+ onClose(): void;
15
+ private signerSelectedHandler;
16
+ static styles: import("lit").CSSResult;
17
+ updated(): void;
18
+ }
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scenes/selecting/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,UAAU,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhD,qBAAa,cAAe,SAAQ,KAAK;aAErB,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;gBADlB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM;CAIrC;AAED,qBACa,cAAe,SAAQ,UAAU;IAErC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAGrC,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,MAAM;IA+CC,OAAO;IAMd,OAAO,CAAC,qBAAqB,CAqC3B;IAEF,MAAM,CAAC,MAAM,0BAsDX;IAEF,OAAO;CAGR"}
@@ -0,0 +1,164 @@
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 { css, html, LitElement } from "lit";
8
+ import { customElement, property, state } from "lit/decorators.js";
9
+ import { generateConnectingScene } from "./connecting";
10
+ import { generateSignersScene } from "./signers";
11
+ import { generateWalletsScene } from "./wallets";
12
+ export class ConnectedEvent extends Event {
13
+ constructor(walletName, signerName) {
14
+ super("connected");
15
+ this.walletName = walletName;
16
+ this.signerName = signerName;
17
+ }
18
+ }
19
+ let SelectingScene = class SelectingScene extends LitElement {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.signerSelectedHandler = (wallet, signerInfo) => {
23
+ this.connectingError = undefined;
24
+ this.selectedWallet = wallet;
25
+ this.selectedSigner = signerInfo;
26
+ (async () => {
27
+ const { signer } = signerInfo;
28
+ try {
29
+ await signer.connect();
30
+ }
31
+ catch (error) {
32
+ if (typeof error !== "object" || error === null) {
33
+ this.connectingError = JSON.stringify(error);
34
+ return;
35
+ }
36
+ if (!("message" in error)) {
37
+ this.connectingError = "Unknown error";
38
+ return;
39
+ }
40
+ const message = error.message;
41
+ if (typeof message === "string") {
42
+ this.connectingError = message;
43
+ return;
44
+ }
45
+ this.connectingError = JSON.stringify(message);
46
+ }
47
+ if (!(await signer.isConnected())) {
48
+ return;
49
+ }
50
+ this.dispatchEvent(new Event("close", { bubbles: true, composed: true }));
51
+ this.dispatchEvent(new ConnectedEvent(wallet.name, signerInfo.name));
52
+ })();
53
+ };
54
+ }
55
+ render() {
56
+ const [title, body] = (() => {
57
+ if (!this.selectedWallet) {
58
+ return generateWalletsScene(this.wallets ?? [], (wallet) => {
59
+ this.selectedWallet = wallet;
60
+ }, this.signerSelectedHandler);
61
+ }
62
+ if (!this.selectedSigner) {
63
+ return generateSignersScene(this.selectedWallet, this.signerSelectedHandler);
64
+ }
65
+ return generateConnectingScene(this.selectedWallet, this.selectedSigner, this.connectingError, this.signerSelectedHandler);
66
+ })();
67
+ return html `<ccc-dialog
68
+ header=${title}
69
+ ?canBack=${this.selectedSigner || this.selectedWallet}
70
+ @close=${() => {
71
+ this.onClose();
72
+ }}
73
+ @back=${() => {
74
+ if (!this.selectedSigner ||
75
+ (this.selectedWallet && this.selectedWallet.signers.length <= 1)) {
76
+ this.selectedWallet = undefined;
77
+ }
78
+ this.selectedSigner = undefined;
79
+ this.connectingError = undefined;
80
+ }}
81
+ >
82
+ ${body}
83
+ </ccc-dialog>`;
84
+ }
85
+ onClose() {
86
+ this.selectedWallet = undefined;
87
+ this.selectedSigner = undefined;
88
+ this.connectingError = undefined;
89
+ }
90
+ updated() {
91
+ this.dispatchEvent(new Event("updated", { bubbles: true, composed: true }));
92
+ }
93
+ };
94
+ SelectingScene.styles = css `
95
+ :host {
96
+ display: block;
97
+ }
98
+
99
+ .text-bold {
100
+ font-weight: bold;
101
+ }
102
+
103
+ .text-tip {
104
+ color: var(--tip-color);
105
+ }
106
+
107
+ .mb-1 {
108
+ margin-bottom: 0.7rem;
109
+ }
110
+ .mb-2 {
111
+ margin-bottom: 1rem;
112
+ }
113
+ .mt-1 {
114
+ margin-top: 0.7rem;
115
+ }
116
+ .mt-2 {
117
+ margin-top: 1rem;
118
+ }
119
+ .ml-1 {
120
+ margin-left: 0.7rem;
121
+ }
122
+ .ml-2 {
123
+ margin-left: 1em;
124
+ }
125
+ .mr-1 {
126
+ margin-right: 0.7rem;
127
+ }
128
+ .mr-2 {
129
+ margin-right: 1rem;
130
+ }
131
+
132
+ .wallet-icon {
133
+ width: 4rem;
134
+ height: 4rem;
135
+ margin-bottom: 0.5rem;
136
+ border-radius: 0.8rem;
137
+ }
138
+
139
+ .connecting-wallet-icon {
140
+ width: 5rem;
141
+ height: 5rem;
142
+ border-radius: 1rem;
143
+ }
144
+
145
+ .text-center {
146
+ text-align: center;
147
+ }
148
+ `;
149
+ __decorate([
150
+ property()
151
+ ], SelectingScene.prototype, "wallets", void 0);
152
+ __decorate([
153
+ state()
154
+ ], SelectingScene.prototype, "selectedWallet", void 0);
155
+ __decorate([
156
+ state()
157
+ ], SelectingScene.prototype, "selectedSigner", void 0);
158
+ __decorate([
159
+ state()
160
+ ], SelectingScene.prototype, "connectingError", void 0);
161
+ SelectingScene = __decorate([
162
+ customElement("ccc-selecting-scene")
163
+ ], SelectingScene);
164
+ export { SelectingScene };
@@ -1,5 +1,5 @@
1
1
  import { ccc } from "@ckb-ccc/ccc";
2
- import { WalletWithSigners } from "../types";
2
+ import { WalletWithSigners } from "../../types";
3
3
  export declare function signerTypeToIcon(type: ccc.SignerType): string;
4
4
  export declare function generateSignersScene(wallet: WalletWithSigners, onSignerSelected: (wallet: WalletWithSigners, signer: ccc.SignerInfo) => unknown): (string | import("lit").TemplateResult<1>)[];
5
5
  //# sourceMappingURL=signers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signers.d.ts","sourceRoot":"","sources":["../../../src/scenes/selecting/signers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,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"}
@@ -1,8 +1,7 @@
1
1
  import { ccc } from "@ckb-ccc/ccc";
2
2
  import { html } from "lit";
3
3
  import { repeat } from "lit/directives/repeat.js";
4
- import { BTC_SVG, CKB_SVG, ETH_SVG } from "../assets/chains";
5
- import { NOSTR_SVG } from "../assets/chains/nostr.svg";
4
+ import { BTC_SVG, CKB_SVG, ETH_SVG, NOSTR_SVG } from "../../assets/chains";
6
5
  export function signerTypeToIcon(type) {
7
6
  return {
8
7
  [ccc.SignerType.BTC]: BTC_SVG,
@@ -15,11 +14,11 @@ export function generateSignersScene(wallet, onSignerSelected) {
15
14
  return [
16
15
  "Select a Chain",
17
16
  html `
18
- <img class="wallet-icon" src=${wallet.icon} alt=${wallet.name} />
19
- <span class="mb-2">${wallet.name}</span>
17
+ <img class="wallet-icon mt-1" src=${wallet.icon} alt=${wallet.name} />
18
+ <span class="mb-1">${wallet.name}</span>
20
19
  ${repeat(wallet.signers, (signer) => signer.name, (signer) => html `
21
- <button
22
- class="btn-primary mb-1"
20
+ <ccc-button
21
+ class="mt-1"
23
22
  @click=${async () => {
24
23
  onSignerSelected(wallet, signer);
25
24
  }}
@@ -29,7 +28,7 @@ export function generateSignersScene(wallet, onSignerSelected) {
29
28
  alt=${signer.signer.type}
30
29
  />
31
30
  ${signer.name}
32
- </button>
31
+ </ccc-button>
33
32
  `)}
34
33
  `,
35
34
  ];
@@ -1,4 +1,4 @@
1
1
  import { ccc } from "@ckb-ccc/ccc";
2
- import { WalletWithSigners } from "../types";
2
+ import { WalletWithSigners } from "../../types";
3
3
  export declare function generateWalletsScene(wallets: WalletWithSigners[], onWalletSelected: (wallet: WalletWithSigners) => unknown, onSignerSelected: (wallet: WalletWithSigners, signer: ccc.SignerInfo) => unknown): unknown[];
4
4
  //# sourceMappingURL=wallets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../../src/scenes/selecting/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,EACxD,gBAAgB,EAAE,CAChB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,GAAG,CAAC,UAAU,KACnB,OAAO,aAwBb"}
@@ -4,8 +4,8 @@ export function generateWalletsScene(wallets, onWalletSelected, onSignerSelected
4
4
  return [
5
5
  "Connect Wallet",
6
6
  repeat(wallets, (wallet) => wallet.name, (wallet) => html `
7
- <button
8
- class="btn-primary mb-1"
7
+ <ccc-button
8
+ class="mt-1"
9
9
  @click=${async () => {
10
10
  if (wallet.signers.length === 1) {
11
11
  onSignerSelected(wallet, wallet.signers[0]);
@@ -17,7 +17,7 @@ export function generateWalletsScene(wallets, onWalletSelected, onSignerSelected
17
17
  >
18
18
  <img src=${wallet.icon} alt=${wallet.name} />
19
19
  ${wallet.name}
20
- </button>
20
+ </ccc-button>
21
21
  `),
22
22
  ];
23
23
  }
@@ -0,0 +1,28 @@
1
+ import { ccc } from "@ckb-ccc/ccc";
2
+ import { ReactiveController, ReactiveControllerHost } from "lit";
3
+ import { WalletWithSigners } from "../types";
4
+ export declare class SignersController implements ReactiveController {
5
+ private readonly host;
6
+ wallets: WalletWithSigners[];
7
+ private resetListeners;
8
+ constructor(host: ReactiveControllerHost & {
9
+ client: ccc.Client;
10
+ signerFilter?: (signerInfo: ccc.SignerInfo, wallet: ccc.Wallet) => Promise<boolean>;
11
+ preferredNetworks?: ccc.NetworkPreference[];
12
+ name?: string;
13
+ icon?: string;
14
+ refreshSigner: () => void;
15
+ });
16
+ getConfig(): {
17
+ client: ccc.Client;
18
+ name: string;
19
+ icon: string;
20
+ preferredNetworks: ccc.NetworkPreference[];
21
+ };
22
+ update(): void;
23
+ refresh(): void;
24
+ private addSigner;
25
+ hostConnected(): void;
26
+ hostDisconnected(): void;
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAMjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,qBAAa,iBAAkB,YAAW,kBAAkB;IAMxD,OAAO,CAAC,QAAQ,CAAC,IAAI;IALhB,OAAO,EAAE,iBAAiB,EAAE,CAAM;IAEzC,OAAO,CAAC,cAAc,CAAsB;gBAGzB,IAAI,EAAE,sBAAsB,GAAG;QAC9C,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,CACb,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,KACf,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,IAAI,CAAC;KAC3B;IAKH,SAAS;;;;;;IA6BT,MAAM;IAKN,OAAO;YAiFO,SAAS;IAkCvB,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;CACzB"}