@dsh-plus/image-studio 0.1.1 → 0.1.3
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/lib/client.js +175 -156
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -11
- package/package.json +12 -12
- package/src/client/panel/gallery.tsx +13 -13
- package/src/client/panel/panel.tsx +12 -13
- package/src/client/panel/picker.tsx +8 -14
- package/src/client/styles.ts +142 -125
- package/src/service.ts +5 -2
package/src/client/styles.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 图像工作室前端样式:侧栏入口 +
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* 图像工作室前端样式:侧栏入口 + 工作台(官方 Modal 承载)+ 配置卡片附加件。
|
|
3
|
+
* 设计令牌仅用 dsh-client-ui-theme 实测存在的 --dsw-alias-*(深浅色自适应);
|
|
4
|
+
* 模态骨架(遮罩/Escape/portal 层叠)由官方 Modal 原语承载,本表只覆写尺寸
|
|
5
|
+
* 与内部布局(.ims-modal 等,模式同 web-files/web-terminal 的 wf-/wt-modal)。
|
|
6
|
+
* 响应式断点 767px 与 @dsh-plus/ui-mobile-fit 对齐(移动端全屏、单列、44px 热区)。
|
|
6
7
|
* @module image-studio/client/styles
|
|
7
8
|
*/
|
|
8
9
|
|
|
@@ -25,14 +26,14 @@ export const imageStudioCss = `
|
|
|
25
26
|
border: none;
|
|
26
27
|
border-radius: 12px;
|
|
27
28
|
background: transparent;
|
|
28
|
-
color: var(--dsw-alias-label-primary
|
|
29
|
+
color: var(--dsw-alias-label-primary);
|
|
29
30
|
font-family: inherit;
|
|
30
31
|
font-size: 14px;
|
|
31
32
|
line-height: 22px;
|
|
32
33
|
cursor: pointer;
|
|
33
34
|
overflow: hidden;
|
|
34
35
|
}
|
|
35
|
-
.ims-entry:hover { background: var(--dsw-alias-interactive-bg-hover
|
|
36
|
+
.ims-entry:hover { background: var(--dsw-alias-interactive-bg-hover); }
|
|
36
37
|
.ims-entry-rail {
|
|
37
38
|
flex: none;
|
|
38
39
|
width: 36px;
|
|
@@ -45,26 +46,26 @@ export const imageStudioCss = `
|
|
|
45
46
|
}
|
|
46
47
|
.ims-entry-label { white-space: nowrap; overflow: hidden; }
|
|
47
48
|
|
|
48
|
-
/* ──
|
|
49
|
-
.ims-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
/* ── 工作台模态尺寸覆写(官方 Modal headless 卡片)── */
|
|
50
|
+
.ims-modal {
|
|
51
|
+
width: min(1100px, 94vw) !important;
|
|
52
|
+
max-width: none !important;
|
|
53
|
+
height: min(780px, 88vh);
|
|
54
|
+
padding: 0 !important;
|
|
55
|
+
gap: 0 !important;
|
|
53
56
|
display: flex;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
background: var(--dsw-alias-overlay-bg, rgba(0,0,0,.4));
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
overflow: hidden;
|
|
57
59
|
}
|
|
60
|
+
|
|
61
|
+
/* ── 面板骨架 ── */
|
|
58
62
|
.ims-panel {
|
|
59
63
|
display: flex;
|
|
60
64
|
flex-direction: column;
|
|
61
|
-
|
|
62
|
-
height:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
color: var(--dsw-alias-label-primary, #1f2328);
|
|
66
|
-
box-shadow: 0 16px 48px rgba(0,0,0,.24);
|
|
67
|
-
overflow: hidden;
|
|
65
|
+
height: 100%;
|
|
66
|
+
min-height: 0;
|
|
67
|
+
position: relative;
|
|
68
|
+
color: var(--dsw-alias-label-primary);
|
|
68
69
|
}
|
|
69
70
|
.ims-head {
|
|
70
71
|
display: flex;
|
|
@@ -72,7 +73,7 @@ export const imageStudioCss = `
|
|
|
72
73
|
align-items: center;
|
|
73
74
|
gap: 8px;
|
|
74
75
|
padding: 10px 12px;
|
|
75
|
-
border-bottom:
|
|
76
|
+
border-bottom: 1px solid var(--dsw-alias-border-l3);
|
|
76
77
|
}
|
|
77
78
|
.ims-tabs { display: flex; flex: 1; gap: 4px; min-width: 0; }
|
|
78
79
|
.ims-tab {
|
|
@@ -84,16 +85,16 @@ export const imageStudioCss = `
|
|
|
84
85
|
border: none;
|
|
85
86
|
border-radius: 10px;
|
|
86
87
|
background: transparent;
|
|
87
|
-
color: var(--dsw-alias-label-secondary
|
|
88
|
+
color: var(--dsw-alias-label-secondary);
|
|
88
89
|
font-family: inherit;
|
|
89
90
|
font-size: 14px;
|
|
90
91
|
cursor: pointer;
|
|
91
92
|
white-space: nowrap;
|
|
92
93
|
}
|
|
93
|
-
.ims-tab:hover { background: var(--dsw-alias-interactive-bg-hover
|
|
94
|
+
.ims-tab:hover { background: var(--dsw-alias-interactive-bg-hover); }
|
|
94
95
|
.ims-tabActive {
|
|
95
|
-
background: var(--dsw-alias-button-elevated-fill
|
|
96
|
-
color: var(--dsw-alias-label-primary
|
|
96
|
+
background: var(--dsw-alias-button-elevated-fill);
|
|
97
|
+
color: var(--dsw-alias-label-primary);
|
|
97
98
|
font-weight: 500;
|
|
98
99
|
}
|
|
99
100
|
.ims-iconBtn {
|
|
@@ -106,10 +107,10 @@ export const imageStudioCss = `
|
|
|
106
107
|
border: none;
|
|
107
108
|
border-radius: 8px;
|
|
108
109
|
background: transparent;
|
|
109
|
-
color: var(--dsw-alias-label-primary
|
|
110
|
+
color: var(--dsw-alias-label-primary);
|
|
110
111
|
cursor: pointer;
|
|
111
112
|
}
|
|
112
|
-
.ims-iconBtn:hover { background: var(--dsw-alias-interactive-bg-hover
|
|
113
|
+
.ims-iconBtn:hover { background: var(--dsw-alias-interactive-bg-hover); }
|
|
113
114
|
.ims-body { flex: 1; min-height: 0; overflow-y: auto; }
|
|
114
115
|
|
|
115
116
|
/* ── 通用件 ── */
|
|
@@ -118,15 +119,15 @@ export const imageStudioCss = `
|
|
|
118
119
|
width: 100%;
|
|
119
120
|
min-height: 34px;
|
|
120
121
|
padding: 6px 10px;
|
|
121
|
-
border:
|
|
122
|
+
border: 1px solid var(--dsw-alias-border-l2);
|
|
122
123
|
border-radius: 8px;
|
|
123
|
-
background: var(--dsw-alias-bg-
|
|
124
|
-
color: var(--dsw-alias-label-primary
|
|
124
|
+
background: var(--dsw-alias-bg-layer-3);
|
|
125
|
+
color: var(--dsw-alias-label-primary);
|
|
125
126
|
font-family: inherit;
|
|
126
127
|
font-size: 13px;
|
|
127
128
|
line-height: 20px;
|
|
128
129
|
}
|
|
129
|
-
.ims-input:focus { outline: 2px solid var(--dsw-alias-
|
|
130
|
+
.ims-input:focus { outline: 2px solid var(--dsw-alias-brand-primary); outline-offset: 0; }
|
|
130
131
|
.ims-btn {
|
|
131
132
|
display: inline-flex;
|
|
132
133
|
align-items: center;
|
|
@@ -144,23 +145,24 @@ export const imageStudioCss = `
|
|
|
144
145
|
}
|
|
145
146
|
.ims-btn:disabled { opacity: .5; cursor: not-allowed; }
|
|
146
147
|
.ims-btnPrimary {
|
|
147
|
-
background: var(--dsw-alias-button-primary-fill
|
|
148
|
-
color: var(--dsw-alias-
|
|
148
|
+
background: var(--dsw-alias-button-primary-fill);
|
|
149
|
+
color: var(--dsw-alias-label-primary-inverted);
|
|
149
150
|
}
|
|
151
|
+
.ims-btnPrimary:hover:not(:disabled) { background: var(--dsw-alias-button-primary-hover); }
|
|
150
152
|
.ims-btnGhost {
|
|
151
153
|
background: transparent;
|
|
152
|
-
color: var(--dsw-alias-label-primary
|
|
153
|
-
border:
|
|
154
|
+
color: var(--dsw-alias-label-primary);
|
|
155
|
+
border: 1px solid var(--dsw-alias-border-l2);
|
|
154
156
|
}
|
|
155
|
-
.ims-btnGhost:hover:not(:disabled) { background: var(--dsw-alias-interactive-bg-hover
|
|
156
|
-
.ims-btnDanger { background: var(--dsw-alias-
|
|
157
|
+
.ims-btnGhost:hover:not(:disabled) { background: var(--dsw-alias-interactive-bg-hover); }
|
|
158
|
+
.ims-btnDanger { background: var(--dsw-alias-state-error-primary); color: var(--dsw-alias-label-primary-inverted); }
|
|
157
159
|
.ims-btnSmall { min-height: 28px; padding: 3px 10px; font-size: 12px; }
|
|
158
|
-
.ims-hint { margin: 4px 0 0; font-size: 12px; color: var(--dsw-alias-label-
|
|
160
|
+
.ims-hint { margin: 4px 0 0; font-size: 12px; color: var(--dsw-alias-label-tertiary); }
|
|
159
161
|
.ims-empty {
|
|
160
162
|
padding: 32px 16px;
|
|
161
163
|
text-align: center;
|
|
162
164
|
font-size: 13px;
|
|
163
|
-
color: var(--dsw-alias-label-
|
|
165
|
+
color: var(--dsw-alias-label-tertiary);
|
|
164
166
|
}
|
|
165
167
|
.ims-badge {
|
|
166
168
|
flex: none;
|
|
@@ -169,10 +171,10 @@ export const imageStudioCss = `
|
|
|
169
171
|
font-size: 11px;
|
|
170
172
|
line-height: 16px;
|
|
171
173
|
}
|
|
172
|
-
.ims-badgeOn { background: var(--dsw-alias-
|
|
173
|
-
.ims-badgeOff { background: var(--dsw-alias-
|
|
174
|
-
.ims-status { margin: 8px 0 0; font-size: 12px; color: var(--dsw-alias-
|
|
175
|
-
.ims-statusError { color: var(--dsw-alias-
|
|
174
|
+
.ims-badgeOn { background: var(--dsw-alias-state-success-secondary); color: var(--dsw-alias-state-success-primary); }
|
|
175
|
+
.ims-badgeOff { background: var(--dsw-alias-state-error-secondary); color: var(--dsw-alias-state-error-primary); }
|
|
176
|
+
.ims-status { margin: 8px 0 0; font-size: 12px; color: var(--dsw-alias-state-success-primary); }
|
|
177
|
+
.ims-statusError { color: var(--dsw-alias-state-error-primary); }
|
|
176
178
|
.ims-spin { animation: ims-rotate 1s linear infinite; }
|
|
177
179
|
@keyframes ims-rotate { to { transform: rotate(360deg); } }
|
|
178
180
|
|
|
@@ -199,7 +201,7 @@ export const imageStudioCss = `
|
|
|
199
201
|
cursor: pointer;
|
|
200
202
|
}
|
|
201
203
|
.ims-inlineGrid { display: grid; gap: 8px; margin-top: 8px; }
|
|
202
|
-
.ims-mini { display: grid; gap: 4px; font-size: 12px; color: var(--dsw-alias-label-secondary
|
|
204
|
+
.ims-mini { display: grid; gap: 4px; font-size: 12px; color: var(--dsw-alias-label-secondary); }
|
|
203
205
|
.ims-prompt { resize: vertical; min-height: 96px; }
|
|
204
206
|
.ims-rowActions { display: flex; gap: 8px; margin-top: 8px; align-items: center; }
|
|
205
207
|
.ims-rowGrow { flex: 1; min-width: 0; }
|
|
@@ -213,20 +215,21 @@ export const imageStudioCss = `
|
|
|
213
215
|
padding: 6px 8px;
|
|
214
216
|
border-radius: 8px;
|
|
215
217
|
}
|
|
216
|
-
.ims-paramRowOn { background: var(--dsw-alias-bg-
|
|
218
|
+
.ims-paramRowOn { background: var(--dsw-alias-bg-layer-1); }
|
|
217
219
|
.ims-paramText { flex: 1; min-width: 0; display: grid; }
|
|
218
|
-
.ims-paramKey { font-size: 12px; font-weight: 600; font-family: var(--ds-font-family-code
|
|
220
|
+
.ims-paramKey { font-size: 12px; font-weight: 600; font-family: var(--ds-font-family-code); }
|
|
219
221
|
.ims-paramGen {
|
|
220
222
|
margin-left: 6px;
|
|
221
223
|
padding: 0 5px;
|
|
222
224
|
border-radius: 4px;
|
|
223
|
-
background: var(--dsw-alias-bg-
|
|
225
|
+
background: var(--dsw-alias-bg-module-platform);
|
|
226
|
+
color: var(--dsw-alias-label-secondary);
|
|
224
227
|
font-size: 10px;
|
|
225
228
|
font-weight: 400;
|
|
226
229
|
}
|
|
227
230
|
.ims-paramDesc {
|
|
228
231
|
font-size: 11px;
|
|
229
|
-
color: var(--dsw-alias-label-
|
|
232
|
+
color: var(--dsw-alias-label-tertiary);
|
|
230
233
|
overflow: hidden;
|
|
231
234
|
text-overflow: ellipsis;
|
|
232
235
|
white-space: nowrap;
|
|
@@ -238,15 +241,15 @@ export const imageStudioCss = `
|
|
|
238
241
|
font-size: 12px;
|
|
239
242
|
font-weight: 600;
|
|
240
243
|
padding: 6px 0;
|
|
241
|
-
color: var(--dsw-alias-label-secondary
|
|
244
|
+
color: var(--dsw-alias-label-secondary);
|
|
242
245
|
user-select: none;
|
|
243
246
|
}
|
|
244
247
|
.ims-advCount {
|
|
245
248
|
margin-left: 6px;
|
|
246
249
|
padding: 0 6px;
|
|
247
250
|
border-radius: 999px;
|
|
248
|
-
background: var(--dsw-alias-button-primary-fill
|
|
249
|
-
color: var(--dsw-alias-
|
|
251
|
+
background: var(--dsw-alias-button-primary-fill);
|
|
252
|
+
color: var(--dsw-alias-label-primary-inverted);
|
|
250
253
|
font-size: 10px;
|
|
251
254
|
}
|
|
252
255
|
|
|
@@ -257,7 +260,7 @@ export const imageStudioCss = `
|
|
|
257
260
|
position: absolute;
|
|
258
261
|
inset: 0;
|
|
259
262
|
border-radius: 999px;
|
|
260
|
-
background: var(--dsw-alias-
|
|
263
|
+
background: var(--dsw-alias-bg-module-platform);
|
|
261
264
|
transition: background .15s;
|
|
262
265
|
pointer-events: none;
|
|
263
266
|
}
|
|
@@ -269,10 +272,10 @@ export const imageStudioCss = `
|
|
|
269
272
|
width: 14px;
|
|
270
273
|
height: 14px;
|
|
271
274
|
border-radius: 50%;
|
|
272
|
-
background:
|
|
275
|
+
background: var(--dsw-alias-label-primary);
|
|
273
276
|
transition: transform .15s;
|
|
274
277
|
}
|
|
275
|
-
.ims-switch input:checked + .ims-switchTrack { background: var(--dsw-alias-
|
|
278
|
+
.ims-switch input:checked + .ims-switchTrack { background: var(--dsw-alias-brand-primary); }
|
|
276
279
|
.ims-switch input:checked + .ims-switchTrack::after { transform: translateX(12px); }
|
|
277
280
|
|
|
278
281
|
/* 源图/遮罩缩略 */
|
|
@@ -301,49 +304,64 @@ export const imageStudioCss = `
|
|
|
301
304
|
gap: 4px;
|
|
302
305
|
width: 64px;
|
|
303
306
|
height: 64px;
|
|
304
|
-
border: 1px dashed var(--dsw-alias-border-l1
|
|
307
|
+
border: 1px dashed var(--dsw-alias-border-l1);
|
|
305
308
|
border-radius: 8px;
|
|
306
309
|
background: transparent;
|
|
307
|
-
color: var(--dsw-alias-label-secondary
|
|
310
|
+
color: var(--dsw-alias-label-secondary);
|
|
308
311
|
font-size: 11px;
|
|
309
312
|
cursor: pointer;
|
|
310
313
|
}
|
|
311
|
-
.ims-thumbAdd:hover { background: var(--dsw-alias-interactive-bg-hover
|
|
314
|
+
.ims-thumbAdd:hover { background: var(--dsw-alias-interactive-bg-hover); }
|
|
312
315
|
|
|
313
316
|
/* 提交区 */
|
|
314
|
-
.ims-genFoot { grid-column: 1 / -1; border-top:
|
|
317
|
+
.ims-genFoot { grid-column: 1 / -1; border-top: 1px solid var(--dsw-alias-border-l3); padding-top: 12px; }
|
|
315
318
|
.ims-naming { display: flex; gap: 8px; margin-bottom: 8px; }
|
|
316
319
|
.ims-submit { width: 100%; min-height: 40px; font-size: 14px; margin-top: 8px; }
|
|
317
320
|
|
|
318
|
-
/* ──
|
|
319
|
-
.ims-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
321
|
+
/* ── 子模态(图片选择器 / 画廊详情,官方 Modal 承载)── */
|
|
322
|
+
.ims-pickerModal {
|
|
323
|
+
width: min(760px, 92vw) !important;
|
|
324
|
+
max-width: none !important;
|
|
325
|
+
max-height: 86vh;
|
|
326
|
+
padding: 0 !important;
|
|
327
|
+
gap: 0 !important;
|
|
328
|
+
}
|
|
329
|
+
.ims-detailModal {
|
|
330
|
+
width: min(920px, 94vw) !important;
|
|
331
|
+
max-width: none !important;
|
|
332
|
+
max-height: 88vh;
|
|
333
|
+
padding: 0 !important;
|
|
334
|
+
gap: 0 !important;
|
|
335
|
+
}
|
|
336
|
+
.ims-sub {
|
|
329
337
|
display: flex;
|
|
330
338
|
flex-direction: column;
|
|
331
|
-
|
|
332
|
-
max-height:
|
|
333
|
-
|
|
334
|
-
background: var(--dsw-alias-bg-primary, #fff);
|
|
335
|
-
overflow: hidden;
|
|
339
|
+
min-height: 0;
|
|
340
|
+
max-height: inherit;
|
|
341
|
+
color: var(--dsw-alias-label-primary);
|
|
336
342
|
}
|
|
337
|
-
.ims-
|
|
343
|
+
.ims-subHead {
|
|
338
344
|
display: flex;
|
|
339
345
|
flex: none;
|
|
340
346
|
align-items: center;
|
|
341
347
|
justify-content: space-between;
|
|
342
348
|
gap: 8px;
|
|
349
|
+
padding: 12px 14px;
|
|
350
|
+
border-bottom: 1px solid var(--dsw-alias-border-l3);
|
|
351
|
+
}
|
|
352
|
+
.ims-subTitle { margin: 0; font-size: 14px; }
|
|
353
|
+
.ims-subFoot {
|
|
354
|
+
display: flex;
|
|
355
|
+
flex: none;
|
|
356
|
+
align-items: center;
|
|
357
|
+
justify-content: flex-end;
|
|
358
|
+
gap: 8px;
|
|
343
359
|
padding: 10px 14px;
|
|
344
|
-
border-
|
|
360
|
+
border-top: 1px solid var(--dsw-alias-border-l3);
|
|
345
361
|
}
|
|
346
|
-
.ims-
|
|
362
|
+
.ims-subFoot .ims-status { margin: 0 auto 0 0; }
|
|
363
|
+
|
|
364
|
+
/* 选择器网格 */
|
|
347
365
|
.ims-pickerGrid {
|
|
348
366
|
flex: 1;
|
|
349
367
|
min-height: 0;
|
|
@@ -364,7 +382,7 @@ export const imageStudioCss = `
|
|
|
364
382
|
overflow: hidden;
|
|
365
383
|
}
|
|
366
384
|
.ims-pickerCell img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
367
|
-
.ims-pickerCellOn { border-color: var(--dsw-alias-
|
|
385
|
+
.ims-pickerCellOn { border-color: var(--dsw-alias-brand-primary); }
|
|
368
386
|
.ims-pickerMark {
|
|
369
387
|
position: absolute;
|
|
370
388
|
top: 4px;
|
|
@@ -372,20 +390,12 @@ export const imageStudioCss = `
|
|
|
372
390
|
min-width: 18px;
|
|
373
391
|
height: 18px;
|
|
374
392
|
border-radius: 999px;
|
|
375
|
-
background: var(--dsw-alias-button-primary-fill
|
|
376
|
-
color: var(--dsw-alias-
|
|
393
|
+
background: var(--dsw-alias-button-primary-fill);
|
|
394
|
+
color: var(--dsw-alias-label-primary-inverted);
|
|
377
395
|
font-size: 11px;
|
|
378
396
|
line-height: 18px;
|
|
379
397
|
text-align: center;
|
|
380
398
|
}
|
|
381
|
-
.ims-pickerFoot {
|
|
382
|
-
display: flex;
|
|
383
|
-
flex: none;
|
|
384
|
-
justify-content: flex-end;
|
|
385
|
-
gap: 8px;
|
|
386
|
-
padding: 10px 14px;
|
|
387
|
-
border-top: .5px solid var(--dsw-alias-border-l3, rgba(0,0,0,.08));
|
|
388
|
-
}
|
|
389
399
|
|
|
390
400
|
/* ── 画廊 ── */
|
|
391
401
|
.ims-gallery { padding: 12px 16px; }
|
|
@@ -402,7 +412,7 @@ export const imageStudioCss = `
|
|
|
402
412
|
border: none;
|
|
403
413
|
border-radius: 10px;
|
|
404
414
|
padding: 0;
|
|
405
|
-
background: var(--dsw-alias-bg-
|
|
415
|
+
background: var(--dsw-alias-bg-layer-1);
|
|
406
416
|
cursor: pointer;
|
|
407
417
|
overflow: hidden;
|
|
408
418
|
}
|
|
@@ -425,9 +435,8 @@ export const imageStudioCss = `
|
|
|
425
435
|
}
|
|
426
436
|
.ims-cell:hover .ims-cellPrompt, .ims-cell:focus-visible .ims-cellPrompt { opacity: 1; }
|
|
427
437
|
|
|
428
|
-
/*
|
|
429
|
-
.ims-
|
|
430
|
-
.ims-detailMeta { font-size: 12px; color: var(--dsw-alias-label-secondary, #57606a); }
|
|
438
|
+
/* 详情 */
|
|
439
|
+
.ims-detailMeta { font-size: 12px; color: var(--dsw-alias-label-tertiary); }
|
|
431
440
|
.ims-detailBody {
|
|
432
441
|
flex: 1;
|
|
433
442
|
min-height: 0;
|
|
@@ -442,13 +451,13 @@ export const imageStudioCss = `
|
|
|
442
451
|
.ims-detailFigure img {
|
|
443
452
|
width: 100%;
|
|
444
453
|
border-radius: 10px;
|
|
445
|
-
background: var(--dsw-alias-bg-
|
|
454
|
+
background: var(--dsw-alias-bg-layer-1);
|
|
446
455
|
display: block;
|
|
447
456
|
}
|
|
448
457
|
.ims-detailFigure figcaption { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
449
458
|
.ims-revised {
|
|
450
459
|
font-size: 11px;
|
|
451
|
-
color: var(--dsw-alias-label-
|
|
460
|
+
color: var(--dsw-alias-label-tertiary);
|
|
452
461
|
overflow: hidden;
|
|
453
462
|
text-overflow: ellipsis;
|
|
454
463
|
white-space: nowrap;
|
|
@@ -458,18 +467,8 @@ export const imageStudioCss = `
|
|
|
458
467
|
.ims-detailLabel:first-child { margin-top: 0; }
|
|
459
468
|
.ims-detailPrompt { margin: 0; font-size: 13px; white-space: pre-wrap; word-break: break-word; }
|
|
460
469
|
.ims-paramTable { width: 100%; border-collapse: collapse; font-size: 12px; }
|
|
461
|
-
.ims-paramTable td { padding: 4px 6px; border-top:
|
|
462
|
-
.ims-paramTableKey { font-family: var(--ds-font-family-code
|
|
463
|
-
.ims-detailFoot {
|
|
464
|
-
display: flex;
|
|
465
|
-
flex: none;
|
|
466
|
-
align-items: center;
|
|
467
|
-
justify-content: flex-end;
|
|
468
|
-
gap: 8px;
|
|
469
|
-
padding: 10px 14px;
|
|
470
|
-
border-top: .5px solid var(--dsw-alias-border-l3, rgba(0,0,0,.08));
|
|
471
|
-
}
|
|
472
|
-
.ims-detailFoot .ims-status { margin: 0 auto 0 0; }
|
|
470
|
+
.ims-paramTable td { padding: 4px 6px; border-top: 1px solid var(--dsw-alias-border-l3); word-break: break-all; }
|
|
471
|
+
.ims-paramTableKey { font-family: var(--ds-font-family-code); font-weight: 600; white-space: nowrap; }
|
|
473
472
|
|
|
474
473
|
/* ── 任务条 ── */
|
|
475
474
|
.ims-tasks {
|
|
@@ -477,8 +476,9 @@ export const imageStudioCss = `
|
|
|
477
476
|
flex: none;
|
|
478
477
|
gap: 8px;
|
|
479
478
|
padding: 8px 12px;
|
|
479
|
+
margin: 0;
|
|
480
480
|
overflow-x: auto;
|
|
481
|
-
border-top:
|
|
481
|
+
border-top: 1px solid var(--dsw-alias-border-l3);
|
|
482
482
|
}
|
|
483
483
|
.ims-task {
|
|
484
484
|
display: inline-flex;
|
|
@@ -488,30 +488,30 @@ export const imageStudioCss = `
|
|
|
488
488
|
max-width: 340px;
|
|
489
489
|
padding: 4px 10px;
|
|
490
490
|
border-radius: 999px;
|
|
491
|
-
background: var(--dsw-alias-bg-
|
|
491
|
+
background: var(--dsw-alias-bg-layer-1);
|
|
492
492
|
font-size: 12px;
|
|
493
493
|
}
|
|
494
494
|
.ims-taskState { font-weight: 600; flex: none; }
|
|
495
|
-
.ims-taskState-running { color: var(--dsw-alias-
|
|
496
|
-
.ims-taskState-queued { color: var(--dsw-alias-label-
|
|
497
|
-
.ims-taskState-succeeded { color: var(--dsw-alias-
|
|
498
|
-
.ims-taskState-failed { color: var(--dsw-alias-
|
|
499
|
-
.ims-taskState-cancelled { color: var(--dsw-alias-label-
|
|
495
|
+
.ims-taskState-running { color: var(--dsw-alias-brand-primary); }
|
|
496
|
+
.ims-taskState-queued { color: var(--dsw-alias-label-tertiary); }
|
|
497
|
+
.ims-taskState-succeeded { color: var(--dsw-alias-state-success-primary); }
|
|
498
|
+
.ims-taskState-failed { color: var(--dsw-alias-state-error-primary); }
|
|
499
|
+
.ims-taskState-cancelled { color: var(--dsw-alias-label-tertiary); }
|
|
500
500
|
.ims-taskPrompt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
501
|
-
.ims-taskModel { flex: none; color: var(--dsw-alias-label-
|
|
501
|
+
.ims-taskModel { flex: none; color: var(--dsw-alias-label-tertiary); font-size: 11px; }
|
|
502
502
|
.ims-taskError {
|
|
503
503
|
max-width: 140px;
|
|
504
504
|
overflow: hidden;
|
|
505
505
|
text-overflow: ellipsis;
|
|
506
506
|
white-space: nowrap;
|
|
507
|
-
color: var(--dsw-alias-
|
|
507
|
+
color: var(--dsw-alias-state-error-primary);
|
|
508
508
|
}
|
|
509
509
|
|
|
510
510
|
/* ── 配置卡片附加件(imsc- 基础类由 cardCss('imsc') 生成)── */
|
|
511
511
|
.imsc-loading{padding:14px 16px;margin:0;font-size:13px;color:var(--dsw-alias-label-tertiary)}
|
|
512
512
|
.imsc-groupTitle { margin: 14px 0 6px; font-size: 13px; font-weight: 600; }
|
|
513
513
|
.imsc-presetBox {
|
|
514
|
-
border:
|
|
514
|
+
border: 1px solid var(--dsw-alias-border-l3);
|
|
515
515
|
border-radius: 10px;
|
|
516
516
|
padding: 10px;
|
|
517
517
|
margin-bottom: 10px;
|
|
@@ -526,11 +526,11 @@ export const imageStudioCss = `
|
|
|
526
526
|
width: 100%;
|
|
527
527
|
min-height: 64px;
|
|
528
528
|
padding: 6px 10px;
|
|
529
|
-
border:
|
|
529
|
+
border: 1px solid var(--dsw-alias-border-l2);
|
|
530
530
|
border-radius: 8px;
|
|
531
|
-
background: var(--dsw-alias-bg-
|
|
532
|
-
color: var(--dsw-alias-label-primary
|
|
533
|
-
font-family: var(--ds-font-family-code
|
|
531
|
+
background: var(--dsw-alias-bg-layer-3);
|
|
532
|
+
color: var(--dsw-alias-label-primary);
|
|
533
|
+
font-family: var(--ds-font-family-code);
|
|
534
534
|
font-size: 12px;
|
|
535
535
|
resize: vertical;
|
|
536
536
|
}
|
|
@@ -539,15 +539,32 @@ export const imageStudioCss = `
|
|
|
539
539
|
|
|
540
540
|
/* ── 移动端(≤767px,与 ui-mobile-fit 同断点)── */
|
|
541
541
|
@media (max-width: 767px) {
|
|
542
|
-
.ims-
|
|
543
|
-
|
|
542
|
+
.ims-modal {
|
|
543
|
+
position: fixed;
|
|
544
|
+
inset: 0;
|
|
545
|
+
margin: 0;
|
|
546
|
+
width: 100% !important;
|
|
547
|
+
max-width: none !important;
|
|
548
|
+
height: 100%;
|
|
549
|
+
max-height: none;
|
|
550
|
+
border: none;
|
|
551
|
+
border-radius: 0 !important;
|
|
552
|
+
}
|
|
544
553
|
.ims-gen { grid-template-columns: minmax(0, 1fr); }
|
|
545
554
|
.ims-genSide { margin-top: 4px; }
|
|
546
555
|
.ims-tab { padding: 0 10px; }
|
|
547
556
|
.ims-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
548
557
|
.ims-detailBody { grid-template-columns: minmax(0, 1fr); }
|
|
549
|
-
.ims-
|
|
550
|
-
|
|
558
|
+
.ims-pickerModal, .ims-detailModal {
|
|
559
|
+
position: fixed;
|
|
560
|
+
inset: 0;
|
|
561
|
+
width: 100% !important;
|
|
562
|
+
max-width: none !important;
|
|
563
|
+
max-height: none;
|
|
564
|
+
height: 100%;
|
|
565
|
+
border: none;
|
|
566
|
+
border-radius: 0 !important;
|
|
567
|
+
}
|
|
551
568
|
.ims-paramControl { width: 108px; }
|
|
552
569
|
.ims-btn { min-height: 40px; }
|
|
553
570
|
.ims-btnSmall { min-height: 32px; }
|
package/src/service.ts
CHANGED
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* 红线:开发测试仅指向本地 mock,严禁真实调用产生费用。
|
|
8
8
|
* @module image-studio/service
|
|
9
9
|
*/
|
|
10
|
-
import { Context
|
|
10
|
+
import type { Context as ContextT } from '@deepseek-ai/cordis'
|
|
11
|
+
import { Service } from '@deepseek-ai/cordis'
|
|
11
12
|
import { credentialRef } from '@deepseek-ai/dsh-credentials'
|
|
12
13
|
import type {} from '@deepseek-ai/dsh-settings'
|
|
13
14
|
import { registerImageStudioApi } from './api.ts'
|
|
@@ -66,7 +67,9 @@ interface TaskOutcome {
|
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
export class ImageStudioService extends Service {
|
|
69
|
-
static
|
|
70
|
+
// 普通 static inject:cordis 4.0.2 不存在 Context.inject 符号(computed key
|
|
71
|
+
// 会失效为 'undefined' 使声明无效);credentials 时序由该声明保证。
|
|
72
|
+
static inject = ['credentials']
|
|
70
73
|
|
|
71
74
|
private current: () => ImageStudioConfig
|
|
72
75
|
private readonly runner: TaskRunner<TaskSnapshot>
|