@walavave/cc98-cli 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 +21 -0
- package/README.md +150 -0
- package/dist/api/client.d.ts +57 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +298 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/endpoints.d.ts +48 -0
- package/dist/api/endpoints.d.ts.map +1 -0
- package/dist/api/endpoints.js +53 -0
- package/dist/api/endpoints.js.map +1 -0
- package/dist/api/types.d.ts +35 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/webvpn.d.ts +40 -0
- package/dist/api/webvpn.d.ts.map +1 -0
- package/dist/api/webvpn.js +259 -0
- package/dist/api/webvpn.js.map +1 -0
- package/dist/cli/commands/account.d.ts +2 -0
- package/dist/cli/commands/account.d.ts.map +1 -0
- package/dist/cli/commands/account.js +81 -0
- package/dist/cli/commands/account.js.map +1 -0
- package/dist/cli/commands/board.d.ts +2 -0
- package/dist/cli/commands/board.d.ts.map +1 -0
- package/dist/cli/commands/board.js +61 -0
- package/dist/cli/commands/board.js.map +1 -0
- package/dist/cli/commands/cache.d.ts +2 -0
- package/dist/cli/commands/cache.d.ts.map +1 -0
- package/dist/cli/commands/cache.js +68 -0
- package/dist/cli/commands/cache.js.map +1 -0
- package/dist/cli/commands/forum.d.ts +2 -0
- package/dist/cli/commands/forum.d.ts.map +1 -0
- package/dist/cli/commands/forum.js +38 -0
- package/dist/cli/commands/forum.js.map +1 -0
- package/dist/cli/commands/login.d.ts +2 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +98 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +2 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +20 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/me.d.ts +2 -0
- package/dist/cli/commands/me.d.ts.map +1 -0
- package/dist/cli/commands/me.js +9 -0
- package/dist/cli/commands/me.js.map +1 -0
- package/dist/cli/commands/message.d.ts +2 -0
- package/dist/cli/commands/message.d.ts.map +1 -0
- package/dist/cli/commands/message.js +42 -0
- package/dist/cli/commands/message.js.map +1 -0
- package/dist/cli/commands/notice.d.ts +2 -0
- package/dist/cli/commands/notice.d.ts.map +1 -0
- package/dist/cli/commands/notice.js +30 -0
- package/dist/cli/commands/notice.js.map +1 -0
- package/dist/cli/commands/post.d.ts +2 -0
- package/dist/cli/commands/post.d.ts.map +1 -0
- package/dist/cli/commands/post.js +37 -0
- package/dist/cli/commands/post.js.map +1 -0
- package/dist/cli/commands/search.d.ts +2 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +13 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/topic.d.ts +2 -0
- package/dist/cli/commands/topic.d.ts.map +1 -0
- package/dist/cli/commands/topic.js +196 -0
- package/dist/cli/commands/topic.js.map +1 -0
- package/dist/cli/commands/update.d.ts +2 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +24 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.d.ts.map +1 -0
- package/dist/cli/commands/user.js +90 -0
- package/dist/cli/commands/user.js.map +1 -0
- package/dist/cli/commands/vpn.d.ts +2 -0
- package/dist/cli/commands/vpn.d.ts.map +1 -0
- package/dist/cli/commands/vpn.js +177 -0
- package/dist/cli/commands/vpn.js.map +1 -0
- package/dist/cli/context.d.ts +9 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +26 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/options.d.ts +6 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +22 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/parse.d.ts +15 -0
- package/dist/cli/parse.d.ts.map +1 -0
- package/dist/cli/parse.js +55 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/cli/prompt.d.ts +4 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +53 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/router.d.ts +2 -0
- package/dist/cli/router.d.ts.map +1 -0
- package/dist/cli/router.js +90 -0
- package/dist/cli/router.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +17 -0
- package/dist/main.js.map +1 -0
- package/dist/storage/cache-store.d.ts +62 -0
- package/dist/storage/cache-store.d.ts.map +1 -0
- package/dist/storage/cache-store.js +233 -0
- package/dist/storage/cache-store.js.map +1 -0
- package/dist/storage/paths.d.ts +5 -0
- package/dist/storage/paths.d.ts.map +1 -0
- package/dist/storage/paths.js +17 -0
- package/dist/storage/paths.js.map +1 -0
- package/dist/storage/token-store.d.ts +39 -0
- package/dist/storage/token-store.d.ts.map +1 -0
- package/dist/storage/token-store.js +177 -0
- package/dist/storage/token-store.js.map +1 -0
- package/dist/storage/vpn-store.d.ts +16 -0
- package/dist/storage/vpn-store.d.ts.map +1 -0
- package/dist/storage/vpn-store.js +72 -0
- package/dist/storage/vpn-store.js.map +1 -0
- package/dist/tui/account-modal.d.ts +31 -0
- package/dist/tui/account-modal.d.ts.map +1 -0
- package/dist/tui/account-modal.js +97 -0
- package/dist/tui/account-modal.js.map +1 -0
- package/dist/tui/ansi.d.ts +20 -0
- package/dist/tui/ansi.d.ts.map +1 -0
- package/dist/tui/ansi.js +28 -0
- package/dist/tui/ansi.js.map +1 -0
- package/dist/tui/app-data.d.ts +22 -0
- package/dist/tui/app-data.d.ts.map +1 -0
- package/dist/tui/app-data.js +828 -0
- package/dist/tui/app-data.js.map +1 -0
- package/dist/tui/app-runtime.d.ts +27 -0
- package/dist/tui/app-runtime.d.ts.map +1 -0
- package/dist/tui/app-runtime.js +874 -0
- package/dist/tui/app-runtime.js.map +1 -0
- package/dist/tui/app.d.ts +2 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +172 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/cached-client.d.ts +41 -0
- package/dist/tui/cached-client.d.ts.map +1 -0
- package/dist/tui/cached-client.js +78 -0
- package/dist/tui/cached-client.js.map +1 -0
- package/dist/tui/canvas.d.ts +26 -0
- package/dist/tui/canvas.d.ts.map +1 -0
- package/dist/tui/canvas.js +204 -0
- package/dist/tui/canvas.js.map +1 -0
- package/dist/tui/downloads.d.ts +2 -0
- package/dist/tui/downloads.d.ts.map +1 -0
- package/dist/tui/downloads.js +81 -0
- package/dist/tui/downloads.js.map +1 -0
- package/dist/tui/image-preview.d.ts +19 -0
- package/dist/tui/image-preview.d.ts.map +1 -0
- package/dist/tui/image-preview.js +217 -0
- package/dist/tui/image-preview.js.map +1 -0
- package/dist/tui/interactions.d.ts +5 -0
- package/dist/tui/interactions.d.ts.map +1 -0
- package/dist/tui/interactions.js +25 -0
- package/dist/tui/interactions.js.map +1 -0
- package/dist/tui/keymap.d.ts +7 -0
- package/dist/tui/keymap.d.ts.map +1 -0
- package/dist/tui/keymap.js +262 -0
- package/dist/tui/keymap.js.map +1 -0
- package/dist/tui/layout.d.ts +29 -0
- package/dist/tui/layout.d.ts.map +1 -0
- package/dist/tui/layout.js +82 -0
- package/dist/tui/layout.js.map +1 -0
- package/dist/tui/renderer.d.ts +9 -0
- package/dist/tui/renderer.d.ts.map +1 -0
- package/dist/tui/renderer.js +375 -0
- package/dist/tui/renderer.js.map +1 -0
- package/dist/tui/terminal.d.ts +41 -0
- package/dist/tui/terminal.d.ts.map +1 -0
- package/dist/tui/terminal.js +162 -0
- package/dist/tui/terminal.js.map +1 -0
- package/dist/tui/text.d.ts +10 -0
- package/dist/tui/text.d.ts.map +1 -0
- package/dist/tui/text.js +158 -0
- package/dist/tui/text.js.map +1 -0
- package/dist/tui/theme.d.ts +56 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +95 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/tui-model.d.ts +126 -0
- package/dist/tui/tui-model.d.ts.map +1 -0
- package/dist/tui/tui-model.js +54 -0
- package/dist/tui/tui-model.js.map +1 -0
- package/dist/tui/ubb-renderer.d.ts +12 -0
- package/dist/tui/ubb-renderer.d.ts.map +1 -0
- package/dist/tui/ubb-renderer.js +196 -0
- package/dist/tui/ubb-renderer.js.map +1 -0
- package/dist/update.d.ts +17 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +88 -0
- package/dist/update.js.map +1 -0
- package/dist/version.d.ts +6 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/docs/images/tui.png +0 -0
- package/docs/images/tui2.png +0 -0
- package/package.json +43 -0
package/dist/tui/text.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { stripAnsi } from "./ansi.js";
|
|
2
|
+
const segmenter = typeof Intl !== "undefined" && "Segmenter" in Intl
|
|
3
|
+
? new Intl.Segmenter(undefined, { granularity: "grapheme" })
|
|
4
|
+
: undefined;
|
|
5
|
+
export function blank(count, width) {
|
|
6
|
+
return Array.from({ length: Math.max(0, count) }, () => " ".repeat(Math.max(0, width)));
|
|
7
|
+
}
|
|
8
|
+
export function fit(value, width) {
|
|
9
|
+
const safeWidth = Math.max(0, width);
|
|
10
|
+
const truncated = truncate(value, safeWidth);
|
|
11
|
+
return `${truncated}${" ".repeat(Math.max(0, safeWidth - cellWidth(truncated)))}`;
|
|
12
|
+
}
|
|
13
|
+
export function truncate(value, width) {
|
|
14
|
+
const safeWidth = Math.max(0, width);
|
|
15
|
+
let out = "";
|
|
16
|
+
let used = 0;
|
|
17
|
+
let inEscape = false;
|
|
18
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
19
|
+
const char = value[index];
|
|
20
|
+
if (char === "\x1b") {
|
|
21
|
+
inEscape = true;
|
|
22
|
+
out += char;
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (inEscape) {
|
|
26
|
+
out += char;
|
|
27
|
+
if (/[A-Za-z]/.test(char)) {
|
|
28
|
+
inEscape = false;
|
|
29
|
+
}
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const plainStart = index;
|
|
33
|
+
const cluster = nextCluster(value, index);
|
|
34
|
+
const clusterWidth = cellWidth(cluster);
|
|
35
|
+
if (used + clusterWidth > safeWidth) {
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
out += cluster;
|
|
39
|
+
used += clusterWidth;
|
|
40
|
+
index = plainStart + cluster.length - 1;
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
export function wrapText(text, maxWidth) {
|
|
45
|
+
const width = Math.max(1, maxWidth);
|
|
46
|
+
const lines = [];
|
|
47
|
+
let current = "";
|
|
48
|
+
let currentWidth = 0;
|
|
49
|
+
for (const cluster of graphemes(text)) {
|
|
50
|
+
const clusterWidth = cellWidth(cluster);
|
|
51
|
+
if (currentWidth + clusterWidth > width) {
|
|
52
|
+
lines.push(current);
|
|
53
|
+
current = cluster;
|
|
54
|
+
currentWidth = clusterWidth;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
current += cluster;
|
|
58
|
+
currentWidth += clusterWidth;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (current) {
|
|
62
|
+
lines.push(current);
|
|
63
|
+
}
|
|
64
|
+
return lines;
|
|
65
|
+
}
|
|
66
|
+
export function cellWidth(value) {
|
|
67
|
+
let width = 0;
|
|
68
|
+
for (const cluster of graphemes(stripAnsi(value))) {
|
|
69
|
+
width += clusterCellWidth(cluster);
|
|
70
|
+
}
|
|
71
|
+
return width;
|
|
72
|
+
}
|
|
73
|
+
export function sliceCells(value, start, width) {
|
|
74
|
+
const plain = stripAnsi(value);
|
|
75
|
+
const targetStart = Math.max(0, start);
|
|
76
|
+
const targetWidth = Math.max(0, width);
|
|
77
|
+
let result = "";
|
|
78
|
+
let used = 0;
|
|
79
|
+
let resultWidth = 0;
|
|
80
|
+
for (const cluster of graphemes(plain)) {
|
|
81
|
+
const clusterWidth = clusterCellWidth(cluster);
|
|
82
|
+
if (used + clusterWidth <= targetStart) {
|
|
83
|
+
used += clusterWidth;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (resultWidth + clusterWidth > targetWidth) {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
result += cluster;
|
|
90
|
+
resultWidth += clusterWidth;
|
|
91
|
+
used += clusterWidth;
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
export function graphemes(value) {
|
|
96
|
+
if (!value) {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
if (segmenter) {
|
|
100
|
+
return Array.from(segmenter.segment(value), (part) => part.segment);
|
|
101
|
+
}
|
|
102
|
+
return Array.from(value);
|
|
103
|
+
}
|
|
104
|
+
export function clusterCellWidth(value) {
|
|
105
|
+
if (!value) {
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
if (isZeroWidthCluster(value)) {
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
if (isEmojiCluster(value)) {
|
|
112
|
+
return 2;
|
|
113
|
+
}
|
|
114
|
+
let width = 0;
|
|
115
|
+
for (const char of Array.from(value)) {
|
|
116
|
+
width += charCellWidth(char);
|
|
117
|
+
}
|
|
118
|
+
return Math.max(1, width);
|
|
119
|
+
}
|
|
120
|
+
function nextCluster(value, index) {
|
|
121
|
+
const rest = value.slice(index);
|
|
122
|
+
return graphemes(rest)[0] ?? value[index] ?? "";
|
|
123
|
+
}
|
|
124
|
+
function isZeroWidthCluster(value) {
|
|
125
|
+
return /^[\u200d\ufe0e\ufe0f\p{Mark}]+$/u.test(value);
|
|
126
|
+
}
|
|
127
|
+
function isEmojiCluster(value) {
|
|
128
|
+
for (const char of Array.from(value)) {
|
|
129
|
+
const code = char.codePointAt(0) ?? 0;
|
|
130
|
+
if ((code >= 0x1f000 && code <= 0x1faff) ||
|
|
131
|
+
(code >= 0x2600 && code <= 0x27bf) ||
|
|
132
|
+
(code >= 0x2300 && code <= 0x23ff)) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return /\p{Extended_Pictographic}/u.test(value) || /\p{Emoji_Presentation}/u.test(value);
|
|
137
|
+
}
|
|
138
|
+
export function charCellWidth(char) {
|
|
139
|
+
const code = char.codePointAt(0) ?? 0;
|
|
140
|
+
if (code === 0) {
|
|
141
|
+
return 0;
|
|
142
|
+
}
|
|
143
|
+
if (code >= 0x1100 &&
|
|
144
|
+
(code <= 0x115f ||
|
|
145
|
+
code === 0x2329 ||
|
|
146
|
+
code === 0x232a ||
|
|
147
|
+
(code >= 0x2e80 && code <= 0xa4cf) ||
|
|
148
|
+
(code >= 0xac00 && code <= 0xd7a3) ||
|
|
149
|
+
(code >= 0xf900 && code <= 0xfaff) ||
|
|
150
|
+
(code >= 0xfe10 && code <= 0xfe19) ||
|
|
151
|
+
(code >= 0xfe30 && code <= 0xfe6f) ||
|
|
152
|
+
(code >= 0xff00 && code <= 0xff60) ||
|
|
153
|
+
(code >= 0xffe0 && code <= 0xffe6))) {
|
|
154
|
+
return 2;
|
|
155
|
+
}
|
|
156
|
+
return 1;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/tui/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare const theme: {
|
|
2
|
+
readonly color: {
|
|
3
|
+
readonly primary: string;
|
|
4
|
+
readonly primarySoft: string;
|
|
5
|
+
readonly primaryBg: string;
|
|
6
|
+
readonly panelBg: string;
|
|
7
|
+
readonly selectedBg: string;
|
|
8
|
+
readonly textOnPrimary: string;
|
|
9
|
+
readonly muted: string;
|
|
10
|
+
readonly rule: string;
|
|
11
|
+
readonly notice: string;
|
|
12
|
+
readonly danger: string;
|
|
13
|
+
readonly ok: string;
|
|
14
|
+
};
|
|
15
|
+
readonly border: {
|
|
16
|
+
readonly horizontal: "─";
|
|
17
|
+
readonly vertical: "│";
|
|
18
|
+
readonly topLeft: "╭";
|
|
19
|
+
readonly topRight: "╮";
|
|
20
|
+
readonly bottomLeft: "╰";
|
|
21
|
+
readonly bottomRight: "╯";
|
|
22
|
+
readonly teeLeft: "├";
|
|
23
|
+
readonly teeRight: "┤";
|
|
24
|
+
readonly teeTop: "┬";
|
|
25
|
+
readonly teeBottom: "┴";
|
|
26
|
+
readonly cross: "┼";
|
|
27
|
+
};
|
|
28
|
+
readonly marker: {
|
|
29
|
+
readonly selected: "●";
|
|
30
|
+
readonly normal: "•";
|
|
31
|
+
readonly pointer: "›";
|
|
32
|
+
};
|
|
33
|
+
readonly quote: {
|
|
34
|
+
readonly prefix: "│ ";
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export declare function styled(content: string, style: string): string;
|
|
38
|
+
export declare const textStyle: {
|
|
39
|
+
readonly primary: (content: string) => string;
|
|
40
|
+
readonly primaryBold: (content: string) => string;
|
|
41
|
+
readonly primarySoft: (content: string) => string;
|
|
42
|
+
readonly primarySoftBold: (content: string) => string;
|
|
43
|
+
readonly primaryBar: (content: string) => string;
|
|
44
|
+
readonly muted: (content: string) => string;
|
|
45
|
+
readonly notice: (content: string) => string;
|
|
46
|
+
readonly noticeBold: (content: string) => string;
|
|
47
|
+
readonly danger: (content: string) => string;
|
|
48
|
+
readonly dangerBold: (content: string) => string;
|
|
49
|
+
readonly ok: (content: string) => string;
|
|
50
|
+
readonly onPrimary: (content: string) => string;
|
|
51
|
+
readonly rule: (content: string) => string;
|
|
52
|
+
};
|
|
53
|
+
export declare function selectedLine(content: string, width: number, focused?: boolean): string;
|
|
54
|
+
export declare function panelLine(content: string, width: number): string;
|
|
55
|
+
export declare function ruleLine(width: number): string;
|
|
56
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCR,CAAC;AAEX,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,eAAO,MAAM,SAAS;gCACH,MAAM,KAAG,MAAM;oCAGX,MAAM,KAAG,MAAM;oCAGf,MAAM,KAAG,MAAM;wCAGX,MAAM,KAAG,MAAM;mCAGpB,MAAM,KAAG,MAAM;8BAGpB,MAAM,KAAG,MAAM;+BAGd,MAAM,KAAG,MAAM;mCAGX,MAAM,KAAG,MAAM;+BAGnB,MAAM,KAAG,MAAM;mCAGX,MAAM,KAAG,MAAM;2BAGvB,MAAM,KAAG,MAAM;kCAGR,MAAM,KAAG,MAAM;6BAGpB,MAAM,KAAG,MAAM;CAGrB,CAAC;AAEX,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,MAAM,CAKnF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ansi, bg, fg } from "./ansi.js";
|
|
2
|
+
import { fit } from "./text.js";
|
|
3
|
+
export const theme = {
|
|
4
|
+
color: {
|
|
5
|
+
primary: fg(0, 130, 202),
|
|
6
|
+
primarySoft: fg(94, 180, 232),
|
|
7
|
+
primaryBg: bg(0, 104, 176),
|
|
8
|
+
panelBg: bg(5, 46, 74),
|
|
9
|
+
selectedBg: bg(181, 196, 255),
|
|
10
|
+
textOnPrimary: fg(245, 250, 255),
|
|
11
|
+
muted: fg(139, 152, 166),
|
|
12
|
+
rule: fg(181, 196, 255),
|
|
13
|
+
notice: fg(245, 101, 101),
|
|
14
|
+
danger: fg(245, 101, 101),
|
|
15
|
+
ok: fg(91, 207, 140)
|
|
16
|
+
},
|
|
17
|
+
border: {
|
|
18
|
+
horizontal: "─",
|
|
19
|
+
vertical: "│",
|
|
20
|
+
topLeft: "╭",
|
|
21
|
+
topRight: "╮",
|
|
22
|
+
bottomLeft: "╰",
|
|
23
|
+
bottomRight: "╯",
|
|
24
|
+
teeLeft: "├",
|
|
25
|
+
teeRight: "┤",
|
|
26
|
+
teeTop: "┬",
|
|
27
|
+
teeBottom: "┴",
|
|
28
|
+
cross: "┼"
|
|
29
|
+
},
|
|
30
|
+
marker: {
|
|
31
|
+
selected: "●",
|
|
32
|
+
normal: "•",
|
|
33
|
+
pointer: "›"
|
|
34
|
+
},
|
|
35
|
+
quote: {
|
|
36
|
+
prefix: "│ "
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
export function styled(content, style) {
|
|
40
|
+
return `${style}${content}${ansi.reset}`;
|
|
41
|
+
}
|
|
42
|
+
export const textStyle = {
|
|
43
|
+
primary(content) {
|
|
44
|
+
return styled(content, theme.color.primary);
|
|
45
|
+
},
|
|
46
|
+
primaryBold(content) {
|
|
47
|
+
return styled(content, `${theme.color.primary}${ansi.bold}`);
|
|
48
|
+
},
|
|
49
|
+
primarySoft(content) {
|
|
50
|
+
return styled(content, theme.color.primarySoft);
|
|
51
|
+
},
|
|
52
|
+
primarySoftBold(content) {
|
|
53
|
+
return styled(content, `${theme.color.primarySoft}${ansi.bold}`);
|
|
54
|
+
},
|
|
55
|
+
primaryBar(content) {
|
|
56
|
+
return styled(content, `${theme.color.primaryBg}${theme.color.textOnPrimary}${ansi.bold}`);
|
|
57
|
+
},
|
|
58
|
+
muted(content) {
|
|
59
|
+
return styled(content, theme.color.muted);
|
|
60
|
+
},
|
|
61
|
+
notice(content) {
|
|
62
|
+
return styled(content, theme.color.notice);
|
|
63
|
+
},
|
|
64
|
+
noticeBold(content) {
|
|
65
|
+
return styled(content, `${theme.color.notice}${ansi.bold}`);
|
|
66
|
+
},
|
|
67
|
+
danger(content) {
|
|
68
|
+
return styled(content, theme.color.danger);
|
|
69
|
+
},
|
|
70
|
+
dangerBold(content) {
|
|
71
|
+
return styled(content, `${theme.color.danger}${ansi.bold}`);
|
|
72
|
+
},
|
|
73
|
+
ok(content) {
|
|
74
|
+
return styled(content, theme.color.ok);
|
|
75
|
+
},
|
|
76
|
+
onPrimary(content) {
|
|
77
|
+
return styled(content, theme.color.textOnPrimary);
|
|
78
|
+
},
|
|
79
|
+
rule(content) {
|
|
80
|
+
return styled(content, theme.color.rule);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
export function selectedLine(content, width, focused = true) {
|
|
84
|
+
if (!focused) {
|
|
85
|
+
return textStyle.primarySoft(fit(content, width));
|
|
86
|
+
}
|
|
87
|
+
return styled(fit(content, width), theme.color.selectedBg);
|
|
88
|
+
}
|
|
89
|
+
export function panelLine(content, width) {
|
|
90
|
+
return styled(fit(content, width), theme.color.panelBg);
|
|
91
|
+
}
|
|
92
|
+
export function ruleLine(width) {
|
|
93
|
+
return textStyle.rule(theme.border.horizontal.repeat(Math.max(0, width)));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE;QACL,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;QACxB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;QAC7B,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;QAC1B,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QACtB,UAAU,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAC7B,aAAa,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAChC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACxB,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACvB,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACzB,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QACzB,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;KACrB;IACD,MAAM,EAAE;QACN,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,GAAG;QACf,WAAW,EAAE,GAAG;QAChB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,GAAG;QACX,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,GAAG;KACX;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;KACb;IACD,KAAK,EAAE;QACL,MAAM,EAAE,IAAI;KACb;CACO,CAAC;AAEX,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,KAAa;IACnD,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,CAAC,OAAe;QACrB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IACD,WAAW,CAAC,OAAe;QACzB,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,WAAW,CAAC,OAAe;QACzB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IACD,eAAe,CAAC,OAAe;QAC7B,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,OAAe;QACxB,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,CAAC,OAAe;QACnB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,OAAe;QACpB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,UAAU,CAAC,OAAe;QACxB,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,CAAC,OAAe;QACpB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,UAAU,CAAC,OAAe;QACxB,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,EAAE,CAAC,OAAe;QAChB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,SAAS,CAAC,OAAe;QACvB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACO,CAAC;AAEX,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,KAAa,EAAE,OAAO,GAAG,IAAI;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAa;IACtD,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { AccountModalState, ConfirmDialogState, LoginFormState } from "./account-modal.js";
|
|
2
|
+
export type ViewId = "hot" | "new" | "boards" | "following" | "favorite" | "messages" | "me" | "settings";
|
|
3
|
+
export type FocusColumn = "nav" | "content";
|
|
4
|
+
export type ModalType = "help" | "account" | "login" | "confirm" | "image" | null;
|
|
5
|
+
export interface NavItem {
|
|
6
|
+
id: ViewId;
|
|
7
|
+
label: string;
|
|
8
|
+
hint: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ContentItem {
|
|
11
|
+
title: string;
|
|
12
|
+
meta?: string;
|
|
13
|
+
detail?: string;
|
|
14
|
+
topicId?: number;
|
|
15
|
+
boardId?: number;
|
|
16
|
+
chatUserId?: number;
|
|
17
|
+
sortTime?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface TuiState {
|
|
20
|
+
mode: "list" | "topic" | "settings";
|
|
21
|
+
focus: FocusColumn;
|
|
22
|
+
navIndex: number;
|
|
23
|
+
itemIndex: number;
|
|
24
|
+
scroll: number;
|
|
25
|
+
sidebarWidth?: number;
|
|
26
|
+
draggingSidebarDivider: boolean;
|
|
27
|
+
loading: boolean;
|
|
28
|
+
loadingMore: boolean;
|
|
29
|
+
status: string;
|
|
30
|
+
notification?: {
|
|
31
|
+
message: string;
|
|
32
|
+
expiresAt: number;
|
|
33
|
+
};
|
|
34
|
+
error?: string;
|
|
35
|
+
account?: string;
|
|
36
|
+
viewTitle: string;
|
|
37
|
+
items: ContentItem[];
|
|
38
|
+
overview: ContentItem[];
|
|
39
|
+
parentList?: ListSnapshot;
|
|
40
|
+
currentBoard?: BoardListState;
|
|
41
|
+
currentChat?: ChatListState;
|
|
42
|
+
topic?: TopicReaderState;
|
|
43
|
+
modal: ModalType;
|
|
44
|
+
accountModal: AccountModalState;
|
|
45
|
+
loginForm: LoginFormState;
|
|
46
|
+
confirmDialog?: ConfirmDialogState;
|
|
47
|
+
imageViewer?: ImageViewerState;
|
|
48
|
+
}
|
|
49
|
+
export interface ListSnapshot {
|
|
50
|
+
title: string;
|
|
51
|
+
items: ContentItem[];
|
|
52
|
+
itemIndex: number;
|
|
53
|
+
status: string;
|
|
54
|
+
}
|
|
55
|
+
export interface BoardListState {
|
|
56
|
+
boardId: number;
|
|
57
|
+
title: string;
|
|
58
|
+
}
|
|
59
|
+
export interface ChatListState {
|
|
60
|
+
userId: number;
|
|
61
|
+
title: string;
|
|
62
|
+
loaded: number;
|
|
63
|
+
size: number;
|
|
64
|
+
hasMore: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface TopicReaderState {
|
|
67
|
+
topicId: number;
|
|
68
|
+
title: string;
|
|
69
|
+
meta: string;
|
|
70
|
+
lines: string[];
|
|
71
|
+
posts: TopicPostEntry[];
|
|
72
|
+
loaded: number;
|
|
73
|
+
size: number;
|
|
74
|
+
hasMore: boolean;
|
|
75
|
+
imageCount: number;
|
|
76
|
+
linkCount: number;
|
|
77
|
+
floorInput: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ImageViewerState {
|
|
80
|
+
images: string[];
|
|
81
|
+
index: number;
|
|
82
|
+
token?: string;
|
|
83
|
+
renderSize?: {
|
|
84
|
+
columns: number;
|
|
85
|
+
rows: number;
|
|
86
|
+
};
|
|
87
|
+
loading: boolean;
|
|
88
|
+
error?: string;
|
|
89
|
+
}
|
|
90
|
+
export interface TopicPostEntry {
|
|
91
|
+
id?: number;
|
|
92
|
+
floor?: number;
|
|
93
|
+
author: string;
|
|
94
|
+
time: string;
|
|
95
|
+
likeCount: number;
|
|
96
|
+
dislikeCount: number;
|
|
97
|
+
rating?: string;
|
|
98
|
+
preview: string;
|
|
99
|
+
lineStart: number;
|
|
100
|
+
lineEnd: number;
|
|
101
|
+
imageCount: number;
|
|
102
|
+
linkCount: number;
|
|
103
|
+
images: string[];
|
|
104
|
+
links: string[];
|
|
105
|
+
lines: TopicLineEntry[];
|
|
106
|
+
}
|
|
107
|
+
export interface TopicLineEntry {
|
|
108
|
+
line: number;
|
|
109
|
+
row: number;
|
|
110
|
+
floor?: number;
|
|
111
|
+
kind: "header" | "divider" | "text" | "quote" | "image" | "link" | "blank";
|
|
112
|
+
text: string;
|
|
113
|
+
imageIndex?: number;
|
|
114
|
+
imageUrl?: string;
|
|
115
|
+
imagePreview?: string;
|
|
116
|
+
imagePreviewRows?: number;
|
|
117
|
+
imageBlockRows?: number;
|
|
118
|
+
linkIndex?: number;
|
|
119
|
+
linkUrl?: string;
|
|
120
|
+
}
|
|
121
|
+
export declare const navItems: NavItem[];
|
|
122
|
+
export declare const settingsItems: ContentItem[];
|
|
123
|
+
export declare function currentTopicPost(topic: TopicReaderState, scroll: number): TopicPostEntry | undefined;
|
|
124
|
+
export declare function currentTopicLine(topic: TopicReaderState, scroll: number): TopicLineEntry | undefined;
|
|
125
|
+
export declare function getStatus(state: TuiState): string;
|
|
126
|
+
//# sourceMappingURL=tui-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-model.d.ts","sourceRoot":"","sources":["../../src/tui/tui-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,UAAU,CAAC;AAC1G,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;AAElF,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IACpC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,iBAAiB,CAAC;IAChC,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,QAAQ,EAAE,OAAO,EAS7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAW,EAMtC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAIpG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAQpG;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAqBjD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export const navItems = [
|
|
2
|
+
{ id: "hot", label: "十大", hint: "热门话题" },
|
|
3
|
+
{ id: "favorite", label: "收藏", hint: "版面帖子" },
|
|
4
|
+
{ id: "new", label: "最新", hint: "新帖流" },
|
|
5
|
+
{ id: "boards", label: "版面", hint: "所有分区" },
|
|
6
|
+
{ id: "following", label: "关注", hint: "用户动态" },
|
|
7
|
+
{ id: "messages", label: "消息", hint: "未读与私信" },
|
|
8
|
+
{ id: "me", label: "我的", hint: "当前账号" },
|
|
9
|
+
{ id: "settings", label: "设置", hint: "账号与配置" }
|
|
10
|
+
];
|
|
11
|
+
export const settingsItems = [
|
|
12
|
+
{ title: "切换账号", meta: "account", detail: "选择或管理登录账号" },
|
|
13
|
+
{ title: "检查更新", meta: "update", detail: "检查 CC98-CLI 新版本" },
|
|
14
|
+
{ title: "缓存管理", meta: "cache", detail: "查看和清理本地缓存" },
|
|
15
|
+
{ title: "快捷键帮助", meta: "help", detail: "查看所有可用快捷键" },
|
|
16
|
+
{ title: "退出登录", meta: "logout", detail: "清除本地登录信息" }
|
|
17
|
+
];
|
|
18
|
+
export function currentTopicPost(topic, scroll) {
|
|
19
|
+
return topic.posts.find((entry) => scroll >= entry.lineStart && scroll <= entry.lineEnd) ??
|
|
20
|
+
[...topic.posts].reverse().find((entry) => entry.lineStart <= scroll) ??
|
|
21
|
+
topic.posts[0];
|
|
22
|
+
}
|
|
23
|
+
export function currentTopicLine(topic, scroll) {
|
|
24
|
+
const post = currentTopicPost(topic, scroll);
|
|
25
|
+
if (!post) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
return post.lines.find((entry) => entry.line === scroll) ??
|
|
29
|
+
post.lines.find((entry) => entry.line > scroll && entry.kind !== "blank") ??
|
|
30
|
+
post.lines.at(-1);
|
|
31
|
+
}
|
|
32
|
+
export function getStatus(state) {
|
|
33
|
+
if (state.loading) {
|
|
34
|
+
return "加载中...";
|
|
35
|
+
}
|
|
36
|
+
if (state.loadingMore) {
|
|
37
|
+
return "加载更多...";
|
|
38
|
+
}
|
|
39
|
+
if (state.error) {
|
|
40
|
+
return "出错了";
|
|
41
|
+
}
|
|
42
|
+
if (state.mode === "topic" && state.topic) {
|
|
43
|
+
const post = currentTopicPost(state.topic, state.scroll);
|
|
44
|
+
const line = currentTopicLine(state.topic, state.scroll);
|
|
45
|
+
return post
|
|
46
|
+
? `${post.floor ?? "?"} 楼 · 第 ${line ? line.row + 1 : 1} 行`
|
|
47
|
+
: `${state.topic.loaded} 楼已加载`;
|
|
48
|
+
}
|
|
49
|
+
if (state.mode === "settings") {
|
|
50
|
+
return "设置";
|
|
51
|
+
}
|
|
52
|
+
return `${state.items.length} 项`;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=tui-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-model.js","sourceRoot":"","sources":["../../src/tui/tui-model.ts"],"names":[],"mappings":"AAwIA,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IACxC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3C,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9C,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAC9C,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IACvC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE;IACvD,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE;IAC5D,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;IACrD,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE;IACrD,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE;CACtD,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,KAAuB,EAAE,MAAc;IACtE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;QACtF,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC;QACrE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAuB,EAAE,MAAc;IACtE,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAe;IACvC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI;YACT,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YAC3D,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface RenderedPost {
|
|
2
|
+
lines: string[];
|
|
3
|
+
images: string[];
|
|
4
|
+
links: string[];
|
|
5
|
+
}
|
|
6
|
+
interface RenderOptions {
|
|
7
|
+
imagePreviewRows?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function renderUbbToLines(content: string, width: number, options?: RenderOptions): RenderedPost;
|
|
10
|
+
export declare function renderMarkdownToLines(content: string, width: number, options?: RenderOptions): RenderedPost;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=ubb-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ubb-renderer.d.ts","sourceRoot":"","sources":["../../src/tui/ubb-renderer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,aAAa;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CA0D1G;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,YAAY,CA+C/G"}
|