@tooee/view 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/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # @tooee/view
2
+
3
+ Terminal content viewer for markdown, code, images, and tables.
4
+
5
+ Part of the [Tooee](https://github.com/gingerhendrix/tooee) monorepo. See the main repo for documentation.
@@ -0,0 +1,7 @@
1
+ interface DirectoryViewProps {
2
+ dirPath: string;
3
+ actions?: import("@tooee/commands").ActionDefinition[];
4
+ }
5
+ export declare function DirectoryView({ dirPath, actions }: DirectoryViewProps): import("react").ReactNode;
6
+ export {};
7
+ //# sourceMappingURL=DirectoryView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectoryView.d.ts","sourceRoot":"","sources":["../src/DirectoryView.tsx"],"names":[],"mappings":"AAyBA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,iBAAiB,EAAE,gBAAgB,EAAE,CAAA;CACvD;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,6BAqCrE"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { useState, useMemo } from "react";
3
+ import { useCommand } from "@tooee/commands";
4
+ import { View } from "./View.jsx";
5
+ import { listDirectoryFiles } from "./directory-provider.js";
6
+ import { createFileProvider } from "./default-provider.js";
7
+ function createDirectoryFileProvider(entry, index, total) {
8
+ const inner = createFileProvider(entry.path);
9
+ return {
10
+ async load() {
11
+ const result = inner.load();
12
+ const content = result instanceof Promise ? await result : result;
13
+ return {
14
+ ...content,
15
+ title: `${entry.name} (${index + 1}/${total})`,
16
+ };
17
+ },
18
+ };
19
+ }
20
+ export function DirectoryView({ dirPath, actions }) {
21
+ const files = useMemo(() => listDirectoryFiles(dirPath), [dirPath]);
22
+ const [currentIndex, setCurrentIndex] = useState(0);
23
+ const contentProvider = useMemo(() => files.length > 0
24
+ ? createDirectoryFileProvider(files[currentIndex], currentIndex, files.length)
25
+ : null, [files, currentIndex]);
26
+ useCommand({
27
+ id: "dir.next-file",
28
+ title: "Next file",
29
+ hotkey: "l",
30
+ modes: ["cursor"],
31
+ handler: () => setCurrentIndex((i) => Math.min(i + 1, files.length - 1)),
32
+ });
33
+ useCommand({
34
+ id: "dir.prev-file",
35
+ title: "Previous file",
36
+ hotkey: "h",
37
+ modes: ["cursor"],
38
+ handler: () => setCurrentIndex((i) => Math.max(i - 1, 0)),
39
+ });
40
+ if (files.length === 0 || !contentProvider) {
41
+ return (_jsx("box", { children: _jsx("text", { content: "No viewable files in directory" }) }));
42
+ }
43
+ return _jsx(View, { contentProvider: contentProvider, actions: actions });
44
+ }
45
+ //# sourceMappingURL=DirectoryView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectoryView.js","sourceRoot":"","sources":["../src/DirectoryView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAuB,MAAM,yBAAyB,CAAA;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,SAAS,2BAA2B,CAClC,KAAqB,EACrB,KAAa,EACb,KAAa;IAEb,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5C,OAAO;QACL,KAAK,CAAC,IAAI;YACR,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;YAC3B,MAAM,OAAO,GAAG,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,MAAoB,CAAA;YAC/E,OAAO;gBACL,GAAG,OAAO;gBACV,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG;aAChD,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAOD,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAsB;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEnD,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CACH,KAAK,CAAC,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;QAC9E,CAAC,CAAC,IAAI,EACV,CAAC,KAAK,EAAE,YAAY,CAAC,CACtB,CAAA;IAED,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACzE,CAAC,CAAA;IAEF,UAAU,CAAC;QACT,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,eAAe;QACtB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,CAAC,QAAQ,CAAC;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1D,CAAC,CAAA;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,CACL,wBACE,eAAM,OAAO,EAAC,gCAAgC,GAAG,GAC7C,CACP,CAAA;IACH,CAAC;IAED,OAAO,KAAC,IAAI,IAAC,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAI,CAAA;AACrE,CAAC"}
package/dist/View.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import type { ActionDefinition } from "@tooee/commands";
2
+ import { type ContentProvider, type ContentRenderer } from "./types.js";
3
+ interface ViewProps {
4
+ contentProvider: ContentProvider;
5
+ actions?: ActionDefinition[];
6
+ renderers?: Record<string, ContentRenderer>;
7
+ }
8
+ export declare function View({ contentProvider, actions, renderers }: ViewProps): import("react").ReactNode;
9
+ export {};
10
+ //# sourceMappingURL=View.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../src/View.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAUvD,OAAO,EAOL,KAAK,eAAe,EAEpB,KAAK,eAAe,EAErB,MAAM,YAAY,CAAA;AAEnB,UAAU,SAAS;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAC5C;AAkED,wBAAgB,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,6BA4YtE"}
package/dist/View.js ADDED
@@ -0,0 +1,367 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { useState, useEffect, useRef, useMemo, useCallback } from "react";
3
+ import { MarkdownView, CodeView, ImageView, Table } from "@tooee/renderers";
4
+ import { AppLayout } from "@tooee/layout";
5
+ import { useTheme } from "@tooee/themes";
6
+ import { useHasOverlay } from "@tooee/overlays";
7
+ import { useActions, useProvideCommandContext } from "@tooee/commands";
8
+ import { useThemeCommands, useQuitCommand, useCopyCommand, useModalNavigationCommands, useCommandPalette, } from "@tooee/shell";
9
+ import { useConfig } from "@tooee/config";
10
+ import { marked } from "marked";
11
+ import { getTextContent, isBuiltinContent, isCustomContent, } from "./types.js";
12
+ function isAsyncIterable(value) {
13
+ return value != null && typeof value === "object" && Symbol.asyncIterator in value;
14
+ }
15
+ function createEmptyContent(format, title) {
16
+ switch (format) {
17
+ case "markdown":
18
+ return { format, markdown: "", title };
19
+ case "code":
20
+ return { format, code: "", title };
21
+ case "text":
22
+ return { format, text: "", title };
23
+ case "image":
24
+ return { format, src: "", title };
25
+ case "table":
26
+ return { format, columns: [], rows: [], title };
27
+ default:
28
+ return { format, data: undefined, title };
29
+ }
30
+ }
31
+ function ensureContentFormat(current, format, title) {
32
+ if (!current || current.format !== format) {
33
+ return createEmptyContent(format, title);
34
+ }
35
+ return current;
36
+ }
37
+ function applyContentChunk(current, chunk, title) {
38
+ switch (chunk.type) {
39
+ case "replace":
40
+ return chunk.content;
41
+ case "append":
42
+ if (chunk.format === "markdown") {
43
+ const target = ensureContentFormat(current, "markdown", title);
44
+ return { ...target, markdown: target.markdown + chunk.data };
45
+ }
46
+ if (chunk.format === "code") {
47
+ const target = ensureContentFormat(current, "code", title);
48
+ return {
49
+ ...target,
50
+ code: target.code + chunk.data,
51
+ language: chunk.language ?? target.language,
52
+ };
53
+ }
54
+ {
55
+ const target = ensureContentFormat(current, "text", title);
56
+ return { ...target, text: target.text + chunk.data };
57
+ }
58
+ case "patch":
59
+ return chunk.apply(current);
60
+ default:
61
+ return current ?? createEmptyContent("markdown", title);
62
+ }
63
+ }
64
+ export function View({ contentProvider, actions, renderers }) {
65
+ const { theme } = useTheme();
66
+ const config = useConfig();
67
+ const [content, setContent] = useState(null);
68
+ const [streaming, setStreaming] = useState(false);
69
+ const [error, setError] = useState(null);
70
+ const scrollRef = useRef(null);
71
+ const [reloadTrigger, setReloadTrigger] = useState(0);
72
+ const reload = useCallback(() => setReloadTrigger((n) => n + 1), []);
73
+ useEffect(() => {
74
+ setError(null);
75
+ setStreaming(false);
76
+ const loaded = contentProvider.load();
77
+ if (isAsyncIterable(loaded)) {
78
+ const fallbackFormat = contentProvider.format ?? "markdown";
79
+ const title = contentProvider.title;
80
+ let cancelled = false;
81
+ let current = createEmptyContent(fallbackFormat, title);
82
+ setContent(current);
83
+ setStreaming(true);
84
+ (async () => {
85
+ try {
86
+ for await (const chunk of loaded) {
87
+ if (cancelled)
88
+ break;
89
+ current = applyContentChunk(current, chunk, title);
90
+ setContent(current);
91
+ }
92
+ }
93
+ catch (error) {
94
+ if (!cancelled && error instanceof Error) {
95
+ setError(error.message);
96
+ }
97
+ }
98
+ finally {
99
+ if (!cancelled) {
100
+ setStreaming(false);
101
+ }
102
+ }
103
+ })();
104
+ return () => {
105
+ cancelled = true;
106
+ };
107
+ }
108
+ if (loaded instanceof Promise) {
109
+ let active = true;
110
+ loaded
111
+ .then((value) => {
112
+ if (active)
113
+ setContent(value);
114
+ })
115
+ .catch((error) => {
116
+ if (active)
117
+ setError(error.message);
118
+ });
119
+ return () => {
120
+ active = false;
121
+ };
122
+ }
123
+ setContent(loaded);
124
+ // eslint-disable-next-line react-hooks/exhaustive-deps
125
+ }, [contentProvider, reloadTrigger]);
126
+ const TABLE_VISUAL_HEADER_OFFSET = 3;
127
+ const TABLE_SEARCH_HEADER_OFFSET = 1;
128
+ const textContent = useMemo(() => (content ? getTextContent(content) : ""), [content]);
129
+ const lineCount = useMemo(() => {
130
+ if (!content)
131
+ return 0;
132
+ if (isBuiltinContent(content) && content.format === "table") {
133
+ return content.rows.length + 3;
134
+ }
135
+ return textContent.split("\n").length;
136
+ }, [content, textContent]);
137
+ const { blockCount, blockLineMap } = useMemo(() => {
138
+ if (!content)
139
+ return { blockCount: undefined, blockLineMap: undefined };
140
+ if (!isBuiltinContent(content))
141
+ return { blockCount: undefined, blockLineMap: undefined };
142
+ if (content.format === "table") {
143
+ const map = content.rows.map((_, i) => i + TABLE_VISUAL_HEADER_OFFSET);
144
+ return { blockCount: content.rows.length, blockLineMap: map };
145
+ }
146
+ if (content.format !== "markdown") {
147
+ return { blockCount: undefined, blockLineMap: undefined };
148
+ }
149
+ const tokens = marked.lexer(content.markdown);
150
+ const blocks = tokens.filter((t) => t.type !== "space");
151
+ const lineMap = [];
152
+ let lineOffset = 0;
153
+ for (const token of tokens) {
154
+ if (token.type === "space") {
155
+ if ("raw" in token && typeof token.raw === "string") {
156
+ lineOffset += token.raw.split("\n").length - 1;
157
+ }
158
+ continue;
159
+ }
160
+ lineMap.push(lineOffset);
161
+ if ("raw" in token && typeof token.raw === "string") {
162
+ lineOffset += token.raw.split("\n").length - 1;
163
+ }
164
+ }
165
+ return { blockCount: blocks.length, blockLineMap: lineMap };
166
+ }, [content]);
167
+ const nav = useModalNavigationCommands({
168
+ totalLines: lineCount,
169
+ getText: () => (content ? textContent : undefined),
170
+ blockCount,
171
+ blockLineMap,
172
+ searchLineOffset: content?.format === "table" ? TABLE_SEARCH_HEADER_OFFSET : 0,
173
+ multiSelect: true,
174
+ });
175
+ useEffect(() => {
176
+ if (scrollRef.current) {
177
+ scrollRef.current.scrollTop = nav.scrollOffset;
178
+ }
179
+ }, [nav.scrollOffset]);
180
+ const { name: themeName } = useThemeCommands();
181
+ useQuitCommand();
182
+ useCopyCommand({
183
+ getText: () => (content ? textContent : undefined),
184
+ });
185
+ const _palette = useCommandPalette();
186
+ useActions(actions);
187
+ const hasOverlay = useHasOverlay();
188
+ function getActiveRow() {
189
+ if (!content || !isBuiltinContent(content) || content.format !== "table")
190
+ return undefined;
191
+ if (!nav.cursor)
192
+ return undefined;
193
+ return content.rows[nav.cursor.line];
194
+ }
195
+ function getSelectedRows() {
196
+ if (!content || !isBuiltinContent(content) || content.format !== "table")
197
+ return [];
198
+ if (nav.toggledIndices.size) {
199
+ return Array.from(nav.toggledIndices)
200
+ .map((i) => content.rows[i])
201
+ .filter(Boolean);
202
+ }
203
+ if (nav.selection) {
204
+ const start = nav.selection.start.line;
205
+ const end = nav.selection.end.line;
206
+ return content.rows.slice(start, end + 1);
207
+ }
208
+ return [];
209
+ }
210
+ useProvideCommandContext(() => ({
211
+ view: {
212
+ content,
213
+ format: content?.format,
214
+ cursor: nav.cursor,
215
+ selection: nav.selection,
216
+ mode: nav.mode,
217
+ activeRow: getActiveRow(),
218
+ selectedRows: getSelectedRows(),
219
+ toggledIndices: nav.toggledIndices,
220
+ reload,
221
+ },
222
+ }));
223
+ const matchingLinesSet = useMemo(() => (nav.matchingLines.length > 0 ? new Set(nav.matchingLines) : undefined), [nav.matchingLines]);
224
+ const currentMatchLine = nav.matchingLines.length > 0 ? nav.matchingLines[nav.currentMatchIndex] : undefined;
225
+ // For markdown: convert matching lines to matching blocks
226
+ const matchingBlocks = useMemo(() => {
227
+ if (!matchingLinesSet || !blockLineMap || blockLineMap.length === 0)
228
+ return undefined;
229
+ if (content?.format === "table")
230
+ return undefined; // table uses matchingRows instead
231
+ const blocks = new Set();
232
+ for (const line of matchingLinesSet) {
233
+ let blockIdx = 0;
234
+ for (let i = blockLineMap.length - 1; i >= 0; i--) {
235
+ if (blockLineMap[i] <= line) {
236
+ blockIdx = i;
237
+ break;
238
+ }
239
+ }
240
+ blocks.add(blockIdx);
241
+ }
242
+ return blocks.size > 0 ? blocks : undefined;
243
+ }, [matchingLinesSet, blockLineMap, content?.format]);
244
+ const currentMatchBlock = useMemo(() => {
245
+ if (currentMatchLine == null || !blockLineMap || blockLineMap.length === 0)
246
+ return undefined;
247
+ if (content?.format === "table")
248
+ return undefined;
249
+ for (let i = blockLineMap.length - 1; i >= 0; i--) {
250
+ if (blockLineMap[i] <= currentMatchLine)
251
+ return i;
252
+ }
253
+ return 0;
254
+ }, [currentMatchLine, blockLineMap, content?.format]);
255
+ // For table: convert matching lines to matching row indices
256
+ const matchingRowsSet = useMemo(() => {
257
+ if (!matchingLinesSet || content?.format !== "table")
258
+ return undefined;
259
+ const rows = new Set();
260
+ for (const line of matchingLinesSet) {
261
+ const row = line - TABLE_SEARCH_HEADER_OFFSET;
262
+ if (row >= 0)
263
+ rows.add(row);
264
+ }
265
+ return rows.size > 0 ? rows : undefined;
266
+ }, [matchingLinesSet, content?.format]);
267
+ const currentMatchRow = useMemo(() => {
268
+ if (content?.format !== "table" || currentMatchLine == null)
269
+ return undefined;
270
+ const row = currentMatchLine - TABLE_SEARCH_HEADER_OFFSET;
271
+ return row >= 0 ? row : undefined;
272
+ }, [content?.format, currentMatchLine]);
273
+ const toggledBlocks = useMemo(() => {
274
+ if (content?.format !== "markdown" || nav.toggledIndices.size === 0)
275
+ return undefined;
276
+ return new Set(nav.toggledIndices);
277
+ }, [content?.format, nav.toggledIndices]);
278
+ const toggledRows = useMemo(() => {
279
+ if (content?.format !== "table" || nav.toggledIndices.size === 0)
280
+ return undefined;
281
+ return new Set(nav.toggledIndices);
282
+ }, [content?.format, nav.toggledIndices]);
283
+ const toggledLines = useMemo(() => {
284
+ if (!content || (content.format !== "code" && content.format !== "text"))
285
+ return undefined;
286
+ return nav.toggledIndices.size > 0 ? new Set(nav.toggledIndices) : undefined;
287
+ }, [content, nav.toggledIndices]);
288
+ if (error) {
289
+ return (_jsx("box", { style: { flexDirection: "column" }, children: _jsx("text", { content: `Error: ${error}`, fg: theme.error }) }));
290
+ }
291
+ if (!content) {
292
+ return (_jsx("box", { children: _jsx("text", { content: "Loading...", fg: theme.textMuted }) }));
293
+ }
294
+ const cursorLine = nav.cursor?.line ?? undefined;
295
+ const selectionStart = nav.selection?.start.line ?? undefined;
296
+ const selectionEnd = nav.selection?.end.line ?? undefined;
297
+ const gutterConfig = config.view?.gutter;
298
+ const renderContent = () => {
299
+ // Custom content: use registered renderer or fall back to text
300
+ if (isCustomContent(content)) {
301
+ const customRenderer = renderers?.[content.format];
302
+ if (customRenderer) {
303
+ return customRenderer({
304
+ content,
305
+ lineCount,
306
+ cursor: cursorLine,
307
+ selectionStart,
308
+ selectionEnd,
309
+ });
310
+ }
311
+ // No renderer for this custom format — fall back to text
312
+ const text = getTextContent(content);
313
+ return (_jsx(CodeView, { content: text, showLineNumbers: false, cursor: cursorLine, selectionStart: selectionStart, selectionEnd: selectionEnd }));
314
+ }
315
+ // Built-in formats
316
+ switch (content.format) {
317
+ case "markdown":
318
+ return (_jsx(MarkdownView, { content: content.markdown, activeBlock: cursorLine, selectedBlocks: selectionStart != null && selectionEnd != null
319
+ ? { start: selectionStart, end: selectionEnd }
320
+ : undefined, matchingBlocks: matchingBlocks, currentMatchBlock: currentMatchBlock, toggledBlocks: toggledBlocks }));
321
+ case "code":
322
+ return (_jsx(CodeView, { content: content.code, language: content.language, showLineNumbers: gutterConfig ?? true, cursor: cursorLine, selectionStart: selectionStart, selectionEnd: selectionEnd, matchingLines: matchingLinesSet, currentMatchLine: currentMatchLine, toggledLines: toggledLines }));
323
+ case "text":
324
+ return (_jsx(CodeView, { content: content.text, showLineNumbers: gutterConfig ?? false, cursor: cursorLine, selectionStart: selectionStart, selectionEnd: selectionEnd, matchingLines: matchingLinesSet, currentMatchLine: currentMatchLine, toggledLines: toggledLines }));
325
+ case "image":
326
+ return _jsx(ImageView, { src: content.src });
327
+ case "table":
328
+ return (_jsx(Table, { columns: content.columns, rows: content.rows, cursor: cursorLine, selectionStart: selectionStart, selectionEnd: selectionEnd, matchingRows: matchingRowsSet, currentMatchRow: currentMatchRow, toggledRows: toggledRows }));
329
+ }
330
+ };
331
+ const selectionCount = nav.selection != null ? nav.selection.end.line - nav.selection.start.line + 1 : 0;
332
+ const toggledCount = nav.toggledIndices.size;
333
+ const selectionItems = toggledCount > 0
334
+ ? [{ label: "Selected:", value: String(toggledCount) }]
335
+ : selectionCount > 0
336
+ ? [{ label: "Selected:", value: String(selectionCount) }]
337
+ : [];
338
+ const statusItems = [
339
+ { label: "Theme:", value: themeName },
340
+ { label: "Format:", value: content.format },
341
+ ...(isBuiltinContent(content) && content.format === "table"
342
+ ? [
343
+ { label: "Rows:", value: String(content.rows.length) },
344
+ { label: "Cols:", value: String(content.columns.length) },
345
+ ]
346
+ : [{ label: "Lines:", value: String(lineCount) }]),
347
+ { label: "Mode:", value: nav.mode },
348
+ { label: "Scroll:", value: String(nav.scrollOffset) },
349
+ ...selectionItems,
350
+ ...(streaming ? [{ label: "Status:", value: "streaming" }] : []),
351
+ ...(nav.searchActive ? [{ label: "Search:", value: nav.searchQuery }] : []),
352
+ ];
353
+ return (_jsx(AppLayout, { titleBar: content.title
354
+ ? { title: content.title, subtitle: content.format }
355
+ : { title: content.format }, statusBar: { items: statusItems }, scrollRef: scrollRef, scrollProps: { focused: !nav.searchActive && !hasOverlay }, searchBar: {
356
+ active: nav.searchActive,
357
+ query: nav.searchQuery,
358
+ onQueryChange: nav.setSearchQuery,
359
+ onSubmit: nav.submitSearch,
360
+ onCancel: () => {
361
+ nav.setSearchQuery("");
362
+ },
363
+ matchCount: nav.matchingLines.length,
364
+ currentMatch: nav.currentMatchIndex,
365
+ }, children: renderContent() }));
366
+ }
367
+ //# sourceMappingURL=View.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../src/View.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ContentProvider } from "./types.js";
2
+ export declare function createFileProvider(filePath: string): ContentProvider;
3
+ export declare function createStdinProvider(): ContentProvider;
4
+ export declare function createTableFileProvider(filePath: string): ContentProvider;
5
+ export declare function createTableStdinProvider(): ContentProvider;
6
+ //# sourceMappingURL=default-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-provider.d.ts","sourceRoot":"","sources":["../src/default-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,eAAe,EAAE,MAAM,YAAY,CAAA;AAiDzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CA4BpE;AAED,wBAAgB,mBAAmB,IAAI,eAAe,CAOrD;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAUzE;AAED,wBAAgB,wBAAwB,IAAI,eAAe,CAQ1D"}
@@ -0,0 +1,102 @@
1
+ import { parseAuto } from "@tooee/renderers";
2
+ function detectFormat(filePath) {
3
+ const ext = filePath.split(".").pop()?.toLowerCase();
4
+ if (!ext)
5
+ return { format: "text" };
6
+ const imageExts = new Set(["png", "jpg", "jpeg", "gif", "webp", "bmp", "tiff", "tif"]);
7
+ if (imageExts.has(ext))
8
+ return { format: "image" };
9
+ const tableExts = new Set(["csv", "tsv"]);
10
+ if (tableExts.has(ext))
11
+ return { format: "table" };
12
+ const markdownExts = new Set(["md", "mdx", "markdown"]);
13
+ if (markdownExts.has(ext))
14
+ return { format: "markdown" };
15
+ const codeExts = {
16
+ ts: "typescript",
17
+ tsx: "typescript",
18
+ js: "javascript",
19
+ jsx: "javascript",
20
+ py: "python",
21
+ rs: "rust",
22
+ go: "go",
23
+ rb: "ruby",
24
+ sh: "bash",
25
+ bash: "bash",
26
+ zsh: "zsh",
27
+ json: "json",
28
+ yaml: "yaml",
29
+ yml: "yaml",
30
+ toml: "toml",
31
+ css: "css",
32
+ html: "html",
33
+ sql: "sql",
34
+ c: "c",
35
+ cpp: "cpp",
36
+ h: "c",
37
+ hpp: "cpp",
38
+ java: "java",
39
+ kt: "kotlin",
40
+ swift: "swift",
41
+ };
42
+ const language = codeExts[ext];
43
+ if (language)
44
+ return { format: "code", language };
45
+ return { format: "text" };
46
+ }
47
+ export function createFileProvider(filePath) {
48
+ return {
49
+ async load() {
50
+ const { format, language } = detectFormat(filePath);
51
+ const title = filePath.split("/").pop();
52
+ if (format === "image") {
53
+ return { format: "image", src: filePath, title };
54
+ }
55
+ const file = Bun.file(filePath);
56
+ if (format === "table") {
57
+ const text = await file.text();
58
+ const parsed = parseAuto(text);
59
+ return { format: "table", columns: parsed.columns, rows: parsed.rows, title };
60
+ }
61
+ const text = await file.text();
62
+ switch (format) {
63
+ case "markdown":
64
+ return { format: "markdown", markdown: text, title };
65
+ case "code":
66
+ return { format: "code", code: text, language, title };
67
+ case "text":
68
+ default:
69
+ return { format: "text", text, title };
70
+ }
71
+ },
72
+ };
73
+ }
74
+ export function createStdinProvider() {
75
+ return {
76
+ async load() {
77
+ const text = await new Response(Bun.stdin.stream()).text();
78
+ return { format: "markdown", markdown: text, title: "stdin" };
79
+ },
80
+ };
81
+ }
82
+ export function createTableFileProvider(filePath) {
83
+ return {
84
+ async load() {
85
+ const title = filePath.split("/").pop();
86
+ const file = Bun.file(filePath);
87
+ const text = await file.text();
88
+ const parsed = parseAuto(text);
89
+ return { format: "table", columns: parsed.columns, rows: parsed.rows, title };
90
+ },
91
+ };
92
+ }
93
+ export function createTableStdinProvider() {
94
+ return {
95
+ async load() {
96
+ const text = await new Response(Bun.stdin.stream()).text();
97
+ const parsed = parseAuto(text);
98
+ return { format: "table", columns: parsed.columns, rows: parsed.rows, title: "stdin" };
99
+ },
100
+ };
101
+ }
102
+ //# sourceMappingURL=default-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-provider.js","sourceRoot":"","sources":["../src/default-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ContentProvider } from "./types.js";
2
+ export interface DirectoryEntry {
3
+ name: string;
4
+ path: string;
5
+ }
6
+ export declare function listDirectoryFiles(dirPath: string): DirectoryEntry[];
7
+ export declare function createDirectoryFileProvider(filePath: string): ContentProvider;
8
+ //# sourceMappingURL=directory-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-provider.d.ts","sourceRoot":"","sources":["../src/directory-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAmCjD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAoBpE;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAE7E"}