cc98-cli 0.4.0 → 0.4.2

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cli/commands/update.d.ts.map +1 -1
  3. package/dist/cli/commands/update.js +49 -3
  4. package/dist/cli/commands/update.js.map +1 -1
  5. package/dist/storage/settings-store.d.ts +10 -0
  6. package/dist/storage/settings-store.d.ts.map +1 -0
  7. package/dist/storage/settings-store.js +37 -0
  8. package/dist/storage/settings-store.js.map +1 -0
  9. package/dist/tui/components/content.d.ts +1 -0
  10. package/dist/tui/components/content.d.ts.map +1 -1
  11. package/dist/tui/components/content.js +26 -8
  12. package/dist/tui/components/content.js.map +1 -1
  13. package/dist/tui/components/status.d.ts +3 -0
  14. package/dist/tui/components/status.d.ts.map +1 -1
  15. package/dist/tui/components/status.js +21 -8
  16. package/dist/tui/components/status.js.map +1 -1
  17. package/dist/tui/controller.d.ts +17 -0
  18. package/dist/tui/controller.d.ts.map +1 -1
  19. package/dist/tui/controller.js +465 -108
  20. package/dist/tui/controller.js.map +1 -1
  21. package/dist/tui/keybindings.d.ts +24 -0
  22. package/dist/tui/keybindings.d.ts.map +1 -0
  23. package/dist/tui/keybindings.js +207 -0
  24. package/dist/tui/keybindings.js.map +1 -0
  25. package/dist/tui/navigation.d.ts.map +1 -1
  26. package/dist/tui/navigation.js +1 -0
  27. package/dist/tui/navigation.js.map +1 -1
  28. package/dist/tui/renderer.d.ts.map +1 -1
  29. package/dist/tui/renderer.js +36 -9
  30. package/dist/tui/renderer.js.map +1 -1
  31. package/dist/tui/state/store.d.ts.map +1 -1
  32. package/dist/tui/state/store.js +13 -2
  33. package/dist/tui/state/store.js.map +1 -1
  34. package/dist/tui/state/types.d.ts +16 -0
  35. package/dist/tui/state/types.d.ts.map +1 -1
  36. package/dist/tui/topic-reader.d.ts +9 -1
  37. package/dist/tui/topic-reader.d.ts.map +1 -1
  38. package/dist/tui/topic-reader.js +23 -11
  39. package/dist/tui/topic-reader.js.map +1 -1
  40. package/dist/update.d.ts +4 -1
  41. package/dist/update.d.ts.map +1 -1
  42. package/dist/update.js +71 -11
  43. package/dist/update.js.map +1 -1
  44. package/dist/version.d.ts +2 -2
  45. package/dist/version.d.ts.map +1 -1
  46. package/dist/version.js +10 -2
  47. package/dist/version.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/tui/components/layout.d.ts +0 -3
  50. package/dist/tui/components/layout.d.ts.map +0 -1
  51. package/dist/tui/components/layout.js +0 -453
  52. package/dist/tui/components/layout.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc98-cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "A native TypeScript CLI and TUI client for CC98.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,3 +0,0 @@
1
- import type { TuiState } from "../state/types.js";
2
- export declare function drawThreeColumnLayout(state: TuiState, width: number, height: number, sidebarWidth: number, rightWidth: number): string[];
3
- //# sourceMappingURL=layout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/tui/components/layout.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAoBlD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAqHV"}
@@ -1,453 +0,0 @@
1
- // 布局组件 - 使用正确的 Unicode 框绘制
2
- import { ansi, bg, fg } from "../ansi.js";
3
- import { fit, cellWidth } from "./utils.js";
4
- import { BOX_ROUNDED } from "../borders.js";
5
- import { navItems } from "../navigation.js";
6
- // 颜色常量
7
- const cc98Blue = fg(0, 130, 202);
8
- const cc98BlueSoft = fg(94, 180, 232);
9
- const cc98BlueBg = bg(0, 104, 176);
10
- const white = fg(245, 250, 255);
11
- const muted = fg(139, 152, 166);
12
- const line = fg(52, 84, 112);
13
- const danger = fg(245, 101, 101);
14
- const ok = fg(91, 207, 140);
15
- // 使用圆角框样式
16
- const style = BOX_ROUNDED;
17
- // 绘制完整的三栏布局
18
- export function drawThreeColumnLayout(state, width, height, sidebarWidth, rightWidth) {
19
- const lines = [];
20
- const mainWidth = width - sidebarWidth - rightWidth - 2;
21
- const overviewHeight = 1;
22
- const bodyHeight = height - 4 - overviewHeight;
23
- // 1. 顶部标题栏
24
- lines.push(drawHeader(state, width));
25
- // 2. 顶部连接线
26
- if (rightWidth > 0) {
27
- lines.push(line +
28
- style.topLeft +
29
- style.horizontal.repeat(sidebarWidth - 2) +
30
- style.teeDown +
31
- style.horizontal.repeat(mainWidth - 2) +
32
- style.teeDown +
33
- style.horizontal.repeat(rightWidth - 2) +
34
- style.topRight +
35
- ansi.reset);
36
- }
37
- else {
38
- lines.push(line +
39
- style.topLeft +
40
- style.horizontal.repeat(sidebarWidth - 2) +
41
- style.teeDown +
42
- style.horizontal.repeat(mainWidth - 2) +
43
- style.topRight +
44
- ansi.reset);
45
- }
46
- // 3. 概览区
47
- lines.push(...drawOverview(state, width, overviewHeight));
48
- // 4. 分隔线
49
- if (rightWidth > 0) {
50
- lines.push(line +
51
- style.teeRight +
52
- style.horizontal.repeat(sidebarWidth - 2) +
53
- style.cross +
54
- style.horizontal.repeat(mainWidth - 2) +
55
- style.cross +
56
- style.horizontal.repeat(rightWidth - 2) +
57
- style.teeLeft +
58
- ansi.reset);
59
- }
60
- else {
61
- lines.push(line +
62
- style.teeRight +
63
- style.horizontal.repeat(sidebarWidth - 2) +
64
- style.cross +
65
- style.horizontal.repeat(mainWidth - 2) +
66
- style.teeLeft +
67
- ansi.reset);
68
- }
69
- // 5. 主内容区
70
- const sidebarLines = drawSidebar(state, sidebarWidth, bodyHeight);
71
- const mainLines = drawMainContent(state, mainWidth, bodyHeight);
72
- const rightLines = rightWidth > 0 ? drawRightPanel(state, rightWidth, bodyHeight) : [];
73
- for (let row = 0; row < bodyHeight; row++) {
74
- const parts = [
75
- line + style.vertical + ansi.reset,
76
- fit(sidebarLines[row] ?? "", sidebarWidth - 2),
77
- line + style.vertical + ansi.reset,
78
- fit(mainLines[row] ?? "", mainWidth - 2),
79
- ];
80
- if (rightWidth > 0) {
81
- parts.push(line + style.vertical + ansi.reset, fit(rightLines[row] ?? "", rightWidth - 2), line + style.vertical + ansi.reset);
82
- }
83
- else {
84
- parts.push(line + style.vertical + ansi.reset);
85
- }
86
- lines.push(parts.join(""));
87
- }
88
- // 6. 底部连接线
89
- if (rightWidth > 0) {
90
- lines.push(line +
91
- style.bottomLeft +
92
- style.horizontal.repeat(sidebarWidth - 2) +
93
- style.teeUp +
94
- style.horizontal.repeat(mainWidth - 2) +
95
- style.teeUp +
96
- style.horizontal.repeat(rightWidth - 2) +
97
- style.bottomRight +
98
- ansi.reset);
99
- }
100
- else {
101
- lines.push(line +
102
- style.bottomLeft +
103
- style.horizontal.repeat(sidebarWidth - 2) +
104
- style.teeUp +
105
- style.horizontal.repeat(mainWidth - 2) +
106
- style.bottomRight +
107
- ansi.reset);
108
- }
109
- // 7. 状态栏
110
- lines.push(drawStatusBar(state, width));
111
- return lines.slice(0, height);
112
- }
113
- // 绘制顶部标题栏
114
- function drawHeader(state, width) {
115
- const account = state.account ? `@${state.account}` : "未登录";
116
- const title = ` CC98 ${state.viewTitle} `;
117
- const padding = Math.max(1, width - cellWidth(title) - cellWidth(account));
118
- return `${cc98BlueBg}${white}${ansi.bold}${fit(`${title}${" ".repeat(padding)}${account}`, width)}${ansi.reset}`;
119
- }
120
- // 绘制概览区
121
- function drawOverview(state, width, height) {
122
- const rows = [];
123
- const summary = state.overview.length > 0
124
- ? state.overview.map((entry) => `${entry.title} ${entry.detail ?? "-"}`).join(" ")
125
- : "全站概览会在读取十大时更新";
126
- rows.push(fit(`${cc98BlueSoft} ${summary}`, width));
127
- return rows.slice(0, height);
128
- }
129
- // 绘制左侧导航
130
- function drawSidebar(state, width, height) {
131
- const rows = [];
132
- const navItems = [
133
- { id: "hot", label: "十大", hint: "热门话题" },
134
- { id: "favorite", label: "收藏", hint: "版面帖子" },
135
- { id: "new", label: "最新", hint: "新帖流" },
136
- { id: "boards", label: "版面", hint: "所有分区" },
137
- { id: "following", label: "关注", hint: "用户动态" },
138
- { id: "messages", label: "消息", hint: "未读与私信" },
139
- { id: "notices", label: "通知", hint: "系统与回复" },
140
- { id: "me", label: "我的", hint: "当前账号" },
141
- { id: "settings", label: "设置", hint: "账号与配置" }
142
- ];
143
- for (let index = 0; index < height; index++) {
144
- const nav = navItems[index];
145
- if (!nav) {
146
- rows.push(" ".repeat(width));
147
- continue;
148
- }
149
- const active = index === state.navIndex;
150
- const focused = state.focus === "nav";
151
- const label = ` ${nav.label}`;
152
- const hint = width > 14 ? ` ${nav.hint}` : "";
153
- const text = fit(`${label}${hint}`, width);
154
- if (active && focused) {
155
- rows.push(`${bg(0, 130, 202)}${white}${text}${ansi.reset}`);
156
- }
157
- else if (active) {
158
- rows.push(`${bg(5, 46, 74)}${cc98BlueSoft}${text}${ansi.reset}`);
159
- }
160
- else {
161
- rows.push(`${cc98Blue}${label}${ansi.reset}${muted}${fit(hint, Math.max(0, width - cellWidth(label)))}${ansi.reset}`);
162
- }
163
- }
164
- return rows;
165
- }
166
- // 绘制主内容区
167
- function drawMainContent(state, width, height) {
168
- if (state.mode === "topic") {
169
- return drawTopicContent(state, width, height);
170
- }
171
- if (state.loading) {
172
- return drawLoadingContent(state, width, height);
173
- }
174
- if (state.error) {
175
- return drawErrorContent(state, width, height);
176
- }
177
- return drawListContent(state, width, height);
178
- }
179
- // 绘制加载中内容
180
- function drawLoadingContent(state, width, height) {
181
- const rows = [];
182
- rows.push(`${cc98Blue}${ansi.bold} ${state.viewTitle}${ansi.reset}`);
183
- rows.push(fit(`${muted} 正在加载...${ansi.reset}`, width));
184
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
185
- rows.push(`${muted} ${"· ".repeat(Math.max(1, Math.floor((width - 2) / 2))).slice(0, width - 1)}${ansi.reset}`);
186
- while (rows.length < height) {
187
- rows.push(" ".repeat(width));
188
- }
189
- return rows.slice(0, height);
190
- }
191
- // 绘制错误内容
192
- function drawErrorContent(state, width, height) {
193
- const rows = [];
194
- rows.push(`${cc98Blue}${ansi.bold} ${state.viewTitle}${ansi.reset}`);
195
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
196
- rows.push(`${danger} 请求失败${ansi.reset}`);
197
- rows.push(fit(` ${state.error}`, width));
198
- while (rows.length < height) {
199
- rows.push(" ".repeat(width));
200
- }
201
- return rows.slice(0, height);
202
- }
203
- // 绘制列表内容
204
- function drawListContent(state, width, height) {
205
- const rows = [];
206
- rows.push(`${cc98Blue}${ansi.bold} ${state.viewTitle}${ansi.reset}`);
207
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
208
- const visibleCapacity = Math.max(1, Math.floor(Math.max(1, height - 3) / 3));
209
- if (state.itemIndex < state.scroll) {
210
- state.scroll = state.itemIndex;
211
- }
212
- else if (state.itemIndex >= state.scroll + visibleCapacity) {
213
- state.scroll = state.itemIndex - visibleCapacity + 1;
214
- }
215
- const visible = state.items.slice(state.scroll);
216
- visible.forEach((itemValue, offset) => {
217
- if (rows.length >= height) {
218
- return;
219
- }
220
- const index = state.scroll + offset;
221
- const active = index === state.itemIndex && (state.focus === "content" || state.mode === "settings");
222
- const prefix = active ? `${ok}●${ansi.reset}` : `${muted}•${ansi.reset}`;
223
- const title = fit(` ${itemValue.title}`, Math.max(10, width - 2));
224
- rows.push(active ? `${bg(5, 46, 74)}${prefix}${title}${ansi.reset}` : fit(`${prefix}${title}`, width));
225
- if (itemValue.meta && rows.length < height) {
226
- rows.push(fit(` ${muted}${itemValue.meta}${ansi.reset}`, width));
227
- }
228
- });
229
- if (visible.length === 0) {
230
- rows.push(`${muted} 暂无数据${ansi.reset}`);
231
- }
232
- while (rows.length < height) {
233
- rows.push(" ".repeat(width));
234
- }
235
- return rows.slice(0, height);
236
- }
237
- // 绘制帖子内容
238
- function drawTopicContent(state, width, height) {
239
- const rows = [];
240
- if (state.loading && (!state.topic || state.topic.lines.length === 0)) {
241
- rows.push(`${cc98Blue} 正在打开帖子...${ansi.reset}`);
242
- rows.push("");
243
- rows.push(`${muted} 只加载第一页,不预取未读楼层。${ansi.reset}`);
244
- while (rows.length < height) {
245
- rows.push(" ".repeat(width));
246
- }
247
- return rows.slice(0, height);
248
- }
249
- if (state.error) {
250
- rows.push(`${danger} 读取帖子失败${ansi.reset}`);
251
- rows.push(fit(` ${state.error}`, width));
252
- rows.push("");
253
- rows.push(`${muted} h/Esc 返回列表${ansi.reset}`);
254
- while (rows.length < height) {
255
- rows.push(" ".repeat(width));
256
- }
257
- return rows.slice(0, height);
258
- }
259
- const topic = state.topic;
260
- if (!topic) {
261
- return Array(height).fill(" ".repeat(width));
262
- }
263
- rows.push(`${cc98Blue}${ansi.bold} ${topic.title}${ansi.reset}`);
264
- rows.push(fit(`${muted} ${topic.meta}${ansi.reset}`, width));
265
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
266
- const viewport = Math.max(0, height - rows.length - 1);
267
- const maxScroll = Math.max(0, topic.lines.length - viewport);
268
- state.scroll = Math.min(state.scroll, maxScroll);
269
- const body = topic.lines.slice(state.scroll, state.scroll + viewport);
270
- for (const bodyLine of body) {
271
- if (bodyLine.startsWith("[image ")) {
272
- rows.push(fit(`${cc98BlueSoft}${bodyLine}${ansi.reset}`, width));
273
- }
274
- else if (bodyLine.startsWith("│ ")) {
275
- rows.push(fit(`${muted}${bodyLine}${ansi.reset}`, width));
276
- }
277
- else if (/^#\d+ /.test(bodyLine)) {
278
- rows.push(fit(`${ok}${bodyLine}${ansi.reset}`, width));
279
- }
280
- else {
281
- rows.push(fit(` ${bodyLine}`, width));
282
- }
283
- }
284
- const pageInfo = topic.hasMore
285
- ? `已载入 ${topic.loaded} 楼,n 下一页`
286
- : `已载入 ${topic.loaded} 楼,已到底`;
287
- rows.push(fit(`${muted}${pageInfo}${state.loadingMore ? " · 加载中" : ""}${ansi.reset}`, width));
288
- while (rows.length < height) {
289
- rows.push(" ".repeat(width));
290
- }
291
- return rows.slice(0, height);
292
- }
293
- // 绘制右侧面板
294
- function drawRightPanel(state, width, height) {
295
- if (state.mode === "topic" && state.topic) {
296
- return drawTopicRight(state.topic, state.scroll, width, height);
297
- }
298
- if (state.focus === "nav") {
299
- return drawNavRight(state, width, height);
300
- }
301
- return drawItemRight(state, width, height);
302
- }
303
- // 绘制导航右侧面板
304
- function drawNavRight(state, width, height) {
305
- const rows = [];
306
- const nav = navItems[state.navIndex];
307
- rows.push(`${cc98Blue}${ansi.bold} ${nav?.label ?? ""}${ansi.reset}`);
308
- rows.push(`${muted} ${nav?.hint ?? ""}${ansi.reset}`);
309
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
310
- for (const stat of state.stats) {
311
- if (rows.length >= height)
312
- break;
313
- rows.push(`${muted} ${stat.title}${ansi.reset}`);
314
- if (stat.detail) {
315
- rows.push(`${cc98BlueSoft} ${stat.detail}${ansi.reset}`);
316
- }
317
- }
318
- // 删除快捷键提示,只保留统计信息
319
- while (rows.length < height) {
320
- rows.push(" ".repeat(width));
321
- }
322
- return rows.slice(0, height);
323
- }
324
- // 绘制列表项右侧面板
325
- function drawItemRight(state, width, height) {
326
- const rows = [];
327
- const selected = state.items[state.itemIndex];
328
- if (!selected) {
329
- return Array(height).fill(" ".repeat(width));
330
- }
331
- rows.push(`${cc98Blue}${ansi.bold} ${selected.title}${ansi.reset}`);
332
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
333
- if (selected.meta) {
334
- rows.push(`${muted} ${selected.meta}${ansi.reset}`);
335
- }
336
- if (selected.detail) {
337
- rows.push(`${cc98BlueSoft} ${selected.detail}${ansi.reset}`);
338
- }
339
- if (selected.topicId !== undefined) {
340
- rows.push(`${muted} 主题 #${selected.topicId}${ansi.reset}`);
341
- }
342
- if (selected.boardId !== undefined) {
343
- rows.push(`${muted} 版面 #${selected.boardId}${ansi.reset}`);
344
- }
345
- if (selected.userId !== undefined) {
346
- rows.push(`${muted} 用户 #${selected.userId}${ansi.reset}`);
347
- }
348
- if (selected.sortTime) {
349
- const date = new Date(selected.sortTime);
350
- const timeStr = date.toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' });
351
- rows.push(`${muted} 时间: ${timeStr}${ansi.reset}`);
352
- }
353
- while (rows.length < height) {
354
- rows.push(" ".repeat(width));
355
- }
356
- return rows.slice(0, height);
357
- }
358
- // 绘制帖子右侧面板
359
- function drawTopicRight(topic, scroll, width, height) {
360
- const rows = [];
361
- const currentPost = topic.posts.find((p) => scroll >= p.lineStart && scroll <= p.lineEnd);
362
- rows.push(`${cc98Blue}${ansi.bold} 帖子信息${ansi.reset}`);
363
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
364
- if (currentPost) {
365
- rows.push(`${muted} 楼层: #${currentPost.floor ?? "?"}${ansi.reset}`);
366
- rows.push(`${muted} 作者: ${currentPost.author}${ansi.reset}`);
367
- rows.push(`${muted} 时间: ${currentPost.time}${ansi.reset}`);
368
- if (currentPost.likeCount > 0) {
369
- rows.push(`${ok} 赞: ${currentPost.likeCount}${ansi.reset}`);
370
- }
371
- if (currentPost.dislikeCount > 0) {
372
- rows.push(`${danger} 踩: ${currentPost.dislikeCount}${ansi.reset}`);
373
- }
374
- if (currentPost.rating) {
375
- rows.push(`${muted} 评分: ${currentPost.rating}${ansi.reset}`);
376
- }
377
- if (currentPost.imageCount > 0) {
378
- rows.push(`${muted} 图片: ${currentPost.imageCount}${ansi.reset}`);
379
- }
380
- if (currentPost.linkCount > 0) {
381
- rows.push(`${muted} 链接: ${currentPost.linkCount}${ansi.reset}`);
382
- }
383
- }
384
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
385
- rows.push(`${muted} 当前: ${scroll + 1}/${topic.lines.length}${ansi.reset}`);
386
- rows.push(`${muted} 已加载: ${topic.loaded} 楼${ansi.reset}`);
387
- while (rows.length < height) {
388
- rows.push(" ".repeat(width));
389
- }
390
- return rows.slice(0, height);
391
- }
392
- // 绘制状态栏
393
- function drawStatusBar(state, width) {
394
- const left = getStatus(state);
395
- const right = getKeyHints(state);
396
- const padding = Math.max(1, width - cellWidth(left) - cellWidth(right) - 2);
397
- return fit(`${muted} ${left}${" ".repeat(padding)}${right} `, width);
398
- }
399
- // 获取状态文本
400
- function getStatus(state) {
401
- if (state.loading) {
402
- return "加载中...";
403
- }
404
- if (state.error) {
405
- return `错误: ${state.error}`;
406
- }
407
- if (state.inputMode) {
408
- return state.inputPrompt;
409
- }
410
- return state.status || getDefaultStatus(state);
411
- }
412
- // 获取默认状态文本
413
- function getDefaultStatus(state) {
414
- switch (state.mode) {
415
- case "topic":
416
- return "帖子阅读";
417
- case "settings":
418
- return "设置";
419
- default:
420
- if (state.currentBoard) {
421
- return `版面 #${state.currentBoard.boardId}`;
422
- }
423
- if (state.currentChat) {
424
- return "私信";
425
- }
426
- return state.focus === "nav" ? "导航" : "列表";
427
- }
428
- }
429
- // 获取快捷键提示
430
- function getKeyHints(state) {
431
- if (state.modal === "search") {
432
- return "Enter 搜索/打开 Tab 切换 / 关闭";
433
- }
434
- if (state.modal === "menu") {
435
- return "j/k 移动 Enter 执行 o 关闭";
436
- }
437
- if (state.modal === "user") {
438
- return "f 关注 m 私信 u 关闭";
439
- }
440
- if (state.mode === "topic") {
441
- return "j/k 滚动 n 下页 h 返回 s 收藏 l/d 赞踩 u 用户";
442
- }
443
- if (state.mode === "settings") {
444
- return "j/k 选择 Enter 执行 h 返回";
445
- }
446
- if (state.currentChat) {
447
- return "j/k 滚动 n 更多 h 返回 r 刷新";
448
- }
449
- return state.focus === "nav"
450
- ? "j/k 切换 Enter 进入 r 刷新 / 搜索 ? 帮助 q 退出"
451
- : "j/k 选择 Enter 打开 h 返回 r 刷新 / 搜索 ? 帮助 q 退出";
452
- }
453
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/tui/components/layout.ts"],"names":[],"mappings":"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"}