cc98-cli 0.3.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 (143) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/api/client.d.ts +14 -0
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +83 -8
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/types.d.ts +13 -0
  7. package/dist/api/types.d.ts.map +1 -1
  8. package/dist/api/webvpn.d.ts +68 -0
  9. package/dist/api/webvpn.d.ts.map +1 -0
  10. package/dist/api/webvpn.js +311 -0
  11. package/dist/api/webvpn.js.map +1 -0
  12. package/dist/cli/commands/board.js +1 -1
  13. package/dist/cli/commands/board.js.map +1 -1
  14. package/dist/cli/commands/forum.js +1 -1
  15. package/dist/cli/commands/forum.js.map +1 -1
  16. package/dist/cli/commands/login.js +1 -1
  17. package/dist/cli/commands/login.js.map +1 -1
  18. package/dist/cli/commands/logout.js +2 -2
  19. package/dist/cli/commands/logout.js.map +1 -1
  20. package/dist/cli/commands/me.js +1 -1
  21. package/dist/cli/commands/me.js.map +1 -1
  22. package/dist/cli/commands/message.js +1 -1
  23. package/dist/cli/commands/message.js.map +1 -1
  24. package/dist/cli/commands/notice.js +1 -1
  25. package/dist/cli/commands/notice.js.map +1 -1
  26. package/dist/cli/commands/post.js +1 -1
  27. package/dist/cli/commands/post.js.map +1 -1
  28. package/dist/cli/commands/search.js +1 -1
  29. package/dist/cli/commands/search.js.map +1 -1
  30. package/dist/cli/commands/topic.js +1 -1
  31. package/dist/cli/commands/topic.js.map +1 -1
  32. package/dist/cli/commands/update.d.ts.map +1 -1
  33. package/dist/cli/commands/update.js +49 -3
  34. package/dist/cli/commands/update.js.map +1 -1
  35. package/dist/cli/commands/user.js +1 -1
  36. package/dist/cli/commands/user.js.map +1 -1
  37. package/dist/cli/commands/vpn.d.ts +2 -0
  38. package/dist/cli/commands/vpn.d.ts.map +1 -0
  39. package/dist/cli/commands/vpn.js +200 -0
  40. package/dist/cli/commands/vpn.js.map +1 -0
  41. package/dist/cli/context.d.ts +2 -2
  42. package/dist/cli/context.d.ts.map +1 -1
  43. package/dist/cli/context.js +20 -2
  44. package/dist/cli/context.js.map +1 -1
  45. package/dist/cli/router.d.ts.map +1 -1
  46. package/dist/cli/router.js +5 -1
  47. package/dist/cli/router.js.map +1 -1
  48. package/dist/main.js +0 -0
  49. package/dist/storage/image-cache.d.ts +32 -0
  50. package/dist/storage/image-cache.d.ts.map +1 -0
  51. package/dist/storage/image-cache.js +90 -0
  52. package/dist/storage/image-cache.js.map +1 -0
  53. package/dist/storage/settings-store.d.ts +10 -0
  54. package/dist/storage/settings-store.d.ts.map +1 -0
  55. package/dist/storage/settings-store.js +37 -0
  56. package/dist/storage/settings-store.js.map +1 -0
  57. package/dist/storage/vpn-store.d.ts +39 -0
  58. package/dist/storage/vpn-store.d.ts.map +1 -0
  59. package/dist/storage/vpn-store.js +94 -0
  60. package/dist/storage/vpn-store.js.map +1 -0
  61. package/dist/tui/app.d.ts.map +1 -1
  62. package/dist/tui/app.js +13 -1
  63. package/dist/tui/app.js.map +1 -1
  64. package/dist/tui/components/content.d.ts +1 -0
  65. package/dist/tui/components/content.d.ts.map +1 -1
  66. package/dist/tui/components/content.js +26 -8
  67. package/dist/tui/components/content.js.map +1 -1
  68. package/dist/tui/components/overview.d.ts.map +1 -1
  69. package/dist/tui/components/overview.js +18 -8
  70. package/dist/tui/components/overview.js.map +1 -1
  71. package/dist/tui/components/sidebar.d.ts.map +1 -1
  72. package/dist/tui/components/sidebar.js +0 -1
  73. package/dist/tui/components/sidebar.js.map +1 -1
  74. package/dist/tui/components/status.d.ts +3 -0
  75. package/dist/tui/components/status.d.ts.map +1 -1
  76. package/dist/tui/components/status.js +28 -9
  77. package/dist/tui/components/status.js.map +1 -1
  78. package/dist/tui/controller.d.ts +22 -0
  79. package/dist/tui/controller.d.ts.map +1 -1
  80. package/dist/tui/controller.js +573 -134
  81. package/dist/tui/controller.js.map +1 -1
  82. package/dist/tui/helpers.d.ts.map +1 -1
  83. package/dist/tui/helpers.js +19 -10
  84. package/dist/tui/helpers.js.map +1 -1
  85. package/dist/tui/keybindings.d.ts +24 -0
  86. package/dist/tui/keybindings.d.ts.map +1 -0
  87. package/dist/tui/keybindings.js +207 -0
  88. package/dist/tui/keybindings.js.map +1 -0
  89. package/dist/tui/navigation.d.ts.map +1 -1
  90. package/dist/tui/navigation.js +1 -1
  91. package/dist/tui/navigation.js.map +1 -1
  92. package/dist/tui/renderer.d.ts.map +1 -1
  93. package/dist/tui/renderer.js +50 -20
  94. package/dist/tui/renderer.js.map +1 -1
  95. package/dist/tui/state/store.d.ts.map +1 -1
  96. package/dist/tui/state/store.js +14 -2
  97. package/dist/tui/state/store.js.map +1 -1
  98. package/dist/tui/state/types.d.ts +21 -1
  99. package/dist/tui/state/types.d.ts.map +1 -1
  100. package/dist/tui/topic-reader.d.ts +9 -1
  101. package/dist/tui/topic-reader.d.ts.map +1 -1
  102. package/dist/tui/topic-reader.js +39 -16
  103. package/dist/tui/topic-reader.js.map +1 -1
  104. package/dist/tui/ubb-renderer.d.ts.map +1 -1
  105. package/dist/tui/ubb-renderer.js +176 -12
  106. package/dist/tui/ubb-renderer.js.map +1 -1
  107. package/dist/update.d.ts +4 -1
  108. package/dist/update.d.ts.map +1 -1
  109. package/dist/update.js +71 -11
  110. package/dist/update.js.map +1 -1
  111. package/dist/version.d.ts +2 -2
  112. package/dist/version.d.ts.map +1 -1
  113. package/dist/version.js +10 -2
  114. package/dist/version.js.map +1 -1
  115. package/package.json +1 -1
  116. package/dist/tui/app-new.d.ts +0 -2
  117. package/dist/tui/app-new.d.ts.map +0 -1
  118. package/dist/tui/app-new.js +0 -2589
  119. package/dist/tui/app-new.js.map +0 -1
  120. package/dist/tui/app-old.d.ts +0 -2
  121. package/dist/tui/app-old.d.ts.map +0 -1
  122. package/dist/tui/app-old.js +0 -2589
  123. package/dist/tui/app-old.js.map +0 -1
  124. package/dist/tui/components/layout.d.ts +0 -3
  125. package/dist/tui/components/layout.d.ts.map +0 -1
  126. package/dist/tui/components/layout.js +0 -464
  127. package/dist/tui/components/layout.js.map +0 -1
  128. package/dist/tui/keymap/actions.d.ts +0 -9
  129. package/dist/tui/keymap/actions.d.ts.map +0 -1
  130. package/dist/tui/keymap/actions.js +0 -208
  131. package/dist/tui/keymap/actions.js.map +0 -1
  132. package/dist/tui/keymap/bindings.d.ts +0 -5
  133. package/dist/tui/keymap/bindings.d.ts.map +0 -1
  134. package/dist/tui/keymap/bindings.js +0 -138
  135. package/dist/tui/keymap/bindings.js.map +0 -1
  136. package/dist/tui/keymap/index.d.ts +0 -4
  137. package/dist/tui/keymap/index.d.ts.map +0 -1
  138. package/dist/tui/keymap/index.js +0 -5
  139. package/dist/tui/keymap/index.js.map +0 -1
  140. package/dist/tui/keymap/types.d.ts +0 -17
  141. package/dist/tui/keymap/types.d.ts.map +0 -1
  142. package/dist/tui/keymap/types.js +0 -3
  143. package/dist/tui/keymap/types.js.map +0 -1
@@ -1,464 +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
- // 颜色常量
6
- const cc98Blue = fg(0, 130, 202);
7
- const cc98BlueSoft = fg(94, 180, 232);
8
- const cc98BlueBg = bg(0, 104, 176);
9
- const white = fg(245, 250, 255);
10
- const muted = fg(139, 152, 166);
11
- const line = fg(52, 84, 112);
12
- const danger = fg(245, 101, 101);
13
- const ok = fg(91, 207, 140);
14
- // 使用圆角框样式
15
- const style = BOX_ROUNDED;
16
- // 绘制完整的三栏布局
17
- export function drawThreeColumnLayout(state, width, height, sidebarWidth, rightWidth) {
18
- const lines = [];
19
- const mainWidth = width - sidebarWidth - rightWidth - 2;
20
- const overviewHeight = 1;
21
- const bodyHeight = height - 4 - overviewHeight;
22
- // 1. 顶部标题栏
23
- lines.push(drawHeader(state, width));
24
- // 2. 顶部连接线
25
- if (rightWidth > 0) {
26
- lines.push(line +
27
- style.topLeft +
28
- style.horizontal.repeat(sidebarWidth - 2) +
29
- style.teeDown +
30
- style.horizontal.repeat(mainWidth - 2) +
31
- style.teeDown +
32
- style.horizontal.repeat(rightWidth - 2) +
33
- style.topRight +
34
- ansi.reset);
35
- }
36
- else {
37
- lines.push(line +
38
- style.topLeft +
39
- style.horizontal.repeat(sidebarWidth - 2) +
40
- style.teeDown +
41
- style.horizontal.repeat(mainWidth - 2) +
42
- style.topRight +
43
- ansi.reset);
44
- }
45
- // 3. 概览区
46
- lines.push(...drawOverview(state, width, overviewHeight));
47
- // 4. 分隔线
48
- if (rightWidth > 0) {
49
- lines.push(line +
50
- style.teeRight +
51
- style.horizontal.repeat(sidebarWidth - 2) +
52
- style.cross +
53
- style.horizontal.repeat(mainWidth - 2) +
54
- style.cross +
55
- style.horizontal.repeat(rightWidth - 2) +
56
- style.teeLeft +
57
- ansi.reset);
58
- }
59
- else {
60
- lines.push(line +
61
- style.teeRight +
62
- style.horizontal.repeat(sidebarWidth - 2) +
63
- style.cross +
64
- style.horizontal.repeat(mainWidth - 2) +
65
- style.teeLeft +
66
- ansi.reset);
67
- }
68
- // 5. 主内容区
69
- const sidebarLines = drawSidebar(state, sidebarWidth, bodyHeight);
70
- const mainLines = drawMainContent(state, mainWidth, bodyHeight);
71
- const rightLines = rightWidth > 0 ? drawRightPanel(state, rightWidth, bodyHeight) : [];
72
- for (let row = 0; row < bodyHeight; row++) {
73
- const parts = [
74
- line + style.vertical + ansi.reset,
75
- fit(sidebarLines[row] ?? "", sidebarWidth - 2),
76
- line + style.vertical + ansi.reset,
77
- fit(mainLines[row] ?? "", mainWidth - 2),
78
- ];
79
- if (rightWidth > 0) {
80
- parts.push(line + style.vertical + ansi.reset, fit(rightLines[row] ?? "", rightWidth - 2), line + style.vertical + ansi.reset);
81
- }
82
- else {
83
- parts.push(line + style.vertical + ansi.reset);
84
- }
85
- lines.push(parts.join(""));
86
- }
87
- // 6. 底部连接线
88
- if (rightWidth > 0) {
89
- lines.push(line +
90
- style.bottomLeft +
91
- style.horizontal.repeat(sidebarWidth - 2) +
92
- style.teeUp +
93
- style.horizontal.repeat(mainWidth - 2) +
94
- style.teeUp +
95
- style.horizontal.repeat(rightWidth - 2) +
96
- style.bottomRight +
97
- ansi.reset);
98
- }
99
- else {
100
- lines.push(line +
101
- style.bottomLeft +
102
- style.horizontal.repeat(sidebarWidth - 2) +
103
- style.teeUp +
104
- style.horizontal.repeat(mainWidth - 2) +
105
- style.bottomRight +
106
- ansi.reset);
107
- }
108
- // 7. 状态栏
109
- lines.push(drawStatusBar(state, width));
110
- return lines.slice(0, height);
111
- }
112
- // 绘制顶部标题栏
113
- function drawHeader(state, width) {
114
- const account = state.account ? `@${state.account}` : "未登录";
115
- const title = ` CC98 ${state.viewTitle} `;
116
- const padding = Math.max(1, width - cellWidth(title) - cellWidth(account));
117
- return `${cc98BlueBg}${white}${ansi.bold}${fit(`${title}${" ".repeat(padding)}${account}`, width)}${ansi.reset}`;
118
- }
119
- // 绘制概览区
120
- function drawOverview(state, width, height) {
121
- const rows = [];
122
- const summary = state.overview.length > 0
123
- ? state.overview.map((entry) => `${entry.title} ${entry.detail ?? "-"}`).join(" ")
124
- : "全站概览会在读取十大时更新";
125
- rows.push(fit(`${cc98BlueSoft} ${summary}`, width));
126
- return rows.slice(0, height);
127
- }
128
- // 绘制左侧导航
129
- function drawSidebar(state, width, height) {
130
- const rows = [];
131
- const navItems = [
132
- { id: "hot", label: "十大", hint: "热门话题" },
133
- { id: "favorite", label: "收藏", hint: "版面帖子" },
134
- { id: "new", label: "最新", hint: "新帖流" },
135
- { id: "boards", label: "版面", hint: "所有分区" },
136
- { id: "following", label: "关注", hint: "用户动态" },
137
- { id: "messages", label: "消息", hint: "未读与私信" },
138
- { id: "notices", label: "通知", hint: "系统与回复" },
139
- { id: "me", label: "我的", hint: "当前账号" },
140
- { id: "more", 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 navItems = [
307
- { id: "hot", label: "十大", hint: "热门话题" },
308
- { id: "favorite", label: "收藏", hint: "版面帖子" },
309
- { id: "new", label: "最新", hint: "新帖流" },
310
- { id: "boards", label: "版面", hint: "所有分区" },
311
- { id: "following", label: "关注", hint: "用户动态" },
312
- { id: "messages", label: "消息", hint: "未读与私信" },
313
- { id: "notices", label: "通知", hint: "系统与回复" },
314
- { id: "me", label: "我的", hint: "当前账号" },
315
- { id: "more", label: "更多", hint: "只读内容" },
316
- { id: "settings", label: "设置", hint: "账号与配置" }
317
- ];
318
- const nav = navItems[state.navIndex];
319
- rows.push(`${cc98Blue}${ansi.bold} ${nav?.label ?? ""}${ansi.reset}`);
320
- rows.push(`${muted} ${nav?.hint ?? ""}${ansi.reset}`);
321
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
322
- for (const stat of state.stats) {
323
- if (rows.length >= height)
324
- break;
325
- rows.push(`${muted} ${stat.title}${ansi.reset}`);
326
- if (stat.detail) {
327
- rows.push(`${cc98BlueSoft} ${stat.detail}${ansi.reset}`);
328
- }
329
- }
330
- if (rows.length < height) {
331
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
332
- }
333
- if (rows.length < height) {
334
- rows.push(`${muted} j/k 切换栏目${ansi.reset}`);
335
- }
336
- if (rows.length < height) {
337
- rows.push(`${muted} l/Enter 进入内容${ansi.reset}`);
338
- }
339
- if (rows.length < height) {
340
- rows.push(`${muted} r 刷新当前栏目${ansi.reset}`);
341
- }
342
- while (rows.length < height) {
343
- rows.push(" ".repeat(width));
344
- }
345
- return rows.slice(0, height);
346
- }
347
- // 绘制列表项右侧面板
348
- function drawItemRight(state, width, height) {
349
- const rows = [];
350
- const selected = state.items[state.itemIndex];
351
- if (!selected) {
352
- return Array(height).fill(" ".repeat(width));
353
- }
354
- rows.push(`${cc98Blue}${ansi.bold} ${selected.title}${ansi.reset}`);
355
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
356
- if (selected.meta) {
357
- rows.push(`${muted} ${selected.meta}${ansi.reset}`);
358
- }
359
- if (selected.detail) {
360
- rows.push(`${cc98BlueSoft} ${selected.detail}${ansi.reset}`);
361
- }
362
- while (rows.length < height) {
363
- rows.push(" ".repeat(width));
364
- }
365
- return rows.slice(0, height);
366
- }
367
- // 绘制帖子右侧面板
368
- function drawTopicRight(topic, scroll, width, height) {
369
- const rows = [];
370
- const currentPost = topic.posts.find((p) => scroll >= p.lineStart && scroll <= p.lineEnd);
371
- rows.push(`${cc98Blue}${ansi.bold} 帖子信息${ansi.reset}`);
372
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
373
- if (currentPost) {
374
- rows.push(`${muted} 楼层: #${currentPost.floor ?? "?"}${ansi.reset}`);
375
- rows.push(`${muted} 作者: ${currentPost.author}${ansi.reset}`);
376
- rows.push(`${muted} 时间: ${currentPost.time}${ansi.reset}`);
377
- if (currentPost.likeCount > 0) {
378
- rows.push(`${ok} 赞: ${currentPost.likeCount}${ansi.reset}`);
379
- }
380
- if (currentPost.dislikeCount > 0) {
381
- rows.push(`${danger} 踩: ${currentPost.dislikeCount}${ansi.reset}`);
382
- }
383
- if (currentPost.rating) {
384
- rows.push(`${muted} 评分: ${currentPost.rating}${ansi.reset}`);
385
- }
386
- if (currentPost.imageCount > 0) {
387
- rows.push(`${muted} 图片: ${currentPost.imageCount}${ansi.reset}`);
388
- }
389
- if (currentPost.linkCount > 0) {
390
- rows.push(`${muted} 链接: ${currentPost.linkCount}${ansi.reset}`);
391
- }
392
- }
393
- rows.push(`${line}${"─".repeat(Math.max(0, width - 1))}${ansi.reset}`);
394
- rows.push(`${muted} 当前: ${scroll + 1}/${topic.lines.length}${ansi.reset}`);
395
- rows.push(`${muted} 已加载: ${topic.loaded} 楼${ansi.reset}`);
396
- while (rows.length < height) {
397
- rows.push(" ".repeat(width));
398
- }
399
- return rows.slice(0, height);
400
- }
401
- // 绘制状态栏
402
- function drawStatusBar(state, width) {
403
- const left = getStatus(state);
404
- const right = getKeyHints(state);
405
- const padding = Math.max(1, width - cellWidth(left) - cellWidth(right) - 2);
406
- return fit(`${muted} ${left}${" ".repeat(padding)}${right} `, width);
407
- }
408
- // 获取状态文本
409
- function getStatus(state) {
410
- if (state.loading) {
411
- return "加载中...";
412
- }
413
- if (state.error) {
414
- return `错误: ${state.error}`;
415
- }
416
- if (state.inputMode) {
417
- return state.inputPrompt;
418
- }
419
- return state.status || getDefaultStatus(state);
420
- }
421
- // 获取默认状态文本
422
- function getDefaultStatus(state) {
423
- switch (state.mode) {
424
- case "topic":
425
- return "j/k 滚动 n 下页 s 收藏 l 赞 d 踩 u 用户 h 返回";
426
- case "settings":
427
- return "j/k 选择 l 执行 h 返回";
428
- default:
429
- if (state.currentBoard) {
430
- return `版面 #${state.currentBoard.boardId}: j/k 选择 l 打开 h 返回 r 刷新`;
431
- }
432
- if (state.currentChat) {
433
- return `私信: j/k 滚动 n 更多 h 返回`;
434
- }
435
- return "j/k 选择 l 进入 h 返回 / 搜索 r 刷新 ? 帮助";
436
- }
437
- }
438
- // 获取快捷键提示
439
- function getKeyHints(state) {
440
- const hints = [];
441
- hints.push("j/k ↑↓ 移动");
442
- hints.push("h← 返回");
443
- hints.push("l→ 进入");
444
- hints.push("Enter 确认");
445
- if (state.mode === "topic") {
446
- hints.push("s 收藏");
447
- hints.push("l 赞");
448
- hints.push("d 踩");
449
- hints.push("u 用户");
450
- hints.push("n 下页");
451
- hints.push("【/】楼层");
452
- hints.push("数字跳楼");
453
- }
454
- else if (state.currentChat) {
455
- hints.push("n 更多");
456
- }
457
- hints.push("/ 搜索");
458
- hints.push("r 刷新");
459
- hints.push("o 操作");
460
- hints.push("? 帮助");
461
- hints.push("q 退出");
462
- return hints.join(" ");
463
- }
464
- //# 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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"}
@@ -1,9 +0,0 @@
1
- import type { TuiState } from "../state/types.js";
2
- import type { ActionDef } from "./types.js";
3
- export declare function registerAction(def: ActionDef): void;
4
- export declare function getAction(name: string): ActionDef | undefined;
5
- export declare function executeAction(name: string, state: TuiState, params?: Record<string, string>): Promise<void>;
6
- export declare function getAllActions(): ActionDef[];
7
- export declare function getActionDesc(name: string): string | undefined;
8
- export declare function registerBuiltinActions(): void;
9
- //# sourceMappingURL=actions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/tui/keymap/actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAEnD;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE7D;AAGD,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,QAAQ,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAOf;AAGD,wBAAgB,aAAa,IAAI,SAAS,EAAE,CAE3C;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CA2L7C"}