@mysten-incubation/dev-wallet 0.0.0 → 0.2.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 +32 -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 +12 -0
- package/dist/adapters/devstack-paths.d.mts.map +1 -0
- package/dist/adapters/devstack-paths.mjs +12 -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 +125 -123
- package/src/adapters/browser.ts +21 -0
- package/src/adapters/devstack-adapter.ts +342 -0
- package/src/adapters/devstack-paths.ts +16 -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 { sectionHeaderStyles, sharedStyles, stateStyles } from "./styles.mjs";
|
|
2
2
|
import { getTypeName, isCoinType } from "./utils.mjs";
|
|
3
3
|
import { CopyController } from "./copy-controller.mjs";
|
|
4
|
-
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.
|
|
4
|
+
import { __decorate } from "../_virtual/_@oxc-project_runtime@0.127.0/helpers/decorate.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-objects.ts
|
|
9
|
-
let DevWalletObjects = class DevWalletObjects
|
|
8
|
+
let DevWalletObjects = class DevWalletObjects extends LitElement {
|
|
10
9
|
constructor(..._args) {
|
|
11
10
|
super(..._args);
|
|
12
11
|
this.address = "";
|
|
@@ -16,6 +15,11 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
16
15
|
this._loadingMore = false;
|
|
17
16
|
this._error = null;
|
|
18
17
|
this._hasNextPage = false;
|
|
18
|
+
this.#copy = new CopyController(this);
|
|
19
|
+
this.#cursor = null;
|
|
20
|
+
this.#lastFetchedAddress = "";
|
|
21
|
+
this.#lastFetchedClient = null;
|
|
22
|
+
this.#fetchGeneration = 0;
|
|
19
23
|
}
|
|
20
24
|
static {
|
|
21
25
|
this.styles = [
|
|
@@ -28,29 +32,54 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
.object-list {
|
|
31
|
-
display:
|
|
32
|
-
|
|
33
|
-
gap:
|
|
35
|
+
display: grid;
|
|
36
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
37
|
+
gap: 8px;
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
.object-item {
|
|
37
41
|
display: flex;
|
|
38
42
|
gap: 10px;
|
|
39
|
-
padding: 10px
|
|
40
|
-
border-radius: var(--dev-wallet-radius-
|
|
43
|
+
padding: 10px;
|
|
44
|
+
border-radius: var(--dev-wallet-radius-lg);
|
|
41
45
|
border: 1px solid var(--dev-wallet-border);
|
|
42
|
-
background: var(--dev-wallet-
|
|
46
|
+
background: var(--dev-wallet-surface);
|
|
43
47
|
align-items: flex-start;
|
|
48
|
+
min-width: 0;
|
|
49
|
+
transition:
|
|
50
|
+
background 120ms,
|
|
51
|
+
border-color 120ms;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.object-item:hover {
|
|
55
|
+
background: var(--dev-wallet-bg-hover);
|
|
56
|
+
border-color: var(--dev-wallet-border-strong);
|
|
44
57
|
}
|
|
45
58
|
|
|
46
59
|
.object-thumb {
|
|
47
|
-
width:
|
|
48
|
-
height:
|
|
60
|
+
width: 28px;
|
|
61
|
+
height: 28px;
|
|
49
62
|
border-radius: var(--dev-wallet-radius-xs);
|
|
50
63
|
object-fit: cover;
|
|
51
64
|
flex-shrink: 0;
|
|
52
65
|
}
|
|
53
66
|
|
|
67
|
+
.object-fallback {
|
|
68
|
+
width: 28px;
|
|
69
|
+
height: 28px;
|
|
70
|
+
border-radius: var(--dev-wallet-radius-xs);
|
|
71
|
+
display: inline-flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
flex-shrink: 0;
|
|
75
|
+
background: linear-gradient(135deg, var(--dev-wallet-bg-4), var(--dev-wallet-bg-2));
|
|
76
|
+
border: 1px solid var(--dev-wallet-border);
|
|
77
|
+
color: var(--dev-wallet-primary);
|
|
78
|
+
font-family: var(--dev-wallet-font-mono);
|
|
79
|
+
font-size: 11px;
|
|
80
|
+
font-weight: var(--dev-wallet-font-weight-semibold);
|
|
81
|
+
}
|
|
82
|
+
|
|
54
83
|
.object-body {
|
|
55
84
|
display: flex;
|
|
56
85
|
flex-direction: column;
|
|
@@ -66,9 +95,10 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
66
95
|
}
|
|
67
96
|
|
|
68
97
|
.object-type {
|
|
69
|
-
font-size:
|
|
98
|
+
font-size: 11px;
|
|
70
99
|
font-weight: var(--dev-wallet-font-weight-medium);
|
|
71
100
|
color: var(--dev-wallet-foreground);
|
|
101
|
+
font-family: var(--dev-wallet-font-mono);
|
|
72
102
|
white-space: nowrap;
|
|
73
103
|
overflow: hidden;
|
|
74
104
|
text-overflow: ellipsis;
|
|
@@ -76,8 +106,10 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
76
106
|
|
|
77
107
|
.object-type-badge {
|
|
78
108
|
font-size: 10px;
|
|
79
|
-
color: var(--dev-wallet-
|
|
80
|
-
|
|
109
|
+
color: var(--dev-wallet-text-3);
|
|
110
|
+
overflow: hidden;
|
|
111
|
+
text-overflow: ellipsis;
|
|
112
|
+
white-space: nowrap;
|
|
81
113
|
}
|
|
82
114
|
|
|
83
115
|
.object-description {
|
|
@@ -89,15 +121,21 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
89
121
|
}
|
|
90
122
|
|
|
91
123
|
.object-version {
|
|
92
|
-
|
|
93
|
-
|
|
124
|
+
height: 16px;
|
|
125
|
+
padding: 0 5px;
|
|
126
|
+
border-radius: 999px;
|
|
127
|
+
border: 1px solid var(--dev-wallet-border);
|
|
128
|
+
background: var(--dev-wallet-bg-3);
|
|
129
|
+
font-family: var(--dev-wallet-font-mono);
|
|
130
|
+
font-size: 9px;
|
|
131
|
+
color: var(--dev-wallet-text-3);
|
|
94
132
|
flex-shrink: 0;
|
|
95
133
|
}
|
|
96
134
|
|
|
97
135
|
.object-id {
|
|
98
136
|
font-size: 11px;
|
|
99
137
|
font-family: var(--dev-wallet-font-mono);
|
|
100
|
-
color: var(--dev-wallet-
|
|
138
|
+
color: var(--dev-wallet-text-3);
|
|
101
139
|
cursor: pointer;
|
|
102
140
|
border-radius: var(--dev-wallet-radius-2xs);
|
|
103
141
|
padding: 1px 2px;
|
|
@@ -116,13 +154,13 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
116
154
|
.load-more {
|
|
117
155
|
margin-top: 8px;
|
|
118
156
|
width: 100%;
|
|
119
|
-
|
|
120
|
-
border-radius: var(--dev-wallet-radius
|
|
157
|
+
height: 30px;
|
|
158
|
+
border-radius: var(--dev-wallet-radius);
|
|
121
159
|
font-size: 12px;
|
|
122
160
|
font-weight: var(--dev-wallet-font-weight-medium);
|
|
123
161
|
color: var(--dev-wallet-primary);
|
|
124
162
|
background: transparent;
|
|
125
|
-
border: 1px solid var(--dev-wallet-border);
|
|
163
|
+
border: 1px solid var(--dev-wallet-border-2);
|
|
126
164
|
transition: background 0.15s;
|
|
127
165
|
}
|
|
128
166
|
|
|
@@ -134,25 +172,27 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
134
172
|
opacity: 0.5;
|
|
135
173
|
cursor: default;
|
|
136
174
|
}
|
|
175
|
+
|
|
176
|
+
@media (max-width: 380px) {
|
|
177
|
+
.object-list {
|
|
178
|
+
grid-template-columns: 1fr;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
137
181
|
`
|
|
138
182
|
];
|
|
139
183
|
}
|
|
140
|
-
#copy
|
|
141
|
-
#cursor
|
|
142
|
-
#lastFetchedAddress
|
|
143
|
-
#lastFetchedClient
|
|
144
|
-
#fetchGeneration
|
|
184
|
+
#copy;
|
|
185
|
+
#cursor;
|
|
186
|
+
#lastFetchedAddress;
|
|
187
|
+
#lastFetchedClient;
|
|
188
|
+
#fetchGeneration;
|
|
145
189
|
willUpdate(changedProperties) {
|
|
146
|
-
if ((changedProperties.has("address") || changedProperties.has("client")) && this.address && this.client && (this.address !== this.#lastFetchedAddress || this.client !== this.#lastFetchedClient))
|
|
147
|
-
this.#fetchObjects(false);
|
|
148
|
-
}
|
|
190
|
+
if ((changedProperties.has("address") || changedProperties.has("client")) && this.address && this.client && (this.address !== this.#lastFetchedAddress || this.client !== this.#lastFetchedClient)) this.#fetchObjects(false);
|
|
149
191
|
}
|
|
150
192
|
render() {
|
|
151
|
-
if (!this.address || !this.client)
|
|
152
|
-
return nothing;
|
|
153
|
-
}
|
|
193
|
+
if (!this.address || !this.client) return nothing;
|
|
154
194
|
return html`
|
|
155
|
-
<h3 class="section-header">Objects</h3>
|
|
195
|
+
<h3 class="section-header">Owned Objects</h3>
|
|
156
196
|
${this._loading ? html`<div class="loading" part="loading" aria-live="polite">Loading...</div>` : this._error ? html`<div class="error-state" part="error-message" aria-live="polite">
|
|
157
197
|
${this._error}
|
|
158
198
|
</div>` : this._objects.length === 0 ? html`<div class="empty-state" part="empty-state">No objects found</div>` : html`
|
|
@@ -164,7 +204,7 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
164
204
|
src=${obj.imageUrl}
|
|
165
205
|
alt=${obj.displayName ?? obj.typeName}
|
|
166
206
|
@error=${(e) => e.target.style.display = "none"}
|
|
167
|
-
/>` :
|
|
207
|
+
/>` : html`<span class="object-fallback">O</span>`}
|
|
168
208
|
<div class="object-body">
|
|
169
209
|
<div class="object-top">
|
|
170
210
|
<span class="object-type"> ${obj.displayName ?? obj.typeName} </span>
|
|
@@ -213,11 +253,8 @@ let DevWalletObjects = class DevWalletObjects$1 extends LitElement {
|
|
|
213
253
|
this._objects = [];
|
|
214
254
|
}
|
|
215
255
|
const generation = ++this.#fetchGeneration;
|
|
216
|
-
if (append)
|
|
217
|
-
|
|
218
|
-
} else {
|
|
219
|
-
this._loading = true;
|
|
220
|
-
}
|
|
256
|
+
if (append) this._loadingMore = true;
|
|
257
|
+
else this._loading = true;
|
|
221
258
|
this._error = null;
|
|
222
259
|
try {
|
|
223
260
|
const result = await this.client.core.listOwnedObjects({
|
|
@@ -270,7 +307,7 @@ function extractString(json, key) {
|
|
|
270
307
|
const val = json[key];
|
|
271
308
|
return typeof val === "string" && val.length > 0 ? val : null;
|
|
272
309
|
}
|
|
273
|
-
|
|
274
310
|
//#endregion
|
|
275
311
|
export { DevWalletObjects };
|
|
312
|
+
|
|
276
313
|
//# sourceMappingURL=dev-wallet-objects.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-wallet-objects.mjs","names":["DevWalletObjects","#lastFetchedAddress","#lastFetchedClient","#fetchObjects","#copy","#loadMore","#cursor","#fetchGeneration"],"sources":["../../src/ui/dev-wallet-objects.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ClientWithCoreApi } from '@mysten/sui/client';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { CopyController } from './copy-controller.js';\nimport { sectionHeaderStyles, sharedStyles, stateStyles } from './styles.js';\nimport { getTypeName, isCoinType } from './utils.js';\n\ninterface OwnedObject {\n\tobjectId: string;\n\ttype: string;\n\ttypeName: string;\n\tversion: string;\n\tdisplayName: string | null;\n\tdescription: string | null;\n\timageUrl: string | null;\n}\n\n@customElement('dev-wallet-objects')\nexport class DevWalletObjects extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tsectionHeaderStyles,\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\t.object-list {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 4px;\n\t\t\t}\n\n\t\t\t.object-item {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 10px;\n\t\t\t\tpadding: 10px 12px;\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\talign-items: flex-start;\n\t\t\t}\n\n\t\t\t.object-thumb {\n\t\t\t\twidth: 40px;\n\t\t\t\theight: 40px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tobject-fit: cover;\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.object-body {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 2px;\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.object-top {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.object-type {\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\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t.object-type-badge {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\topacity: 0.8;\n\t\t\t}\n\n\t\t\t.object-description {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\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.object-version {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.object-id {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\n\t\t\t\tcursor: pointer;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tpadding: 1px 2px;\n\t\t\t\tmargin: -1px -2px;\n\t\t\t\ttransition: background 0.15s;\n\t\t\t}\n\n\t\t\t.object-id: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.object-id.copied {\n\t\t\t\tcolor: var(--dev-wallet-positive);\n\t\t\t}\n\n\t\t\t.load-more {\n\t\t\t\tmargin-top: 8px;\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding: 8px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-sm);\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-primary);\n\t\t\t\tbackground: transparent;\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\ttransition: background 0.15s;\n\t\t\t}\n\n\t\t\t.load-more:hover {\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t}\n\n\t\t\t.load-more:disabled {\n\t\t\t\topacity: 0.5;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ type: String })\n\taddress = '';\n\n\t@property({ attribute: false })\n\tclient: ClientWithCoreApi | null = null;\n\n\t@state()\n\tprivate _objects: OwnedObject[] = [];\n\n\t@state()\n\tprivate _loading = false;\n\n\t@state()\n\tprivate _loadingMore = false;\n\n\t@state()\n\tprivate _error: string | null = null;\n\n\t@state()\n\tprivate _hasNextPage = false;\n\n\t#copy = new CopyController(this);\n\t#cursor: string | null = null;\n\t#lastFetchedAddress = '';\n\t#lastFetchedClient: ClientWithCoreApi | null = null;\n\t#fetchGeneration = 0;\n\n\toverride willUpdate(changedProperties: Map<string, unknown>) {\n\t\tif (\n\t\t\t(changedProperties.has('address') || changedProperties.has('client')) &&\n\t\t\tthis.address &&\n\t\t\tthis.client &&\n\t\t\t(this.address !== this.#lastFetchedAddress || this.client !== this.#lastFetchedClient)\n\t\t) {\n\t\t\tthis.#fetchObjects(false);\n\t\t}\n\t}\n\n\toverride render() {\n\t\tif (!this.address || !this.client) {\n\t\t\treturn nothing;\n\t\t}\n\n\t\treturn html`\n\t\t\t<h3 class=\"section-header\">Objects</h3>\n\t\t\t${this._loading\n\t\t\t\t? html`<div class=\"loading\" part=\"loading\" aria-live=\"polite\">Loading...</div>`\n\t\t\t\t: this._error\n\t\t\t\t\t? html`<div class=\"error-state\" part=\"error-message\" aria-live=\"polite\">\n\t\t\t\t\t\t\t${this._error}\n\t\t\t\t\t\t</div>`\n\t\t\t\t\t: this._objects.length === 0\n\t\t\t\t\t\t? html`<div class=\"empty-state\" part=\"empty-state\">No objects found</div>`\n\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t<div class=\"object-list\" part=\"object-list\">\n\t\t\t\t\t\t\t\t\t${this._objects.map(\n\t\t\t\t\t\t\t\t\t\t(obj) => html`\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"object-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t${obj.imageUrl && /^https?:\\/\\//i.test(obj.imageUrl)\n\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"object-thumb\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=${obj.imageUrl}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt=${obj.displayName ?? obj.typeName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@error=${(e: Event) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t((e.target as HTMLImageElement).style.display = 'none')}\n\t\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\t: nothing}\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"object-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"object-top\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"object-type\"> ${obj.displayName ?? obj.typeName} </span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"object-version\">v${obj.version}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t${obj.displayName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<span class=\"object-type-badge\">${obj.typeName}</span>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t${obj.description\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<span class=\"object-description\">${obj.description}</span>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"object-id ${this.#copy.isCopied(obj.objectId) ? 'copied' : ''}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Click to copy\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"Copy object ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=${() => this.#copy.copy(obj.objectId)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.#copy.copy(obj.objectId);\n\t\t\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\t\t}}\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\t\t${this.#copy.isCopied(obj.objectId)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'Copied!'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${obj.objectId.slice(0, 10)}...${obj.objectId.slice(-8)}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\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\t${this._hasNextPage\n\t\t\t\t\t\t\t\t\t? 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=\"load-more\"\n\t\t\t\t\t\t\t\t\t\t\t\tpart=\"load-more-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t?disabled=${this._loadingMore}\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${this.#loadMore}\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${this._loadingMore ? 'Loading...' : 'Load More'}\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: nothing}\n\t\t\t\t\t\t\t`}\n\t\t`;\n\t}\n\n\tasync #fetchObjects(append: boolean) {\n\t\tthis.#lastFetchedAddress = this.address;\n\t\tthis.#lastFetchedClient = this.client;\n\n\t\tif (!append) {\n\t\t\tthis.#cursor = null;\n\t\t\tthis._objects = [];\n\t\t}\n\n\t\tconst generation = ++this.#fetchGeneration;\n\t\tif (append) {\n\t\t\tthis._loadingMore = true;\n\t\t} else {\n\t\t\tthis._loading = true;\n\t\t}\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tconst result = await this.client!.core.listOwnedObjects({\n\t\t\t\towner: this.address,\n\t\t\t\tlimit: 20,\n\t\t\t\tcursor: this.#cursor,\n\t\t\t\tinclude: { json: true },\n\t\t\t});\n\n\t\t\tif (generation !== this.#fetchGeneration) return;\n\n\t\t\t// Filter out Coin types — those are shown in the balances tab\n\t\t\tconst nonCoinObjects: OwnedObject[] = result.objects\n\t\t\t\t.filter((obj) => !isCoinType(obj.type))\n\t\t\t\t.map((obj) => {\n\t\t\t\t\tconst json = obj.json;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tobjectId: obj.objectId,\n\t\t\t\t\t\ttype: obj.type,\n\t\t\t\t\t\ttypeName: getTypeName(obj.type),\n\t\t\t\t\t\tversion: obj.version,\n\t\t\t\t\t\tdisplayName: extractString(json, 'name'),\n\t\t\t\t\t\tdescription: extractString(json, 'description'),\n\t\t\t\t\t\timageUrl: extractString(json, 'image_url') ?? extractString(json, 'img_url'),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\tthis._objects = append ? [...this._objects, ...nonCoinObjects] : nonCoinObjects;\n\t\t\tthis._hasNextPage = result.hasNextPage;\n\t\t\tthis.#cursor = result.cursor;\n\t\t} catch {\n\t\t\tif (generation !== this.#fetchGeneration) return;\n\t\t\tthis._error = 'Failed to load objects';\n\t\t\tif (!append) this._objects = [];\n\t\t} finally {\n\t\t\tif (generation === this.#fetchGeneration) {\n\t\t\t\tthis._loading = false;\n\t\t\t\tthis._loadingMore = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t#loadMore() {\n\t\tthis.#fetchObjects(true);\n\t}\n}\n\nfunction extractString(\n\tjson: Record<string, unknown> | null | undefined,\n\tkey: string,\n): string | null {\n\tif (!json) return null;\n\tconst val = json[key];\n\treturn typeof val === 'string' && val.length > 0 ? val : null;\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-objects': DevWalletObjects;\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev-wallet-objects.mjs","names":["#lastFetchedAddress","#lastFetchedClient","#fetchObjects","#copy","#loadMore","#cursor","#fetchGeneration"],"sources":["../../src/ui/dev-wallet-objects.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ClientWithCoreApi } from '@mysten/sui/client';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { CopyController } from './copy-controller.js';\nimport { sectionHeaderStyles, sharedStyles, stateStyles } from './styles.js';\nimport { getTypeName, isCoinType } from './utils.js';\n\ninterface OwnedObject {\n\tobjectId: string;\n\ttype: string;\n\ttypeName: string;\n\tversion: string;\n\tdisplayName: string | null;\n\tdescription: string | null;\n\timageUrl: string | null;\n}\n\n@customElement('dev-wallet-objects')\nexport class DevWalletObjects extends LitElement {\n\tstatic override styles = [\n\t\tsharedStyles,\n\t\tsectionHeaderStyles,\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\t.object-list {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\t\t\t\tgap: 8px;\n\t\t\t}\n\n\t\t\t.object-item {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: 10px;\n\t\t\t\tpadding: 10px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-lg);\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: var(--dev-wallet-surface);\n\t\t\t\talign-items: flex-start;\n\t\t\t\tmin-width: 0;\n\t\t\t\ttransition:\n\t\t\t\t\tbackground 120ms,\n\t\t\t\t\tborder-color 120ms;\n\t\t\t}\n\n\t\t\t.object-item:hover {\n\t\t\t\tbackground: var(--dev-wallet-bg-hover);\n\t\t\t\tborder-color: var(--dev-wallet-border-strong);\n\t\t\t}\n\n\t\t\t.object-thumb {\n\t\t\t\twidth: 28px;\n\t\t\t\theight: 28px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tobject-fit: cover;\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.object-fallback {\n\t\t\t\twidth: 28px;\n\t\t\t\theight: 28px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-xs);\n\t\t\t\tdisplay: inline-flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\tbackground: linear-gradient(135deg, var(--dev-wallet-bg-4), var(--dev-wallet-bg-2));\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tcolor: var(--dev-wallet-primary);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-weight: var(--dev-wallet-font-weight-semibold);\n\t\t\t}\n\n\t\t\t.object-body {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\tgap: 2px;\n\t\t\t\tflex: 1;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t.object-top {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.object-type {\n\t\t\t\tfont-size: 11px;\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\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t.object-type-badge {\n\t\t\t\tfont-size: 10px;\n\t\t\t\tcolor: var(--dev-wallet-text-3);\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.object-description {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tcolor: var(--dev-wallet-muted-foreground);\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.object-version {\n\t\t\t\theight: 16px;\n\t\t\t\tpadding: 0 5px;\n\t\t\t\tborder-radius: 999px;\n\t\t\t\tborder: 1px solid var(--dev-wallet-border);\n\t\t\t\tbackground: var(--dev-wallet-bg-3);\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tfont-size: 9px;\n\t\t\t\tcolor: var(--dev-wallet-text-3);\n\t\t\t\tflex-shrink: 0;\n\t\t\t}\n\n\t\t\t.object-id {\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-family: var(--dev-wallet-font-mono);\n\t\t\t\tcolor: var(--dev-wallet-text-3);\n\t\t\t\tcursor: pointer;\n\t\t\t\tborder-radius: var(--dev-wallet-radius-2xs);\n\t\t\t\tpadding: 1px 2px;\n\t\t\t\tmargin: -1px -2px;\n\t\t\t\ttransition: background 0.15s;\n\t\t\t}\n\n\t\t\t.object-id: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.object-id.copied {\n\t\t\t\tcolor: var(--dev-wallet-positive);\n\t\t\t}\n\n\t\t\t.load-more {\n\t\t\t\tmargin-top: 8px;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 30px;\n\t\t\t\tborder-radius: var(--dev-wallet-radius);\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-primary);\n\t\t\t\tbackground: transparent;\n\t\t\t\tborder: 1px solid var(--dev-wallet-border-2);\n\t\t\t\ttransition: background 0.15s;\n\t\t\t}\n\n\t\t\t.load-more:hover {\n\t\t\t\tbackground: var(--dev-wallet-secondary);\n\t\t\t}\n\n\t\t\t.load-more:disabled {\n\t\t\t\topacity: 0.5;\n\t\t\t\tcursor: default;\n\t\t\t}\n\n\t\t\t@media (max-width: 380px) {\n\t\t\t\t.object-list {\n\t\t\t\t\tgrid-template-columns: 1fr;\n\t\t\t\t}\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ type: String })\n\taddress = '';\n\n\t@property({ attribute: false })\n\tclient: ClientWithCoreApi | null = null;\n\n\t@state()\n\tprivate _objects: OwnedObject[] = [];\n\n\t@state()\n\tprivate _loading = false;\n\n\t@state()\n\tprivate _loadingMore = false;\n\n\t@state()\n\tprivate _error: string | null = null;\n\n\t@state()\n\tprivate _hasNextPage = false;\n\n\t#copy = new CopyController(this);\n\t#cursor: string | null = null;\n\t#lastFetchedAddress = '';\n\t#lastFetchedClient: ClientWithCoreApi | null = null;\n\t#fetchGeneration = 0;\n\n\toverride willUpdate(changedProperties: Map<string, unknown>) {\n\t\tif (\n\t\t\t(changedProperties.has('address') || changedProperties.has('client')) &&\n\t\t\tthis.address &&\n\t\t\tthis.client &&\n\t\t\t(this.address !== this.#lastFetchedAddress || this.client !== this.#lastFetchedClient)\n\t\t) {\n\t\t\tthis.#fetchObjects(false);\n\t\t}\n\t}\n\n\toverride render() {\n\t\tif (!this.address || !this.client) {\n\t\t\treturn nothing;\n\t\t}\n\n\t\treturn html`\n\t\t\t<h3 class=\"section-header\">Owned Objects</h3>\n\t\t\t${this._loading\n\t\t\t\t? html`<div class=\"loading\" part=\"loading\" aria-live=\"polite\">Loading...</div>`\n\t\t\t\t: this._error\n\t\t\t\t\t? html`<div class=\"error-state\" part=\"error-message\" aria-live=\"polite\">\n\t\t\t\t\t\t\t${this._error}\n\t\t\t\t\t\t</div>`\n\t\t\t\t\t: this._objects.length === 0\n\t\t\t\t\t\t? html`<div class=\"empty-state\" part=\"empty-state\">No objects found</div>`\n\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t<div class=\"object-list\" part=\"object-list\">\n\t\t\t\t\t\t\t\t\t${this._objects.map(\n\t\t\t\t\t\t\t\t\t\t(obj) => html`\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"object-item\">\n\t\t\t\t\t\t\t\t\t\t\t\t${obj.imageUrl && /^https?:\\/\\//i.test(obj.imageUrl)\n\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<img\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"object-thumb\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc=${obj.imageUrl}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt=${obj.displayName ?? obj.typeName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@error=${(e: Event) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t((e.target as HTMLImageElement).style.display = 'none')}\n\t\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\t: html`<span class=\"object-fallback\">O</span>`}\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"object-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"object-top\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"object-type\"> ${obj.displayName ?? obj.typeName} </span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"object-version\">v${obj.version}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t${obj.displayName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<span class=\"object-type-badge\">${obj.typeName}</span>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t${obj.description\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<span class=\"object-description\">${obj.description}</span>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: nothing}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"object-id ${this.#copy.isCopied(obj.objectId) ? 'copied' : ''}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Click to copy\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"Copy object ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@click=${() => this.#copy.copy(obj.objectId)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.#copy.copy(obj.objectId);\n\t\t\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\t\t}}\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\t\t${this.#copy.isCopied(obj.objectId)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'Copied!'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `${obj.objectId.slice(0, 10)}...${obj.objectId.slice(-8)}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\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\t${this._hasNextPage\n\t\t\t\t\t\t\t\t\t? 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=\"load-more\"\n\t\t\t\t\t\t\t\t\t\t\t\tpart=\"load-more-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t?disabled=${this._loadingMore}\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${this.#loadMore}\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${this._loadingMore ? 'Loading...' : 'Load More'}\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: nothing}\n\t\t\t\t\t\t\t`}\n\t\t`;\n\t}\n\n\tasync #fetchObjects(append: boolean) {\n\t\tthis.#lastFetchedAddress = this.address;\n\t\tthis.#lastFetchedClient = this.client;\n\n\t\tif (!append) {\n\t\t\tthis.#cursor = null;\n\t\t\tthis._objects = [];\n\t\t}\n\n\t\tconst generation = ++this.#fetchGeneration;\n\t\tif (append) {\n\t\t\tthis._loadingMore = true;\n\t\t} else {\n\t\t\tthis._loading = true;\n\t\t}\n\t\tthis._error = null;\n\n\t\ttry {\n\t\t\tconst result = await this.client!.core.listOwnedObjects({\n\t\t\t\towner: this.address,\n\t\t\t\tlimit: 20,\n\t\t\t\tcursor: this.#cursor,\n\t\t\t\tinclude: { json: true },\n\t\t\t});\n\n\t\t\tif (generation !== this.#fetchGeneration) return;\n\n\t\t\t// Filter out Coin types — those are shown in the balances tab\n\t\t\tconst nonCoinObjects: OwnedObject[] = result.objects\n\t\t\t\t.filter((obj) => !isCoinType(obj.type))\n\t\t\t\t.map((obj) => {\n\t\t\t\t\tconst json = obj.json;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tobjectId: obj.objectId,\n\t\t\t\t\t\ttype: obj.type,\n\t\t\t\t\t\ttypeName: getTypeName(obj.type),\n\t\t\t\t\t\tversion: obj.version,\n\t\t\t\t\t\tdisplayName: extractString(json, 'name'),\n\t\t\t\t\t\tdescription: extractString(json, 'description'),\n\t\t\t\t\t\timageUrl: extractString(json, 'image_url') ?? extractString(json, 'img_url'),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\tthis._objects = append ? [...this._objects, ...nonCoinObjects] : nonCoinObjects;\n\t\t\tthis._hasNextPage = result.hasNextPage;\n\t\t\tthis.#cursor = result.cursor;\n\t\t} catch {\n\t\t\tif (generation !== this.#fetchGeneration) return;\n\t\t\tthis._error = 'Failed to load objects';\n\t\t\tif (!append) this._objects = [];\n\t\t} finally {\n\t\t\tif (generation === this.#fetchGeneration) {\n\t\t\t\tthis._loading = false;\n\t\t\t\tthis._loadingMore = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t#loadMore() {\n\t\tthis.#fetchObjects(true);\n\t}\n}\n\nfunction extractString(\n\tjson: Record<string, unknown> | null | undefined,\n\tkey: string,\n): string | null {\n\tif (!json) return null;\n\tconst val = json[key];\n\treturn typeof val === 'string' && val.length > 0 ? val : null;\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'dev-wallet-objects': DevWalletObjects;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,16 +1,36 @@
|
|
|
1
|
+
import { ForkRelay } from "../adapters/fork-relay.mjs";
|
|
1
2
|
import { DevWallet } from "../wallet/dev-wallet.mjs";
|
|
2
|
-
import
|
|
3
|
+
import { CoinRecord } from "./utils.mjs";
|
|
4
|
+
import * as _$lit from "lit";
|
|
3
5
|
import { LitElement } from "lit";
|
|
4
6
|
|
|
5
7
|
//#region src/ui/dev-wallet-panel.d.ts
|
|
8
|
+
type DevWalletDockStyle = 'corner-pill' | 'side-tab';
|
|
6
9
|
declare class DevWalletPanel extends LitElement {
|
|
7
10
|
#private;
|
|
8
|
-
static styles: (
|
|
11
|
+
static styles: (_$lit.CSSResult | _$lit.CSSResult[])[];
|
|
9
12
|
wallet: DevWallet | null;
|
|
13
|
+
/** Optional pre-seeded coin metadata. Pass the generated `coins`
|
|
14
|
+
* constant from devstack codegen (`src/generated/coins.ts`) to skip
|
|
15
|
+
* per-coin RPC fetches in the balances list and signing modal. */
|
|
16
|
+
coins: CoinRecord | null;
|
|
17
|
+
/** Phase 5 Subtopic 6 — fork admin relay. When set, the panel
|
|
18
|
+
* surfaces a "Fork" tab that drives advance-clock,
|
|
19
|
+
* advance-checkpoint, and impersonation slot management against
|
|
20
|
+
* the devstack wallet-app server. Construct from the manifest
|
|
21
|
+
* with `createForkRelayFromManifest(manifest)`. */
|
|
22
|
+
forkRelay: ForkRelay | null;
|
|
23
|
+
/** Optional upstream label (`'mainnet'`, `'testnet'`, …) sourced
|
|
24
|
+
* from `meta.upstream` on the manifest. Falls back to inferring
|
|
25
|
+
* from the active network literal when not provided. */
|
|
26
|
+
forkUpstream: string;
|
|
27
|
+
dockStyle: DevWalletDockStyle;
|
|
10
28
|
private _isOpen;
|
|
11
29
|
willUpdate(changedProperties: Map<string, unknown>): void;
|
|
12
30
|
updated(): void;
|
|
13
|
-
render():
|
|
31
|
+
render(): _$lit.TemplateResult<1>;
|
|
32
|
+
connectedCallback(): void;
|
|
33
|
+
disconnectedCallback(): void;
|
|
14
34
|
}
|
|
15
35
|
declare global {
|
|
16
36
|
interface HTMLElementTagNameMap {
|
|
@@ -18,5 +38,5 @@ declare global {
|
|
|
18
38
|
}
|
|
19
39
|
} //# sourceMappingURL=dev-wallet-panel.d.ts.map
|
|
20
40
|
//#endregion
|
|
21
|
-
export { DevWalletPanel };
|
|
41
|
+
export { DevWalletDockStyle, DevWalletPanel };
|
|
22
42
|
//# sourceMappingURL=dev-wallet-panel.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-wallet-panel.d.mts","names":[],"sources":["../../src/ui/dev-wallet-panel.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev-wallet-panel.d.mts","names":[],"sources":["../../src/ui/dev-wallet-panel.ts"],"mappings":";;;;;;;KAYY,kBAAA;AAAA,cAGC,cAAA,SAAuB,UAAA;EAAA;SACnB,MAAA,GADW,KAAA,CACL,SAAA,GAAA,KAAA,CAAA,SAAA;EAgPtB,MAAA,EAAQ,SAAA;;;;EAMR,KAAA,EAAO,UAAA;EAvPoB;;;;;EA+P3B,SAAA,EAAW,SAAA;EAAA;;;EAMX,YAAA;EAGA,SAAA,EAAW,kBAAA;EAAA,QAGH,OAAA;EAKC,UAAA,CAAW,iBAAA,EAAmB,GAAA;EAe9B,OAAA,CAAA;EAsBA,MAAA,CAAA,GArCiC,KAAA,CAqC3B,cAAA;EAsFN,iBAAA,CAAA;EAKA,oBAAA,CAAA;AAAA;AAAA,QAMF,MAAA;EAAA,UACG,qBAAA;IACT,kBAAA,EAAoB,cAAA;EAAA;AAAA"}
|