@mysten-incubation/dev-wallet 0.0.1 → 0.3.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/CHANGELOG.md +139 -0
- package/LICENSE +189 -0
- package/dist/_virtual/{_@oxc-project_runtime@0.107.0 → _@oxc-project_runtime@0.127.0}/helpers/decorate.mjs +2 -3
- package/dist/adapters/base-adapter.mjs +6 -7
- package/dist/adapters/base-adapter.mjs.map +1 -1
- package/dist/adapters/browser.d.mts +4 -1
- package/dist/adapters/browser.mjs +4 -2
- package/dist/adapters/build-managed-account.mjs +8 -10
- package/dist/adapters/build-managed-account.mjs.map +1 -1
- package/dist/adapters/devstack-adapter.d.mts +111 -0
- package/dist/adapters/devstack-adapter.d.mts.map +1 -0
- package/dist/adapters/devstack-adapter.mjs +224 -0
- package/dist/adapters/devstack-adapter.mjs.map +1 -0
- package/dist/adapters/devstack-paths.d.mts +11 -0
- package/dist/adapters/devstack-paths.d.mts.map +1 -0
- package/dist/adapters/devstack-paths.mjs +11 -0
- package/dist/adapters/devstack-paths.mjs.map +1 -0
- package/dist/adapters/fork-relay.d.mts +109 -0
- package/dist/adapters/fork-relay.d.mts.map +1 -0
- package/dist/adapters/fork-relay.mjs +208 -0
- package/dist/adapters/fork-relay.mjs.map +1 -0
- package/dist/adapters/idb-store.mjs +12 -16
- package/dist/adapters/idb-store.mjs.map +1 -1
- package/dist/adapters/in-memory-adapter.mjs +4 -10
- package/dist/adapters/in-memory-adapter.mjs.map +1 -1
- package/dist/adapters/passkey-adapter.mjs +4 -12
- package/dist/adapters/passkey-adapter.mjs.map +1 -1
- package/dist/adapters/remote-cli-adapter.mjs +37 -72
- package/dist/adapters/remote-cli-adapter.mjs.map +1 -1
- package/dist/adapters/webcrypto-adapter.mjs +2 -4
- package/dist/adapters/webcrypto-adapter.mjs.map +1 -1
- package/dist/bin/cli.mjs +9 -22
- package/dist/bin/cli.mjs.map +1 -1
- package/dist/client/dev-wallet-client.mjs +13 -28
- package/dist/client/dev-wallet-client.mjs.map +1 -1
- package/dist/client/index.mjs +1 -2
- package/dist/client/request-handler.mjs +36 -42
- package/dist/client/request-handler.mjs.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/react/components.d.mts +9 -9
- package/dist/react/components.d.mts.map +1 -1
- package/dist/react/components.mjs +2 -5
- package/dist/react/components.mjs.map +1 -1
- package/dist/react/context.d.mts +3 -3
- package/dist/react/context.d.mts.map +1 -1
- package/dist/react/context.mjs +3 -8
- package/dist/react/context.mjs.map +1 -1
- package/dist/react/index.mjs +1 -2
- package/dist/react/useDevWallet.d.mts +3 -0
- package/dist/react/useDevWallet.d.mts.map +1 -1
- package/dist/react/useDevWallet.mjs +9 -14
- package/dist/react/useDevWallet.mjs.map +1 -1
- package/dist/server/cli-signing-middleware.mjs +7 -20
- package/dist/server/cli-signing-middleware.mjs.map +1 -1
- package/dist/server/index.mjs +1 -2
- package/dist/standalone/assets/{in-memory-adapter-CBF4h2KD.js → in-memory-adapter-qRkNfj9O.js} +1 -1
- package/dist/standalone/assets/main-DDltQnzR.js +3954 -0
- package/dist/standalone/assets/{webcrypto-adapter-DysAubFb.js → webcrypto-adapter-FejcrL9x.js} +1 -1
- package/dist/standalone/index.html +11 -12
- package/dist/ui/copy-controller.mjs +3 -3
- package/dist/ui/copy-controller.mjs.map +1 -1
- package/dist/ui/dev-wallet-account-selector.d.mts +3 -4
- package/dist/ui/dev-wallet-account-selector.d.mts.map +1 -1
- package/dist/ui/dev-wallet-account-selector.mjs +48 -25
- package/dist/ui/dev-wallet-account-selector.mjs.map +1 -1
- package/dist/ui/dev-wallet-accounts.d.mts +9 -4
- package/dist/ui/dev-wallet-accounts.d.mts.map +1 -1
- package/dist/ui/dev-wallet-accounts.mjs +62 -140
- package/dist/ui/dev-wallet-accounts.mjs.map +1 -1
- package/dist/ui/dev-wallet-balances.d.mts +10 -3
- package/dist/ui/dev-wallet-balances.d.mts.map +1 -1
- package/dist/ui/dev-wallet-balances.mjs +241 -43
- package/dist/ui/dev-wallet-balances.mjs.map +1 -1
- package/dist/ui/dev-wallet-connect.d.mts +3 -3
- package/dist/ui/dev-wallet-connect.d.mts.map +1 -1
- package/dist/ui/dev-wallet-connect.mjs +24 -16
- package/dist/ui/dev-wallet-connect.mjs.map +1 -1
- package/dist/ui/dev-wallet-dropdown.d.mts +3 -3
- package/dist/ui/dev-wallet-dropdown.d.mts.map +1 -1
- package/dist/ui/dev-wallet-dropdown.mjs +37 -47
- package/dist/ui/dev-wallet-dropdown.mjs.map +1 -1
- package/dist/ui/dev-wallet-fork-panel.d.mts +43 -0
- package/dist/ui/dev-wallet-fork-panel.d.mts.map +1 -0
- package/dist/ui/dev-wallet-fork-panel.mjs +500 -0
- package/dist/ui/dev-wallet-fork-panel.mjs.map +1 -0
- package/dist/ui/dev-wallet-network-badge.d.mts +3 -4
- package/dist/ui/dev-wallet-network-badge.d.mts.map +1 -1
- package/dist/ui/dev-wallet-network-badge.mjs +52 -21
- package/dist/ui/dev-wallet-network-badge.mjs.map +1 -1
- package/dist/ui/dev-wallet-new-account.d.mts +3 -4
- package/dist/ui/dev-wallet-new-account.d.mts.map +1 -1
- package/dist/ui/dev-wallet-new-account.mjs +31 -105
- package/dist/ui/dev-wallet-new-account.mjs.map +1 -1
- package/dist/ui/dev-wallet-objects.d.mts +3 -3
- package/dist/ui/dev-wallet-objects.d.mts.map +1 -1
- package/dist/ui/dev-wallet-objects.mjs +76 -39
- package/dist/ui/dev-wallet-objects.mjs.map +1 -1
- package/dist/ui/dev-wallet-panel.d.mts +24 -4
- package/dist/ui/dev-wallet-panel.d.mts.map +1 -1
- package/dist/ui/dev-wallet-panel.mjs +247 -64
- package/dist/ui/dev-wallet-panel.mjs.map +1 -1
- package/dist/ui/dev-wallet-popup.d.mts +3 -5
- package/dist/ui/dev-wallet-popup.d.mts.map +1 -1
- package/dist/ui/dev-wallet-popup.mjs +19 -15
- package/dist/ui/dev-wallet-popup.mjs.map +1 -1
- package/dist/ui/dev-wallet-settings.d.mts +3 -4
- package/dist/ui/dev-wallet-settings.d.mts.map +1 -1
- package/dist/ui/dev-wallet-settings.mjs +149 -97
- package/dist/ui/dev-wallet-settings.mjs.map +1 -1
- package/dist/ui/dev-wallet-signing-modal.d.mts +11 -4
- package/dist/ui/dev-wallet-signing-modal.d.mts.map +1 -1
- package/dist/ui/dev-wallet-signing-modal.mjs +46 -18
- package/dist/ui/dev-wallet-signing-modal.mjs.map +1 -1
- package/dist/ui/dev-wallet-signing.d.mts +9 -3
- package/dist/ui/dev-wallet-signing.d.mts.map +1 -1
- package/dist/ui/dev-wallet-signing.mjs +119 -130
- package/dist/ui/dev-wallet-signing.mjs.map +1 -1
- package/dist/ui/dev-wallet-standalone.d.mts +8 -3
- package/dist/ui/dev-wallet-standalone.d.mts.map +1 -1
- package/dist/ui/dev-wallet-standalone.mjs +303 -38
- package/dist/ui/dev-wallet-standalone.mjs.map +1 -1
- package/dist/ui/dev-wallet-tab-bar.d.mts +13 -5
- package/dist/ui/dev-wallet-tab-bar.d.mts.map +1 -1
- package/dist/ui/dev-wallet-tab-bar.mjs +143 -82
- package/dist/ui/dev-wallet-tab-bar.mjs.map +1 -1
- package/dist/ui/index.d.mts +3 -2
- package/dist/ui/index.mjs +2 -2
- package/dist/ui/mount.d.mts +14 -1
- package/dist/ui/mount.d.mts.map +1 -1
- package/dist/ui/mount.mjs +5 -2
- package/dist/ui/mount.mjs.map +1 -1
- package/dist/ui/styles.mjs +428 -66
- package/dist/ui/styles.mjs.map +1 -1
- package/dist/ui/transaction-analyzer.mjs +19 -30
- package/dist/ui/transaction-analyzer.mjs.map +1 -1
- package/dist/ui/utils.d.mts +59 -0
- package/dist/ui/utils.d.mts.map +1 -0
- package/dist/ui/utils.mjs +42 -15
- package/dist/ui/utils.mjs.map +1 -1
- package/dist/ui/wallet-controller.mjs +89 -20
- package/dist/ui/wallet-controller.mjs.map +1 -1
- package/dist/wallet/constants.d.mts +9 -0
- package/dist/wallet/constants.d.mts.map +1 -0
- package/dist/wallet/constants.mjs +1 -1
- package/dist/wallet/dev-wallet.mjs +42 -99
- package/dist/wallet/dev-wallet.mjs.map +1 -1
- package/dist/wallet/initializer.d.mts +3 -0
- package/dist/wallet/initializer.d.mts.map +1 -1
- package/dist/wallet/initializer.mjs +9 -14
- package/dist/wallet/initializer.mjs.map +1 -1
- package/dist/wallet/signing.mjs +8 -21
- package/dist/wallet/signing.mjs.map +1 -1
- package/package.json +8 -6
- package/src/adapters/browser.ts +21 -0
- package/src/adapters/devstack-adapter.ts +342 -0
- package/src/adapters/devstack-paths.ts +15 -0
- package/src/adapters/fork-relay.ts +321 -0
- package/src/app/index.html +10 -11
- package/src/react/useDevWallet.ts +5 -1
- package/src/ui/dev-wallet-account-selector.ts +44 -17
- package/src/ui/dev-wallet-accounts.ts +87 -124
- package/src/ui/dev-wallet-balances.ts +248 -27
- package/src/ui/dev-wallet-connect.ts +19 -8
- package/src/ui/dev-wallet-dropdown.ts +7 -5
- package/src/ui/dev-wallet-fork-panel.ts +591 -0
- package/src/ui/dev-wallet-network-badge.ts +49 -10
- package/src/ui/dev-wallet-new-account.ts +21 -62
- package/src/ui/dev-wallet-objects.ts +59 -19
- package/src/ui/dev-wallet-panel.ts +261 -42
- package/src/ui/dev-wallet-popup.ts +12 -6
- package/src/ui/dev-wallet-settings.ts +159 -94
- package/src/ui/dev-wallet-signing-modal.ts +47 -7
- package/src/ui/dev-wallet-signing.ts +124 -97
- package/src/ui/dev-wallet-standalone.ts +310 -22
- package/src/ui/dev-wallet-tab-bar.ts +132 -70
- package/src/ui/index.ts +3 -0
- package/src/ui/mount.ts +23 -1
- package/src/ui/styles.ts +434 -58
- package/src/ui/utils.ts +66 -0
- package/src/ui/wallet-controller.ts +103 -5
- package/src/wallet/initializer.ts +7 -1
- package/dist/standalone/assets/main-VE4olb-Q.js +0 -2841
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { dropdownItemStyles, sharedStyles } from "./styles.mjs";
|
|
2
|
-
import { NETWORK_COLORS } from "./utils.mjs";
|
|
3
|
-
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.
|
|
2
|
+
import { NETWORK_COLORS, isForkNetwork } from "./utils.mjs";
|
|
3
|
+
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.mjs";
|
|
4
4
|
import "./dev-wallet-dropdown.mjs";
|
|
5
5
|
import { LitElement, css, html } from "lit";
|
|
6
6
|
import { customElement, property, state } from "lit/decorators.js";
|
|
7
|
-
|
|
8
7
|
//#region src/ui/dev-wallet-network-badge.ts
|
|
9
|
-
let DevWalletNetworkBadge = class DevWalletNetworkBadge
|
|
8
|
+
let DevWalletNetworkBadge = class DevWalletNetworkBadge extends LitElement {
|
|
10
9
|
constructor(..._args) {
|
|
11
10
|
super(..._args);
|
|
12
11
|
this.active = "";
|
|
@@ -25,19 +24,50 @@ let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
|
|
|
25
24
|
.badge {
|
|
26
25
|
display: flex;
|
|
27
26
|
align-items: center;
|
|
28
|
-
gap:
|
|
29
|
-
|
|
27
|
+
gap: 6px;
|
|
28
|
+
height: 26px;
|
|
29
|
+
padding: 0 8px;
|
|
30
30
|
border-radius: 999px;
|
|
31
|
-
|
|
31
|
+
border: 1px solid var(--dev-wallet-border);
|
|
32
|
+
font-family: var(--dev-wallet-font-mono);
|
|
33
|
+
font-size: 10.5px;
|
|
32
34
|
font-weight: var(--dev-wallet-font-weight-medium);
|
|
33
|
-
color: var(--dev-wallet-
|
|
34
|
-
background: var(--dev-wallet-
|
|
35
|
+
color: var(--dev-wallet-text-2);
|
|
36
|
+
background: var(--dev-wallet-bg-3);
|
|
35
37
|
cursor: pointer;
|
|
36
|
-
transition:
|
|
38
|
+
transition:
|
|
39
|
+
background 120ms,
|
|
40
|
+
border-color 120ms,
|
|
41
|
+
color 120ms;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Phase 4 P4.17 — amber stripe + fork label when the
|
|
45
|
+
active network is a *-fork variant. The stripe is
|
|
46
|
+
diagonal-hatched so it survives dark + light themes
|
|
47
|
+
without depending on a separate badge background. */
|
|
48
|
+
.badge.fork {
|
|
49
|
+
background-image: repeating-linear-gradient(
|
|
50
|
+
45deg,
|
|
51
|
+
rgba(234, 179, 8, 0.18),
|
|
52
|
+
rgba(234, 179, 8, 0.18) 4px,
|
|
53
|
+
transparent 4px,
|
|
54
|
+
transparent 8px
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.fork-tag {
|
|
59
|
+
color: #92400e;
|
|
60
|
+
font-weight: var(--dev-wallet-font-weight-bold);
|
|
61
|
+
font-size: 10px;
|
|
62
|
+
margin-left: 4px;
|
|
63
|
+
text-transform: uppercase;
|
|
64
|
+
letter-spacing: 0.5px;
|
|
37
65
|
}
|
|
38
66
|
|
|
39
67
|
.badge:hover {
|
|
40
|
-
background: var(--dev-wallet-
|
|
68
|
+
background: var(--dev-wallet-bg-4);
|
|
69
|
+
border-color: var(--dev-wallet-border-strong);
|
|
70
|
+
color: var(--dev-wallet-foreground);
|
|
41
71
|
}
|
|
42
72
|
|
|
43
73
|
.dot {
|
|
@@ -60,18 +90,21 @@ let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
|
|
|
60
90
|
}
|
|
61
91
|
render() {
|
|
62
92
|
const color = NETWORK_COLORS[this.active] ?? NETWORK_COLORS["localnet"];
|
|
93
|
+
const fork = isForkNetwork(this.active);
|
|
94
|
+
const baseLabel = fork ? this.active.replace(/-fork$/, "") : this.active;
|
|
63
95
|
return html`
|
|
64
96
|
<dev-wallet-dropdown .open=${this._open} @close=${() => this._open = false}>
|
|
65
97
|
<button
|
|
66
98
|
slot="trigger"
|
|
67
|
-
class
|
|
99
|
+
class=${fork ? "badge fork" : "badge"}
|
|
68
100
|
part="trigger"
|
|
69
101
|
aria-expanded=${this._open}
|
|
70
102
|
aria-haspopup="listbox"
|
|
103
|
+
title=${fork ? `sui-fork stack — no real ${baseLabel} funds at risk` : ""}
|
|
71
104
|
@click=${() => this._open = !this._open}
|
|
72
105
|
>
|
|
73
106
|
<span class="dot" style="background: ${color}"></span>
|
|
74
|
-
${
|
|
107
|
+
${baseLabel} ${fork ? html`<span class="fork-tag">fork</span>` : ""}
|
|
75
108
|
<svg
|
|
76
109
|
class="chevron"
|
|
77
110
|
viewBox="0 0 24 24"
|
|
@@ -102,20 +135,18 @@ let DevWalletNetworkBadge = class DevWalletNetworkBadge$1 extends LitElement {
|
|
|
102
135
|
}
|
|
103
136
|
#select(network) {
|
|
104
137
|
this._open = false;
|
|
105
|
-
if (network !== this.active) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}));
|
|
111
|
-
}
|
|
138
|
+
if (network !== this.active) this.dispatchEvent(new CustomEvent("network-changed", {
|
|
139
|
+
bubbles: true,
|
|
140
|
+
composed: true,
|
|
141
|
+
detail: { network }
|
|
142
|
+
}));
|
|
112
143
|
}
|
|
113
144
|
};
|
|
114
145
|
__decorate([property({ type: String })], DevWalletNetworkBadge.prototype, "active", void 0);
|
|
115
146
|
__decorate([property({ attribute: false })], DevWalletNetworkBadge.prototype, "networks", void 0);
|
|
116
147
|
__decorate([state()], DevWalletNetworkBadge.prototype, "_open", void 0);
|
|
117
148
|
DevWalletNetworkBadge = __decorate([customElement("dev-wallet-network-badge")], DevWalletNetworkBadge);
|
|
118
|
-
|
|
119
149
|
//#endregion
|
|
120
150
|
export { DevWalletNetworkBadge };
|
|
151
|
+
|
|
121
152
|
//# sourceMappingURL=dev-wallet-network-badge.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-wallet-network-badge.mjs","names":["
|
|
1
|
+
{"version":3,"file":"dev-wallet-network-badge.mjs","names":["#select"],"sources":["../../src/ui/dev-wallet-network-badge.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { dropdownItemStyles, sharedStyles } from './styles.js';\nimport { isForkNetwork, NETWORK_COLORS } from './utils.js';\nimport './dev-wallet-dropdown.js';\n\n@customElement('dev-wallet-network-badge')\nexport class DevWalletNetworkBadge extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tdropdownItemStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.badge {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 6px;\n\t\t\t\theight: 26px;\n\t\t\t\tpadding: 0 8px;\n\t\t\t\tborder-radius: 999px;\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tfont-size: 10.5px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-text-2);\n\t\t\t\tbackground: var(--dev-wallet-bg-3);\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition:\n\t\t\t\t\tbackground 120ms,\n\t\t\t\t\tborder-color 120ms,\n\t\t\t\t\tcolor 120ms;\n\t\t\t}\n\n\t\t\t/* Phase 4 P4.17 — amber stripe + fork label when the\n\t\t\t active network is a *-fork variant. The stripe is\n\t\t\t diagonal-hatched so it survives dark + light themes\n\t\t\t without depending on a separate badge background. */\n\t\t\t.badge.fork {\n\t\t\t\tbackground-image: repeating-linear-gradient(\n\t\t\t\t\t45deg,\n\t\t\t\t\trgba(234, 179, 8, 0.18),\n\t\t\t\t\trgba(234, 179, 8, 0.18) 4px,\n\t\t\t\t\ttransparent 4px,\n\t\t\t\t\ttransparent 8px\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t.fork-tag {\n\t\t\t\tcolor: #92400e;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-bold);\n\t\t\t\tfont-size: 10px;\n\t\t\t\tmargin-left: 4px;\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tletter-spacing: 0.5px;\n\t\t\t}\n\n\t\t\t.badge:hover {\n\t\t\t\tbackground: var(--dev-wallet-bg-4);\n\t\t\t\tborder-color: var(--dev-wallet-border-strong);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.dot {\n\t\t\t\twidth: 6px;\n\t\t\t\theight: 6px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t}\n\n\t\t\t.chevron {\n\t\t\t\twidth: 10px;\n\t\t\t\theight: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t}\n\n\t\t\t.dropdown-item {\n\t\t\t\tpadding: 8px 12px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ type: String })\n\tactive = '';\n\n\t@property({ attribute: false })\n\tnetworks: string[] = [];\n\n\t@state()\n\tprivate _open = false;\n\n\toverride render() {\n\t\tconst color = NETWORK_COLORS[this.active] ?? NETWORK_COLORS['localnet'];\n\t\tconst fork = isForkNetwork(this.active);\n\t\t// Phase 4 P4.17 — when `meta.runtime: 'forked'` flows through\n\t\t// (codegen emits the network literal as e.g. `'mainnet-fork'`),\n\t\t// the badge surfaces an amber-hatched stripe + a `(fork)`\n\t\t// label so the user can't mistake the wallet panel for one\n\t\t// pointed at real upstream funds.\n\t\tconst baseLabel = fork ? this.active.replace(/-fork$/, '') : this.active;\n\n\t\treturn html`\n\t\t\t<dev-wallet-dropdown .open=${this._open} @close=${() => (this._open = false)}>\n\t\t\t\t<button\n\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\tclass=${fork ? 'badge fork' : 'badge'}\n\t\t\t\t\tpart=\"trigger\"\n\t\t\t\t\taria-expanded=${this._open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\ttitle=${fork ? `sui-fork stack — no real ${baseLabel} funds at risk` : ''}\n\t\t\t\t\t@click=${() => (this._open = !this._open)}\n\t\t\t\t>\n\t\t\t\t\t<span class=\"dot\" style=\"background: ${color}\"></span>\n\t\t\t\t\t${baseLabel} ${fork ? html`<span class=\"fork-tag\">fork</span>` : ''}\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclass=\"chevron\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M6 9l6 6 6-6\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t${this.networks.map((network) => {\n\t\t\t\t\t\tconst dotColor = NETWORK_COLORS[network] ?? NETWORK_COLORS['localnet'];\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"dropdown-item\"\n\t\t\t\t\t\t\t\taria-selected=${network === this.active}\n\t\t\t\t\t\t\t\t@click=${() => this.#select(network)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span class=\"dot\" style=\"background: ${dotColor}\"></span>\n\t\t\t\t\t\t\t\t${network}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t`;\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</dev-wallet-dropdown>\n\t\t`;\n\t}\n\n\t#select(network: string) {\n\t\tthis._open = false;\n\t\tif (network !== this.active) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('network-changed', {\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t\tdetail: { network },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-network-badge': DevWalletNetworkBadge;\n\t}\n}\n"],"mappings":";;;;;;;AAWO,IAAA,wBAAA,MAAM,8BAA8B,WAAW;;;gBA6E5C;kBAGY,EAAE;eAGP;;;gBAlFS;GACxB;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEH;;CAWD,SAAkB;EACjB,MAAM,QAAQ,eAAe,KAAK,WAAW,eAAe;EAC5D,MAAM,OAAO,cAAc,KAAK,OAAO;EAMvC,MAAM,YAAY,OAAO,KAAK,OAAO,QAAQ,UAAU,GAAG,GAAG,KAAK;AAElE,SAAO,IAAI;gCACmB,KAAK,MAAM,gBAAiB,KAAK,QAAQ,MAAO;;;aAGnE,OAAO,eAAe,QAAQ;;qBAEtB,KAAK,MAAM;;aAEnB,OAAO,4BAA4B,UAAU,kBAAkB,GAAG;oBAC1D,KAAK,QAAQ,CAAC,KAAK,MAAO;;4CAEH,MAAM;OAC3C,UAAU,GAAG,OAAO,IAAI,uCAAuC,GAAG;;;;;;;;;;;;OAYlE,KAAK,SAAS,KAAK,YAAY;GAChC,MAAM,WAAW,eAAe,YAAY,eAAe;AAC3D,UAAO,IAAI;;;wBAGO,YAAY,KAAK,OAAO;uBACzB,MAAA,OAAa,QAAQ,CAAC;;+CAEE,SAAS;UAC9C,QAAQ;;;IAGX,CAAC;;;;;CAMP,QAAQ,SAAiB;AACxB,OAAK,QAAQ;AACb,MAAI,YAAY,KAAK,OACpB,MAAK,cACJ,IAAI,YAAY,mBAAmB;GAClC,SAAS;GACT,UAAU;GACV,QAAQ,EAAE,SAAS;GACnB,CAAC,CACF;;;YAtEF,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,sBAAA,WAAA,UAAA,KAAA,EAAA;YAG1B,SAAS,EAAE,WAAW,OAAO,CAAC,CAAA,EAAA,sBAAA,WAAA,YAAA,KAAA,EAAA;YAG9B,OAAO,CAAA,EAAA,sBAAA,WAAA,SAAA,KAAA,EAAA;oCAnFR,cAAc,2BAA2B,CAAA,EAAA,sBAAA"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { SignerAdapter } from "../types.mjs";
|
|
2
|
-
import "
|
|
3
|
-
import * as lit11 from "lit";
|
|
2
|
+
import * as _$lit from "lit";
|
|
4
3
|
import { LitElement } from "lit";
|
|
5
4
|
|
|
6
5
|
//#region src/ui/dev-wallet-new-account.d.ts
|
|
7
6
|
declare class DevWalletNewAccount extends LitElement {
|
|
8
7
|
#private;
|
|
9
|
-
static styles: (
|
|
8
|
+
static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
|
|
10
9
|
adapters: SignerAdapter[];
|
|
11
10
|
open: boolean;
|
|
12
11
|
private _mode;
|
|
@@ -19,7 +18,7 @@ declare class DevWalletNewAccount extends LitElement {
|
|
|
19
18
|
private _dropdownOpen;
|
|
20
19
|
private _selectedImports;
|
|
21
20
|
updated(changed: Map<string, unknown>): void;
|
|
22
|
-
render():
|
|
21
|
+
render(): _$lit.TemplateResult<1>;
|
|
23
22
|
}
|
|
24
23
|
declare global {
|
|
25
24
|
interface HTMLElementTagNameMap {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-wallet-new-account.d.mts","names":[],"sources":["../../src/ui/dev-wallet-new-account.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev-wallet-new-account.d.mts","names":[],"sources":["../../src/ui/dev-wallet-new-account.ts"],"mappings":";;;;;cAsCa,mBAAA,SAA4B,UAAA;EAAA;SACxB,MAAA,GADgB,KAAA,CACV,SAAA,GAAA,KAAA,CAAA,SAAA;EA6MtB,QAAA,EAAU,aAAA;EAGV,IAAA;EAAA,QAGQ,KAAA;EAAA,QAGA,MAAA;EAAA,QAGA,kBAAA;EAAA,QAGA,SAAA;EAAA,QAGA,MAAA;EAAA,QAGA,kBAAA;EAAA,QAGA,eAAA;EAAA,QAGA,aAAA;EAAA,QAGA,gBAAA;EA8BC,OAAA,CAAQ,OAAA,EAAS,GAAA;EAqBjB,MAAA,CAAA,GArBoB,KAAA,CAqBd,cAAA;AAAA;AAAA,QAmSR,MAAA;EAAA,UACG,qBAAA;IACT,wBAAA,EAA0B,mBAAA;EAAA;AAAA"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { actionButtonStyles, sharedStyles, stateStyles } from "./styles.mjs";
|
|
1
|
+
import { actionButtonStyles, badgeStyles, cardItemStyles, dialogStyles, formInputStyles, inlineErrorStyles, listContainerStyles, monoTruncateStyles, sharedStyles, stateStyles, subLabelStyles } from "./styles.mjs";
|
|
2
2
|
import { emitEvent, formatAddress, getErrorMessage, isPairableAdapter, toggleSetItem } from "./utils.mjs";
|
|
3
|
-
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.
|
|
3
|
+
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.mjs";
|
|
4
4
|
import "./dev-wallet-dropdown.mjs";
|
|
5
5
|
import { LitElement, css, html, nothing } from "lit";
|
|
6
6
|
import { customElement, property, state } from "lit/decorators.js";
|
|
7
|
-
|
|
8
7
|
//#region src/ui/dev-wallet-new-account.ts
|
|
9
|
-
let DevWalletNewAccount = class DevWalletNewAccount
|
|
8
|
+
let DevWalletNewAccount = class DevWalletNewAccount extends LitElement {
|
|
10
9
|
constructor(..._args) {
|
|
11
10
|
super(..._args);
|
|
12
11
|
this.adapters = [];
|
|
@@ -19,45 +18,26 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
19
18
|
this._availableAccounts = [];
|
|
20
19
|
this._loadingImports = false;
|
|
21
20
|
this._dropdownOpen = false;
|
|
22
|
-
this._selectedImports = new Set();
|
|
21
|
+
this._selectedImports = /* @__PURE__ */ new Set();
|
|
23
22
|
}
|
|
24
23
|
static {
|
|
25
24
|
this.styles = [
|
|
26
25
|
sharedStyles,
|
|
27
26
|
actionButtonStyles,
|
|
28
27
|
stateStyles,
|
|
28
|
+
dialogStyles,
|
|
29
|
+
cardItemStyles,
|
|
30
|
+
listContainerStyles,
|
|
31
|
+
formInputStyles,
|
|
32
|
+
monoTruncateStyles,
|
|
33
|
+
badgeStyles,
|
|
34
|
+
inlineErrorStyles,
|
|
35
|
+
subLabelStyles,
|
|
29
36
|
css`
|
|
30
|
-
:host {
|
|
31
|
-
display: block;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
dialog:not([open]) {
|
|
35
|
-
display: none;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
37
|
dialog {
|
|
39
38
|
width: 320px;
|
|
40
|
-
max-width: calc(100vw - 32px);
|
|
41
39
|
max-height: min(420px, 80vh);
|
|
42
|
-
border-radius: var(--dev-wallet-radius-xl);
|
|
43
|
-
background: var(--dev-wallet-background);
|
|
44
|
-
border: 1px solid var(--dev-wallet-border);
|
|
45
|
-
box-shadow: var(--dev-wallet-shadow-lg);
|
|
46
40
|
padding: 20px;
|
|
47
|
-
display: flex;
|
|
48
|
-
flex-direction: column;
|
|
49
|
-
color: inherit;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
dialog::backdrop {
|
|
53
|
-
background: color-mix(in oklab, oklch(0 0 0) 50%, transparent);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.dialog-title {
|
|
57
|
-
font-size: 16px;
|
|
58
|
-
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
59
|
-
color: var(--dev-wallet-foreground);
|
|
60
|
-
margin-bottom: 16px;
|
|
61
41
|
}
|
|
62
42
|
|
|
63
43
|
.tabs {
|
|
@@ -94,29 +74,15 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
94
74
|
margin-bottom: 12px;
|
|
95
75
|
}
|
|
96
76
|
|
|
97
|
-
.field-label {
|
|
98
|
-
display: block;
|
|
99
|
-
font-size: 12px;
|
|
100
|
-
font-weight: var(--dev-wallet-font-weight-medium);
|
|
101
|
-
color: var(--dev-wallet-muted-foreground);
|
|
102
|
-
margin-bottom: 4px;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
77
|
.field-input {
|
|
106
|
-
width: 100%;
|
|
107
78
|
padding: 8px 10px;
|
|
108
79
|
border-radius: var(--dev-wallet-radius-sm);
|
|
109
80
|
border: 1px solid var(--dev-wallet-input);
|
|
110
81
|
background: var(--dev-wallet-secondary);
|
|
111
|
-
color: var(--dev-wallet-foreground);
|
|
112
82
|
font-size: 14px;
|
|
113
|
-
font-family: inherit;
|
|
114
|
-
outline: none;
|
|
115
|
-
box-sizing: border-box;
|
|
116
83
|
}
|
|
117
84
|
|
|
118
85
|
.field-input:focus {
|
|
119
|
-
border-color: var(--dev-wallet-primary);
|
|
120
86
|
outline: 2px solid color-mix(in oklab, var(--dev-wallet-ring) 50%, transparent);
|
|
121
87
|
outline-offset: -1px;
|
|
122
88
|
}
|
|
@@ -174,22 +140,14 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
174
140
|
}
|
|
175
141
|
|
|
176
142
|
.import-list {
|
|
177
|
-
display: flex;
|
|
178
|
-
flex-direction: column;
|
|
179
|
-
gap: 4px;
|
|
180
143
|
overflow-y: auto;
|
|
181
144
|
max-height: 240px;
|
|
182
145
|
min-height: 60px;
|
|
183
146
|
}
|
|
184
147
|
|
|
185
148
|
.import-item {
|
|
186
|
-
display: flex;
|
|
187
|
-
align-items: center;
|
|
188
149
|
gap: 10px;
|
|
189
150
|
padding: 8px 10px;
|
|
190
|
-
border-radius: var(--dev-wallet-radius-sm);
|
|
191
|
-
border: 1px solid var(--dev-wallet-border);
|
|
192
|
-
background: var(--dev-wallet-secondary);
|
|
193
151
|
width: 100%;
|
|
194
152
|
text-align: left;
|
|
195
153
|
transition: border-color 0.15s;
|
|
@@ -200,7 +158,6 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
200
158
|
}
|
|
201
159
|
|
|
202
160
|
.import-item.selected {
|
|
203
|
-
border-color: var(--dev-wallet-primary);
|
|
204
161
|
background: color-mix(in oklab, var(--dev-wallet-primary) 10%, var(--dev-wallet-secondary));
|
|
205
162
|
}
|
|
206
163
|
|
|
@@ -241,24 +198,15 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
241
198
|
|
|
242
199
|
.import-item-address {
|
|
243
200
|
font-size: 11px;
|
|
244
|
-
color: var(--dev-wallet-muted-foreground);
|
|
245
|
-
font-family: var(--dev-wallet-font-mono);
|
|
246
|
-
overflow: hidden;
|
|
247
|
-
text-overflow: ellipsis;
|
|
248
|
-
white-space: nowrap;
|
|
249
201
|
}
|
|
250
202
|
|
|
251
203
|
.import-item-badge {
|
|
252
|
-
font-size: 10px;
|
|
253
204
|
padding: 1px 6px;
|
|
254
205
|
border-radius: var(--dev-wallet-radius-xs);
|
|
255
206
|
background: var(--dev-wallet-background);
|
|
256
207
|
border: 1px solid var(--dev-wallet-border);
|
|
257
208
|
color: var(--dev-wallet-muted-foreground);
|
|
258
|
-
font-weight: var(--dev-wallet-font-weight-medium);
|
|
259
|
-
text-transform: uppercase;
|
|
260
209
|
letter-spacing: 0.3px;
|
|
261
|
-
white-space: nowrap;
|
|
262
210
|
flex-shrink: 0;
|
|
263
211
|
}
|
|
264
212
|
|
|
@@ -272,8 +220,6 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
272
220
|
}
|
|
273
221
|
|
|
274
222
|
.error {
|
|
275
|
-
color: var(--dev-wallet-destructive);
|
|
276
|
-
font-size: 12px;
|
|
277
223
|
margin-top: 8px;
|
|
278
224
|
}
|
|
279
225
|
`
|
|
@@ -294,18 +240,11 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
294
240
|
if (this.open && dialog && !dialog.open) {
|
|
295
241
|
const canCreate = this.#creatableAdapters.length > 0;
|
|
296
242
|
const canImport = this.#importableAdapters.length > 0;
|
|
297
|
-
if (canImport && !canCreate)
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
this._mode = "create";
|
|
301
|
-
}
|
|
302
|
-
if (canImport) {
|
|
303
|
-
this.#loadAvailableAccounts();
|
|
304
|
-
}
|
|
243
|
+
if (canImport && !canCreate) this._mode = "import";
|
|
244
|
+
else this._mode = "create";
|
|
245
|
+
if (canImport) this.#loadAvailableAccounts();
|
|
305
246
|
dialog.showModal();
|
|
306
|
-
} else if (!this.open && dialog?.open)
|
|
307
|
-
dialog.close();
|
|
308
|
-
}
|
|
247
|
+
} else if (!this.open && dialog?.open) dialog.close();
|
|
309
248
|
}
|
|
310
249
|
}
|
|
311
250
|
render() {
|
|
@@ -338,9 +277,7 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
338
277
|
}
|
|
339
278
|
#handleDialogCancel(e) {
|
|
340
279
|
e.preventDefault();
|
|
341
|
-
if (!this._creating)
|
|
342
|
-
this.#close();
|
|
343
|
-
}
|
|
280
|
+
if (!this._creating) this.#close();
|
|
344
281
|
}
|
|
345
282
|
#renderCreateForm() {
|
|
346
283
|
const creatableAdapters = this.#creatableAdapters;
|
|
@@ -408,16 +345,13 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
408
345
|
`;
|
|
409
346
|
}
|
|
410
347
|
#renderImportList() {
|
|
411
|
-
if (this._loadingImports)
|
|
412
|
-
return html`<div class="loading">Loading accounts...</div>
|
|
348
|
+
if (this._loadingImports) return html`<div class="loading">Loading accounts...</div>
|
|
413
349
|
<div class="actions">
|
|
414
350
|
<button class="btn btn-cancel" part="cancel-button" @click=${this.#handleCancel}>
|
|
415
351
|
Cancel
|
|
416
352
|
</button>
|
|
417
353
|
</div>`;
|
|
418
|
-
|
|
419
|
-
if (this._availableAccounts.length === 0) {
|
|
420
|
-
return html`<div class="empty-state">
|
|
354
|
+
if (this._availableAccounts.length === 0) return html`<div class="empty-state">
|
|
421
355
|
${this.#hasUnpairedImportableAdapters ? "Open the token URL from your terminal to connect CLI accounts." : "No accounts available to import"}
|
|
422
356
|
</div>
|
|
423
357
|
<div class="actions">
|
|
@@ -425,7 +359,6 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
425
359
|
Cancel
|
|
426
360
|
</button>
|
|
427
361
|
</div>`;
|
|
428
|
-
}
|
|
429
362
|
return html`
|
|
430
363
|
<div class="import-list">
|
|
431
364
|
${this._availableAccounts.map((account) => {
|
|
@@ -474,15 +407,13 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
474
407
|
const results = [];
|
|
475
408
|
for (const adapter of this.#importableAdapters) {
|
|
476
409
|
const accounts = await adapter.listAvailableAccounts();
|
|
477
|
-
for (const account of accounts) {
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
});
|
|
485
|
-
}
|
|
410
|
+
for (const account of accounts) results.push({
|
|
411
|
+
adapterId: adapter.id,
|
|
412
|
+
adapterName: adapter.name,
|
|
413
|
+
address: account.address,
|
|
414
|
+
scheme: account.scheme,
|
|
415
|
+
alias: "alias" in account ? account.alias : null
|
|
416
|
+
});
|
|
486
417
|
}
|
|
487
418
|
this._availableAccounts = results;
|
|
488
419
|
} catch (error) {
|
|
@@ -496,11 +427,8 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
496
427
|
this._error = null;
|
|
497
428
|
}
|
|
498
429
|
#handleKeydown(e) {
|
|
499
|
-
if (e.key === "Enter" && !this._creating)
|
|
500
|
-
|
|
501
|
-
} else if (e.key === "Escape") {
|
|
502
|
-
this.#close();
|
|
503
|
-
}
|
|
430
|
+
if (e.key === "Enter" && !this._creating) this.#handleCreate();
|
|
431
|
+
else if (e.key === "Escape") this.#close();
|
|
504
432
|
}
|
|
505
433
|
#handleCancel() {
|
|
506
434
|
this.#close();
|
|
@@ -514,9 +442,7 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
514
442
|
this._error = null;
|
|
515
443
|
try {
|
|
516
444
|
const options = {};
|
|
517
|
-
if (this._label.trim())
|
|
518
|
-
options.label = this._label.trim();
|
|
519
|
-
}
|
|
445
|
+
if (this._label.trim()) options.label = this._label.trim();
|
|
520
446
|
await adapter.createAccount(options);
|
|
521
447
|
this.#close();
|
|
522
448
|
emitEvent(this, "account-created");
|
|
@@ -553,7 +479,7 @@ let DevWalletNewAccount = class DevWalletNewAccount$1 extends LitElement {
|
|
|
553
479
|
this._selectedAdapterId = "";
|
|
554
480
|
this._error = null;
|
|
555
481
|
this._availableAccounts = [];
|
|
556
|
-
this._selectedImports = new Set();
|
|
482
|
+
this._selectedImports = /* @__PURE__ */ new Set();
|
|
557
483
|
this._mode = "create";
|
|
558
484
|
this._dropdownOpen = false;
|
|
559
485
|
emitEvent(this, "close");
|
|
@@ -571,7 +497,7 @@ __decorate([state()], DevWalletNewAccount.prototype, "_loadingImports", void 0);
|
|
|
571
497
|
__decorate([state()], DevWalletNewAccount.prototype, "_dropdownOpen", void 0);
|
|
572
498
|
__decorate([state()], DevWalletNewAccount.prototype, "_selectedImports", void 0);
|
|
573
499
|
DevWalletNewAccount = __decorate([customElement("dev-wallet-new-account")], DevWalletNewAccount);
|
|
574
|
-
|
|
575
500
|
//#endregion
|
|
576
501
|
export { DevWalletNewAccount };
|
|
502
|
+
|
|
577
503
|
//# sourceMappingURL=dev-wallet-new-account.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-wallet-new-account.mjs","names":["DevWalletNewAccount","#creatableAdapters","#importableAdapters","#hasUnpairedImportableAdapters","#loadAvailableAccounts","#handleDialogCancel","#renderCreateForm","#renderImportList","#close","#handleLabelInput","#handleKeydown","#handleCancel","#handleCreate","#toggleImportSelection","#handleImportSelected"],"sources":["../../src/ui/dev-wallet-new-account.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { SignerAdapter } from '../types.js';\nimport { actionButtonStyles, sharedStyles, stateStyles } from './styles.js';\nimport {\n\temitEvent,\n\tformatAddress,\n\tgetErrorMessage,\n\tisPairableAdapter,\n\ttoggleSetItem,\n} from './utils.js';\nimport './dev-wallet-dropdown.js';\n\ninterface AvailableAccount {\n\tadapterId: string;\n\tadapterName: string;\n\taddress: string;\n\tscheme: string;\n\talias?: string | null;\n}\n\n@customElement('dev-wallet-new-account')\nexport class DevWalletNewAccount extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tactionButtonStyles,\n\t\tstateStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\tdialog:not([open]) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\tdialog {\n\t\t\t\twidth: 320px;\n\t\t\t\tmax-width: calc(100vw - 32px);\n\t\t\t\tmax-height: min(420px, 80vh);\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xl);\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbox-shadow: var(--dev-wallet-shadow-lg);\n\t\t\t\tpadding: 20px;\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\n\t\t\tdialog::backdrop {\n\t\t\t\tbackground: color-mix(in oklab, oklch(0 0 0) 50%, transparent);\n\t\t\t}\n\n\t\t\t.dialog-title {\n\t\t\t\tfont-size: 16px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-semibold);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t}\n\n\t\t\t.tabs {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tpadding: 3px;\n\t\t\t}\n\n\t\t\t.tab {\n\t\t\t\tflex: 1;\n\t\t\t\tpadding: 6px 12px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttext-align: center;\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.tab.active {\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbox-shadow: var(--dev-wallet-shadow-sm);\n\t\t\t}\n\n\t\t\t.tab:not(.active):hover {\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.field {\n\t\t\t\tmargin-bottom: 12px;\n\t\t\t}\n\n\t\t\t.field-label {\n\t\t\t\tdisplay: block;\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tmargin-bottom: 4px;\n\t\t\t}\n\n\t\t\t.field-input {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\toutline: none;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t.field-input:focus {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t\toutline: 2px solid color-mix(in oklab, var(--dev-wallet-ring) 50%, transparent);\n\t\t\t\toutline-offset: -1px;\n\t\t\t}\n\n\t\t\t.select-trigger {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-align: left;\n\t\t\t}\n\n\t\t\t.select-trigger:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.select-trigger .chevron {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttransition: transform 0.15s;\n\t\t\t}\n\n\t\t\t.select-trigger.open .chevron {\n\t\t\t\ttransform: rotate(180deg);\n\t\t\t}\n\n\t\t\t.select-option {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbackground: transparent;\n\t\t\t\ttext-align: left;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition: background 0.1s;\n\t\t\t}\n\n\t\t\t.select-option:hover {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 15%, transparent);\n\t\t\t}\n\n\t\t\t.select-option.selected {\n\t\t\t\tcolor: var(--dev-wallet-primary);\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t}\n\n\t\t\t.import-list {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 4px;\n\t\t\t\toverflow-y: auto;\n\t\t\t\tmax-height: 240px;\n\t\t\t\tmin-height: 60px;\n\t\t\t}\n\n\t\t\t.import-item {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 10px;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: left;\n\t\t\t\ttransition: border-color 0.15s;\n\t\t\t}\n\n\t\t\t.import-item:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item.selected {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 10%, var(--dev-wallet-secondary));\n\t\t\t}\n\n\t\t\t.import-item:disabled {\n\t\t\t\topacity: 0.5;\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\n\t\t\t.import-checkbox {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tborder: 2px solid var(--dev-wallet-border);\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-primary-foreground);\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.import-checkbox.checked {\n\t\t\t\tbackground: var(--dev-wallet-primary);\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item-info {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.import-item-label {\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.import-item-address {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t\t.import-item-badge {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tpadding: 1px 6px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\ttext-transform: uppercase;\n\t\t\t\tletter-spacing: 0.3px;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.empty-state,\n\t\t\t.loading {\n\t\t\t\tpadding: 20px;\n\t\t\t}\n\n\t\t\t.actions {\n\t\t\t\tmargin-top: 16px;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tcolor: var(--dev-wallet-destructive);\n\t\t\t\tfont-size: 12px;\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\tadapters: SignerAdapter[] = [];\n\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@state()\n\tprivate _mode: 'create' | 'import' = 'create';\n\n\t@state()\n\tprivate _label = '';\n\n\t@state()\n\tprivate _selectedAdapterId = '';\n\n\t@state()\n\tprivate _creating = false;\n\n\t@state()\n\tprivate _error: string | null = null;\n\n\t@state()\n\tprivate _availableAccounts: AvailableAccount[] = [];\n\n\t@state()\n\tprivate _loadingImports = false;\n\n\t@state()\n\tprivate _dropdownOpen = false;\n\n\t@state()\n\tprivate _selectedImports = new Set<string>();\n\n\tget #creatableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter((a) => 'createAccount' in a && a.createAccount);\n\t}\n\n\tget #importableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\t// Skip adapters that require pairing but aren't paired yet\n\t\t\t\t(!isPairableAdapter(a) || a.isPaired),\n\t\t);\n\t}\n\n\tget #hasUnpairedImportableAdapters(): boolean {\n\t\treturn this.adapters.some(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\tisPairableAdapter(a) &&\n\t\t\t\t!a.isPaired,\n\t\t);\n\t}\n\n\toverride updated(changed: Map<string, unknown>) {\n\t\tif (changed.has('open')) {\n\t\t\tconst dialog = this.shadowRoot?.querySelector('dialog');\n\t\t\tif (this.open && dialog && !dialog.open) {\n\t\t\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\t\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\t\t\tif (canImport && !canCreate) {\n\t\t\t\t\tthis._mode = 'import';\n\t\t\t\t} else {\n\t\t\t\t\tthis._mode = 'create';\n\t\t\t\t}\n\t\t\t\tif (canImport) {\n\t\t\t\t\tthis.#loadAvailableAccounts();\n\t\t\t\t}\n\t\t\t\tdialog.showModal();\n\t\t\t} else if (!this.open && dialog?.open) {\n\t\t\t\tdialog.close();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\tconst showTabs = canCreate && canImport;\n\n\t\treturn html`\n\t\t\t<dialog part=\"dialog\" @cancel=${this.#handleDialogCancel}>\n\t\t\t\t<div class=\"dialog-title\">Add Account</div>\n\t\t\t\t${showTabs\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"tabs\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'create' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'create')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'import' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'import')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tImport\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t\t${this._mode === 'create' ? this.#renderCreateForm() : this.#renderImportList()}\n\t\t\t\t${this._error\n\t\t\t\t\t? html`<div class=\"error\" part=\"error-message\">${this._error}</div>`\n\t\t\t\t\t: nothing}\n\t\t\t</dialog>\n\t\t`;\n\t}\n\n\t#handleDialogCancel(e: Event) {\n\t\te.preventDefault();\n\t\tif (!this._creating) {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#renderCreateForm() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tconst showPicker = creatableAdapters.length > 1;\n\n\t\tconst selectedAdapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\n\t\treturn html`\n\t\t\t${showPicker\n\t\t\t\t? html`\n\t\t\t\t\t\t<div class=\"field\">\n\t\t\t\t\t\t\t<label class=\"field-label\">Type</label>\n\t\t\t\t\t\t\t<dev-wallet-dropdown\n\t\t\t\t\t\t\t\tfull-width\n\t\t\t\t\t\t\t\t.open=${this._dropdownOpen}\n\t\t\t\t\t\t\t\t@close=${() => (this._dropdownOpen = false)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\t\t\tclass=\"select-trigger ${this._dropdownOpen ? 'open' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._dropdownOpen = !this._dropdownOpen)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>${selectedAdapter?.name ?? 'Select...'}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"chevron\">▼</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t\t\t\t\t${creatableAdapters.map(\n\t\t\t\t\t\t\t\t\t\t(a) => html`\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"select-option ${a.id === (selectedAdapter?.id ?? '')\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._selectedAdapterId = a.id;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._dropdownOpen = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = null;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${a.name}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</dev-wallet-dropdown>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t: nothing}\n\t\t\t<div class=\"field\">\n\t\t\t\t<label class=\"field-label\">Label</label>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"field-input\"\n\t\t\t\t\tpart=\"label-input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"e.g. Test Account\"\n\t\t\t\t\t.value=${this._label}\n\t\t\t\t\t@input=${this.#handleLabelInput}\n\t\t\t\t\t@keydown=${this.#handleKeydown}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t@click=${this.#handleCreate}\n\t\t\t\t>\n\t\t\t\t\t${this._creating ? 'Creating...' : 'Create'}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#renderImportList() {\n\t\tif (this._loadingImports) {\n\t\t\treturn html`<div class=\"loading\">Loading accounts...</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\tif (this._availableAccounts.length === 0) {\n\t\t\treturn html`<div class=\"empty-state\">\n\t\t\t\t\t${this.#hasUnpairedImportableAdapters\n\t\t\t\t\t\t? 'Open the token URL from your terminal to connect CLI accounts.'\n\t\t\t\t\t\t: 'No accounts available to import'}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"import-list\">\n\t\t\t\t${this._availableAccounts.map((account) => {\n\t\t\t\t\tconst selected = this._selectedImports.has(account.address);\n\t\t\t\t\treturn html`\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"import-item ${selected ? 'selected' : ''}\"\n\t\t\t\t\t\t\trole=\"checkbox\"\n\t\t\t\t\t\t\taria-checked=\"${selected}\"\n\t\t\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t\t\t@click=${() => this.#toggleImportSelection(account.address)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"import-checkbox ${selected ? 'checked' : ''}\"\n\t\t\t\t\t\t\t\t>${selected ? '✓' : ''}</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"import-item-info\">\n\t\t\t\t\t\t\t\t<div class=\"import-item-label\">\n\t\t\t\t\t\t\t\t\t${account.alias || formatAddress(account.address)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"import-item-address\">${formatAddress(account.address)}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"import-item-badge\">${account.scheme}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t`;\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating || this._selectedImports.size === 0}\n\t\t\t\t\t@click=${this.#handleImportSelected}\n\t\t\t\t>\n\t\t\t\t\t${this._creating\n\t\t\t\t\t\t? 'Importing...'\n\t\t\t\t\t\t: `Import${this._selectedImports.size > 0 ? ` (${this._selectedImports.size})` : ''}`}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync #loadAvailableAccounts() {\n\t\tthis._loadingImports = true;\n\t\tthis._availableAccounts = [];\n\n\t\ttry {\n\t\t\tconst results: AvailableAccount[] = [];\n\t\t\tfor (const adapter of this.#importableAdapters) {\n\t\t\t\tconst accounts = await adapter.listAvailableAccounts!();\n\t\t\t\tfor (const account of accounts) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tadapterId: adapter.id,\n\t\t\t\t\t\tadapterName: adapter.name,\n\t\t\t\t\t\taddress: account.address,\n\t\t\t\t\t\tscheme: account.scheme,\n\t\t\t\t\t\talias: 'alias' in account ? (account.alias as string | null) : null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._availableAccounts = results;\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to load accounts');\n\t\t} finally {\n\t\t\tthis._loadingImports = false;\n\t\t}\n\t}\n\n\t#handleLabelInput(e: InputEvent) {\n\t\tthis._label = (e.target as HTMLInputElement).value;\n\t\tthis._error = null;\n\t}\n\n\t#handleKeydown(e: KeyboardEvent) {\n\t\tif (e.key === 'Enter' && !this._creating) {\n\t\t\tthis.#handleCreate();\n\t\t} else if (e.key === 'Escape') {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#handleCancel() {\n\t\tthis.#close();\n\t}\n\n\tasync #handleCreate() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tif (creatableAdapters.length === 0) return;\n\n\t\tconst adapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\t\tif (!adapter?.createAccount) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tconst options: Record<string, unknown> = {};\n\t\t\tif (this._label.trim()) {\n\t\t\t\toptions.label = this._label.trim();\n\t\t\t}\n\t\t\tawait adapter.createAccount(options);\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to create account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#toggleImportSelection(address: string) {\n\t\tthis._selectedImports = toggleSetItem(this._selectedImports, address);\n\t}\n\n\tasync #handleImportSelected() {\n\t\tconst selected = this._availableAccounts.filter((a) => this._selectedImports.has(a.address));\n\t\tif (selected.length === 0) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tfor (const account of selected) {\n\t\t\t\tconst adapter = this.#importableAdapters.find((a) => a.id === account.adapterId);\n\t\t\t\tif (!adapter?.importAccount) continue;\n\t\t\t\tawait adapter.importAccount({ address: account.address });\n\t\t\t}\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to import account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#close() {\n\t\tthis._label = '';\n\t\tthis._selectedAdapterId = '';\n\t\tthis._error = null;\n\t\tthis._availableAccounts = [];\n\t\tthis._selectedImports = new Set();\n\t\tthis._mode = 'create';\n\t\tthis._dropdownOpen = false;\n\t\t// Don't mutate `this.open` — let the parent control it via the `close` event\n\t\temitEvent(this, 'close');\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-new-account': DevWalletNewAccount;\n\t}\n}\n"],"mappings":";;;;;;;;AA0BO,gCAAMA,8BAA4B,WAAW;;;kBAmQvB,EAAE;cAGvB;eAG8B;gBAGpB;4BAGY;mBAGT;gBAGY;4BAGiB,EAAE;yBAGzB;uBAGF;0BAGG,IAAI,KAAa;;;gBAhSnB;GACxB;GACA;GACA;GACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2PH;;CAmCD,KAAIC,oBAAsC;AACzC,SAAO,KAAK,SAAS,QAAQ,MAAM,mBAAmB,KAAK,EAAE,cAAc;;CAG5E,KAAIC,qBAAuC;AAC1C,SAAO,KAAK,SAAS,QACnB,MACA,mBAAmB,KACnB,EAAE,iBACF,2BAA2B,KAC3B,EAAE,0BAED,CAAC,kBAAkB,EAAE,IAAI,EAAE,UAC7B;;CAGF,KAAIC,gCAA0C;AAC7C,SAAO,KAAK,SAAS,MACnB,MACA,mBAAmB,KACnB,EAAE,iBACF,2BAA2B,KAC3B,EAAE,yBACF,kBAAkB,EAAE,IACpB,CAAC,EAAE,SACJ;;CAGF,AAAS,QAAQ,SAA+B;AAC/C,MAAI,QAAQ,IAAI,OAAO,EAAE;GACxB,MAAM,SAAS,KAAK,YAAY,cAAc,SAAS;AACvD,OAAI,KAAK,QAAQ,UAAU,CAAC,OAAO,MAAM;IACxC,MAAM,YAAY,MAAKF,kBAAmB,SAAS;IACnD,MAAM,YAAY,MAAKC,mBAAoB,SAAS;AACpD,QAAI,aAAa,CAAC,WAAW;AAC5B,UAAK,QAAQ;WACP;AACN,UAAK,QAAQ;;AAEd,QAAI,WAAW;AACd,WAAKE,uBAAwB;;AAE9B,WAAO,WAAW;cACR,CAAC,KAAK,QAAQ,QAAQ,MAAM;AACtC,WAAO,OAAO;;;;CAKjB,AAAS,SAAS;EACjB,MAAM,YAAY,MAAKH,kBAAmB,SAAS;EACnD,MAAM,YAAY,MAAKC,mBAAoB,SAAS;EACpD,MAAM,WAAW,aAAa;AAE9B,SAAO,IAAI;mCACsB,MAAKG,mBAAoB;;MAEtD,WACC,IAAI;;;sBAGW,KAAK,UAAU,WAAW,WAAW,GAAG;wBACrC,KAAK,QAAQ,SAAU;;;;;sBAK1B,KAAK,UAAU,WAAW,WAAW,GAAG;wBACrC,KAAK,QAAQ,SAAU;;;;;UAMzC,QAAQ;MACT,KAAK,UAAU,WAAW,MAAKC,kBAAmB,GAAG,MAAKC,kBAAmB,CAAC;MAC9E,KAAK,SACJ,IAAI,2CAA2C,KAAK,OAAO,UAC3D,QAAQ;;;;CAKd,oBAAoB,GAAU;AAC7B,IAAE,gBAAgB;AAClB,MAAI,CAAC,KAAK,WAAW;AACpB,SAAKC,OAAQ;;;CAIf,oBAAoB;EACnB,MAAM,oBAAoB,MAAKP;EAC/B,MAAM,aAAa,kBAAkB,SAAS;EAE9C,MAAM,kBACL,kBAAkB,MAAM,MAAM,EAAE,OAAO,KAAK,mBAAmB,IAAI,kBAAkB;AAEtF,SAAO,IAAI;KACR,aACC,IAAI;;;;;gBAKM,KAAK,cAAc;uBACX,KAAK,gBAAgB,MAAO;;;;iCAInB,KAAK,gBAAgB,SAAS,GAAG;wBACzC,KAAK,gBAAgB,CAAC,KAAK,cAAe;;iBAElD,iBAAiB,QAAQ,YAAY;;;;WAI3C,kBAAkB,KAClB,MAAM,IAAI;;mCAEc,EAAE,QAAQ,iBAAiB,MAAM,MACrD,aACA,GAAG;2BACS;AACd,QAAK,qBAAqB,EAAE;AAC5B,QAAK,gBAAgB;AACrB,QAAK,SAAS;IACb;;cAEA,EAAE,KAAK;;YAGX,CAAC;;;;SAKL,QAAQ;;;;;;;;cAQA,KAAK,OAAO;cACZ,MAAKQ,iBAAkB;gBACrB,MAAKC,cAAe;;;;iEAI6B,MAAKC,aAAc;;;;;;iBAMnE,KAAK,UAAU;cAClB,MAAKC,aAAc;;OAE1B,KAAK,YAAY,gBAAgB,SAAS;;;;;CAMhD,oBAAoB;AACnB,MAAI,KAAK,iBAAiB;AACzB,UAAO,IAAI;;kEAEoD,MAAKD,aAAc;;;;;AAMnF,MAAI,KAAK,mBAAmB,WAAW,GAAG;AACzC,UAAO,IAAI;OACP,MAAKR,gCACJ,mEACA,kCAAkC;;;kEAGwB,MAAKQ,aAAc;;;;;AAMnF,SAAO,IAAI;;MAEP,KAAK,mBAAmB,KAAK,YAAY;GAC1C,MAAM,WAAW,KAAK,iBAAiB,IAAI,QAAQ,QAAQ;AAC3D,UAAO,IAAI;;4BAEY,WAAW,aAAa,GAAG;;uBAEhC,SAAS;mBACb,KAAK,UAAU;sBACZ,MAAKE,sBAAuB,QAAQ,QAAQ,CAAC;;sCAE7B,WAAW,YAAY,GAAG;WACrD,WAAW,MAAM,GAAG;;;;WAIpB,QAAQ,SAAS,cAAc,QAAQ,QAAQ,CAAC;;2CAEhB,cAAc,QAAQ,QAAQ,CAAC;;yCAEjC,QAAQ,OAAO;;;IAGlD,CAAC;;;iEAG0D,MAAKF,aAAc;;;;;;iBAMnE,KAAK,aAAa,KAAK,iBAAiB,SAAS,EAAE;cACtD,MAAKG,qBAAsB;;OAElC,KAAK,YACJ,iBACA,SAAS,KAAK,iBAAiB,OAAO,IAAI,KAAK,KAAK,iBAAiB,KAAK,KAAK,KAAK;;;;;CAM3F,OAAMV,wBAAyB;AAC9B,OAAK,kBAAkB;AACvB,OAAK,qBAAqB,EAAE;AAE5B,MAAI;GACH,MAAM,UAA8B,EAAE;AACtC,QAAK,MAAM,WAAW,MAAKF,oBAAqB;IAC/C,MAAM,WAAW,MAAM,QAAQ,uBAAwB;AACvD,SAAK,MAAM,WAAW,UAAU;AAC/B,aAAQ,KAAK;MACZ,WAAW,QAAQ;MACnB,aAAa,QAAQ;MACrB,SAAS,QAAQ;MACjB,QAAQ,QAAQ;MAChB,OAAO,WAAW,UAAW,QAAQ,QAA0B;MAC/D,CAAC;;;AAGJ,QAAK,qBAAqB;WAClB,OAAO;AACf,QAAK,SAAS,gBAAgB,OAAO,0BAA0B;YACtD;AACT,QAAK,kBAAkB;;;CAIzB,kBAAkB,GAAe;AAChC,OAAK,SAAU,EAAE,OAA4B;AAC7C,OAAK,SAAS;;CAGf,eAAe,GAAkB;AAChC,MAAI,EAAE,QAAQ,WAAW,CAAC,KAAK,WAAW;AACzC,SAAKU,cAAe;aACV,EAAE,QAAQ,UAAU;AAC9B,SAAKJ,OAAQ;;;CAIf,gBAAgB;AACf,QAAKA,OAAQ;;CAGd,OAAMI,eAAgB;EACrB,MAAM,oBAAoB,MAAKX;AAC/B,MAAI,kBAAkB,WAAW,EAAG;EAEpC,MAAM,UACL,kBAAkB,MAAM,MAAM,EAAE,OAAO,KAAK,mBAAmB,IAAI,kBAAkB;AACtF,MAAI,CAAC,SAAS,cAAe;AAE7B,OAAK,YAAY;AACjB,OAAK,SAAS;AAEd,MAAI;GACH,MAAM,UAAmC,EAAE;AAC3C,OAAI,KAAK,OAAO,MAAM,EAAE;AACvB,YAAQ,QAAQ,KAAK,OAAO,MAAM;;AAEnC,SAAM,QAAQ,cAAc,QAAQ;AACpC,SAAKO,OAAQ;AACb,aAAU,MAAM,kBAAkB;WAC1B,OAAO;AACf,QAAK,SAAS,gBAAgB,OAAO,2BAA2B;YACvD;AACT,QAAK,YAAY;;;CAInB,uBAAuB,SAAiB;AACvC,OAAK,mBAAmB,cAAc,KAAK,kBAAkB,QAAQ;;CAGtE,OAAMM,uBAAwB;EAC7B,MAAM,WAAW,KAAK,mBAAmB,QAAQ,MAAM,KAAK,iBAAiB,IAAI,EAAE,QAAQ,CAAC;AAC5F,MAAI,SAAS,WAAW,EAAG;AAE3B,OAAK,YAAY;AACjB,OAAK,SAAS;AAEd,MAAI;AACH,QAAK,MAAM,WAAW,UAAU;IAC/B,MAAM,UAAU,MAAKZ,mBAAoB,MAAM,MAAM,EAAE,OAAO,QAAQ,UAAU;AAChF,QAAI,CAAC,SAAS,cAAe;AAC7B,UAAM,QAAQ,cAAc,EAAE,SAAS,QAAQ,SAAS,CAAC;;AAE1D,SAAKM,OAAQ;AACb,aAAU,MAAM,kBAAkB;WAC1B,OAAO;AACf,QAAK,SAAS,gBAAgB,OAAO,2BAA2B;YACvD;AACT,QAAK,YAAY;;;CAInB,SAAS;AACR,OAAK,SAAS;AACd,OAAK,qBAAqB;AAC1B,OAAK,SAAS;AACd,OAAK,qBAAqB,EAAE;AAC5B,OAAK,mBAAmB,IAAI,KAAK;AACjC,OAAK,QAAQ;AACb,OAAK,gBAAgB;AAErB,YAAU,MAAM,QAAQ;;;YAjXxB,SAAS,EAAE,WAAW,OAAO,CAAC;YAG9B,SAAS,EAAE,MAAM,SAAS,CAAC;YAG3B,OAAO;YAGP,OAAO;YAGP,OAAO;YAGP,OAAO;YAGP,OAAO;YAGP,OAAO;YAGP,OAAO;YAGP,OAAO;YAGP,OAAO;kCAjSR,cAAc,yBAAyB"}
|
|
1
|
+
{"version":3,"file":"dev-wallet-new-account.mjs","names":["#creatableAdapters","#importableAdapters","#hasUnpairedImportableAdapters","#loadAvailableAccounts","#handleDialogCancel","#renderCreateForm","#renderImportList","#close","#handleLabelInput","#handleKeydown","#handleCancel","#handleCreate","#toggleImportSelection","#handleImportSelected"],"sources":["../../src/ui/dev-wallet-new-account.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { SignerAdapter } from '../types.js';\nimport {\n\tactionButtonStyles,\n\tbadgeStyles,\n\tcardItemStyles,\n\tdialogStyles,\n\tformInputStyles,\n\tinlineErrorStyles,\n\tlistContainerStyles,\n\tmonoTruncateStyles,\n\tsharedStyles,\n\tsubLabelStyles,\n\tstateStyles,\n} from './styles.js';\nimport {\n\temitEvent,\n\tformatAddress,\n\tgetErrorMessage,\n\tisPairableAdapter,\n\ttoggleSetItem,\n} from './utils.js';\nimport './dev-wallet-dropdown.js';\n\ninterface AvailableAccount {\n\tadapterId: string;\n\tadapterName: string;\n\taddress: string;\n\tscheme: string;\n\talias?: string | null;\n}\n\n@customElement('dev-wallet-new-account')\nexport class DevWalletNewAccount extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tactionButtonStyles,\n\t\tstateStyles,\n\t\tdialogStyles,\n\t\tcardItemStyles,\n\t\tlistContainerStyles,\n\t\tformInputStyles,\n\t\tmonoTruncateStyles,\n\t\tbadgeStyles,\n\t\tinlineErrorStyles,\n\t\tsubLabelStyles,\n\t\tcss`\n\t\t\tdialog {\n\t\t\t\twidth: 320px;\n\t\t\t\tmax-height: min(420px, 80vh);\n\t\t\t\tpadding: 20px;\n\t\t\t}\n\n\t\t\t.tabs {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 4px;\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tpadding: 3px;\n\t\t\t}\n\n\t\t\t.tab {\n\t\t\t\tflex: 1;\n\t\t\t\tpadding: 6px 12px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tfont-size: 12px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttext-align: center;\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.tab.active {\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbox-shadow: var(--dev-wallet-shadow-sm);\n\t\t\t}\n\n\t\t\t.tab:not(.active):hover {\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.field {\n\t\t\t\tmargin-bottom: 12px;\n\t\t\t}\n\n\t\t\t.field-input {\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tfont-size: 14px;\n\t\t\t}\n\n\t\t\t.field-input:focus {\n\t\t\t\toutline: 2px solid color-mix(in oklab, var(--dev-wallet-ring) 50%, transparent);\n\t\t\t\toutline-offset: -1px;\n\t\t\t}\n\n\t\t\t.select-trigger {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\n\t\t\t\tborder: 1px solid var(--dev-wallet-input);\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttext-align: left;\n\t\t\t}\n\n\t\t\t.select-trigger:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.select-trigger .chevron {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\ttransition: transform 0.15s;\n\t\t\t}\n\n\t\t\t.select-trigger.open .chevron {\n\t\t\t\ttransform: rotate(180deg);\n\t\t\t}\n\n\t\t\t.select-option {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\tfont-size: 14px;\n\t\t\t\tfont-family: inherit;\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t\tbackground: transparent;\n\t\t\t\ttext-align: left;\n\t\t\t\tcursor: pointer;\n\t\t\t\ttransition: background 0.1s;\n\t\t\t}\n\n\t\t\t.select-option:hover {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 15%, transparent);\n\t\t\t}\n\n\t\t\t.select-option.selected {\n\t\t\t\tcolor: var(--dev-wallet-primary);\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t}\n\n\t\t\t.import-list {\n\t\t\t\toverflow-y: auto;\n\t\t\t\tmax-height: 240px;\n\t\t\t\tmin-height: 60px;\n\t\t\t}\n\n\t\t\t.import-item {\n\t\t\t\tgap: 10px;\n\t\t\t\tpadding: 8px 10px;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-align: left;\n\t\t\t\ttransition: border-color 0.15s;\n\t\t\t}\n\n\t\t\t.import-item:hover {\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item.selected {\n\t\t\t\tbackground: color-mix(in oklab, var(--dev-wallet-primary) 10%, var(--dev-wallet-secondary));\n\t\t\t}\n\n\t\t\t.import-item:disabled {\n\t\t\t\topacity: 0.5;\n\t\t\t\tcursor: not-allowed;\n\t\t\t}\n\n\t\t\t.import-checkbox {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tborder: 2px solid var(--dev-wallet-border);\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-primary-foreground);\n\t\t\t\ttransition: all 0.15s;\n\t\t\t}\n\n\t\t\t.import-checkbox.checked {\n\t\t\t\tbackground: var(--dev-wallet-primary);\n\t\t\t\tborder-color: var(--dev-wallet-primary);\n\t\t\t}\n\n\t\t\t.import-item-info {\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.import-item-label {\n\t\t\t\tfont-size: 13px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-medium);\n\t\t\t\tcolor: var(--dev-wallet-foreground);\n\t\t\t}\n\n\t\t\t.import-item-address {\n\t\t\t\tfont-size: 11px;\n\t\t\t}\n\n\t\t\t.import-item-badge {\n\t\t\t\tpadding: 1px 6px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tbackground: var(--dev-wallet-background);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tletter-spacing: 0.3px;\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.empty-state,\n\t\t\t.loading {\n\t\t\t\tpadding: 20px;\n\t\t\t}\n\n\t\t\t.actions {\n\t\t\t\tmargin-top: 16px;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tmargin-top: 8px;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\tadapters: SignerAdapter[] = [];\n\n\t@property({ type: Boolean })\n\topen = false;\n\n\t@state()\n\tprivate _mode: 'create' | 'import' = 'create';\n\n\t@state()\n\tprivate _label = '';\n\n\t@state()\n\tprivate _selectedAdapterId = '';\n\n\t@state()\n\tprivate _creating = false;\n\n\t@state()\n\tprivate _error: string | null = null;\n\n\t@state()\n\tprivate _availableAccounts: AvailableAccount[] = [];\n\n\t@state()\n\tprivate _loadingImports = false;\n\n\t@state()\n\tprivate _dropdownOpen = false;\n\n\t@state()\n\tprivate _selectedImports = new Set<string>();\n\n\tget #creatableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter((a) => 'createAccount' in a && a.createAccount);\n\t}\n\n\tget #importableAdapters(): SignerAdapter[] {\n\t\treturn this.adapters.filter(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\t// Skip adapters that require pairing but aren't paired yet\n\t\t\t\t(!isPairableAdapter(a) || a.isPaired),\n\t\t);\n\t}\n\n\tget #hasUnpairedImportableAdapters(): boolean {\n\t\treturn this.adapters.some(\n\t\t\t(a) =>\n\t\t\t\t'importAccount' in a &&\n\t\t\t\ta.importAccount &&\n\t\t\t\t'listAvailableAccounts' in a &&\n\t\t\t\ta.listAvailableAccounts &&\n\t\t\t\tisPairableAdapter(a) &&\n\t\t\t\t!a.isPaired,\n\t\t);\n\t}\n\n\toverride updated(changed: Map<string, unknown>) {\n\t\tif (changed.has('open')) {\n\t\t\tconst dialog = this.shadowRoot?.querySelector('dialog');\n\t\t\tif (this.open && dialog && !dialog.open) {\n\t\t\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\t\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\t\t\tif (canImport && !canCreate) {\n\t\t\t\t\tthis._mode = 'import';\n\t\t\t\t} else {\n\t\t\t\t\tthis._mode = 'create';\n\t\t\t\t}\n\t\t\t\tif (canImport) {\n\t\t\t\t\tthis.#loadAvailableAccounts();\n\t\t\t\t}\n\t\t\t\tdialog.showModal();\n\t\t\t} else if (!this.open && dialog?.open) {\n\t\t\t\tdialog.close();\n\t\t\t}\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst canCreate = this.#creatableAdapters.length > 0;\n\t\tconst canImport = this.#importableAdapters.length > 0;\n\t\tconst showTabs = canCreate && canImport;\n\n\t\treturn html`\n\t\t\t<dialog part=\"dialog\" @cancel=${this.#handleDialogCancel}>\n\t\t\t\t<div class=\"dialog-title\">Add Account</div>\n\t\t\t\t${showTabs\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"tabs\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'create' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'create')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tCreate\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"tab ${this._mode === 'import' ? 'active' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._mode = 'import')}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tImport\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: nothing}\n\t\t\t\t${this._mode === 'create' ? this.#renderCreateForm() : this.#renderImportList()}\n\t\t\t\t${this._error\n\t\t\t\t\t? html`<div class=\"error\" part=\"error-message\">${this._error}</div>`\n\t\t\t\t\t: nothing}\n\t\t\t</dialog>\n\t\t`;\n\t}\n\n\t#handleDialogCancel(e: Event) {\n\t\te.preventDefault();\n\t\tif (!this._creating) {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#renderCreateForm() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tconst showPicker = creatableAdapters.length > 1;\n\n\t\tconst selectedAdapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\n\t\treturn html`\n\t\t\t${showPicker\n\t\t\t\t? html`\n\t\t\t\t\t\t<div class=\"field\">\n\t\t\t\t\t\t\t<label class=\"field-label\">Type</label>\n\t\t\t\t\t\t\t<dev-wallet-dropdown\n\t\t\t\t\t\t\t\tfull-width\n\t\t\t\t\t\t\t\t.open=${this._dropdownOpen}\n\t\t\t\t\t\t\t\t@close=${() => (this._dropdownOpen = false)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\t\t\t\tclass=\"select-trigger ${this._dropdownOpen ? 'open' : ''}\"\n\t\t\t\t\t\t\t\t\t@click=${() => (this._dropdownOpen = !this._dropdownOpen)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>${selectedAdapter?.name ?? 'Select...'}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"chevron\">▼</span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<div slot=\"popover\">\n\t\t\t\t\t\t\t\t\t${creatableAdapters.map(\n\t\t\t\t\t\t\t\t\t\t(a) => html`\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"select-option ${a.id === (selectedAdapter?.id ?? '')\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._selectedAdapterId = a.id;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._dropdownOpen = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = null;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${a.name}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</dev-wallet-dropdown>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t: nothing}\n\t\t\t<div class=\"field\">\n\t\t\t\t<label class=\"field-label\">Label</label>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"field-input\"\n\t\t\t\t\tpart=\"label-input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"e.g. Test Account\"\n\t\t\t\t\t.value=${this._label}\n\t\t\t\t\t@input=${this.#handleLabelInput}\n\t\t\t\t\t@keydown=${this.#handleKeydown}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t@click=${this.#handleCreate}\n\t\t\t\t>\n\t\t\t\t\t${this._creating ? 'Creating...' : 'Create'}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t#renderImportList() {\n\t\tif (this._loadingImports) {\n\t\t\treturn html`<div class=\"loading\">Loading accounts...</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\tif (this._availableAccounts.length === 0) {\n\t\t\treturn html`<div class=\"empty-state\">\n\t\t\t\t\t${this.#hasUnpairedImportableAdapters\n\t\t\t\t\t\t? 'Open the token URL from your terminal to connect CLI accounts.'\n\t\t\t\t\t\t: 'No accounts available to import'}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</button>\n\t\t\t\t</div>`;\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"import-list\">\n\t\t\t\t${this._availableAccounts.map((account) => {\n\t\t\t\t\tconst selected = this._selectedImports.has(account.address);\n\t\t\t\t\treturn html`\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"import-item ${selected ? 'selected' : ''}\"\n\t\t\t\t\t\t\trole=\"checkbox\"\n\t\t\t\t\t\t\taria-checked=\"${selected}\"\n\t\t\t\t\t\t\t?disabled=${this._creating}\n\t\t\t\t\t\t\t@click=${() => this.#toggleImportSelection(account.address)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"import-checkbox ${selected ? 'checked' : ''}\"\n\t\t\t\t\t\t\t\t>${selected ? '✓' : ''}</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"import-item-info\">\n\t\t\t\t\t\t\t\t<div class=\"import-item-label\">\n\t\t\t\t\t\t\t\t\t${account.alias || formatAddress(account.address)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"import-item-address\">${formatAddress(account.address)}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"import-item-badge\">${account.scheme}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t`;\n\t\t\t\t})}\n\t\t\t</div>\n\t\t\t<div class=\"actions\">\n\t\t\t\t<button class=\"btn btn-cancel\" part=\"cancel-button\" @click=${this.#handleCancel}>\n\t\t\t\t\tCancel\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"btn btn-create\"\n\t\t\t\t\tpart=\"create-button\"\n\t\t\t\t\t?disabled=${this._creating || this._selectedImports.size === 0}\n\t\t\t\t\t@click=${this.#handleImportSelected}\n\t\t\t\t>\n\t\t\t\t\t${this._creating\n\t\t\t\t\t\t? 'Importing...'\n\t\t\t\t\t\t: `Import${this._selectedImports.size > 0 ? ` (${this._selectedImports.size})` : ''}`}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\tasync #loadAvailableAccounts() {\n\t\tthis._loadingImports = true;\n\t\tthis._availableAccounts = [];\n\n\t\ttry {\n\t\t\tconst results: AvailableAccount[] = [];\n\t\t\tfor (const adapter of this.#importableAdapters) {\n\t\t\t\tconst accounts = await adapter.listAvailableAccounts!();\n\t\t\t\tfor (const account of accounts) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tadapterId: adapter.id,\n\t\t\t\t\t\tadapterName: adapter.name,\n\t\t\t\t\t\taddress: account.address,\n\t\t\t\t\t\tscheme: account.scheme,\n\t\t\t\t\t\talias: 'alias' in account ? (account.alias as string | null) : null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._availableAccounts = results;\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to load accounts');\n\t\t} finally {\n\t\t\tthis._loadingImports = false;\n\t\t}\n\t}\n\n\t#handleLabelInput(e: InputEvent) {\n\t\tthis._label = (e.target as HTMLInputElement).value;\n\t\tthis._error = null;\n\t}\n\n\t#handleKeydown(e: KeyboardEvent) {\n\t\tif (e.key === 'Enter' && !this._creating) {\n\t\t\tthis.#handleCreate();\n\t\t} else if (e.key === 'Escape') {\n\t\t\tthis.#close();\n\t\t}\n\t}\n\n\t#handleCancel() {\n\t\tthis.#close();\n\t}\n\n\tasync #handleCreate() {\n\t\tconst creatableAdapters = this.#creatableAdapters;\n\t\tif (creatableAdapters.length === 0) return;\n\n\t\tconst adapter =\n\t\t\tcreatableAdapters.find((a) => a.id === this._selectedAdapterId) ?? creatableAdapters[0];\n\t\tif (!adapter?.createAccount) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tconst options: Record<string, unknown> = {};\n\t\t\tif (this._label.trim()) {\n\t\t\t\toptions.label = this._label.trim();\n\t\t\t}\n\t\t\tawait adapter.createAccount(options);\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to create account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#toggleImportSelection(address: string) {\n\t\tthis._selectedImports = toggleSetItem(this._selectedImports, address);\n\t}\n\n\tasync #handleImportSelected() {\n\t\tconst selected = this._availableAccounts.filter((a) => this._selectedImports.has(a.address));\n\t\tif (selected.length === 0) return;\n\n\t\tthis._creating = true;\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tfor (const account of selected) {\n\t\t\t\tconst adapter = this.#importableAdapters.find((a) => a.id === account.adapterId);\n\t\t\t\tif (!adapter?.importAccount) continue;\n\t\t\t\tawait adapter.importAccount({ address: account.address });\n\t\t\t}\n\t\t\tthis.#close();\n\t\t\temitEvent(this, 'account-created');\n\t\t} catch (error) {\n\t\t\tthis._error = getErrorMessage(error, 'Failed to import account');\n\t\t} finally {\n\t\t\tthis._creating = false;\n\t\t}\n\t}\n\n\t#close() {\n\t\tthis._label = '';\n\t\tthis._selectedAdapterId = '';\n\t\tthis._error = null;\n\t\tthis._availableAccounts = [];\n\t\tthis._selectedImports = new Set();\n\t\tthis._mode = 'create';\n\t\tthis._dropdownOpen = false;\n\t\t// Don't mutate `this.open` — let the parent control it via the `close` event\n\t\temitEvent(this, 'close');\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-new-account': DevWalletNewAccount;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _$lit from "lit";
|
|
2
2
|
import { LitElement, nothing } from "lit";
|
|
3
3
|
import { ClientWithCoreApi } from "@mysten/sui/client";
|
|
4
4
|
|
|
5
5
|
//#region src/ui/dev-wallet-objects.d.ts
|
|
6
6
|
declare class DevWalletObjects extends LitElement {
|
|
7
7
|
#private;
|
|
8
|
-
static styles: (
|
|
8
|
+
static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
|
|
9
9
|
address: string;
|
|
10
10
|
client: ClientWithCoreApi | null;
|
|
11
11
|
private _objects;
|
|
@@ -14,7 +14,7 @@ declare class DevWalletObjects extends LitElement {
|
|
|
14
14
|
private _error;
|
|
15
15
|
private _hasNextPage;
|
|
16
16
|
willUpdate(changedProperties: Map<string, unknown>): void;
|
|
17
|
-
render():
|
|
17
|
+
render(): _$lit.TemplateResult<1> | typeof nothing;
|
|
18
18
|
}
|
|
19
19
|
declare global {
|
|
20
20
|
interface HTMLElementTagNameMap {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-wallet-objects.d.mts","names":[],"sources":["../../src/ui/dev-wallet-objects.ts"],"mappings":";;;;;cAsBa,gBAAA,SAAyB,UAAA;EAAA;SACrB,MAAA,GADa,KAAA,CACP,SAAA,GAAA,KAAA,CAAA,SAAA;
|
|
1
|
+
{"version":3,"file":"dev-wallet-objects.d.mts","names":[],"sources":["../../src/ui/dev-wallet-objects.ts"],"mappings":";;;;;cAsBa,gBAAA,SAAyB,UAAA;EAAA;SACrB,MAAA,GADa,KAAA,CACP,SAAA,GAAA,KAAA,CAAA,SAAA;EAgKtB,OAAA;EAGA,MAAA,EAAQ,iBAAA;EAAA,QAGA,QAAA;EAAA,QAGA,QAAA;EAAA,QAGA,YAAA;EAAA,QAGA,MAAA;EAAA,QAGA,YAAA;EAQC,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAW9B,MAAA,CAAA,GAXiC,KAAA,CAW3B,cAAA,aAAA,OAAA;AAAA;AAAA,QAuJR,MAAA;EAAA,UACG,qBAAA;IACT,oBAAA,EAAsB,gBAAA;EAAA;AAAA"}
|