@hpyperry/dsh-ref-lib 0.8.0 → 0.10.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/README.md +4 -3
- package/lib/client/RefLibCommandCard.d.ts +29 -0
- package/lib/client/RefLibCommandCard.d.ts.map +1 -0
- package/lib/client/RefLibCommandCard.js +48 -0
- package/lib/client/RefLibCommandCard.js.map +1 -0
- package/lib/client/RefLibDock.d.ts.map +1 -1
- package/lib/client/RefLibDock.js +97 -15
- package/lib/client/RefLibDock.js.map +1 -1
- package/lib/client/RefLibPanel.d.ts.map +1 -1
- package/lib/client/RefLibPanel.js +7 -2
- package/lib/client/RefLibPanel.js.map +1 -1
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +8 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/locales.d.ts +16 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +20 -0
- package/lib/client/locales.js.map +1 -1
- package/lib/client/refresh-guard.d.ts +31 -0
- package/lib/client/refresh-guard.d.ts.map +1 -0
- package/lib/client/refresh-guard.js +38 -0
- package/lib/client/refresh-guard.js.map +1 -0
- package/lib/client/refresh-triggers.d.ts +49 -0
- package/lib/client/refresh-triggers.d.ts.map +1 -0
- package/lib/client/refresh-triggers.js +53 -0
- package/lib/client/refresh-triggers.js.map +1 -0
- package/lib/client/styles.d.ts.map +1 -1
- package/lib/client/styles.js +111 -0
- package/lib/client/styles.js.map +1 -1
- package/lib/client.js +927 -582
- package/lib/client.js.map +1 -1
- package/lib/logic.d.ts +16 -1
- package/lib/logic.d.ts.map +1 -1
- package/lib/logic.js +19 -0
- package/lib/logic.js.map +1 -1
- package/lib/render.d.ts +6 -4
- package/lib/render.d.ts.map +1 -1
- package/lib/render.js +14 -7
- package/lib/render.js.map +1 -1
- package/lib/routes.d.ts +4 -0
- package/lib/routes.d.ts.map +1 -1
- package/lib/routes.js +9 -1
- package/lib/routes.js.map +1 -1
- package/lib/service.d.ts +61 -3
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +148 -14
- package/lib/service.js.map +1 -1
- package/lib/spec.d.ts +9 -0
- package/lib/spec.d.ts.map +1 -1
- package/lib/validate.d.ts +1 -1
- package/lib/validate.d.ts.map +1 -1
- package/lib/validate.js +11 -3
- package/lib/validate.js.map +1 -1
- package/package.json +15 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-guard.d.ts","sourceRoot":"","sources":["../../src/client/refresh-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAI;IAEf,wBAAwB;IACxB,KAAK,IAAI,MAAM;IAKf;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B;;;OAGG;IACH,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 并发读守卫(竞态控制核心):只接受"最后发起"的请求结果。
|
|
3
|
+
*
|
|
4
|
+
* RefLibDock 有多个并发"拉取列表"来源——挂载预载、打开面板、30s 轮询、操作后的
|
|
5
|
+
* 刷新——网络返回顺序不保证,旧快照可能覆盖新快照。守卫用递增编号标记每次发起:
|
|
6
|
+
* 返回时只有仍持有**最新编号**的请求结果才被应用,其余一律丢弃。
|
|
7
|
+
*
|
|
8
|
+
* 为什么"最后发起"就代表最新:`list` 返回的是请求发起时刻的服务端快照,发起越晚
|
|
9
|
+
* 快照越新,所以只信最后发起者 ≈ 只信最新快照。操作后的刷新总是最后发起(操作
|
|
10
|
+
* 完成后才发起),天然胜出;响应乱序时旧号被丢弃,最终一致。
|
|
11
|
+
*
|
|
12
|
+
* 纯 TS、零依赖、零 DOM——node 环境可直接单元测试(tests/refresh-guard.spec.ts)。
|
|
13
|
+
* @module @hpyperry/dsh-ref-lib/src/client/refresh-guard
|
|
14
|
+
*/
|
|
15
|
+
export class RefreshGuard {
|
|
16
|
+
seq = 0;
|
|
17
|
+
/** 发起一次请求,返回本次请求的编号。 */
|
|
18
|
+
begin() {
|
|
19
|
+
this.seq += 1;
|
|
20
|
+
return this.seq;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 该编号是否仍是最新发起者。
|
|
24
|
+
* @param mine - 发起时 {@link begin} 返回的编号。
|
|
25
|
+
* @returns true 表示应应用该请求的结果;false 表示期间又有新请求发起,结果已过期。
|
|
26
|
+
*/
|
|
27
|
+
isLatest(mine) {
|
|
28
|
+
return mine === this.seq;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 作废所有 in-flight 请求的结果(会话切换 / 组件卸载时调用):seq 递增后,
|
|
32
|
+
* 任何旧编号的 {@link isLatest} 都返回 false。
|
|
33
|
+
*/
|
|
34
|
+
invalidate() {
|
|
35
|
+
this.seq += 1;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=refresh-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-guard.js","sourceRoot":"","sources":["../../src/client/refresh-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,YAAY;IACf,GAAG,GAAG,CAAC,CAAA;IAEf,wBAAwB;IACxB,KAAK;QACH,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACb,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 会话快照 → UI 刷新触发信号的纯函数派生(v9 交互驱动同步的信号源)。
|
|
3
|
+
*
|
|
4
|
+
* 交互驱动刷新依赖两个「从会话快照节点派生」的信号(RefLibDock 内两个 effect 的
|
|
5
|
+
* 依赖项):
|
|
6
|
+
* - `userMessageCount`:`kind: 'user'` 节点计数——普通人类消息落盘后 +1,
|
|
7
|
+
* 驱动「发消息即刷新」;
|
|
8
|
+
* - `refLibCommandDone`:`kind: 'command'` 且 `name === 'ref-lib'` 且已结算
|
|
9
|
+
* (`outcome !== null`)的节点计数——`/ref-lib` 命令完成后 +1,驱动「命令执行
|
|
10
|
+
* 即刷新」。
|
|
11
|
+
*
|
|
12
|
+
* 派生依据已在 deepseek-harness @ dsh-v0.1.0-rc.7 源码逐条查证(设计文档 §16):
|
|
13
|
+
* - dock 槽位 owner 的 `session` 是响应式会话快照:ConversationRoot 经
|
|
14
|
+
* `useSession(s => s)` 订阅会话 store,每次发布都重渲染 dock(
|
|
15
|
+
* `ui-conversation/src/client/skeleton/ConversationRoot.tsx`);
|
|
16
|
+
* - `user/message`(`source.kind === 'user'` 且未被收件箱认领)折叠为
|
|
17
|
+
* `kind: 'user'` 节点;goal 轮次等插件注入为 `kind: 'context'`(source 非 user),
|
|
18
|
+
* steer 消息为 `kind: 'steering'`——后两者不增本计数
|
|
19
|
+
* (`ui-conversation/src/client/conversation-nodes/message.ts`);
|
|
20
|
+
* - 宿主命令执行器对每个匹配命令 append log-only `command/run` → `command/done`
|
|
21
|
+
* 对(运行中 `outcome` 为 null,结算后置值);命令名是 typed name(无别名机制、
|
|
22
|
+
* 重名注册 fail loud),故 `name === 'ref-lib'` 过滤精确
|
|
23
|
+
* (`interaction/commands/src/index.ts` + `conversation-nodes/command.ts`)。
|
|
24
|
+
*
|
|
25
|
+
* 已知信号盲区(设计取舍,见设计文档 §14/§16):
|
|
26
|
+
* - steer 打断消息永不产生 `'user'` 节点 → 不触发发消息刷新(无状态变更,可接受);
|
|
27
|
+
* - 忙碌期排队消息的 `user/message` 在 step 领取时才落盘 → 计数延迟至消息进入步骤;
|
|
28
|
+
* - `command/run` 落在窗口外(压缩/截断)时节点 `name` 为 null → 不增
|
|
29
|
+
* `refLibCommandDone`(罕见边界);
|
|
30
|
+
* - 窗口长度变化(loadOlder/压缩/补拉)会增减计数 → 额外静默刷新(RefreshGuard 吸收)。
|
|
31
|
+
*
|
|
32
|
+
* 单次遍历同时派生两个计数(避免每次渲染两趟全量 filter)。
|
|
33
|
+
* @module @hpyperry/dsh-ref-lib/src/client/refresh-triggers
|
|
34
|
+
*/
|
|
35
|
+
import type { ConversationNode } from '@deepseek-ai/dsh-client-runtime/client';
|
|
36
|
+
/** 一次快照派生的刷新触发计数(RefLibDock 两个 effect 的依赖值)。 */
|
|
37
|
+
export interface RefreshTriggerCounts {
|
|
38
|
+
/** `kind: 'user'` 节点数(普通人类消息;steer/context 不计)。 */
|
|
39
|
+
readonly userMessageCount: number;
|
|
40
|
+
/** 已结算(outcome 非 null)的 `ref-lib` 命令节点数;运行中不计。 */
|
|
41
|
+
readonly refLibCommandDone: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 从会话快照节点列表派生刷新触发计数。
|
|
45
|
+
* @param nodes - `session.nodes`(窗口内全部会话节点,结构子集即可)。
|
|
46
|
+
* @returns 两个计数;空列表返回 `{ userMessageCount: 0, refLibCommandDone: 0 }`。
|
|
47
|
+
*/
|
|
48
|
+
export declare function deriveRefreshTriggers(nodes: readonly ConversationNode[]): RefreshTriggerCounts;
|
|
49
|
+
//# sourceMappingURL=refresh-triggers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-triggers.d.ts","sourceRoot":"","sources":["../../src/client/refresh-triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAE9E,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,kDAAkD;IAClD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CACnC;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,oBAAoB,CAW9F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 会话快照 → UI 刷新触发信号的纯函数派生(v9 交互驱动同步的信号源)。
|
|
3
|
+
*
|
|
4
|
+
* 交互驱动刷新依赖两个「从会话快照节点派生」的信号(RefLibDock 内两个 effect 的
|
|
5
|
+
* 依赖项):
|
|
6
|
+
* - `userMessageCount`:`kind: 'user'` 节点计数——普通人类消息落盘后 +1,
|
|
7
|
+
* 驱动「发消息即刷新」;
|
|
8
|
+
* - `refLibCommandDone`:`kind: 'command'` 且 `name === 'ref-lib'` 且已结算
|
|
9
|
+
* (`outcome !== null`)的节点计数——`/ref-lib` 命令完成后 +1,驱动「命令执行
|
|
10
|
+
* 即刷新」。
|
|
11
|
+
*
|
|
12
|
+
* 派生依据已在 deepseek-harness @ dsh-v0.1.0-rc.7 源码逐条查证(设计文档 §16):
|
|
13
|
+
* - dock 槽位 owner 的 `session` 是响应式会话快照:ConversationRoot 经
|
|
14
|
+
* `useSession(s => s)` 订阅会话 store,每次发布都重渲染 dock(
|
|
15
|
+
* `ui-conversation/src/client/skeleton/ConversationRoot.tsx`);
|
|
16
|
+
* - `user/message`(`source.kind === 'user'` 且未被收件箱认领)折叠为
|
|
17
|
+
* `kind: 'user'` 节点;goal 轮次等插件注入为 `kind: 'context'`(source 非 user),
|
|
18
|
+
* steer 消息为 `kind: 'steering'`——后两者不增本计数
|
|
19
|
+
* (`ui-conversation/src/client/conversation-nodes/message.ts`);
|
|
20
|
+
* - 宿主命令执行器对每个匹配命令 append log-only `command/run` → `command/done`
|
|
21
|
+
* 对(运行中 `outcome` 为 null,结算后置值);命令名是 typed name(无别名机制、
|
|
22
|
+
* 重名注册 fail loud),故 `name === 'ref-lib'` 过滤精确
|
|
23
|
+
* (`interaction/commands/src/index.ts` + `conversation-nodes/command.ts`)。
|
|
24
|
+
*
|
|
25
|
+
* 已知信号盲区(设计取舍,见设计文档 §14/§16):
|
|
26
|
+
* - steer 打断消息永不产生 `'user'` 节点 → 不触发发消息刷新(无状态变更,可接受);
|
|
27
|
+
* - 忙碌期排队消息的 `user/message` 在 step 领取时才落盘 → 计数延迟至消息进入步骤;
|
|
28
|
+
* - `command/run` 落在窗口外(压缩/截断)时节点 `name` 为 null → 不增
|
|
29
|
+
* `refLibCommandDone`(罕见边界);
|
|
30
|
+
* - 窗口长度变化(loadOlder/压缩/补拉)会增减计数 → 额外静默刷新(RefreshGuard 吸收)。
|
|
31
|
+
*
|
|
32
|
+
* 单次遍历同时派生两个计数(避免每次渲染两趟全量 filter)。
|
|
33
|
+
* @module @hpyperry/dsh-ref-lib/src/client/refresh-triggers
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* 从会话快照节点列表派生刷新触发计数。
|
|
37
|
+
* @param nodes - `session.nodes`(窗口内全部会话节点,结构子集即可)。
|
|
38
|
+
* @returns 两个计数;空列表返回 `{ userMessageCount: 0, refLibCommandDone: 0 }`。
|
|
39
|
+
*/
|
|
40
|
+
export function deriveRefreshTriggers(nodes) {
|
|
41
|
+
let userMessageCount = 0;
|
|
42
|
+
let refLibCommandDone = 0;
|
|
43
|
+
for (const node of nodes) {
|
|
44
|
+
if (node.kind === 'user') {
|
|
45
|
+
userMessageCount += 1;
|
|
46
|
+
}
|
|
47
|
+
else if (node.kind === 'command' && node.name === 'ref-lib' && node.outcome !== null) {
|
|
48
|
+
refLibCommandDone += 1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return { userMessageCount, refLibCommandDone };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=refresh-triggers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-triggers.js","sourceRoot":"","sources":["../../src/client/refresh-triggers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAYH;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAkC;IACtE,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,gBAAgB,IAAI,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACvF,iBAAiB,IAAI,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkuBH,mDAAmD;AACnD,wBAAgB,kBAAkB,IAAI,IAAI,CAQzC"}
|
package/lib/client/styles.js
CHANGED
|
@@ -92,6 +92,22 @@ const CSS = `
|
|
|
92
92
|
font-weight: 500;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
/* 失效条目计数角标(v9):红色系,与普通数量徽标区分。 */
|
|
96
|
+
.reflib-chipWarn {
|
|
97
|
+
display: inline-flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
min-width: 18px;
|
|
101
|
+
height: 18px;
|
|
102
|
+
padding: 0 5px;
|
|
103
|
+
border-radius: 9px;
|
|
104
|
+
background: var(--dsw-alias-state-error-primary);
|
|
105
|
+
color: #fff;
|
|
106
|
+
font-size: 11px;
|
|
107
|
+
line-height: 18px;
|
|
108
|
+
font-weight: 500;
|
|
109
|
+
}
|
|
110
|
+
|
|
95
111
|
/* ── 应用内目录浏览器(browse 后端)── */
|
|
96
112
|
.reflib-browser {
|
|
97
113
|
width: min(460px, 100%);
|
|
@@ -307,6 +323,11 @@ const CSS = `
|
|
|
307
323
|
color: var(--dsw-alias-label-tertiary);
|
|
308
324
|
}
|
|
309
325
|
|
|
326
|
+
/* 失效条目行图标(v9):警示色。 */
|
|
327
|
+
.reflib-rowIconWarn {
|
|
328
|
+
color: var(--dsw-alias-state-error-primary);
|
|
329
|
+
}
|
|
330
|
+
|
|
310
331
|
.reflib-rowBody {
|
|
311
332
|
display: flex;
|
|
312
333
|
flex: 1;
|
|
@@ -345,6 +366,16 @@ const CSS = `
|
|
|
345
366
|
white-space: nowrap;
|
|
346
367
|
}
|
|
347
368
|
|
|
369
|
+
/* 失效条目状态行(v9):红色警示文案,位于路径之下 */
|
|
370
|
+
.reflib-rowStatus {
|
|
371
|
+
overflow: hidden;
|
|
372
|
+
color: var(--dsw-alias-state-error-primary);
|
|
373
|
+
font-size: 12px;
|
|
374
|
+
line-height: 16px;
|
|
375
|
+
text-overflow: ellipsis;
|
|
376
|
+
white-space: nowrap;
|
|
377
|
+
}
|
|
378
|
+
|
|
348
379
|
.reflib-rowRemove {
|
|
349
380
|
display: inline-flex;
|
|
350
381
|
align-items: center;
|
|
@@ -618,6 +649,86 @@ const CSS = `
|
|
|
618
649
|
color: var(--dsw-alias-label-caption);
|
|
619
650
|
}
|
|
620
651
|
|
|
652
|
+
/* ── /ref-lib 命令结果卡片(conversation.chat.commandview)── */
|
|
653
|
+
.reflib-cmd {
|
|
654
|
+
display: flex;
|
|
655
|
+
flex-direction: column;
|
|
656
|
+
gap: 6px;
|
|
657
|
+
min-width: 0;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.reflib-cmdHead {
|
|
661
|
+
display: flex;
|
|
662
|
+
align-items: center;
|
|
663
|
+
gap: 8px;
|
|
664
|
+
min-width: 0;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
.reflib-cmdHeadIcon {
|
|
668
|
+
flex: none;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.reflib-cmdName {
|
|
672
|
+
flex: none;
|
|
673
|
+
color: var(--dsw-alias-label-primary);
|
|
674
|
+
font-size: 14px;
|
|
675
|
+
line-height: 20px;
|
|
676
|
+
font-weight: 500;
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
/* 摘要行 = 结果首行;过长单行省略(完整结果见下方 body) */
|
|
680
|
+
.reflib-cmdSummary {
|
|
681
|
+
min-width: 0;
|
|
682
|
+
flex: 1 1 auto;
|
|
683
|
+
overflow: hidden;
|
|
684
|
+
color: var(--dsw-alias-label-tertiary);
|
|
685
|
+
font-size: 13px;
|
|
686
|
+
line-height: 20px;
|
|
687
|
+
text-overflow: ellipsis;
|
|
688
|
+
white-space: nowrap;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
.reflib-cmdSummary[data-error] {
|
|
692
|
+
color: var(--dsw-alias-state-error-primary);
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
.reflib-cmdCopy {
|
|
696
|
+
flex: none;
|
|
697
|
+
display: inline-flex;
|
|
698
|
+
align-items: center;
|
|
699
|
+
gap: 4px;
|
|
700
|
+
padding: 2px 8px;
|
|
701
|
+
border: 1px solid var(--dsw-alias-border-l1);
|
|
702
|
+
border-radius: 6px;
|
|
703
|
+
background: transparent;
|
|
704
|
+
color: var(--dsw-alias-label-secondary);
|
|
705
|
+
font-size: 12px;
|
|
706
|
+
line-height: 18px;
|
|
707
|
+
cursor: pointer;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.reflib-cmdCopy:hover {
|
|
711
|
+
background: var(--dsw-alias-interactive-bg-hover);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
/* 完整结果:默认全展开(无 max-height 截断),超宽自动换行 */
|
|
715
|
+
.reflib-cmdBody {
|
|
716
|
+
margin: 0;
|
|
717
|
+
padding: 10px 14px;
|
|
718
|
+
overflow: auto;
|
|
719
|
+
border: 1px solid var(--dsw-alias-border-l1);
|
|
720
|
+
border-radius: 10px;
|
|
721
|
+
background: var(--dsw-alias-markdown-code-block);
|
|
722
|
+
color: var(--dsw-alias-label-primary);
|
|
723
|
+
font: var(--dsw-font-markdown-code-block-small);
|
|
724
|
+
white-space: pre-wrap;
|
|
725
|
+
word-break: break-word;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
.reflib-cmdBody[data-error] {
|
|
729
|
+
color: var(--dsw-alias-state-error-primary);
|
|
730
|
+
}
|
|
731
|
+
|
|
621
732
|
/* 窄视口:路径行换行,输入框占满一行 */
|
|
622
733
|
@media (max-width: 440px) {
|
|
623
734
|
.reflib-addRow {
|
package/lib/client/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,yDAAyD;AACzD,MAAM,SAAS,GAAG,uBAAuB,CAAA;AACzC,0BAA0B;AAC1B,MAAM,YAAY,GAAG,8BAA8B,CAAA;AAEnD,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,yDAAyD;AACzD,MAAM,SAAS,GAAG,uBAAuB,CAAA;AACzC,0BAA0B;AAC1B,MAAM,YAAY,GAAG,8BAA8B,CAAA;AAEnD,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAytBX,CAAA;AAED,mDAAmD;AACnD,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IAC3C,IAAI,QAAQ,CAAC,aAAa,CAAC,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,OAAM;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAA;IAC9B,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;IACpC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC"}
|