@hyzyn/dsh-docker 0.1.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/LICENSE +214 -0
- package/README.md +368 -0
- package/client.js +1050 -0
- package/cordis.patch.yml +8 -0
- package/lib/docker.d.ts +237 -0
- package/lib/docker.js +515 -0
- package/lib/docker.js.map +1 -0
- package/lib/index.d.ts +81 -0
- package/lib/index.js +1212 -0
- package/lib/index.js.map +1 -0
- package/lib/ssh-exec.d.ts +94 -0
- package/lib/ssh-exec.js +386 -0
- package/lib/ssh-exec.js.map +1 -0
- package/package.json +82 -0
package/client.js
ADDED
|
@@ -0,0 +1,1050 @@
|
|
|
1
|
+
"use strict";(()=>{var He=`/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* @hyzyn/dsh-docker \u2014 \u9762\u677F\u6837\u5F0F\u8868\u3002
|
|
4
|
+
*
|
|
5
|
+
* \u8BBE\u8BA1\u7EA6\u5B9A\uFF08\u6539\u6837\u5F0F\u524D\u5148\u8BFB\u8FD9\u6BB5\uFF09\uFF1A
|
|
6
|
+
* - \u989C\u8272/\u8FB9\u6846/\u9634\u5F71\u4E00\u5F8B\u8D70 DSH \u5B98\u65B9 token\uFF08--dsw-*\uFF09\uFF0C\u76AE\u80A4\u5207\u6362\u81EA\u52A8\u8DDF\u968F\uFF1B
|
|
7
|
+
* - \u51E0\u4F55\uFF08\u5706\u89D2 / \u63A7\u4EF6\u9AD8\u5EA6 / \u95F4\u8DDD\uFF09\u7EDF\u4E00\u7528 --dk-* \u4EE4\u724C\uFF0C\u7981\u6B62\u5728\u89C4\u5219\u91CC\u5199\u9B54\u6CD5\u6570\u5B57\uFF1B
|
|
8
|
+
* - \u4E09\u6863\u5C42\u7EA7\uFF1Abase\uFF08\u9762\u677F\u5E95\uFF09\u2192 layer-2\uFF08\u680F / \u5361\u7247\u5E95\uFF09\u2192 layer-3\uFF08\u884C / \u8F93\u5165\u5E95\uFF09\uFF1B
|
|
9
|
+
* - \u4EA4\u4E92\u5143\u7D20\u5FC5\u987B\u6709 hover / active / :focus-visible / :disabled \u56DB\u6001\uFF1B
|
|
10
|
+
* - \u72B6\u6001\u8272\u53EA\u7528\u5728\u5FBD\u7AE0\u4E0E\u8FDB\u5EA6\u6761\u4E0A\uFF0C\u6B63\u6587\u4FDD\u6301\u4E2D\u6027\uFF0C\u907F\u514D\u5F69\u8272\u566A\u97F3\u3002
|
|
11
|
+
*
|
|
12
|
+
* \u7531 scripts/build-client.mjs \u4EE5 text loader \u5185\u8054\u8FDB client.js\u3002
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/* ============================ \u8BBE\u8BA1\u4EE4\u724C ============================ */
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* \u4EE4\u724C\u58F0\u660E\u5728 :where(html, body) \u4E0A\u2014\u2014\u4E0D\u80FD\u53EA\u653E :root\uFF1ADSH \u7684\u660E\u6697\u4E3B\u9898\u6302\u5728
|
|
19
|
+
* body[data-ds-dark-theme] \u4E0A\u8986\u76D6 --dsw-*\uFF0C\u800C var() \u5728\u300C\u58F0\u660E\u5B83\u7684\u5143\u7D20\u300D\u4E0A\u5C31
|
|
20
|
+
* \u5B8C\u6210\u66FF\u6362\uFF1B\u53EA\u5728 :root \u58F0\u660E\u4F1A\u6C38\u8FDC\u62FF\u5230\u6D45\u8272\u503C\u3002
|
|
21
|
+
*/
|
|
22
|
+
:where(html, body) {
|
|
23
|
+
--dk-r-xs: 4px;
|
|
24
|
+
--dk-r-sm: 6px;
|
|
25
|
+
--dk-r-md: 8px;
|
|
26
|
+
--dk-r-lg: 10px;
|
|
27
|
+
--dk-r-xl: 12px;
|
|
28
|
+
--dk-r-pill: 999px;
|
|
29
|
+
--dk-h-sm: 24px;
|
|
30
|
+
--dk-h-md: 28px;
|
|
31
|
+
--dk-h-lg: 32px;
|
|
32
|
+
--dk-gap-xs: 4px;
|
|
33
|
+
--dk-gap-sm: 6px;
|
|
34
|
+
--dk-gap-md: 8px;
|
|
35
|
+
--dk-gap-lg: 12px;
|
|
36
|
+
--dk-gap-xl: 16px;
|
|
37
|
+
--dk-mono: "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
|
|
38
|
+
--dk-ease: cubic-bezier(.2, .8, .2, 1);
|
|
39
|
+
--dk-dur: .16s;
|
|
40
|
+
--dk-accent: var(--dsw-alias-state-business-primary, #4d6bfe);
|
|
41
|
+
--dk-danger: var(--dsw-alias-state-error-primary, #d1242f);
|
|
42
|
+
--dk-success: var(--dsw-alias-state-success-primary, #1a7f37);
|
|
43
|
+
--dk-warn: var(--dsw-alias-state-warn-primary, #bf8700);
|
|
44
|
+
--dk-border: var(--dsw-alias-border-l1, rgba(127, 127, 127, .22));
|
|
45
|
+
--dk-border-strong: var(--dsw-alias-border-l2, rgba(127, 127, 127, .32));
|
|
46
|
+
--dk-hover: var(--dsw-alias-interactive-bg-hover, rgba(127, 127, 127, .1));
|
|
47
|
+
--dk-hover-solid: var(--dsw-alias-interactive-bg-hover-solid, rgba(127, 127, 127, .16));
|
|
48
|
+
--dk-label: var(--dsw-alias-label-primary, #1a1a1a);
|
|
49
|
+
--dk-label-2: var(--dsw-alias-label-secondary, #555);
|
|
50
|
+
--dk-label-3: var(--dsw-alias-label-tertiary, #888);
|
|
51
|
+
--dk-surface: var(--dsw-alias-bg-base, #fff);
|
|
52
|
+
--dk-surface-solid: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-base, #fff));
|
|
53
|
+
--dk-surface-2: var(--dsw-alias-bg-layer-2, #f2f2f2);
|
|
54
|
+
--dk-surface-3: var(--dsw-alias-bg-layer-3, #e8e8e8);
|
|
55
|
+
--dk-input: var(--dsw-specific-input-major, var(--dsw-alias-bg-base, #fff));
|
|
56
|
+
--dk-shadow: 0 16px 40px -12px rgba(0, 0, 0, .32), var(--dsw-shadow-lv3, 0 4px 12px rgba(0, 0, 0, .12));
|
|
57
|
+
--dk-shadow-lg: 0 32px 72px -24px rgba(0, 0, 0, .48), 0 2px 8px rgba(0, 0, 0, .16);
|
|
58
|
+
--dk-ring: 0 0 0 2px color-mix(in srgb, var(--dk-accent) 42%, transparent);
|
|
59
|
+
--dk-log-bg: #0b0e14;
|
|
60
|
+
--dk-log-fg: #d7dce5;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* ============================ \u901A\u7528 ============================ */
|
|
64
|
+
|
|
65
|
+
.dk_backdrop ::selection,
|
|
66
|
+
.dk_card ::selection {
|
|
67
|
+
background: color-mix(in srgb, var(--dk-accent) 32%, transparent);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.dk_backdrop *,
|
|
71
|
+
.dk_card *,
|
|
72
|
+
[data-dsh-docker-entry] {
|
|
73
|
+
scrollbar-width: thin;
|
|
74
|
+
scrollbar-color: var(--dk-border-strong) transparent;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.dk_backdrop *::-webkit-scrollbar,
|
|
78
|
+
.dk_card *::-webkit-scrollbar {
|
|
79
|
+
width: 10px;
|
|
80
|
+
height: 10px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.dk_backdrop *::-webkit-scrollbar-thumb,
|
|
84
|
+
.dk_card *::-webkit-scrollbar-thumb {
|
|
85
|
+
background: var(--dk-border-strong);
|
|
86
|
+
border: 3px solid transparent;
|
|
87
|
+
border-radius: var(--dk-r-pill);
|
|
88
|
+
background-clip: content-box;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* ============================ \u4FA7\u8FB9\u680F\u5165\u53E3 ============================ */
|
|
92
|
+
|
|
93
|
+
[data-dsh-docker-entry] {
|
|
94
|
+
position: relative;
|
|
95
|
+
display: flex;
|
|
96
|
+
align-items: center;
|
|
97
|
+
gap: var(--dk-gap-md);
|
|
98
|
+
width: 100%;
|
|
99
|
+
height: var(--dk-h-lg);
|
|
100
|
+
padding: 0 var(--dk-gap-lg);
|
|
101
|
+
border-radius: var(--dk-r-md);
|
|
102
|
+
color: var(--dk-label-2);
|
|
103
|
+
font-size: 13px;
|
|
104
|
+
white-space: nowrap;
|
|
105
|
+
cursor: pointer;
|
|
106
|
+
user-select: none;
|
|
107
|
+
transition: background var(--dk-dur) var(--dk-ease), color var(--dk-dur) var(--dk-ease);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
[data-dsh-docker-entry]:hover {
|
|
111
|
+
background: var(--dk-hover);
|
|
112
|
+
color: var(--dk-label);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
[data-dsh-docker-entry]:focus-visible {
|
|
116
|
+
outline: none;
|
|
117
|
+
box-shadow: var(--dk-ring);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.dk_entryIcon {
|
|
121
|
+
display: inline-flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
justify-content: center;
|
|
124
|
+
width: 18px;
|
|
125
|
+
height: 18px;
|
|
126
|
+
color: currentColor;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.dk_entryLabel {
|
|
130
|
+
overflow: hidden;
|
|
131
|
+
text-overflow: ellipsis;
|
|
132
|
+
white-space: nowrap;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* \u4FA7\u8FB9\u680F\u6298\u53E0\uFF08DSH \u5916\u58F3\u5728\u7956\u5148\u5143\u7D20\u4E0A\u6253 data-sidebar-collapsed\uFF09\uFF1A\u53EA\u7559\u56FE\u6807\uFF0C
|
|
136
|
+
\u4E0E tty \u7684\u7EC8\u7AEF\u5165\u53E3\u540C\u5F62\u2014\u2014\u5426\u5219\u6807\u7B7E\u4F1A\u4ECE\u7A84\u680F\u91CC\u6EA2\u51FA\u4E00\u6761\u7AD6\u6761 */
|
|
137
|
+
[data-sidebar-collapsed] [data-dsh-docker-entry] {
|
|
138
|
+
justify-content: center;
|
|
139
|
+
width: 100%;
|
|
140
|
+
padding: 0;
|
|
141
|
+
margin: 0;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
[data-sidebar-collapsed] .dk_entryLabel {
|
|
145
|
+
display: none;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
[data-sidebar-collapsed] .dk_entryBadge {
|
|
149
|
+
margin-left: 0;
|
|
150
|
+
padding-left: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.dk_entryBadge {
|
|
154
|
+
margin-left: auto;
|
|
155
|
+
display: inline-flex;
|
|
156
|
+
align-items: center;
|
|
157
|
+
gap: var(--dk-gap-xs);
|
|
158
|
+
font-size: 11px;
|
|
159
|
+
color: var(--dk-label-3);
|
|
160
|
+
font-variant-numeric: tabular-nums;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.dk_entryDot {
|
|
164
|
+
width: 6px;
|
|
165
|
+
height: 6px;
|
|
166
|
+
border-radius: var(--dk-r-pill);
|
|
167
|
+
background: var(--dk-label-3);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.dk_entryDot[data-state="ok"] { background: var(--dk-success); }
|
|
171
|
+
.dk_entryDot[data-state="error"] { background: var(--dk-danger); }
|
|
172
|
+
.dk_entryDot[data-state="loading"] { background: var(--dk-warn); }
|
|
173
|
+
|
|
174
|
+
/* ============================ \u5F39\u7A97\u9AA8\u67B6 ============================ */
|
|
175
|
+
|
|
176
|
+
.dk_backdrop {
|
|
177
|
+
position: fixed;
|
|
178
|
+
inset: 0;
|
|
179
|
+
z-index: 2140;
|
|
180
|
+
display: flex;
|
|
181
|
+
align-items: center;
|
|
182
|
+
justify-content: center;
|
|
183
|
+
padding: clamp(8px, 3vh, 32px);
|
|
184
|
+
background: color-mix(in srgb, #000 42%, transparent);
|
|
185
|
+
backdrop-filter: blur(2px);
|
|
186
|
+
animation: dk_fade var(--dk-dur) var(--dk-ease);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@keyframes dk_fade {
|
|
190
|
+
from { opacity: 0; }
|
|
191
|
+
to { opacity: 1; }
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.dk_panel {
|
|
195
|
+
display: flex;
|
|
196
|
+
flex-direction: column;
|
|
197
|
+
width: min(1180px, 100%);
|
|
198
|
+
height: min(820px, 100%);
|
|
199
|
+
min-height: 420px;
|
|
200
|
+
overflow: hidden;
|
|
201
|
+
border: 1px solid var(--dk-border-strong);
|
|
202
|
+
border-radius: var(--dk-r-xl);
|
|
203
|
+
background: var(--dk-surface-solid);
|
|
204
|
+
color: var(--dk-label);
|
|
205
|
+
box-shadow: var(--dk-shadow-lg);
|
|
206
|
+
font-size: 13px;
|
|
207
|
+
line-height: 1.5;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* ---- \u4EA4\u4E92\u5F0F\u7EC8\u7AEF\u62BD\u5C49\uFF08ttyTerminal.mount \u5C31\u5730\u5D4C\u5165\uFF0C0.15.0\uFF09 ---- */
|
|
211
|
+
.dk_drawer {
|
|
212
|
+
flex: 0 0 auto;
|
|
213
|
+
display: flex;
|
|
214
|
+
flex-direction: column;
|
|
215
|
+
height: min(46%, 380px);
|
|
216
|
+
min-height: 180px;
|
|
217
|
+
border-top: 1px solid var(--dk-border-strong);
|
|
218
|
+
background: var(--dk-surface-2);
|
|
219
|
+
animation: dk_drawerIn var(--dk-dur) var(--dk-ease);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
@keyframes dk_drawerIn {
|
|
223
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
224
|
+
to { opacity: 1; transform: none; }
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.dk_drawerHead {
|
|
228
|
+
display: flex;
|
|
229
|
+
align-items: center;
|
|
230
|
+
gap: var(--dk-gap-md);
|
|
231
|
+
flex: 0 0 auto;
|
|
232
|
+
min-height: 34px;
|
|
233
|
+
padding: var(--dk-gap-xs) var(--dk-gap-lg);
|
|
234
|
+
border-bottom: 1px solid var(--dk-border);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.dk_drawerIcon {
|
|
238
|
+
display: inline-flex;
|
|
239
|
+
flex: none;
|
|
240
|
+
color: var(--dk-accent);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.dk_drawerTitle {
|
|
244
|
+
min-width: 0;
|
|
245
|
+
font-size: 12px;
|
|
246
|
+
font-weight: 600;
|
|
247
|
+
white-space: nowrap;
|
|
248
|
+
overflow: hidden;
|
|
249
|
+
text-overflow: ellipsis;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.dk_drawerHint {
|
|
253
|
+
flex: none;
|
|
254
|
+
color: var(--dk-label-3);
|
|
255
|
+
font-size: 11px;
|
|
256
|
+
white-space: nowrap;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* \u6302\u8F7D\u70B9\uFF1Atty \u4F1A\u5F80\u91CC\u585E\u4E00\u4E2A\u7EDD\u5BF9\u5B9A\u4F4D\u7684 .tt_term\uFF08\u590D\u7528\u7EC8\u7AEF\u9762\u677F\u540C\u4E00\u5957\u6837\u5F0F\uFF09 */
|
|
260
|
+
.dk_drawerBody {
|
|
261
|
+
position: relative;
|
|
262
|
+
flex: 1 1 auto;
|
|
263
|
+
min-height: 0;
|
|
264
|
+
background: var(--dk-log-bg);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.dk_header {
|
|
268
|
+
display: flex;
|
|
269
|
+
align-items: center;
|
|
270
|
+
gap: var(--dk-gap-md);
|
|
271
|
+
flex: 0 0 auto;
|
|
272
|
+
flex-wrap: wrap;
|
|
273
|
+
min-height: 44px;
|
|
274
|
+
padding: var(--dk-gap-sm) var(--dk-gap-lg);
|
|
275
|
+
border-bottom: 1px solid var(--dk-border);
|
|
276
|
+
background: var(--dk-surface-2);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/* \u8BE6\u60C5\u5934\uFF1A\u8FD4\u56DE + \u5BB9\u5668\u540D + \u72B6\u6001 + \u76EE\u6807\u4E3B\u673A +\uFF08\u65E5\u5FD7\u9875\u5DE5\u5177\u6761\uFF09+ \u5173\u95ED */
|
|
280
|
+
.dk_headerDetail { gap: var(--dk-gap-sm); }
|
|
281
|
+
|
|
282
|
+
.dk_logTools {
|
|
283
|
+
display: flex;
|
|
284
|
+
align-items: center;
|
|
285
|
+
gap: var(--dk-gap-sm);
|
|
286
|
+
flex-wrap: wrap;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.dk_titleIcon {
|
|
290
|
+
display: inline-flex;
|
|
291
|
+
align-items: center;
|
|
292
|
+
color: var(--dk-accent);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.dk_title {
|
|
296
|
+
font-size: 13px;
|
|
297
|
+
font-weight: 600;
|
|
298
|
+
letter-spacing: .2px;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.dk_headerSpacer { flex: 1 1 auto; }
|
|
302
|
+
|
|
303
|
+
.dk_iconBtn {
|
|
304
|
+
display: inline-flex;
|
|
305
|
+
align-items: center;
|
|
306
|
+
justify-content: center;
|
|
307
|
+
width: var(--dk-h-md);
|
|
308
|
+
height: var(--dk-h-md);
|
|
309
|
+
padding: 0;
|
|
310
|
+
border: 1px solid transparent;
|
|
311
|
+
border-radius: var(--dk-r-sm);
|
|
312
|
+
background: transparent;
|
|
313
|
+
color: var(--dk-label-2);
|
|
314
|
+
cursor: pointer;
|
|
315
|
+
transition: background var(--dk-dur) var(--dk-ease), color var(--dk-dur) var(--dk-ease);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.dk_iconBtn:hover { background: var(--dk-hover); color: var(--dk-label); }
|
|
319
|
+
.dk_iconBtn:focus-visible { outline: none; box-shadow: var(--dk-ring); }
|
|
320
|
+
.dk_iconBtn:disabled { opacity: .45; cursor: not-allowed; }
|
|
321
|
+
|
|
322
|
+
/* ============================ \u5DE5\u5177\u680F ============================ */
|
|
323
|
+
|
|
324
|
+
.dk_toolbar {
|
|
325
|
+
display: flex;
|
|
326
|
+
align-items: center;
|
|
327
|
+
gap: var(--dk-gap-md);
|
|
328
|
+
flex: 0 0 auto;
|
|
329
|
+
flex-wrap: wrap;
|
|
330
|
+
padding: var(--dk-gap-md) var(--dk-gap-lg);
|
|
331
|
+
border-bottom: 1px solid var(--dk-border);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.dk_select,
|
|
335
|
+
.dk_input {
|
|
336
|
+
height: var(--dk-h-lg);
|
|
337
|
+
padding: 0 var(--dk-gap-md);
|
|
338
|
+
border: 1px solid var(--dk-border-strong);
|
|
339
|
+
border-radius: var(--dk-r-sm);
|
|
340
|
+
background: var(--dk-input);
|
|
341
|
+
color: var(--dk-label);
|
|
342
|
+
font-size: 13px;
|
|
343
|
+
font-family: inherit;
|
|
344
|
+
transition: border-color var(--dk-dur) var(--dk-ease), box-shadow var(--dk-dur) var(--dk-ease);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.dk_input { min-width: 180px; }
|
|
348
|
+
.dk_select:focus-visible,
|
|
349
|
+
.dk_input:focus-visible {
|
|
350
|
+
outline: none;
|
|
351
|
+
border-color: var(--dk-accent);
|
|
352
|
+
box-shadow: var(--dk-ring);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.dk_search { flex: 1 1 200px; min-width: 160px; }
|
|
356
|
+
|
|
357
|
+
.dk_seg {
|
|
358
|
+
display: inline-flex;
|
|
359
|
+
padding: 2px;
|
|
360
|
+
border: 1px solid var(--dk-border);
|
|
361
|
+
border-radius: var(--dk-r-md);
|
|
362
|
+
background: var(--dk-surface-2);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.dk_segBtn {
|
|
366
|
+
height: var(--dk-h-sm);
|
|
367
|
+
padding: 0 var(--dk-gap-md);
|
|
368
|
+
border: none;
|
|
369
|
+
border-radius: var(--dk-r-xs);
|
|
370
|
+
background: transparent;
|
|
371
|
+
color: var(--dk-label-2);
|
|
372
|
+
font-size: 12px;
|
|
373
|
+
font-family: inherit;
|
|
374
|
+
cursor: pointer;
|
|
375
|
+
transition: background var(--dk-dur) var(--dk-ease), color var(--dk-dur) var(--dk-ease);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.dk_segBtn:hover { color: var(--dk-label); }
|
|
379
|
+
.dk_segBtn[data-on="1"] {
|
|
380
|
+
background: var(--dk-surface-solid);
|
|
381
|
+
color: var(--dk-label);
|
|
382
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, .12);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.dk_check {
|
|
386
|
+
display: inline-flex;
|
|
387
|
+
align-items: center;
|
|
388
|
+
gap: var(--dk-gap-sm);
|
|
389
|
+
font-size: 12px;
|
|
390
|
+
color: var(--dk-label-2);
|
|
391
|
+
cursor: pointer;
|
|
392
|
+
user-select: none;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.dk_check input { accent-color: var(--dk-accent); }
|
|
396
|
+
|
|
397
|
+
/* ============================ \u6309\u94AE ============================ */
|
|
398
|
+
|
|
399
|
+
.dk_btn {
|
|
400
|
+
display: inline-flex;
|
|
401
|
+
align-items: center;
|
|
402
|
+
justify-content: center;
|
|
403
|
+
gap: var(--dk-gap-sm);
|
|
404
|
+
height: var(--dk-h-md);
|
|
405
|
+
padding: 0 var(--dk-gap-lg);
|
|
406
|
+
border: 1px solid var(--dk-border-strong);
|
|
407
|
+
border-radius: var(--dk-r-sm);
|
|
408
|
+
background: var(--dk-surface-solid);
|
|
409
|
+
color: var(--dk-label);
|
|
410
|
+
font-size: 12px;
|
|
411
|
+
font-family: inherit;
|
|
412
|
+
cursor: pointer;
|
|
413
|
+
white-space: nowrap;
|
|
414
|
+
transition: background var(--dk-dur) var(--dk-ease), border-color var(--dk-dur) var(--dk-ease), color var(--dk-dur) var(--dk-ease);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.dk_btn:hover { background: var(--dk-hover); }
|
|
418
|
+
.dk_btn:active { background: var(--dk-hover-solid); }
|
|
419
|
+
.dk_btn:focus-visible { outline: none; box-shadow: var(--dk-ring); }
|
|
420
|
+
.dk_btn:disabled { opacity: .45; cursor: not-allowed; }
|
|
421
|
+
|
|
422
|
+
.dk_btnPrimary {
|
|
423
|
+
border-color: transparent;
|
|
424
|
+
background: var(--dk-accent);
|
|
425
|
+
color: #fff;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.dk_btnPrimary:hover { background: color-mix(in srgb, var(--dk-accent) 86%, #000); }
|
|
429
|
+
|
|
430
|
+
.dk_btnDanger { border-color: color-mix(in srgb, var(--dk-danger) 40%, transparent); color: var(--dk-danger); }
|
|
431
|
+
.dk_btnDanger:hover { background: color-mix(in srgb, var(--dk-danger) 12%, transparent); }
|
|
432
|
+
|
|
433
|
+
/* ============================ \u4E3B\u4F53 / \u5BB9\u5668\u5361\u7247 ============================ */
|
|
434
|
+
|
|
435
|
+
.dk_body {
|
|
436
|
+
display: flex;
|
|
437
|
+
flex: 1 1 auto;
|
|
438
|
+
min-height: 0;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.dk_main {
|
|
442
|
+
flex: 1 1 auto;
|
|
443
|
+
min-width: 0;
|
|
444
|
+
overflow: auto;
|
|
445
|
+
padding: var(--dk-gap-lg);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
.dk_grid {
|
|
449
|
+
display: grid;
|
|
450
|
+
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
451
|
+
gap: var(--dk-gap-lg);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.dk_card {
|
|
455
|
+
display: flex;
|
|
456
|
+
flex-direction: column;
|
|
457
|
+
gap: var(--dk-gap-sm);
|
|
458
|
+
padding: var(--dk-gap-lg);
|
|
459
|
+
border: 1px solid var(--dk-border);
|
|
460
|
+
border-radius: var(--dk-r-lg);
|
|
461
|
+
background: var(--dk-surface-solid);
|
|
462
|
+
cursor: pointer;
|
|
463
|
+
transition: border-color var(--dk-dur) var(--dk-ease), box-shadow var(--dk-dur) var(--dk-ease), transform var(--dk-dur) var(--dk-ease);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.dk_card:hover {
|
|
467
|
+
border-color: var(--dk-border-strong);
|
|
468
|
+
box-shadow: var(--dk-shadow);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.dk_card:focus-visible { outline: none; box-shadow: var(--dk-ring); }
|
|
472
|
+
|
|
473
|
+
.dk_card[data-selected="1"] {
|
|
474
|
+
border-color: var(--dk-accent);
|
|
475
|
+
box-shadow: var(--dk-ring);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
.dk_cardHead {
|
|
479
|
+
display: flex;
|
|
480
|
+
align-items: center;
|
|
481
|
+
gap: var(--dk-gap-sm);
|
|
482
|
+
min-width: 0;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.dk_cardName {
|
|
486
|
+
flex: 1 1 auto;
|
|
487
|
+
min-width: 0;
|
|
488
|
+
font-size: 13px;
|
|
489
|
+
font-weight: 600;
|
|
490
|
+
overflow: hidden;
|
|
491
|
+
text-overflow: ellipsis;
|
|
492
|
+
white-space: nowrap;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.dk_cardRows {
|
|
496
|
+
display: flex;
|
|
497
|
+
flex-direction: column;
|
|
498
|
+
gap: var(--dk-gap-xs);
|
|
499
|
+
margin-top: var(--dk-gap-xs);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.dk_cardRow {
|
|
503
|
+
display: grid;
|
|
504
|
+
grid-template-columns: 44px 1fr;
|
|
505
|
+
gap: var(--dk-gap-md);
|
|
506
|
+
align-items: baseline;
|
|
507
|
+
font-size: 12px;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
.dk_cardLabel {
|
|
511
|
+
color: var(--dk-label-3);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.dk_cardValue {
|
|
515
|
+
min-width: 0;
|
|
516
|
+
color: var(--dk-label-2);
|
|
517
|
+
font-family: var(--dk-mono);
|
|
518
|
+
overflow: hidden;
|
|
519
|
+
text-overflow: ellipsis;
|
|
520
|
+
white-space: nowrap;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.dk_actionBar {
|
|
524
|
+
display: flex;
|
|
525
|
+
gap: var(--dk-gap-xs);
|
|
526
|
+
margin-top: var(--dk-gap-sm);
|
|
527
|
+
padding-top: var(--dk-gap-sm);
|
|
528
|
+
border-top: 1px solid var(--dk-border);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.dk_actionBar .dk_iconBtn {
|
|
532
|
+
border: 1px solid var(--dk-border);
|
|
533
|
+
background: var(--dk-surface-2);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.dk_actionBar .dk_iconBtn:hover:not(:disabled) {
|
|
537
|
+
background: var(--dk-hover-solid);
|
|
538
|
+
color: var(--dk-label);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/* \u300C\u67E5\u770B\u300D\u4E0E\u300C\u53D8\u66F4\u300D\u4E24\u7EC4\u4E4B\u95F4\u7684\u7AD6\u7EBF\u5206\u9694 */
|
|
542
|
+
.dk_actionBarSep {
|
|
543
|
+
flex: none;
|
|
544
|
+
width: 1px;
|
|
545
|
+
margin: 4px var(--dk-gap-sm);
|
|
546
|
+
background: var(--dk-border-strong);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/* \u5220\u9664\u662F\u7834\u574F\u6027\u4E14\u4E0D\u53EF\u6062\u590D\uFF1A\u5728\u53D8\u66F4\u7EC4\u5185\u518D\u989D\u5916\u7559\u4E00\u70B9\u8DDD\u79BB\uFF0C\u522B\u548C\u300C\u91CD\u542F\u300D\u6328\u7740\u70B9\u9519 */
|
|
550
|
+
.dk_actionBar .dk_iconBtnDanger {
|
|
551
|
+
margin-left: var(--dk-gap-xs);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
.dk_iconBtnDanger { color: var(--dk-danger); }
|
|
555
|
+
.dk_iconBtnDanger:hover:not(:disabled) { background: color-mix(in srgb, var(--dk-danger) 14%, transparent); }
|
|
556
|
+
|
|
557
|
+
.dk_iconGlyph { display: inline-flex; align-items: center; }
|
|
558
|
+
|
|
559
|
+
/* ============================ \u5FBD\u7AE0 ============================ */
|
|
560
|
+
|
|
561
|
+
.dk_badge {
|
|
562
|
+
display: inline-flex;
|
|
563
|
+
align-items: center;
|
|
564
|
+
gap: var(--dk-gap-xs);
|
|
565
|
+
height: 20px;
|
|
566
|
+
padding: 0 var(--dk-gap-sm);
|
|
567
|
+
border-radius: var(--dk-r-pill);
|
|
568
|
+
border: 1px solid var(--dk-border-strong);
|
|
569
|
+
background: var(--dk-surface-2);
|
|
570
|
+
color: var(--dk-label-2);
|
|
571
|
+
font-size: 11px;
|
|
572
|
+
line-height: 1;
|
|
573
|
+
white-space: nowrap;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.dk_badge::before {
|
|
577
|
+
content: '';
|
|
578
|
+
width: 6px;
|
|
579
|
+
height: 6px;
|
|
580
|
+
border-radius: var(--dk-r-pill);
|
|
581
|
+
background: currentColor;
|
|
582
|
+
opacity: .8;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
.dk_badge[data-state="running"] { color: var(--dk-success); border-color: color-mix(in srgb, var(--dk-success) 36%, transparent); background: color-mix(in srgb, var(--dk-success) 10%, transparent); }
|
|
586
|
+
.dk_badge[data-state="exited"] { color: var(--dk-label-3); }
|
|
587
|
+
.dk_badge[data-state="paused"] { color: var(--dk-warn); border-color: color-mix(in srgb, var(--dk-warn) 36%, transparent); background: color-mix(in srgb, var(--dk-warn) 10%, transparent); }
|
|
588
|
+
.dk_badge[data-state="restarting"] { color: var(--dk-warn); }
|
|
589
|
+
.dk_badge[data-state="dead"] { color: var(--dk-danger); border-color: color-mix(in srgb, var(--dk-danger) 36%, transparent); background: color-mix(in srgb, var(--dk-danger) 10%, transparent); }
|
|
590
|
+
.dk_badge[data-state="unhealthy"] { color: var(--dk-danger); }
|
|
591
|
+
.dk_badge[data-state="created"] { color: var(--dk-label-2); }
|
|
592
|
+
.dk_badge[data-state="unknown"] { color: var(--dk-label-3); }
|
|
593
|
+
|
|
594
|
+
.dk_tag {
|
|
595
|
+
display: inline-flex;
|
|
596
|
+
align-items: center;
|
|
597
|
+
height: 18px;
|
|
598
|
+
padding: 0 var(--dk-gap-sm);
|
|
599
|
+
border-radius: var(--dk-r-xs);
|
|
600
|
+
background: var(--dk-surface-3);
|
|
601
|
+
color: var(--dk-label-2);
|
|
602
|
+
font-size: 11px;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
/* ============================ \u5BB9\u5668\u8BE6\u60C5\uFF08\u6574\u680F\uFF09 ============================ */
|
|
606
|
+
|
|
607
|
+
.dk_detail {
|
|
608
|
+
display: flex;
|
|
609
|
+
flex-direction: column;
|
|
610
|
+
flex: 1 1 auto;
|
|
611
|
+
min-width: 0;
|
|
612
|
+
min-height: 0;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
.dk_detailTitle {
|
|
617
|
+
min-width: 0;
|
|
618
|
+
font-size: 13px;
|
|
619
|
+
font-weight: 600;
|
|
620
|
+
overflow: hidden;
|
|
621
|
+
text-overflow: ellipsis;
|
|
622
|
+
white-space: nowrap;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.dk_detailSub {
|
|
626
|
+
flex: none;
|
|
627
|
+
color: var(--dk-label-3);
|
|
628
|
+
font-size: 11px;
|
|
629
|
+
font-family: var(--dk-mono);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
.dk_tabs {
|
|
633
|
+
display: flex;
|
|
634
|
+
align-items: center;
|
|
635
|
+
gap: var(--dk-gap-xs);
|
|
636
|
+
flex: 0 0 auto;
|
|
637
|
+
padding: 0 var(--dk-gap-lg);
|
|
638
|
+
border-bottom: 1px solid var(--dk-border);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.dk_filterBar {
|
|
642
|
+
display: flex;
|
|
643
|
+
align-items: center;
|
|
644
|
+
gap: var(--dk-gap-md);
|
|
645
|
+
flex: 1 1 auto;
|
|
646
|
+
min-width: 0;
|
|
647
|
+
padding: var(--dk-gap-xs) 0;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.dk_tab {
|
|
651
|
+
height: var(--dk-h-lg);
|
|
652
|
+
padding: 0 var(--dk-gap-md);
|
|
653
|
+
border: none;
|
|
654
|
+
border-bottom: 2px solid transparent;
|
|
655
|
+
background: transparent;
|
|
656
|
+
color: var(--dk-label-2);
|
|
657
|
+
font-size: 12px;
|
|
658
|
+
font-family: inherit;
|
|
659
|
+
cursor: pointer;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
.dk_tab:hover { color: var(--dk-label); }
|
|
663
|
+
.dk_tab[data-on="1"] { color: var(--dk-label); border-bottom-color: var(--dk-accent); }
|
|
664
|
+
|
|
665
|
+
.dk_detailBody {
|
|
666
|
+
flex: 1 1 auto;
|
|
667
|
+
min-height: 0;
|
|
668
|
+
display: flex;
|
|
669
|
+
flex-direction: column;
|
|
670
|
+
overflow: auto;
|
|
671
|
+
padding: var(--dk-gap-lg);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
/* ============================ \u65E5\u5FD7\u89C6\u56FE ============================ */
|
|
675
|
+
|
|
676
|
+
.dk_logs {
|
|
677
|
+
display: flex;
|
|
678
|
+
flex-direction: column;
|
|
679
|
+
flex: 1 1 auto;
|
|
680
|
+
min-height: 0;
|
|
681
|
+
margin: calc(-1 * var(--dk-gap-lg));
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
.dk_toolLabel {
|
|
686
|
+
color: var(--dk-label-3);
|
|
687
|
+
font-size: 11px;
|
|
688
|
+
font-weight: 600;
|
|
689
|
+
letter-spacing: .4px;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.dk_selectSm { height: var(--dk-h-md); padding: 0 var(--dk-gap-sm); font-size: 12px; }
|
|
693
|
+
|
|
694
|
+
.dk_pill {
|
|
695
|
+
min-width: 44px;
|
|
696
|
+
height: var(--dk-h-md);
|
|
697
|
+
padding: 0 var(--dk-gap-md);
|
|
698
|
+
border: 1px solid var(--dk-border-strong);
|
|
699
|
+
border-radius: var(--dk-r-pill);
|
|
700
|
+
background: var(--dk-surface-2);
|
|
701
|
+
color: var(--dk-label-3);
|
|
702
|
+
font-size: 12px;
|
|
703
|
+
font-family: inherit;
|
|
704
|
+
cursor: pointer;
|
|
705
|
+
transition: background var(--dk-dur) var(--dk-ease), color var(--dk-dur) var(--dk-ease), border-color var(--dk-dur) var(--dk-ease);
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
.dk_pill:hover { background: var(--dk-hover); }
|
|
709
|
+
.dk_pill:focus-visible { outline: none; box-shadow: var(--dk-ring); }
|
|
710
|
+
|
|
711
|
+
.dk_pill[data-on="1"] {
|
|
712
|
+
border-color: color-mix(in srgb, var(--dk-success) 46%, transparent);
|
|
713
|
+
background: color-mix(in srgb, var(--dk-success) 16%, transparent);
|
|
714
|
+
color: var(--dk-success);
|
|
715
|
+
font-weight: 600;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
.dk_filterToggle {
|
|
720
|
+
display: inline-flex;
|
|
721
|
+
align-items: center;
|
|
722
|
+
gap: var(--dk-gap-xs);
|
|
723
|
+
padding: 0;
|
|
724
|
+
border: none;
|
|
725
|
+
background: transparent;
|
|
726
|
+
color: var(--dk-label-2);
|
|
727
|
+
font-size: 12px;
|
|
728
|
+
font-family: inherit;
|
|
729
|
+
cursor: pointer;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
.dk_filterToggle:hover { color: var(--dk-label); }
|
|
733
|
+
.dk_caret { display: inline-flex; transform: rotate(-90deg); transition: transform var(--dk-dur) var(--dk-ease); }
|
|
734
|
+
.dk_filterToggle[data-on="1"] .dk_caret { transform: none; }
|
|
735
|
+
.dk_filterInput { flex: 1 1 200px; height: var(--dk-h-md); min-width: 0; }
|
|
736
|
+
.dk_filterCount { flex: none; color: var(--dk-label-3); font-size: 11px; font-variant-numeric: tabular-nums; }
|
|
737
|
+
|
|
738
|
+
.dk_logBody {
|
|
739
|
+
flex: 1 1 auto;
|
|
740
|
+
min-height: 0;
|
|
741
|
+
overflow: auto;
|
|
742
|
+
padding: var(--dk-gap-md) var(--dk-gap-lg);
|
|
743
|
+
background: var(--dk-log-bg);
|
|
744
|
+
color: var(--dk-log-fg);
|
|
745
|
+
font-family: var(--dk-mono);
|
|
746
|
+
font-size: 12px;
|
|
747
|
+
line-height: 1.6;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
.dk_logLine {
|
|
751
|
+
white-space: pre-wrap;
|
|
752
|
+
word-break: break-word;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.dk_logLine mark {
|
|
756
|
+
background: color-mix(in srgb, var(--dk-warn) 62%, transparent);
|
|
757
|
+
color: inherit;
|
|
758
|
+
border-radius: 2px;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
.dk_logLevel {
|
|
762
|
+
margin-right: var(--dk-gap-sm);
|
|
763
|
+
font-weight: 600;
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
.dk_logLevel[data-level="TRACE"] { color: #8a93a5; }
|
|
767
|
+
.dk_logLevel[data-level="DEBUG"] { color: #8a93a5; }
|
|
768
|
+
.dk_logLevel[data-level="INFO"] { color: #6ea8fe; }
|
|
769
|
+
.dk_logLevel[data-level="WARN"] { color: #e0a94a; }
|
|
770
|
+
.dk_logLevel[data-level="ERROR"] { color: #ff6b6b; }
|
|
771
|
+
.dk_logLevel[data-level="FATAL"] { color: #ff6b6b; font-weight: 700; }
|
|
772
|
+
|
|
773
|
+
.dk_logTs { margin-right: var(--dk-gap-sm); color: #7f8899; }
|
|
774
|
+
.dk_logText { color: inherit; }
|
|
775
|
+
.dk_logMore { color: #7f8899; font-style: italic; }
|
|
776
|
+
|
|
777
|
+
/* \u952E\u503C\u884C */
|
|
778
|
+
.dk_kv {
|
|
779
|
+
display: grid;
|
|
780
|
+
grid-template-columns: 92px 1fr;
|
|
781
|
+
gap: var(--dk-gap-xs) var(--dk-gap-md);
|
|
782
|
+
font-size: 12px;
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
.dk_kvKey { color: var(--dk-label-3); }
|
|
786
|
+
.dk_kvVal { color: var(--dk-label); word-break: break-all; }
|
|
787
|
+
.dk_kvValMono { font-family: var(--dk-mono); }
|
|
788
|
+
|
|
789
|
+
/* \u65E5\u5FD7 */
|
|
790
|
+
.dk_logBar {
|
|
791
|
+
display: flex;
|
|
792
|
+
align-items: center;
|
|
793
|
+
gap: var(--dk-gap-sm);
|
|
794
|
+
flex-wrap: wrap;
|
|
795
|
+
margin-bottom: var(--dk-gap-sm);
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
.dk_logBar .dk_input { height: var(--dk-h-md); min-width: 0; }
|
|
799
|
+
|
|
800
|
+
.dk_logBox {
|
|
801
|
+
margin: 0;
|
|
802
|
+
padding: var(--dk-gap-md);
|
|
803
|
+
border-radius: var(--dk-r-md);
|
|
804
|
+
background: var(--dk-log-bg);
|
|
805
|
+
color: var(--dk-log-fg);
|
|
806
|
+
font-family: var(--dk-mono);
|
|
807
|
+
font-size: 12px;
|
|
808
|
+
line-height: 1.55;
|
|
809
|
+
white-space: pre-wrap;
|
|
810
|
+
word-break: break-word;
|
|
811
|
+
max-height: none;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
.dk_logBox mark {
|
|
815
|
+
background: color-mix(in srgb, var(--dk-warn) 55%, transparent);
|
|
816
|
+
color: inherit;
|
|
817
|
+
border-radius: 2px;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
/* \u7EDF\u8BA1 */
|
|
821
|
+
.dk_stats {
|
|
822
|
+
width: 100%;
|
|
823
|
+
border-collapse: collapse;
|
|
824
|
+
font-size: 12px;
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
.dk_stats th,
|
|
828
|
+
.dk_stats td {
|
|
829
|
+
padding: var(--dk-gap-sm) var(--dk-gap-md);
|
|
830
|
+
border-bottom: 1px solid var(--dk-border);
|
|
831
|
+
text-align: left;
|
|
832
|
+
white-space: nowrap;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
.dk_stats th {
|
|
836
|
+
color: var(--dk-label-3);
|
|
837
|
+
font-weight: 500;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
.dk_stats td.dk_num { font-family: var(--dk-mono); text-align: right; }
|
|
841
|
+
|
|
842
|
+
.dk_bar {
|
|
843
|
+
position: relative;
|
|
844
|
+
width: 72px;
|
|
845
|
+
height: 6px;
|
|
846
|
+
border-radius: var(--dk-r-pill);
|
|
847
|
+
background: var(--dk-surface-3);
|
|
848
|
+
overflow: hidden;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
.dk_barFill {
|
|
852
|
+
position: absolute;
|
|
853
|
+
inset: 0 auto 0 0;
|
|
854
|
+
border-radius: var(--dk-r-pill);
|
|
855
|
+
background: var(--dk-accent);
|
|
856
|
+
transition: width var(--dk-dur) var(--dk-ease);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
.dk_barFill[data-warn="1"] { background: var(--dk-warn); }
|
|
860
|
+
.dk_barFill[data-danger="1"] { background: var(--dk-danger); }
|
|
861
|
+
|
|
862
|
+
/* ============================ \u955C\u50CF\u8868 ============================ */
|
|
863
|
+
|
|
864
|
+
.dk_tableWrap { overflow: auto; }
|
|
865
|
+
|
|
866
|
+
.dk_images {
|
|
867
|
+
width: 100%;
|
|
868
|
+
border-collapse: collapse;
|
|
869
|
+
font-size: 12px;
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
.dk_images th,
|
|
873
|
+
.dk_images td {
|
|
874
|
+
padding: var(--dk-gap-sm) var(--dk-gap-md);
|
|
875
|
+
border-bottom: 1px solid var(--dk-border);
|
|
876
|
+
text-align: left;
|
|
877
|
+
white-space: nowrap;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
.dk_images th { color: var(--dk-label-3); font-weight: 500; }
|
|
881
|
+
.dk_images td.dk_mono { font-family: var(--dk-mono); }
|
|
882
|
+
.dk_images tbody tr:hover { background: var(--dk-hover); }
|
|
883
|
+
|
|
884
|
+
/* ============================ \u7A7A\u6001 / \u63D0\u793A ============================ */
|
|
885
|
+
|
|
886
|
+
.dk_empty {
|
|
887
|
+
display: flex;
|
|
888
|
+
flex-direction: column;
|
|
889
|
+
align-items: center;
|
|
890
|
+
justify-content: center;
|
|
891
|
+
gap: var(--dk-gap-md);
|
|
892
|
+
padding: 48px var(--dk-gap-lg);
|
|
893
|
+
color: var(--dk-label-3);
|
|
894
|
+
text-align: center;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
.dk_emptyTitle { font-size: 13px; color: var(--dk-label-2); }
|
|
898
|
+
.dk_emptyHint { font-size: 12px; max-width: 420px; line-height: 1.6; }
|
|
899
|
+
|
|
900
|
+
.dk_banner {
|
|
901
|
+
display: flex;
|
|
902
|
+
align-items: flex-start;
|
|
903
|
+
gap: var(--dk-gap-sm);
|
|
904
|
+
margin: 0 0 var(--dk-gap-lg);
|
|
905
|
+
padding: var(--dk-gap-md) var(--dk-gap-lg);
|
|
906
|
+
border: 1px solid color-mix(in srgb, var(--dk-danger) 32%, transparent);
|
|
907
|
+
border-radius: var(--dk-r-md);
|
|
908
|
+
background: color-mix(in srgb, var(--dk-danger) 8%, transparent);
|
|
909
|
+
color: var(--dk-label);
|
|
910
|
+
font-size: 12px;
|
|
911
|
+
line-height: 1.6;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
.dk_banner[data-kind="warn"] {
|
|
915
|
+
border-color: color-mix(in srgb, var(--dk-warn) 32%, transparent);
|
|
916
|
+
background: color-mix(in srgb, var(--dk-warn) 8%, transparent);
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
.dk_banner[data-kind="info"] {
|
|
920
|
+
border-color: var(--dk-border-strong);
|
|
921
|
+
background: var(--dk-surface-2);
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
.dk_bannerIcon { flex: 0 0 auto; margin-top: 1px; color: currentColor; }
|
|
925
|
+
.dk_bannerBody { flex: 1 1 auto; min-width: 0; }
|
|
926
|
+
.dk_bannerAction { flex: 0 0 auto; display: inline-flex; align-items: center; }
|
|
927
|
+
|
|
928
|
+
/* ============================ \u786E\u8BA4\u6846 ============================ */
|
|
929
|
+
|
|
930
|
+
.dk_confirmBackdrop {
|
|
931
|
+
position: absolute;
|
|
932
|
+
inset: 0;
|
|
933
|
+
z-index: 5;
|
|
934
|
+
display: flex;
|
|
935
|
+
align-items: center;
|
|
936
|
+
justify-content: center;
|
|
937
|
+
padding: var(--dk-gap-lg);
|
|
938
|
+
background: color-mix(in srgb, #000 40%, transparent);
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
.dk_confirm {
|
|
942
|
+
width: min(420px, 100%);
|
|
943
|
+
padding: var(--dk-gap-xl);
|
|
944
|
+
border: 1px solid var(--dk-border-strong);
|
|
945
|
+
border-radius: var(--dk-r-lg);
|
|
946
|
+
background: var(--dk-surface-solid);
|
|
947
|
+
box-shadow: var(--dk-shadow-lg);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
.dk_confirmTitle { font-size: 13px; font-weight: 600; margin-bottom: var(--dk-gap-md); }
|
|
951
|
+
.dk_confirmText { font-size: 12px; color: var(--dk-label-2); line-height: 1.7; margin-bottom: var(--dk-gap-lg); }
|
|
952
|
+
.dk_confirmActions { display: flex; justify-content: flex-end; gap: var(--dk-gap-md); }
|
|
953
|
+
|
|
954
|
+
/* ============================ \u8BBE\u7F6E\u5361\u7247 ============================ */
|
|
955
|
+
|
|
956
|
+
.dk_cardBody {
|
|
957
|
+
display: flex;
|
|
958
|
+
flex-direction: column;
|
|
959
|
+
gap: var(--dk-gap-lg);
|
|
960
|
+
padding: var(--dk-gap-lg);
|
|
961
|
+
border: 1px solid var(--dk-border);
|
|
962
|
+
border-radius: var(--dk-r-lg);
|
|
963
|
+
background: var(--dk-surface-solid);
|
|
964
|
+
color: var(--dk-label);
|
|
965
|
+
font-size: 13px;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
.dk_cardSection {
|
|
969
|
+
margin-top: var(--dk-gap-xs);
|
|
970
|
+
padding-bottom: var(--dk-gap-xs);
|
|
971
|
+
border-bottom: 1px solid var(--dk-border);
|
|
972
|
+
color: var(--dk-label-3);
|
|
973
|
+
font-size: 12px;
|
|
974
|
+
font-weight: 600;
|
|
975
|
+
letter-spacing: .3px;
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
.dk_field {
|
|
979
|
+
display: flex;
|
|
980
|
+
flex-direction: column;
|
|
981
|
+
gap: var(--dk-gap-sm);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
.dk_label { font-size: 12px; color: var(--dk-label-2); }
|
|
985
|
+
.dk_hint { font-size: 11px; color: var(--dk-label-3); line-height: 1.6; }
|
|
986
|
+
.dk_row { display: flex; align-items: center; gap: var(--dk-gap-md); flex-wrap: wrap; }
|
|
987
|
+
|
|
988
|
+
.dk_targetRow {
|
|
989
|
+
display: grid;
|
|
990
|
+
grid-template-columns: 1fr 96px 1fr auto;
|
|
991
|
+
gap: var(--dk-gap-sm);
|
|
992
|
+
align-items: center;
|
|
993
|
+
padding: var(--dk-gap-sm);
|
|
994
|
+
border: 1px solid var(--dk-border);
|
|
995
|
+
border-radius: var(--dk-r-md);
|
|
996
|
+
background: var(--dk-surface-2);
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
.dk_targetRow .dk_input,
|
|
1000
|
+
.dk_targetRow .dk_select {
|
|
1001
|
+
height: var(--dk-h-md);
|
|
1002
|
+
min-width: 0;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
.dk_targetHead {
|
|
1006
|
+
display: flex;
|
|
1007
|
+
align-items: center;
|
|
1008
|
+
justify-content: space-between;
|
|
1009
|
+
gap: var(--dk-gap-md);
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
.dk_msg { font-size: 12px; }
|
|
1013
|
+
.dk_msg[data-kind="ok"] { color: var(--dk-success); }
|
|
1014
|
+
.dk_msg[data-kind="error"] { color: var(--dk-danger); }
|
|
1015
|
+
|
|
1016
|
+
.dk_spin {
|
|
1017
|
+
display: inline-block;
|
|
1018
|
+
width: 13px;
|
|
1019
|
+
height: 13px;
|
|
1020
|
+
border: 2px solid var(--dk-border-strong);
|
|
1021
|
+
border-top-color: var(--dk-accent);
|
|
1022
|
+
border-radius: 50%;
|
|
1023
|
+
animation: dk_spin .7s linear infinite;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
@keyframes dk_spin { to { transform: rotate(360deg); } }
|
|
1027
|
+
|
|
1028
|
+
.dk_srOnly {
|
|
1029
|
+
position: absolute;
|
|
1030
|
+
width: 1px;
|
|
1031
|
+
height: 1px;
|
|
1032
|
+
padding: 0;
|
|
1033
|
+
margin: -1px;
|
|
1034
|
+
overflow: hidden;
|
|
1035
|
+
clip: rect(0 0 0 0);
|
|
1036
|
+
white-space: nowrap;
|
|
1037
|
+
border: 0;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
/* \u7A84\u5C4F\uFF1A\u62BD\u5C49\u6539\u4E3A\u8986\u76D6\u6574\u680F */
|
|
1041
|
+
@media (max-width: 860px) {
|
|
1042
|
+
.dk_body { flex-direction: column; }
|
|
1043
|
+
.dk_targetRow { grid-template-columns: 1fr 1fr; }
|
|
1044
|
+
.dk_cardRow { grid-template-columns: 40px 1fr; }
|
|
1045
|
+
}
|
|
1046
|
+
`;var ot="/api/dsh-docker",Pe="dsh-docker-style";function Se(){if(document.getElementById(Pe)!==null)return;let l=document.createElement("style");l.id=Pe,l.textContent=He,document.head.appendChild(l)}async function F(l,m){let e=await fetch(ot+l,{...m,headers:{"content-type":"application/json",...m?.headers??{}}}),d=null;try{d=await e.json()}catch{}if(!e.ok){let O=d!==null&&typeof d.error=="string"?d.error:`HTTP ${String(e.status)}`;throw new Error(O)}if(d!==null&&d.ok===!1)throw new Error(typeof d.error=="string"?d.error:"\u8BF7\u6C42\u5931\u8D25");return d}var R={config:()=>F("/config"),saveConfig:l=>F("/config",{method:"POST",body:JSON.stringify(l)}),targets:()=>F("/targets"),probe:l=>F("/probe",{method:"POST",body:JSON.stringify({target:l})}),containers:(l,m)=>F("/containers",{method:"POST",body:JSON.stringify({target:l,all:m})}),inspect:(l,m)=>F("/inspect",{method:"POST",body:JSON.stringify({target:l,id:m})}),logs:(l,m,e)=>F("/logs",{method:"POST",body:JSON.stringify({target:l,id:m,...e})}),stats:(l,m)=>F("/stats",{method:"POST",body:JSON.stringify({target:l,ids:m})}),images:l=>F("/images",{method:"POST",body:JSON.stringify({target:l})}),action:(l,m,e)=>F("/action",{method:"POST",body:JSON.stringify({target:l,action:m,id:e})}),exec:(l,m,e,d)=>F("/exec",{method:"POST",body:JSON.stringify({target:l,id:m,command:e,timeoutSec:d})})};function lt(l){return l==null||!Number.isFinite(l)?"\u2014":l.toFixed(l>=10?1:2)+"%"}function it(l){return l.hostPort===void 0?String(l.containerPort)+"/"+l.protocol:String(l.hostPort)+"\u2192"+String(l.containerPort)+"/"+l.protocol}function ze(l){if(!Array.isArray(l)||l.length===0)return"\u65E0\u7AEF\u53E3\u6620\u5C04";let m=new Set,e=[];for(let d of l){let O=it(d);m.has(O)||(m.add(O),e.push(O))}return e.join(" ")}function st(l){let m=/^(\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2})/.exec(l);return m===null?l:m[1]+" "+m[2]}function ct(l){return{running:"\u8FD0\u884C\u4E2D",exited:"\u5DF2\u505C\u6B62",created:"\u5DF2\u521B\u5EFA",paused:"\u5DF2\u6682\u505C",restarting:"\u91CD\u542F\u4E2D",dead:"dead",removing:"\u5220\u9664\u4E2D",unknown:"\u672A\u77E5"}[l]??l}function kt(l,m){let e=new Blob([m],{type:"text/plain;charset=utf-8"}),d=URL.createObjectURL(e),O=document.createElement("a");O.href=d,O.download=l,O.click(),setTimeout(()=>URL.revokeObjectURL(d),1e3)}function je(l){return"docker exec -it '"+String(l).replaceAll("'","'\\''")+"' sh"}var re=null,ie=null,Ie=[],Ue=0;function Te(l){l!==null&&typeof l=="object"&&(ie=l),Ue=Date.now()}async function ve(){try{let[l,m]=await Promise.all([R.config(),R.targets()]);return ie=l.config,Ie=m.targets??[],Ue=Date.now(),!0}catch(l){return console.warn("[dsh-docker] \u76EE\u6807\u7F13\u5B58\u5237\u65B0\u5931\u8D25\uFF1A"+(l instanceof Error?l.message:String(l))),!1}}async function ut(l,m){let e=Oe(l,m);return e!==void 0?e:(await ve(),Oe(l,m))}function Oe(l,m){let e=ie!==null&&Array.isArray(ie.targets)?ie.targets:[];if(typeof m=="string"&&m!==""){let C=e.find(K=>K.kind==="ssh"&&K.book===m);if(C!==void 0)return C.name}let d=typeof l?.host=="string"?l.host:"";if(d==="")return;let O=Number(l?.port),h=Number.isInteger(O)&&O>0?O:22;for(let C of Ie){if(C.kind!=="ssh"||typeof C.label!="string")continue;let K=/^([^@]+)@(.+?)(?::(\d+))?$/.exec(C.label);if(K!==null&&K[2]===d&&Number(K[3]??22)===h)return C.name}}var Fe='<svg viewBox="0 0 16 16" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 1.8l5.4 3.1v6.2L8 14.2 2.6 11.1V4.9z"/><path d="M2.6 4.9L8 8l5.4-3.1"/><path d="M8 8v6.2"/></svg>',gt='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 1.8l5.4 3.1v6.2L8 14.2 2.6 11.1V4.9z"/><path d="M2.6 4.9L8 8l5.4-3.1"/><path d="M8 8v6.2"/></svg>',Le='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M13.2 8a5.2 5.2 0 1 1-1.5-3.7"/><path d="M13.4 2.2v2.6h-2.6"/></svg>',Be='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M4.5 4.5l7 7"/><path d="M11.5 4.5l-7 7"/></svg>',ht='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 3.4l7.4 4.6L5 12.6z"/></svg>',pt='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="4.2" y="4.2" width="7.6" height="7.6" rx="1.2"/></svg>',mt='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M13.2 8a5.2 5.2 0 1 1-1.5-3.7"/><path d="M13.4 2.2v2.6h-2.6"/></svg>',vt='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 4.6h10"/><path d="M6.2 4.6V3.4a.8.8 0 0 1 .8-.8h2a.8.8 0 0 1 .8.8v1.2"/><path d="M4.6 4.6l.6 8a.9.9 0 0 0 .9.8h3.8a.9.9 0 0 0 .9-.8l.6-8"/></svg>';var ft='<svg viewBox="0 0 16 16" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3v7.2"/><path d="M5 7.4L8 10.4l3-3"/><path d="M3.4 12.8h9.2"/></svg>',bt='<svg viewBox="0 0 16 16" width="15" height="15" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 2.6l5.8 10.4H2.2z"/><path d="M8 6.4v3.2"/><path d="M8 11.6h.01"/></svg>',Ke='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 5l3.5 3L3 11"/><path d="M8.5 11H13"/></svg>',_t='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M3 4.5h10"/><path d="M3 8h10"/><path d="M3 11.5h6"/></svg>',xt='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" aria-hidden="true"><path d="M3.5 12.5v-4"/><path d="M7 12.5v-8"/><path d="M10.5 12.5v-5"/><path d="M13 12.5v-2"/></svg>',wt='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12.5 8h-9"/><path d="M7 4.5L3.5 8 7 11.5"/></svg>',Ve='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6.5L8 10.5l4-4"/></svg>';window.__ModuleLoader__.load({id:"@hyzyn/dsh-docker",factory:l=>{let m=l("react"),{jsx:e,jsxs:d}=l("react/jsx-runtime"),{createRoot:O}=l("react-dom/client"),{useState:h,useEffect:C,useRef:K,useCallback:de}=m;function Ge(t,n,i){if(n==="")return t;let k=t.toLowerCase(),_=n.toLowerCase(),r=[],v=0,x=k.indexOf(_),w=0;for(;x>=0&&w<500;)x>v&&r.push(t.slice(v,x)),r.push(e("mark",{children:t.slice(x,x+_.length)},i+"-m"+String(w))),v=x+_.length,w+=1,x=k.indexOf(_,v);return v<t.length&&r.push(t.slice(v)),r}function Ee(t){let n=t.health==="unhealthy"?"unhealthy":t.state,i=t.health==="unhealthy"?"\u4E0D\u5065\u5EB7":ct(t.state);return e("span",{className:"dk_badge","data-state":n,title:t.status??"",children:i})}function V(t){return d("div",{className:"dk_banner","data-kind":t.kind??"error",children:[e("span",{className:"dk_bannerIcon",dangerouslySetInnerHTML:{__html:bt}},"icon"),d("div",{className:"dk_bannerBody",children:[e("div",{children:t.title}),t.hint===void 0?null:e("div",{className:"dk_hint",style:{marginTop:4},children:t.hint})]},"body"),t.action===void 0?null:e("div",{className:"dk_bannerAction",children:t.action},"action")]})}function Me(t){return d("div",{className:"dk_confirmBackdrop",onMouseDown:n=>n.stopPropagation(),children:[d("div",{className:"dk_confirm",children:[e("div",{className:"dk_confirmTitle",children:t.title}),e("div",{className:"dk_confirmText",children:t.text}),d("div",{className:"dk_confirmActions",children:[e("button",{type:"button",className:"dk_btn",onClick:t.onCancel,children:"\u53D6\u6D88"}),e("button",{type:"button",className:"dk_btn dk_btnDanger",onClick:t.onConfirm,children:t.confirmLabel})]})]})]})}function yt(t){return e("button",{type:"button",className:"dk_btn"+(t.danger===!0?" dk_btnDanger":""),disabled:t.disabled===!0,title:t.title??"",onClick:n=>{n.stopPropagation(),t.onClick()},children:t.children})}function se(t){return d("div",{className:"dk_cardRow",children:[e("span",{className:"dk_cardLabel",children:t.label}),e("span",{className:"dk_cardValue",title:String(t.value),children:t.value})]})}function U(t){let n=t.disabled===!0;return e("button",{type:"button",className:"dk_iconBtn"+(t.danger===!0?" dk_iconBtnDanger":""),"data-on":t.on===!0?"1":void 0,disabled:n,title:t.title,"aria-label":t.title,onClick:i=>{i.stopPropagation(),!n&&t.onClick()},children:e("span",{className:"dk_iconGlyph",dangerouslySetInnerHTML:{__html:t.icon}})})}function We(t){let n=t.item,i=t.allowMutations!==!0,k=n.state==="running"||n.state==="paused"||n.state==="restarting",_=n.createdAt===null?n.runningFor===""?"\u2014":n.runningFor:st(n.createdAt);return d("div",{className:"dk_card",role:"button",tabIndex:0,"data-selected":t.selected===!0?"1":"0",onClick:()=>t.onOpen(n,"overview"),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),t.onOpen(n,"overview"))},children:[d("div",{className:"dk_cardHead",children:[e("span",{className:"dk_cardName",title:n.name,children:n.name}),e(Ee,{state:n.state,health:n.health,status:n.status})]},"head"),d("div",{className:"dk_cardRows",children:[e(se,{label:"\u955C\u50CF",value:n.image},"image"),e(se,{label:"ID",value:n.shortId},"id"),e(se,{label:"\u7AEF\u53E3",value:ze(n.ports)},"ports"),e(se,{label:"\u521B\u5EFA",value:_},"created"),n.composeProject===null?null:e(se,{label:"compose",value:n.composeProject+(n.composeService===null?"":"/"+n.composeService)},"compose")]},"rows"),d("div",{className:"dk_actionBar",children:[e(U,{icon:Ke,title:"\u5728\u5BB9\u5668\u5185\u6253\u5F00\u4EA4\u4E92\u5F0F\u7EC8\u7AEF\uFF08docker exec -it "+n.name+" sh\uFF09",onClick:()=>t.onExec(n)},"exec"),e(U,{icon:_t,title:"\u67E5\u770B\u65E5\u5FD7",onClick:()=>t.onOpen(n,"logs")},"logs"),e(U,{icon:xt,title:"\u8D44\u6E90\u5360\u7528",onClick:()=>t.onOpen(n,"stats")},"stats"),e("span",{className:"dk_actionBarSep","aria-hidden":"true"},"sep"),e(U,{icon:k?pt:ht,title:i?"\u9700\u8981\u6253\u5F00\u300C\u5141\u8BB8\u53D8\u66F4\u64CD\u4F5C\u300D":k?"\u505C\u6B62\u5BB9\u5668":"\u542F\u52A8\u5BB9\u5668",disabled:i,onClick:()=>t.onAction(k?"stop":"start",n)},"power"),e(U,{icon:mt,title:i?"\u9700\u8981\u6253\u5F00\u300C\u5141\u8BB8\u53D8\u66F4\u64CD\u4F5C\u300D":"\u91CD\u542F\u5BB9\u5668",disabled:i,onClick:()=>t.onAction("restart",n)},"restart"),e(U,{icon:vt,danger:!0,title:i?"\u9700\u8981\u6253\u5F00\u300C\u5141\u8BB8\u53D8\u66F4\u64CD\u4F5C\u300D":"\u5220\u9664\u5BB9\u5668\uFF08\u4E0D\u53EF\u6062\u590D\uFF09",disabled:i,onClick:()=>t.onAction("remove",n)},"remove")]},"actions")]})}let Je=/^\s*(\[\d{4}-\d{2}-\d{2}[ T][0-9:.,]+\]|\d{2}:\d{2}:\d{2}[,.]\d{3})/,$e=/^\s*(\[(?:TRACE|DEBUG|INFO|WARN|ERROR|FATAL)\]|\|\s*(?:TRACE|DEBUG|INFO|WARN|ERROR|FATAL))/,qe=/(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)/,fe=2e3;function Ye(t,n,i){let k=[],_=t;for(let r=0;r<2;r+=1){let v=Je.exec(_);if(v!==null){k.push(e("span",{className:"dk_logTs",children:v[1]},"ts"+String(r))),_=_.slice(v[0].length);continue}let x=$e.exec(_);if(x!==null){let w=qe.exec(x[1]);k.push(e("span",{className:"dk_logLevel","data-level":w===null?"":w[1],children:x[1].trim()},"lv"+String(r))),_=_.slice(x[0].length);continue}break}return k.push(e("span",{className:"dk_logText",children:Ge(_,i,"x"+String(n))},"tx")),d("div",{className:"dk_logLine",children:k},String(n))}function Xe(t){let n=t.item,i=t.config,[k,_]=h(t.initialTab??"overview"),[r,v]=h(null),[x,w]=h(""),[N,A]=h({tail:i.logTailDefault,timestamps:!1}),[E,I]=h(null),[T,Q]=h(""),[$,Z]=h(!1),[H,P]=h(""),[B,z]=h(!0),[G,o]=h(!1),[s,p]=h(3),[S,ee]=h(null),[ge,q]=h(""),[Y,_e]=h(""),[j,M]=h(null),[te,ce]=h(""),[he,W]=h(!1);C(()=>{let g=!0;return v(null),w(""),R.inspect(t.target,n.id).then(b=>{g&&v(b.details?.[0]??null)}).catch(b=>{g&&w(b.message)}),()=>{g=!1}},[t.target,n.id,t.refreshToken]);let D=de(()=>{Z(!0),Q(""),R.logs(t.target,n.id,{tail:N.tail,timestamps:N.timestamps}).then(g=>I(g.logs)).catch(g=>Q(g.message)).finally(()=>Z(!1))},[t.target,n.id,N.tail,N.timestamps]);C(()=>{k==="logs"&&D()},[k,D,t.refreshToken]),C(()=>{if(k!=="logs"||!G)return;let g=setInterval(D,Math.max(1,s)*1e3);return()=>clearInterval(g)},[k,G,s,D]),C(()=>{if(k!=="stats")return;let g=!0,b=()=>{R.stats(t.target,[n.id]).then(y=>{g&&(ee(y.stats?.[0]??null),q(""))}).catch(y=>{g&&q(y.message)})};b();let c=setInterval(b,Math.max(2,i.pollIntervalSec)*1e3);return()=>{g=!1,clearInterval(c)}},[k,t.target,n.id,i.pollIntervalSec,t.refreshToken]);let oe=()=>{Y.trim()!==""&&(W(!0),ce(""),M(null),R.exec(t.target,n.id,Y,i.execTimeoutSec).then(g=>M(g.result)).catch(g=>ce(g.message)).finally(()=>W(!1)))},pe=()=>{if(x!=="")return e(V,{title:"\u8BFB\u53D6\u5BB9\u5668\u8BE6\u60C5\u5931\u8D25",hint:x});if(r===null)return e("div",{className:"dk_empty",children:[e("span",{className:"dk_spin"}),e("div",{children:"\u8BFB\u53D6\u4E2D\u2026"})]});let g=[["\u72B6\u6001",r.state+(r.health===null?"":" / "+r.health)+(r.status===""?"":"\uFF08"+r.status+"\uFF09")],["\u955C\u50CF",r.image],["\u5BB9\u5668 ID",r.shortId],["\u542F\u52A8\u65F6\u95F4",r.startedAt??"\u2014"],["\u7ED3\u675F\u65F6\u95F4",r.finishedAt??"\u2014"],["\u9000\u51FA\u7801",r.exitCode===null?"\u2014":String(r.exitCode)],["\u91CD\u542F\u6B21\u6570",r.restartCount===null?"\u2014":String(r.restartCount)],["\u91CD\u542F\u7B56\u7565",r.restartPolicy??"\u2014"],["PID",r.pid===null?"\u2014":String(r.pid)],["\u7AEF\u53E3",r.ports.length===0?"\u2014":ze(r.ports)],["\u6302\u8F7D",r.mounts.length===0?"\u2014":r.mounts.map(c=>c.source+"\u2192"+c.destination+(c.readWrite?"":"\uFF08\u53EA\u8BFB\uFF09")).join(`
|
|
1047
|
+
`)],["\u7F51\u7EDC",r.networks.length===0?"\u2014":r.networks.map(c=>c.name+(c.ip===null?"":"\uFF08"+c.ip+"\uFF09")).join(", ")],["\u547D\u4EE4",(r.entrypoint+" "+r.command).trim()||"\u2014"],["\u5DE5\u4F5C\u76EE\u5F55",r.workingDir===""?"\u2014":r.workingDir],["\u7528\u6237",r.user===""?"\u2014":r.user]],b=d("div",{className:"dk_kv",children:g.flatMap(([c,y],L)=>[e("div",{className:"dk_kvKey",children:c},"k"+String(L)),e("div",{className:"dk_kvVal"+(c==="\u5BB9\u5668 ID"||c==="\u547D\u4EE4"||c==="\u955C\u50CF"?" dk_kvValMono":""),children:y},"v"+String(L))])});return d("div",{children:[r.healthLogTail===null?null:e("div",{className:"dk_hint",style:{marginBottom:8},children:"\u6700\u8FD1\u5065\u5EB7\u68C0\u67E5\u8F93\u51FA\uFF1A"+r.healthLogTail}),b,e("div",{className:"dk_cardSection",style:{marginTop:16},children:"\u4E00\u6B21\u6027\u547D\u4EE4\uFF08docker exec\uFF09"}),i.allowExec!==!0?e(V,{kind:"info",title:"exec \u672A\u542F\u7528",hint:"\u5230 \u8BBE\u7F6E \u2192 \u63D2\u4EF6 \u2192 Docker \u5BB9\u5668\u9762\u677F \u6253\u5F00\u300C\u5141\u8BB8 exec\u300D\uFF0C\u6216\u76F4\u63A5\u590D\u5236\u5361\u7247\u4E0A\u7684 exec \u547D\u4EE4\u5230\u7EC8\u7AEF\u9762\u677F\u4EA4\u4E92\u5F0F\u8FDB\u5165\u5BB9\u5668\u3002"}):d("div",{children:[d("div",{className:"dk_row",children:[e("input",{className:"dk_input",style:{flex:"1 1 auto"},placeholder:"\u5982 ls -la /app \u6216 cat /etc/nginx/nginx.conf",value:Y,onChange:c=>_e(c.target.value),onKeyDown:c=>{c.key==="Enter"&&oe()}}),e("button",{type:"button",className:"dk_btn dk_btnPrimary",disabled:he,onClick:oe,children:he?"\u6267\u884C\u4E2D\u2026":"\u6267\u884C"})]}),te===""?null:e(V,{title:"\u6267\u884C\u5931\u8D25",hint:te}),j===null?null:d("div",{style:{marginTop:8},children:[e("div",{className:"dk_hint",children:"\u9000\u51FA\u7801 "+(j.code===null?"?":String(j.code))+" \xB7 \u8017\u65F6 "+String(j.durationMs)+"ms"+(j.truncated?" \xB7 \u8F93\u51FA\u5DF2\u622A\u65AD":"")}),e("pre",{className:"dk_logBox",style:{marginTop:6},children:(j.stdout||"")+(j.stderr===""?"":`
|
|
1048
|
+
[stderr]
|
|
1049
|
+
`+j.stderr)||"(\u65E0\u8F93\u51FA)"})]})]})]})},le=()=>{let g=E===null?"":E.text,b=H.trim().toLowerCase(),c=g===""?[]:g.split(`
|
|
1050
|
+
`),y=b===""?c:c.filter(L=>L.toLowerCase().includes(b));return{raw:g,needle:b,allLines:c,matchedLines:y}},ke=(g,b,c)=>e("button",{type:"button",className:"dk_pill","data-on":g?"1":"0",onClick:c,children:b}),xe=()=>{let{raw:g}=le(),b=[...new Set([100,200,500,1e3,5e3,Number(i.logTailDefault)||200,Number(N.tail)||200])].filter(c=>Number.isInteger(c)&&c>0).sort((c,y)=>c-y);return d("div",{className:"dk_logTools",children:[e("span",{className:"dk_toolLabel",children:"LINES"}),e("select",{className:"dk_select dk_selectSm",value:String(N.tail),onChange:c=>A({...N,tail:Number(c.target.value)}),children:b.map(c=>e("option",{value:String(c),children:c===5e3?"Last 5000":"Last "+String(c)},String(c)))}),e("span",{className:"dk_toolLabel",children:"TIMESTAMPS"}),ke(N.timestamps,N.timestamps?"On":"Off",()=>A({...N,timestamps:!N.timestamps})),e("span",{className:"dk_toolLabel",children:"AUTO REFRESH"}),ke(G,G?"On":"Off",()=>o(c=>!c)),e("select",{className:"dk_select dk_selectSm",value:String(s),title:"\u81EA\u52A8\u5237\u65B0\u95F4\u9694\uFF08\u5F00\u542F AUTO REFRESH \u540E\u6309\u6B64\u8F6E\u8BE2\uFF09",onChange:c=>p(Number(c.target.value)),children:[2,3,5,10].map(c=>e("option",{value:String(c),children:String(c)+"s"},String(c)))}),$?e("span",{className:"dk_spin"}):null,e(U,{icon:Le,title:"\u5237\u65B0\u65E5\u5FD7",onClick:D},"refresh"),e(U,{icon:ft,title:"\u4E0B\u8F7D\u65E5\u5FD7",disabled:g==="",onClick:()=>kt(n.name+".log",g)},"download")]})},ae=()=>{let{needle:g,allLines:b,matchedLines:c}=le();return d("div",{className:"dk_filterBar",children:[e("button",{type:"button",className:"dk_filterToggle","data-on":B?"1":"0",onClick:()=>z(y=>!y),children:[e("span",{className:"dk_caret",dangerouslySetInnerHTML:{__html:Ve}},"c"),"\u8FC7\u6EE4\u65E5\u5FD7"]}),B?e("input",{className:"dk_input dk_filterInput",placeholder:"\u8FC7\u6EE4\u65E5\u5FD7\u2026",value:H,onChange:y=>P(y.target.value)}):null,e("span",{className:"dk_filterCount",children:g===""?String(b.length)+" \u884C":String(c.length)+" / "+String(b.length)+" \u884C\u5339\u914D"})]})},ue=()=>{let{needle:g,matchedLines:b}=le(),c=b.length>fe?b.slice(-fe):b;return d("div",{className:"dk_logs",children:[T===""?null:e(V,{title:"\u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25",hint:T+(T.includes("Failed to fetch")?"\uFF08\u7F51\u7EDC\u8BF7\u6C42\u6CA1\u5230\u5BBF\u4E3B\uFF1A\u5BBF\u4E3B\u53EF\u80FD\u521A\u91CD\u542F\u3001\u6216\u8FDE\u63A5\u88AB\u4E2D\u65AD\uFF09":""),action:e("button",{type:"button",className:"dk_btn",disabled:$,onClick:D,children:"\u91CD\u8BD5"})}),E!==null&&E.truncated===!0?e(V,{kind:"warn",title:"\u65E5\u5FD7\u8F93\u51FA\u8D85\u8FC7\u4E0A\u9650\uFF0C\u5DF2\u622A\u65AD",hint:"\u8C03\u5C0F\u300CLINES\u300D\u6216\u5230\u8BBE\u7F6E\u5361\u7247\u8C03\u5927\u300C\u5355\u6B21\u547D\u4EE4\u8F93\u51FA\u4E0A\u9650\u300D\u3002"}):null,d("div",{className:"dk_logBody",children:[b.length>c.length?e("div",{className:"dk_logLine dk_logMore",children:"\uFF08\u53EA\u663E\u793A\u6700\u8FD1 "+String(fe)+" \u884C\uFF0C\u5171 "+String(b.length)+" \u884C\u5339\u914D\uFF09"},"more"):null,T!==""?null:E===null?e("div",{className:"dk_logLine",children:"\u8BFB\u53D6\u4E2D\u2026"},"loading"):c.length===0?e("div",{className:"dk_logLine",children:g===""?"(\u65E0\u65E5\u5FD7)":"(\u65E0\u5339\u914D\u65E5\u5FD7)"},"empty"):c.map((y,L)=>Ye(y,L,g))]})]})},we=()=>{if(ge!=="")return e(V,{title:"\u8BFB\u53D6\u7EDF\u8BA1\u5931\u8D25",hint:ge});if(S===null)return e("div",{className:"dk_empty",children:[e("span",{className:"dk_spin"}),e("div",{children:"\u8BFB\u53D6\u4E2D\u2026"})]});let g=S.cpuPercent??0,b=S.memPercent??0,c=L=>d("div",{className:"dk_bar",children:[e("div",{className:"dk_barFill","data-warn":L>=60&&L<85?"1":void 0,"data-danger":L>=85?"1":void 0,style:{width:Math.min(100,Math.max(0,L))+"%"}})]}),y=(L,Ne,a)=>d("tr",{children:[e("td",{children:L}),e("td",{className:"dk_num",children:Ne}),e("td",{children:a??null})]},L);return d("table",{className:"dk_stats",children:[e("thead",{children:d("tr",{children:[e("th",{children:"\u6307\u6807"}),e("th",{children:"\u6570\u503C"}),e("th",{children:"\u5360\u7528"})]})}),e("tbody",{children:[y("CPU",lt(S.cpuPercent),c(g)),y("\u5185\u5B58",S.memUsage,c(b)),y("\u7F51\u7EDC IO",S.netIO,null),y("\u78C1\u76D8 IO",S.blockIO,null),y("PIDs",S.pids===null?"\u2014":String(S.pids),null)]})]})},ye=[["overview","\u6982\u89C8"],["logs","\u65E5\u5FD7"],["stats","\u7EDF\u8BA1"]];return d("div",{className:"dk_detail",children:[d("div",{className:"dk_header dk_headerDetail",children:[e(U,{icon:wt,title:"\u8FD4\u56DE\u5BB9\u5668\u5217\u8868",onClick:t.onBack},"back"),e("span",{className:"dk_detailTitle",title:n.name,children:n.name}),e(Ee,{state:n.state,health:n.health,status:n.status}),e("span",{className:"dk_detailSub",children:t.targetLabel??""}),e("span",{className:"dk_headerSpacer"}),k==="logs"?xe():e(U,{icon:Le,title:"\u5237\u65B0",onClick:t.onRefresh},"refresh"),e("button",{type:"button",className:"dk_iconBtn",title:"\u5173\u95ED\u9762\u677F",onClick:t.onClose,children:e("span",{className:"dk_iconGlyph",dangerouslySetInnerHTML:{__html:Be}})},"close")]}),d("div",{className:"dk_tabs",children:[...ye.map(([g,b])=>e("button",{type:"button",className:"dk_tab","data-on":k===g?"1":"0",onClick:()=>_(g),children:b},g)),k==="logs"?e("span",{className:"dk_headerSpacer"},"spacer"):null,k==="logs"?ae():null]}),e("div",{className:"dk_detailBody",children:k==="overview"?pe():k==="logs"?ue():we()})]})}function Qe(t){return d("div",{className:"dk_drawer",children:[d("div",{className:"dk_drawerHead",children:[e("span",{className:"dk_drawerIcon",dangerouslySetInnerHTML:{__html:Ke}}),e("span",{className:"dk_drawerTitle",title:t.label,children:t.label}),e("span",{className:"dk_drawerHint",children:"\u7531\u7EC8\u7AEF\u9762\u677F\u627F\u8F7D \xB7 \u6536\u8D77\u62BD\u5C49\u7ED3\u675F\u4F1A\u8BDD"}),e("span",{className:"dk_headerSpacer"}),e("button",{type:"button",className:"dk_iconBtn",title:"\u5173\u95ED\u7EC8\u7AEF",onClick:t.onClose,children:e("span",{dangerouslySetInnerHTML:{__html:Be}})})]}),e("div",{className:"dk_drawerBody",ref:t.hostRef})]})}function Ze(t){let[n,i]=h(null),[k,_]=h([]),[r,v]=h(t.initialTarget??""),x=t.sessionHint!==void 0&&(t.initialTarget??"")==="",[w,N]=h("containers"),[A,E]=h([]),[I,T]=h([]),[Q,$]=h(!1),[Z,H]=h(""),[P,B]=h(""),[z,G]=h(!0),[o,s]=h(""),[p,S]=h("all"),[ee,ge]=h(!1),[q,Y]=h(null),[_e,j]=h(0),[M,te]=h(null),[ce,he]=h(""),W=K(!0),[D,oe]=h(null),pe=K(null);C(()=>()=>{W.current=!1},[]),C(()=>{if(D===null)return;let a=pe.current;if(a===null)return;let u=null;try{u=re.mount(a,D.options)}catch(f){B("\u7EC8\u7AEF\u542F\u52A8\u5931\u8D25\uFF1A"+(f instanceof Error?f.message:String(f))),oe(null);return}return()=>{try{u?.()}catch{}}},[D]),C(()=>{R.config().then(a=>{let u=a.config;i(u),!x&&Array.isArray(u.targets)&&u.targets.length>0&&v(f=>f===""?u.targets[0].name:f),Te(u)}).catch(a=>H(a.message)),R.targets().then(a=>{_(a.targets??[]),Ie=a.targets??[];let u=(a.targets??[])[0];u!==void 0&&!x&&v(f=>f===""?u.name:f)}).catch(()=>{})},[]);let le=de(()=>{r!==""&&($(!0),R.containers(r,z).then(a=>{W.current&&(E(a.containers??[]),H(""))}).catch(a=>{W.current&&H(a.message)}).finally(()=>{W.current&&$(!1)}))},[r,z]),ke=de(()=>{r!==""&&($(!0),R.images(r).then(a=>{W.current&&(T(a.images??[]),H(""))}).catch(a=>{W.current&&H(a.message)}).finally(()=>{W.current&&$(!1)}))},[r]),xe=de(()=>j(a=>a+1),[]),ae=de(()=>{w==="images"?ke():le(),j(a=>a+1)},[w,le,ke]);C(()=>{r!==""&&ae()},[r,z,w]),C(()=>{if(!ee||r==="")return;let a=setInterval(ae,Math.max(2,n?.pollIntervalSec??5)*1e3);return()=>clearInterval(a)},[ee,ae,r,n]),C(()=>{if(P==="")return;let a=setTimeout(()=>B(""),4e3);return()=>clearTimeout(a)},[P]);let ue=(a,u)=>{let f=je(a.name);navigator.clipboard.writeText(f).then(()=>{B("\u5DF2\u590D\u5236\uFF1A"+f+(u===void 0?"":"\uFF08"+u+"\uFF09"))}).catch(()=>B("\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u6267\u884C\uFF1A"+f))},we=a=>{let u=je(a.name);if(re===null){let ne=document.querySelector("[data-dsh-tty-entry]")!==null;ue(a,ne?"\u7EC8\u7AEF\u9762\u677F\u7248\u672C\u8FC7\u65E7\uFF08\u4EA4\u4E92\u5F0F\u8FDB\u5165\u5BB9\u5668\u9700\u8981 dsh-tty \u2265 0.14.0\uFF09\uFF0C\u547D\u4EE4\u5DF2\u590D\u5236\uFF0C\u53EF\u7C98\u8D34\u5230\u7CFB\u7EDF\u7EC8\u7AEF\u6267\u884C":"\u672A\u5B89\u88C5 dsh-tty \u7EC8\u7AEF\u9762\u677F\uFF0C\u547D\u4EE4\u5DF2\u590D\u5236\uFF0C\u53EF\u7C98\u8D34\u5230\u7CFB\u7EDF\u7EC8\u7AEF\u6267\u884C\uFF08\u88C5 dsh-tty \u540E\u53EF\u76F4\u63A5\u5728\u6B64\u5F00\u7EC8\u7AEF\uFF09");return}let f=(n?.targets??[]).find(ne=>ne.name===r),me=a.name+" \xB7 exec",Ce=f===void 0||f.kind==="local"?{command:u,label:me}:typeof f.book=="string"&&f.book!==""?{book:f.book,command:u,label:me}:(f.auth??"agent")==="agent"?{spec:{host:f.host,port:f.port,username:f.username,auth:"agent",agentForward:f.agentForward===!0},command:u,label:me}:null;if(Ce===null){ue(a,"\u5185\u8054\u76EE\u6807\u7528\u4E86 key/password \u8BA4\u8BC1\uFF0C\u6D4F\u89C8\u5668\u7AEF\u62FF\u4E0D\u5230\u51ED\u8BC1");return}if(typeof re.mount=="function"&&Number(re.version??0)>=2){oe({label:me,options:Ce});return}try{re.open(Ce),t.onClose()}catch(ne){ue(a,ne instanceof Error?ne.message:String(ne))}},ye=(a,u)=>{te({title:a==="remove"?"\u5220\u9664\u5BB9\u5668":a==="stop"?"\u505C\u6B62\u5BB9\u5668":a==="start"?"\u542F\u52A8\u5BB9\u5668":"\u91CD\u542F\u5BB9\u5668",text:a==="remove"?`\u786E\u5B9A\u5220\u9664\u5BB9\u5668 ${u.name}\uFF1F\u5BB9\u5668\u7684\u53EF\u5199\u5C42\u4E0E\u914D\u7F6E\u4F1A\u88AB\u5220\u9664\uFF08\u547D\u540D\u6570\u636E\u5377\u4FDD\u7559\uFF09\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\u3002`:`\u786E\u5B9A\u5BF9\u5BB9\u5668 ${u.name} \u6267\u884C${a==="stop"?"\u505C\u6B62":a==="start"?"\u542F\u52A8":"\u91CD\u542F"}\u64CD\u4F5C\uFF1F`,confirmLabel:a==="remove"?"\u5220\u9664":"\u786E\u5B9A",run:()=>{te(null),R.action(r,a,u.id).then(f=>{B(`${f.result.action} ${u.name}\uFF1A${f.result.message}`),ae()}).catch(f=>H(f.message))}})},g=q===null?null:A.find(a=>a.id===q.id)??q.item,b=A.filter(a=>{if(p==="running"&&!(a.state==="running"||a.state==="paused"||a.state==="restarting")||p==="stopped"&&a.state==="running"||p==="unhealthy"&&a.health!=="unhealthy")return!1;let u=o.trim().toLowerCase();return u===""?!0:a.name.toLowerCase().includes(u)||a.image.toLowerCase().includes(u)||a.id.toLowerCase().includes(u)}),c=I.filter(a=>{let u=ce.trim().toLowerCase();return u===""||a.reference.toLowerCase().includes(u)||a.id.toLowerCase().includes(u)}),y=a=>{let u=k.find(f=>f.name===a);return u===void 0||u.label===void 0?a:a+" \xB7 "+u.label},L=()=>Q?e("div",{className:"dk_empty",children:[e("span",{className:"dk_spin"}),e("div",{children:"\u8BFB\u53D6\u4E2D\u2026"})]}):r===""?x?d("div",{className:"dk_empty",children:[e("div",{className:"dk_emptyTitle",children:"\u5F53\u524D\u4F1A\u8BDD\u4E3B\u673A\u8FD8\u4E0D\u662F Docker \u76EE\u6807"}),e("div",{className:"dk_emptyHint",children:"\u6309\u4E0A\u9762\u7684\u63D0\u793A\u5230 \u8BBE\u7F6E \u2192 \u63D2\u4EF6 \u2192 Docker \u5BB9\u5668\u9762\u677F \u6DFB\u52A0\u4E00\u6761\u76EE\u6807\uFF08\u63A8\u8350\u76F4\u63A5\u9009\u8FDE\u63A5\u7C3F\u6761\u76EE\uFF09\uFF0C\u4FDD\u5B58\u540E\u56DE\u5230\u8FD9\u91CC\u5237\u65B0\u3002\u4E3A\u907F\u514D\u5F20\u51A0\u674E\u6234\uFF0C\u9762\u677F\u4E0D\u4F1A\u81EA\u52A8\u5207\u5230\u5176\u4ED6\u76EE\u6807\u3002"})]}):d("div",{className:"dk_empty",children:[e("div",{className:"dk_emptyTitle",children:"\u8FD8\u6CA1\u6709\u914D\u7F6E Docker \u76EE\u6807"}),e("div",{className:"dk_emptyHint",children:"\u5230 \u8BBE\u7F6E \u2192 \u63D2\u4EF6 \u2192 Docker \u5BB9\u5668\u9762\u677F \u6DFB\u52A0\u4E00\u4E2A\u76EE\u6807\uFF1A\u672C\u673A\u76F4\u63A5\u9009\u300C\u672C\u673A\u300D\uFF1B\u8FDC\u7A0B\u4E3B\u673A\u53EF\u4EE5\u5F15\u7528 tty \u7EC8\u7AEF\u9762\u677F\u7684\u8FDE\u63A5\u7C3F\u6761\u76EE\u3002"})]}):d("div",{className:"dk_empty",children:[e("div",{className:"dk_emptyTitle",children:w==="images"?"\u6CA1\u6709\u955C\u50CF":"\u6CA1\u6709\u5BB9\u5668"}),e("div",{className:"dk_emptyHint",children:o.trim()===""?"\u76EE\u6807\u4E0A\u6CA1\u6709\u5339\u914D\u7684\u6570\u636E\uFF0C\u6216\u7B5B\u9009\u6761\u4EF6\u8FC7\u7A84\u3002":"\u6CA1\u6709\u5339\u914D\u300C"+o.trim()+"\u300D\u7684\u7ED3\u679C\u3002"})]}),Ne=()=>w==="images"?d("div",{children:[e("div",{className:"dk_logBar",children:[e("input",{className:"dk_input",style:{flex:"1 1 200px"},placeholder:"\u641C\u7D22\u955C\u50CF\uFF08\u4ED3\u5E93 / \u6807\u7B7E / ID\uFF09",value:ce,onChange:a=>he(a.target.value)}),e("span",{className:"dk_hint",children:String(c.length)+" / "+String(I.length)+" \u4E2A\u955C\u50CF"})]}),c.length===0?L():e("div",{className:"dk_tableWrap",children:d("table",{className:"dk_images",children:[e("thead",{children:d("tr",{children:[e("th",{children:"\u955C\u50CF"}),e("th",{children:"\u5927\u5C0F"}),e("th",{children:"\u521B\u5EFA"}),e("th",{children:"ID"})]})}),e("tbody",{children:c.map(a=>d("tr",{children:[e("td",{className:"dk_mono",children:a.reference}),e("td",{children:a.sizeText}),e("td",{children:a.createdSince}),e("td",{className:"dk_mono",children:a.shortId})]},a.id+a.reference))})]})})]}):b.length===0?L():e("div",{className:"dk_grid",children:b.map(a=>e(We,{item:a,selected:q!==null&&a.id===q.id,allowMutations:n?.allowMutations===!0,onOpen:(u,f)=>Y({id:u.id,tab:f,item:u}),onExec:we,onAction:ye,onCopyExec:u=>{navigator.clipboard.writeText("docker exec -it "+u.name+" sh").then(()=>B("\u5DF2\u590D\u5236\uFF1Adocker exec -it "+u.name+" sh")).catch(()=>B("\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u590D\u5236"))}},a.id))});return d("div",{className:"dk_backdrop",onMouseDown:()=>t.onClose(),children:[d("div",{className:"dk_panel",onMouseDown:a=>a.stopPropagation(),children:[g!==null?[e(Xe,{item:g,target:r,targetLabel:y(r),config:n??{pollIntervalSec:5,logTailDefault:200,allowExec:!1,execTimeoutSec:30},initialTab:q.tab,refreshToken:_e,onBack:()=>Y(null),onRefresh:xe,onClose:t.onClose},"detail"),M===null?null:e(Me,{title:M.title,text:M.text,confirmLabel:M.confirmLabel,onCancel:()=>te(null),onConfirm:M.run},"confirm")]:[d("div",{className:"dk_header",children:[e("span",{className:"dk_titleIcon",dangerouslySetInnerHTML:{__html:Fe}}),e("span",{className:"dk_title",children:"Docker \u5BB9\u5668"}),n?.allowMutations===!0?null:e("span",{className:"dk_badge","data-state":"paused",children:"\u53EA\u8BFB\u6A21\u5F0F"}),e("span",{className:"dk_headerSpacer"}),Q?e("span",{className:"dk_spin"}):null,g!==null?null:e("button",{type:"button",className:"dk_iconBtn",title:"\u5237\u65B0\u5217\u8868",onClick:ae,children:e("span",{dangerouslySetInnerHTML:{__html:Le}})}),e("button",{type:"button",className:"dk_iconBtn",title:"\u5173\u95ED\u9762\u677F",onClick:t.onClose,children:e("span",{dangerouslySetInnerHTML:{__html:Be}})})]}),g!==null?null:d("div",{className:"dk_toolbar",children:[e("select",{className:"dk_select",value:r,onChange:a=>{v(a.target.value),Y(null)},children:[...r===""?[e("option",{value:"",children:"\uFF08\u672A\u9009\u62E9\u76EE\u6807\uFF09"},"__none")]:[],...(k.length===0&&r!==""?[{name:r,label:void 0}]:k).map(a=>e("option",{value:a.name,children:y(a.name)},a.name))]}),e("div",{className:"dk_seg",children:[["containers","\u5BB9\u5668"],["images","\u955C\u50CF"]].map(([a,u])=>e("button",{type:"button",className:"dk_segBtn","data-on":w===a?"1":"0",onClick:()=>{N(a),Y(null)},children:u},a))}),w==="containers"?e("input",{className:"dk_input dk_search",placeholder:"\u641C\u7D22\u540D\u79F0 / \u955C\u50CF / ID",value:o,onChange:a=>s(a.target.value)}):null,w==="containers"?e("div",{className:"dk_seg",children:[["all","\u5168\u90E8"],["running","\u8FD0\u884C\u4E2D"],["stopped","\u5DF2\u505C\u6B62"],["unhealthy","\u4E0D\u5065\u5EB7"]].map(([a,u])=>e("button",{type:"button",className:"dk_segBtn","data-on":p===a?"1":"0",onClick:()=>S(a),children:u},a))}):null,w==="containers"?e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:z,onChange:a=>G(a.target.checked)}),"\u542B\u5DF2\u505C\u6B62"]}):null,e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:ee,onChange:a=>ge(a.target.checked)}),"\u81EA\u52A8\u5237\u65B0"]})]}),d("div",{className:"dk_body",children:[d("div",{className:"dk_main",children:[Z===""?null:e(V,{title:"\u64CD\u4F5C\u5931\u8D25",hint:Z}),P===""?null:e(V,{kind:"info",title:P}),t.sessionHint===void 0?null:e(V,{kind:"info",title:"\u5F53\u524D\u4F1A\u8BDD\u4E3B\u673A\u8FD8\u6CA1\u914D\u7F6E\u4E3A Docker \u76EE\u6807",hint:"\u4F1A\u8BDD\u4E3B\u673A\uFF1A"+t.sessionHint.host+(t.sessionHint.port===22?"":":"+String(t.sessionHint.port))+(t.sessionHint.book===""?"":"\uFF08\u8FDE\u63A5\u7C3F\uFF1A"+t.sessionHint.book+"\uFF09")+" \u2014 \u5230 \u8BBE\u7F6E \u2192 \u63D2\u4EF6 \u2192 Docker \u5BB9\u5668\u9762\u677F \u6DFB\u52A0\u4E00\u6761 kind=ssh \u76EE\u6807"+(t.sessionHint.book===""?"\uFF08\u586B host/username\uFF0C\u6216\u7528\u8FDE\u63A5\u7C3F\u6761\u76EE\uFF09":"\uFF0C\u76F4\u63A5\u9009\u8FDE\u63A5\u7C3F\u6761\u76EE\u300C"+t.sessionHint.book+"\u300D")+"\uFF0C\u4FDD\u5B58\u540E\u56DE\u5230\u8FD9\u91CC\u5237\u65B0\u5373\u53EF\u3002"}),n!==null&&n.allowMutations!==!0?e(V,{kind:"info",title:"\u5F53\u524D\u4E3A\u53EA\u8BFB\u6A21\u5F0F",hint:"\u542F\u52A8 / \u505C\u6B62 / \u91CD\u542F / \u5220\u9664\u9700\u8981\u5230 \u8BBE\u7F6E \u2192 \u63D2\u4EF6 \u2192 Docker \u5BB9\u5668\u9762\u677F \u6253\u5F00\u300C\u5141\u8BB8\u53D8\u66F4\u64CD\u4F5C\u300D\u3002"}):null,Ne()]})]}),M===null?null:e(Me,{title:M.title,text:M.text,confirmLabel:M.confirmLabel,onCancel:()=>te(null),onConfirm:M.run})],D===null?null:e(Qe,{label:D.label,hostRef:pe,onClose:()=>oe(null)},"execDrawer")]})]})}function et(){let[t,n]=h(!1),[i,k]=h(null),[_,r]=h(!1),[v,x]=h(!1),[w,N]=h({kind:"",text:""}),A=K(0),E=de(()=>{R.config().then(o=>{k(o.config),Te(o.config),A.current=Array.isArray(o.config?.targets)?o.config.targets.length:0,r(!0)}).catch(o=>{N({kind:"error",text:"\u8BFB\u53D6\u914D\u7F6E\u5931\u8D25\uFF1A"+o.message}),r(!0)})},[]);C(()=>{t&&!_&&E()},[t,_,E]);let I=o=>k(s=>({...s,...o})),T=(o,s)=>k(p=>{let S=p.targets.slice();return S[o]={...S[o],...s},{...p,targets:S}}),Q=()=>k(o=>({...o,targets:[...o.targets,{name:"\u76EE\u6807"+String(o.targets.length+1),kind:"local",book:"",host:"",port:22,username:"",auth:"agent",keyPath:"",agentForward:!1,passwordSet:!1,passphraseSet:!1}]})),$=o=>k(s=>({...s,targets:s.targets.filter((p,S)=>S!==o)})),Z=o=>k(s=>({...s,hostKeys:s.hostKeys.filter(p=>!(p.host===o.host&&p.port===o.port))})),H=()=>{x(!0),N({kind:"",text:""});let o={enabled:i.enabled,announceToAgent:i.announceToAgent,dockerBin:i.dockerBin,allowMutations:i.allowMutations,allowExec:i.allowExec,execTimeoutSec:i.execTimeoutSec,pollIntervalSec:i.pollIntervalSec,logTailDefault:i.logTailDefault,maxOutputKb:i.maxOutputKb,targets:i.targets.map(s=>({name:s.name,kind:s.kind,book:s.book??"",host:s.host??"",port:Number(s.port)||22,username:s.username??"",auth:s.auth??"agent",keyPath:s.keyPath??"",...s.password===void 0||s.password===""?{}:{password:s.password},...s.passphrase===void 0||s.passphrase===""?{}:{passphrase:s.passphrase},agentForward:s.agentForward===!0})),hostKeys:i.hostKeys,...i.targets.length===0&&A.current>0?{clearTargets:!0}:{}};R.saveConfig(o).then(s=>{k(s.config),Te(s.config),A.current=Array.isArray(s.config?.targets)?s.config.targets.length:0,ve(),N(s.warning===void 0?{kind:"ok",text:"\u5DF2\u4FDD\u5B58\u5E76\u70ED\u751F\u6548"}:{kind:"error",text:s.warning})}).catch(s=>{N({kind:"error",text:"\u4FDD\u5B58\u5931\u8D25\uFF1A"+s.message})}).finally(()=>x(!1))},P=o=>e("div",{className:"dk_cardSection",children:o}),B=(o,s,p)=>d("div",{className:"dk_field",children:[e("span",{className:"dk_label",children:o}),s,p===void 0?null:e("span",{className:"dk_hint",children:p})]}),z=(o,s,p,S)=>e("input",{className:"dk_input",type:"number",min:s,max:p,value:i[o],onChange:ee=>I({[o]:Number(ee.target.value)})}),G=d("div",{className:"dk_targetHead",role:"button",tabIndex:0,style:{cursor:"pointer",padding:"10px 12px",border:"1px solid var(--dk-border)",borderRadius:"var(--dk-r-lg)",background:"var(--dk-surface-solid)"},onClick:()=>n(o=>!o),onKeyDown:o=>{o.key==="Enter"&&n(s=>!s)},children:[d("div",{children:[e("div",{style:{fontWeight:600,fontSize:13},children:"Docker \u5BB9\u5668\u9762\u677F"}),e("div",{className:"dk_hint",children:"\u672C\u673A / SSH \u4E3B\u673A\u4E0A\u7684\u5BB9\u5668\u4E0E\u955C\u50CF\uFF1B\u9ED8\u8BA4\u53EA\u8BFB\uFF0C\u53D8\u66F4\u64CD\u4F5C\u9700\u663E\u5F0F\u5F00\u542F"})]}),e("span",{style:{transform:t?"rotate(180deg)":"none",transition:"transform var(--dk-dur) var(--dk-ease)"},dangerouslySetInnerHTML:{__html:Ve}})]});return t?!_||i===null?d("div",{children:[G,e("div",{className:"dk_cardBody",children:d("div",{className:"dk_row",children:[e("span",{className:"dk_spin"}),"\u8BFB\u53D6\u914D\u7F6E\u2026"]})})]}):d("div",{children:[G,e("div",{className:"dk_cardBody",children:[P("\u57FA\u672C"),d("div",{className:"dk_row",children:[e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:i.enabled,onChange:o=>I({enabled:o.target.checked})}),"\u542F\u7528\u63D2\u4EF6"]}),e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:i.announceToAgent,onChange:o=>I({announceToAgent:o.target.checked})}),"\u5411 agent \u516C\u544A\u80FD\u529B"]})]}),d("div",{className:"dk_row",children:[B("docker CLI",e("input",{className:"dk_input",value:i.dockerBin,onChange:o=>I({dockerBin:o.target.value})}),"\u9ED8\u8BA4 docker\uFF1Bpodman \u53EF\u586B podman"),B("\u7EDF\u8BA1\u5237\u65B0\u95F4\u9694\uFF08\u79D2\uFF09",z("pollIntervalSec",1,60)),B("\u65E5\u5FD7\u9ED8\u8BA4\u884C\u6570",z("logTailDefault",1,5e3)),B("\u8F93\u51FA\u4E0A\u9650\uFF08KB\uFF09",z("maxOutputKb",1,8192)),B("exec \u8D85\u65F6\uFF08\u79D2\uFF09",z("execTimeoutSec",1,120))]}),P("\u80FD\u529B\u5F00\u5173\uFF08\u9ED8\u8BA4\u5173\u95ED\uFF09"),d("div",{className:"dk_row",children:[e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:i.allowMutations,onChange:o=>I({allowMutations:o.target.checked})}),"\u5141\u8BB8\u53D8\u66F4\u64CD\u4F5C\uFF08\u542F\u52A8 / \u505C\u6B62 / \u91CD\u542F / \u5220\u9664\uFF09"]}),e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:i.allowExec,onChange:o=>I({allowExec:o.target.checked})}),"\u5141\u8BB8 exec\uFF08\u5728\u5BB9\u5668\u5185\u6267\u884C\u547D\u4EE4\uFF09"]})]}),e("span",{className:"dk_hint",children:"docker socket \u7B49\u4EF7\u4E8E\u76EE\u6807\u4E3B\u673A\u7684 root \u6743\u9650\u3002\u5F00\u542F\u540E\uFF0C\u6D4F\u89C8\u5668\u9762\u677F\u4E0E agent \u90FD\u80FD\u6267\u884C\u5BF9\u5E94\u64CD\u4F5C\uFF0C\u8BF7\u53EA\u5728\u53EF\u4FE1\u73AF\u5883\u4E0B\u6253\u5F00\u3002"}),P("\u76EE\u6807"),...i.targets.map((o,s)=>d("div",{className:"dk_targetRow",children:[e("input",{className:"dk_input",value:o.name,placeholder:"\u76EE\u6807\u540D",onChange:p=>T(s,{name:p.target.value})}),e("select",{className:"dk_select",value:o.kind,onChange:p=>T(s,{kind:p.target.value}),children:[e("option",{value:"local",children:"\u672C\u673A"}),e("option",{value:"ssh",children:"SSH \u4E3B\u673A"})]}),o.kind==="local"?e("span",{className:"dk_hint",children:"\u5BBF\u4E3B\u6240\u5728\u673A\u5668\u4E0A\u7684 docker"}):d("div",{className:"dk_row",style:{gridColumn:"span 1"},children:[e("select",{className:"dk_select",value:o.book??"",onChange:p=>T(s,{book:p.target.value}),children:[e("option",{value:"",children:i.ttyBooks.length===0?"\uFF08\u65E0 tty \u8FDE\u63A5\u7C3F\uFF0C\u8BF7\u586B\u5185\u8054\u4FE1\u606F\uFF09":"\uFF08\u4E0D\u7528\u8FDE\u63A5\u7C3F\uFF0C\u624B\u586B\uFF09"}),...i.ttyBooks.map(p=>e("option",{value:p,children:"\u8FDE\u63A5\u7C3F\uFF1A"+p},p))]})]}),e("button",{type:"button",className:"dk_btn dk_btnDanger",onClick:()=>$(s),children:"\u5220\u9664"}),o.kind==="ssh"&&(o.book??"")===""?d("div",{className:"dk_row",style:{gridColumn:"1 / -1"},children:[e("input",{className:"dk_input",placeholder:"host",value:o.host??"",onChange:p=>T(s,{host:p.target.value})}),e("input",{className:"dk_input",style:{width:90},placeholder:"port",value:o.port??22,onChange:p=>T(s,{port:Number(p.target.value)||22})}),e("input",{className:"dk_input",placeholder:"username",value:o.username??"",onChange:p=>T(s,{username:p.target.value})}),e("select",{className:"dk_select",value:o.auth??"agent",onChange:p=>T(s,{auth:p.target.value}),children:[e("option",{value:"agent",children:"ssh-agent"}),e("option",{value:"key",children:"\u79C1\u94A5"}),e("option",{value:"password",children:"\u5BC6\u7801"})]}),(o.auth??"agent")==="key"?e("input",{className:"dk_input",placeholder:"~/.ssh/id_ed25519",value:o.keyPath??"",onChange:p=>T(s,{keyPath:p.target.value})}):null,(o.auth??"agent")==="password"?e("input",{className:"dk_input",type:"password",placeholder:o.passwordSet===!0?"\uFF08\u5DF2\u8BBE\u7F6E\uFF0C\u7559\u7A7A\u4FDD\u6301\u4E0D\u53D8\uFF09":"env:SSH_PASSWORD",value:o.password??"",onChange:p=>T(s,{password:p.target.value})}):null,e("label",{className:"dk_check",children:[e("input",{type:"checkbox",checked:o.agentForward===!0,onChange:p=>T(s,{agentForward:p.target.checked})}),"agent forwarding"]})]}):null]},String(s)+o.name)),d("div",{className:"dk_row",children:[e("button",{type:"button",className:"dk_btn",onClick:Q,children:"\u6DFB\u52A0\u76EE\u6807"}),e("span",{className:"dk_hint",children:"SSH \u76EE\u6807\u63A8\u8350\u76F4\u63A5\u9009 tty \u7EC8\u7AEF\u9762\u677F\u7684\u8FDE\u63A5\u7C3F\u6761\u76EE\uFF08\u51ED\u8BC1\u53EA\u9700\u7EF4\u62A4\u4E00\u5904\uFF09\uFF1B\u624B\u586B\u65F6\u5BC6\u7801 / \u53E3\u4EE4\u5EFA\u8BAE\u5199 env:VAR\u3002"})]}),P("SSH \u4E3B\u673A\u5BC6\u94A5\u8BB0\u5F55\uFF08TOFU\uFF09"),...i.hostKeys.length===0?[e("span",{className:"dk_hint",children:"\u6682\u65E0\u8BB0\u5F55 \u2014 \u9996\u6B21 SSH \u8FDE\u63A5\u6210\u529F\u540E\u81EA\u52A8\u8BB0\u5F55\u4E3B\u673A\u6307\u7EB9\uFF08\u82E5 tty \u5DF2\u8BB0\u5F55\u540C\u4E00\u4E3B\u673A\uFF0C\u4F1A\u76F4\u63A5\u590D\u7528\uFF09\u3002"},"none")]:i.hostKeys.map(o=>d("div",{className:"dk_targetRow",children:[e("span",{children:o.host+":"+String(o.port)}),e("span",{className:"dk_hint",style:{gridColumn:"span 2",wordBreak:"break-all"},children:"sha256:"+o.fingerprint}),e("button",{type:"button",className:"dk_btn",onClick:()=>Z(o),children:"\u5220\u9664"})]},o.host+":"+String(o.port))),e("span",{className:"dk_hint",children:"\u6307\u7EB9\u53D8\u66F4\u65F6\u8FDE\u63A5\u4F1A\u88AB\u62D2\u7EDD\uFF08\u9632\u4E2D\u95F4\u4EBA\uFF09\uFF1B\u786E\u8BA4\u5B89\u5168\u540E\u5220\u9664\u5BF9\u5E94\u8BB0\u5F55\u5373\u53EF\u91CD\u8FDE\u3002"}),d("div",{className:"dk_row",children:[e("button",{type:"button",className:"dk_btn dk_btnPrimary",disabled:v,onClick:H,children:v?"\u4FDD\u5B58\u4E2D\u2026":"\u4FDD\u5B58"}),e("span",{className:"dk_msg","data-kind":w.kind,children:w.text})]})]})]}):G}let J=null,X=null;function Re(){if(X!==null){let t=X;X=null,setTimeout(()=>t.unmount(),0)}if(J!==null){let t=J;J=null,setTimeout(()=>t.remove(),0)}}function De(t){if(J!==null){let n=J,i=X;J=null,X=null;try{i?.unmount()}catch{}n.remove()}Se(),J=document.createElement("div"),document.body.appendChild(J),X=O(J),X.render(e(Ze,{onClose:Re,initialTarget:t?.target??"",sessionHint:t?.sessionHint}))}function tt(){let t=document.querySelector('[data-pane="sidebar"], [class*="sidebarCol"]');if(t!==null)return t.querySelector('[class*="logoRow"]')?.parentElement??t.firstElementChild}function at(t){let n=t.querySelector('button[class*="newSession"]');if(n!==null)return n;for(let i of t.children)if(i.tagName==="BUTTON")return i}function nt(){let t=document.createElement("div");return t.dataset.dshDockerEntry="",t.className="dk_sidebarEntry",t.setAttribute("role","button"),t.setAttribute("aria-label","\u5BB9\u5668"),t.innerHTML='<span class="dk_entryIcon">'+Fe+'</span><span class="dk_entryLabel">\u5BB9\u5668</span>',t.addEventListener("click",n=>{n.preventDefault(),De()}),t}function Ae(t,n){let i=at(t);if(i===void 0)return!1;if(n.parentElement!==t){let k=i.closest('[class*="logoRow"]'),_=k!==null&&k.parentElement===t?k:i,r=Array.from(t.children).filter(v=>v instanceof HTMLElement&&v.matches("[data-dsh-global-search-entry], [data-dsh-rss-entry], [data-dsh-taskboard-entry], [data-dsh-ssh-entry], [data-dsh-tty-entry], [data-dsh-docker-entry]"));if(r.length>0){let v=r[r.length-1];t.insertBefore(n,v.nextSibling)}else t.insertBefore(n,_.nextElementSibling)}return!0}function rt(){if(Se(),document.querySelector("[data-dsh-docker-entry]")!==null)return()=>{};let t=nt(),n,i=!1,k=()=>{if(n!==void 0&&!n.isConnected&&(r.disconnect(),n=void 0,i=!1),i){if(document.body.contains(t))return;r.disconnect(),n=void 0,i=!1}n??(n=tt()),n!==void 0&&(i=Ae(n,t),i&&r.observe(n,{childList:!0,subtree:!0}))},_=new MutationObserver(()=>{k()});_.observe(document.body,{childList:!0,subtree:!0});let r=new MutationObserver(()=>{if(n===void 0||!n.isConnected){i=!1,k();return}n.contains(t)||(i=Ae(n,t))});return k(),()=>{_.disconnect(),r.disconnect(),t.remove()}}let be={};return be.inject=["slots"],be.apply=t=>{Se();let n=rt(),i=t.slots.inject("settings.plugin.item",()=>t.slots.register({name:"settings.plugin.item",key:"docker",order:112},et));t.inject(["ttyTerminal"],_=>(re=_.ttyTerminal??null,()=>{re=null}));let k=()=>{};return ve(),t.inject(["ttyConnbar"],_=>{let r=_.ttyConnbar;r!==void 0&&(k=r.addAction(v=>{let x=v?.spec??{};if(x.t!=="ssh")return;let w=typeof v?.bookName=="string"?v.bookName:"",N=Oe(x,w),A=N!==void 0?`\u6253\u5F00\u8BE5\u4E3B\u673A\u7684 Docker \u5BB9\u5668\u9762\u677F\uFF08\u76EE\u6807\uFF1A${N}\uFF09`:ie===null?"\u6253\u5F00\u5F53\u524D\u4F1A\u8BDD\u4E3B\u673A\u7684 Docker \u5BB9\u5668\u9762\u677F":"\u8BE5\u4E3B\u673A\u5C1A\u672A\u914D\u7F6E\u4E3A Docker \u76EE\u6807 \u2014 \u70B9\u51FB\u6253\u5F00\u9762\u677F\u67E5\u770B/\u914D\u7F6E";v.addAction(gt,"\u5BB9\u5668",A,()=>{(async()=>{let E=await ut(x,w),I=Number(x.port);De({target:E??"",sessionHint:E===void 0?{host:typeof x.host=="string"?x.host:"",port:Number.isInteger(I)&&I>0?I:22,book:w}:void 0})})()})}),(async()=>{for(let v=0;v<3;v+=1){if(await ve()){typeof r.requestRender=="function"&&r.requestRender();return}await new Promise(x=>setTimeout(x,2e3))}})())}),()=>{k(),i(),n(),Re()}},be}});})();
|