@tooee/view 0.1.11 → 0.1.12

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 (84) hide show
  1. package/dist/DirectoryView.js.map +1 -1
  2. package/dist/View.d.ts.map +1 -1
  3. package/dist/View.js +41 -353
  4. package/dist/View.js.map +1 -1
  5. package/dist/components/SubviewLayout.d.ts +15 -0
  6. package/dist/components/SubviewLayout.d.ts.map +1 -0
  7. package/dist/components/SubviewLayout.js +26 -0
  8. package/dist/components/SubviewLayout.js.map +1 -0
  9. package/dist/components/subviews/CodeSubview.d.ts +8 -0
  10. package/dist/components/subviews/CodeSubview.d.ts.map +1 -0
  11. package/dist/components/subviews/CodeSubview.js +71 -0
  12. package/dist/components/subviews/CodeSubview.js.map +1 -0
  13. package/dist/components/subviews/CustomSubview.d.ts +9 -0
  14. package/dist/components/subviews/CustomSubview.d.ts.map +1 -0
  15. package/dist/components/subviews/CustomSubview.js +87 -0
  16. package/dist/components/subviews/CustomSubview.js.map +1 -0
  17. package/dist/components/subviews/ImageSubview.d.ts +8 -0
  18. package/dist/components/subviews/ImageSubview.d.ts.map +1 -0
  19. package/dist/components/subviews/ImageSubview.js +32 -0
  20. package/dist/components/subviews/ImageSubview.js.map +1 -0
  21. package/dist/components/subviews/MarkdownSubview.d.ts +8 -0
  22. package/dist/components/subviews/MarkdownSubview.d.ts.map +1 -0
  23. package/dist/components/subviews/MarkdownSubview.js +80 -0
  24. package/dist/components/subviews/MarkdownSubview.js.map +1 -0
  25. package/dist/components/subviews/TableSubview.d.ts +8 -0
  26. package/dist/components/subviews/TableSubview.d.ts.map +1 -0
  27. package/dist/components/subviews/TableSubview.js +113 -0
  28. package/dist/components/subviews/TableSubview.js.map +1 -0
  29. package/dist/components/subviews/index.d.ts +8 -0
  30. package/dist/components/subviews/index.d.ts.map +1 -0
  31. package/dist/components/subviews/index.js +7 -0
  32. package/dist/components/subviews/index.js.map +1 -0
  33. package/dist/components/subviews/types.d.ts +15 -0
  34. package/dist/components/subviews/types.d.ts.map +1 -0
  35. package/dist/components/subviews/types.js +2 -0
  36. package/dist/components/subviews/types.js.map +1 -0
  37. package/dist/hooks/index.d.ts +5 -0
  38. package/dist/hooks/index.d.ts.map +1 -0
  39. package/dist/hooks/index.js +5 -0
  40. package/dist/hooks/index.js.map +1 -0
  41. package/dist/hooks/useContentLoader.d.ts +10 -0
  42. package/dist/hooks/useContentLoader.d.ts.map +1 -0
  43. package/dist/hooks/useContentLoader.js +125 -0
  44. package/dist/hooks/useContentLoader.js.map +1 -0
  45. package/dist/hooks/useMarkState.d.ts +13 -0
  46. package/dist/hooks/useMarkState.d.ts.map +1 -0
  47. package/dist/hooks/useMarkState.js +71 -0
  48. package/dist/hooks/useMarkState.js.map +1 -0
  49. package/dist/hooks/useViewCommandContext.d.ts +18 -0
  50. package/dist/hooks/useViewCommandContext.d.ts.map +1 -0
  51. package/dist/hooks/useViewCommandContext.js +23 -0
  52. package/dist/hooks/useViewCommandContext.js.map +1 -0
  53. package/dist/hooks/useViewCommands.d.ts +13 -0
  54. package/dist/hooks/useViewCommands.d.ts.map +1 -0
  55. package/dist/hooks/useViewCommands.js +20 -0
  56. package/dist/hooks/useViewCommands.js.map +1 -0
  57. package/dist/index.d.ts +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +1 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/launch.d.ts.map +1 -1
  62. package/dist/launch.js.map +1 -1
  63. package/dist/types.d.ts +8 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js.map +1 -1
  66. package/package.json +24 -23
  67. package/src/DirectoryView.tsx +1 -1
  68. package/src/View.tsx +49 -462
  69. package/src/components/SubviewLayout.tsx +55 -0
  70. package/src/components/subviews/CodeSubview.tsx +112 -0
  71. package/src/components/subviews/CustomSubview.tsx +139 -0
  72. package/src/components/subviews/ImageSubview.tsx +64 -0
  73. package/src/components/subviews/MarkdownSubview.tsx +122 -0
  74. package/src/components/subviews/TableSubview.tsx +153 -0
  75. package/src/components/subviews/index.ts +7 -0
  76. package/src/components/subviews/types.ts +15 -0
  77. package/src/hooks/index.ts +4 -0
  78. package/src/hooks/useContentLoader.ts +147 -0
  79. package/src/hooks/useMarkState.ts +99 -0
  80. package/src/hooks/useViewCommandContext.ts +49 -0
  81. package/src/hooks/useViewCommands.ts +36 -0
  82. package/src/index.ts +6 -1
  83. package/src/launch.tsx +1 -6
  84. package/src/types.ts +9 -0
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef } from "react";
3
+ import { CodeView } from "@tooee/renderers";
4
+ import { useTheme } from "@tooee/themes";
5
+ import { useViewCommandContext } from "../../hooks/useViewCommandContext.js";
6
+ import { findMatchingLines, useCopy, useNavigation, useSearch } from "@tooee/shell";
7
+ import { getTextContent } from "../../types.js";
8
+ import { useMarkState } from "../../hooks/useMarkState.js";
9
+ import { useViewCommands } from "../../hooks/useViewCommands.js";
10
+ import { SubviewLayout } from "../SubviewLayout.js";
11
+ export function CustomSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, renderers, }) {
12
+ const { theme } = useTheme();
13
+ const docRef = useRef(null);
14
+ const textContent = useMemo(() => getTextContent(content), [content]);
15
+ const lines = useMemo(() => textContent.split("\n"), [textContent]);
16
+ const lineCount = lines.length;
17
+ const nav = useNavigation({
18
+ rowCount: lineCount,
19
+ multiSelect: true,
20
+ });
21
+ const search = useSearch({
22
+ match: (query) => findMatchingLines(textContent, query),
23
+ onJump: nav.setCursor,
24
+ });
25
+ useCopy({
26
+ getRowText: (index) => lines[index] ?? "",
27
+ cursor: nav.cursor,
28
+ selection: nav.selection,
29
+ toggledIndices: nav.toggledIndices,
30
+ });
31
+ const layoutNav = { ...nav, ...search };
32
+ useEffect(() => {
33
+ if (nav.cursor) {
34
+ docRef.current?.scrollToRow(nav.cursor.line, "nearest");
35
+ }
36
+ }, [nav.cursor]);
37
+ const { themeName } = useViewCommands({ content, textContent, actions });
38
+ const markState = useMarkState({
39
+ nav,
40
+ search,
41
+ theme,
42
+ providerMarks,
43
+ userMarks,
44
+ });
45
+ useViewCommandContext({
46
+ content,
47
+ nav,
48
+ reload,
49
+ providerMarks,
50
+ userMarks,
51
+ setMarkSet,
52
+ clearMarkNamespace,
53
+ clearAllUserMarks,
54
+ });
55
+ const extraStatusItems = useMemo(() => {
56
+ const selectionCount = nav.selection != null ? nav.selection.end.line - nav.selection.start.line + 1 : 0;
57
+ const toggledCount = nav.toggledIndices.size;
58
+ const selectionItems = toggledCount > 0
59
+ ? [{ label: "Selected:", value: String(toggledCount) }]
60
+ : selectionCount > 0
61
+ ? [{ label: "Selected:", value: String(selectionCount) }]
62
+ : [];
63
+ return [
64
+ { label: "Format:", value: content.format },
65
+ { label: "Lines:", value: String(lineCount) },
66
+ ...selectionItems,
67
+ ];
68
+ }, [content.format, lineCount, nav.selection, nav.toggledIndices]);
69
+ const customRenderer = renderers?.[content.format];
70
+ if (customRenderer) {
71
+ const cursorLine = nav.cursor?.line ?? undefined;
72
+ const selectionStart = nav.selection?.start.line ?? undefined;
73
+ const selectionEnd = nav.selection?.end.line ?? undefined;
74
+ return (_jsx(SubviewLayout, { content: content, nav: layoutNav, streaming: streaming, themeName: themeName, extraStatusItems: extraStatusItems, children: customRenderer({
75
+ content,
76
+ lineCount,
77
+ cursor: cursorLine,
78
+ selectionStart,
79
+ selectionEnd,
80
+ marks: markState,
81
+ }) }));
82
+ }
83
+ // No renderer for this custom format -- fall back to text
84
+ const text = getTextContent(content);
85
+ return (_jsx(SubviewLayout, { content: content, nav: layoutNav, streaming: streaming, themeName: themeName, extraStatusItems: extraStatusItems, children: _jsx(CodeView, { content: text, showLineNumbers: false, marks: markState, docRef: docRef }) }));
86
+ }
87
+ //# sourceMappingURL=CustomSubview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomSubview.js","sourceRoot":"","sources":["../../../src/components/subviews/CustomSubview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ImageContent } from "../../types.js";
2
+ import type { SubviewProps } from "./types.js";
3
+ interface ImageSubviewProps extends SubviewProps {
4
+ content: ImageContent;
5
+ }
6
+ export declare function ImageSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, }: ImageSubviewProps): import("react").ReactNode;
7
+ export {};
8
+ //# sourceMappingURL=ImageSubview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageSubview.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/ImageSubview.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,UAAU,iBAAkB,SAAQ,YAAY;IAC9C,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE,iBAAiB,6BAwCnB"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { ImageView } from "@tooee/renderers";
4
+ import { useViewCommandContext } from "../../hooks/useViewCommandContext.js";
5
+ import { useNavigation, useSearch } from "@tooee/shell";
6
+ import { useViewCommands } from "../../hooks/useViewCommands.js";
7
+ import { SubviewLayout } from "../SubviewLayout.js";
8
+ export function ImageSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, }) {
9
+ const nav = useNavigation({
10
+ rowCount: 0,
11
+ multiSelect: false,
12
+ });
13
+ const search = useSearch({
14
+ match: () => [],
15
+ onJump: () => { },
16
+ });
17
+ const layoutNav = { ...nav, ...search };
18
+ const { themeName } = useViewCommands({ content, textContent: content.src, actions });
19
+ useViewCommandContext({
20
+ content,
21
+ nav,
22
+ reload,
23
+ providerMarks,
24
+ userMarks,
25
+ setMarkSet,
26
+ clearMarkNamespace,
27
+ clearAllUserMarks,
28
+ });
29
+ const extraStatusItems = useMemo(() => [{ label: "Format:", value: content.format }], [content.format]);
30
+ return (_jsx(SubviewLayout, { content: content, nav: layoutNav, streaming: streaming, themeName: themeName, extraStatusItems: extraStatusItems, children: _jsx(ImageView, { src: content.src }) }));
31
+ }
32
+ //# sourceMappingURL=ImageSubview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageSubview.js","sourceRoot":"","sources":["../../../src/components/subviews/ImageSubview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAOnD,MAAM,UAAU,YAAY,CAAC,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,OAAO,GACW;IAClB,MAAM,GAAG,GAAG,aAAa,CAAC;QACxB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,KAAK;KACnB,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,SAAS,CAAC;QACvB,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;QACf,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;KACjB,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;IAErF,qBAAqB,CAAC;QACpB,OAAO;QACP,GAAG;QACH,MAAM;QACN,aAAa;QACb,SAAS;QACT,UAAU;QACV,kBAAkB;QAClB,iBAAiB;KAClB,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EACnD,CAAC,OAAO,CAAC,MAAM,CAAC,CACjB,CAAA;IAED,OAAO,CACL,KAAC,aAAa,IACZ,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,YAElC,KAAC,SAAS,IAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAI,GACjB,CACjB,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { MarkdownContent } from "../../types.js";
2
+ import type { SubviewProps } from "./types.js";
3
+ interface MarkdownSubviewProps extends SubviewProps {
4
+ content: MarkdownContent;
5
+ }
6
+ export declare function MarkdownSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, }: MarkdownSubviewProps): import("react").ReactNode;
7
+ export {};
8
+ //# sourceMappingURL=MarkdownSubview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownSubview.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/MarkdownSubview.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,UAAU,oBAAqB,SAAQ,YAAY;IACjD,OAAO,EAAE,eAAe,CAAA;CACzB;AAED,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,aAAa,EACb,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE,oBAAoB,6BA+FtB"}
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef } from "react";
3
+ import { marked } from "marked";
4
+ import { MarkdownView } from "@tooee/renderers";
5
+ import { useTheme } from "@tooee/themes";
6
+ import { useViewCommandContext } from "../../hooks/useViewCommandContext.js";
7
+ import { useCopy, useNavigation, useSearch } from "@tooee/shell";
8
+ import { useMarkState } from "../../hooks/useMarkState.js";
9
+ import { useViewCommands } from "../../hooks/useViewCommands.js";
10
+ import { SubviewLayout } from "../SubviewLayout.js";
11
+ export function MarkdownSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, }) {
12
+ const { theme } = useTheme();
13
+ const docRef = useRef(null);
14
+ const textContent = content.markdown;
15
+ const lineCount = useMemo(() => textContent.split("\n").length, [textContent]);
16
+ const blocks = useMemo(() => marked.lexer(content.markdown).filter((token) => token.type !== "space"), [content.markdown]);
17
+ const nav = useNavigation({
18
+ rowCount: blocks.length,
19
+ multiSelect: true,
20
+ });
21
+ const search = useSearch({
22
+ match: (query) => {
23
+ const lowerQuery = query.toLowerCase();
24
+ return blocks.flatMap((block, index) => {
25
+ const raw = "raw" in block && typeof block.raw === "string" ? block.raw : "";
26
+ return raw.toLowerCase().includes(lowerQuery) ? [index] : [];
27
+ });
28
+ },
29
+ onJump: nav.setCursor,
30
+ });
31
+ useCopy({
32
+ getRowText: (index) => {
33
+ const block = blocks[index];
34
+ return block && "raw" in block && typeof block.raw === "string" ? block.raw : "";
35
+ },
36
+ cursor: nav.cursor,
37
+ selection: nav.selection,
38
+ toggledIndices: nav.toggledIndices,
39
+ });
40
+ const layoutNav = { ...nav, ...search };
41
+ useEffect(() => {
42
+ if (nav.cursor) {
43
+ docRef.current?.scrollToRow(nav.cursor.line, "nearest");
44
+ }
45
+ }, [nav.cursor]);
46
+ const { themeName, showLineNumbers } = useViewCommands({ content, textContent, actions });
47
+ const markState = useMarkState({
48
+ nav,
49
+ search,
50
+ theme,
51
+ providerMarks,
52
+ userMarks,
53
+ });
54
+ useViewCommandContext({
55
+ content,
56
+ nav,
57
+ reload,
58
+ providerMarks,
59
+ userMarks,
60
+ setMarkSet,
61
+ clearMarkNamespace,
62
+ clearAllUserMarks,
63
+ });
64
+ const extraStatusItems = useMemo(() => {
65
+ const selectionCount = nav.selection != null ? nav.selection.end.line - nav.selection.start.line + 1 : 0;
66
+ const toggledCount = nav.toggledIndices.size;
67
+ const selectionItems = toggledCount > 0
68
+ ? [{ label: "Selected:", value: String(toggledCount) }]
69
+ : selectionCount > 0
70
+ ? [{ label: "Selected:", value: String(selectionCount) }]
71
+ : [];
72
+ return [
73
+ { label: "Format:", value: content.format },
74
+ { label: "Lines:", value: String(lineCount) },
75
+ ...selectionItems,
76
+ ];
77
+ }, [content.format, lineCount, nav.selection, nav.toggledIndices]);
78
+ return (_jsx(SubviewLayout, { content: content, nav: layoutNav, streaming: streaming, themeName: themeName, extraStatusItems: extraStatusItems, children: _jsx(MarkdownView, { content: content.markdown, showLineNumbers: showLineNumbers, marks: markState, docRef: docRef }) }));
79
+ }
80
+ //# sourceMappingURL=MarkdownSubview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownSubview.js","sourceRoot":"","sources":["../../../src/components/subviews/MarkdownSubview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type TableContent } from "../../types.js";
2
+ import type { SubviewProps } from "./types.js";
3
+ interface TableSubviewProps extends SubviewProps {
4
+ content: TableContent;
5
+ }
6
+ export declare function TableSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, }: TableSubviewProps): import("react").ReactNode;
7
+ export {};
8
+ //# sourceMappingURL=TableSubview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSubview.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/TableSubview.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAIlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,UAAU,iBAAkB,SAAQ,YAAY;IAC9C,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE,iBAAiB,6BAoHnB"}
@@ -0,0 +1,113 @@
1
+ import { jsx as _jsx } from "@opentui/react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef } from "react";
3
+ import { Table } from "@tooee/renderers";
4
+ import { useTheme } from "@tooee/themes";
5
+ import { useViewCommandContext } from "../../hooks/useViewCommandContext.js";
6
+ import { useCopy, useNavigation, useSearch } from "@tooee/shell";
7
+ import { getTextContent } from "../../types.js";
8
+ import { useMarkState } from "../../hooks/useMarkState.js";
9
+ import { useViewCommands } from "../../hooks/useViewCommands.js";
10
+ import { SubviewLayout } from "../SubviewLayout.js";
11
+ export function TableSubview({ content, providerMarks, userMarks, setMarkSet, clearMarkNamespace, clearAllUserMarks, reload, streaming, actions, }) {
12
+ const { theme } = useTheme();
13
+ const docRef = useRef(null);
14
+ const textContent = useMemo(() => getTextContent(content), [content]);
15
+ const nav = useNavigation({
16
+ rowCount: content.rows.length,
17
+ multiSelect: true,
18
+ });
19
+ const search = useSearch({
20
+ match: (query) => {
21
+ const lowerQuery = query.toLowerCase();
22
+ return content.rows.flatMap((row, index) => content.columns.some((column) => stringifyRowCell(row[column.key]).toLowerCase().includes(lowerQuery))
23
+ ? [index]
24
+ : []);
25
+ },
26
+ onJump: nav.setCursor,
27
+ });
28
+ useCopy({
29
+ getRowText: (index) => content.columns
30
+ .map((column) => stringifyRowCell(content.rows[index]?.[column.key]))
31
+ .join("\t"),
32
+ cursor: nav.cursor,
33
+ selection: nav.selection,
34
+ toggledIndices: nav.toggledIndices,
35
+ });
36
+ const layoutNav = { ...nav, ...search };
37
+ useEffect(() => {
38
+ if (nav.cursor) {
39
+ docRef.current?.scrollToRow(nav.cursor.line, "nearest");
40
+ }
41
+ }, [nav.cursor]);
42
+ const { themeName, showLineNumbers } = useViewCommands({ content, textContent, actions });
43
+ const markState = useMarkState({
44
+ nav,
45
+ search,
46
+ theme,
47
+ providerMarks,
48
+ userMarks,
49
+ });
50
+ function getActiveRow() {
51
+ if (!nav.cursor)
52
+ return undefined;
53
+ return content.rows[nav.cursor.line];
54
+ }
55
+ function getSelectedRows() {
56
+ if (nav.toggledIndices.size) {
57
+ return Array.from(nav.toggledIndices)
58
+ .map((i) => content.rows[i])
59
+ .filter(Boolean);
60
+ }
61
+ if (nav.selection) {
62
+ const start = nav.selection.start.line;
63
+ const end = nav.selection.end.line;
64
+ return content.rows.slice(start, end + 1);
65
+ }
66
+ return [];
67
+ }
68
+ useViewCommandContext({
69
+ content,
70
+ nav,
71
+ reload,
72
+ providerMarks,
73
+ userMarks,
74
+ setMarkSet,
75
+ clearMarkNamespace,
76
+ clearAllUserMarks,
77
+ extras: {
78
+ activeRow: getActiveRow(),
79
+ selectedRows: getSelectedRows(),
80
+ },
81
+ });
82
+ const extraStatusItems = useMemo(() => {
83
+ const selectionCount = nav.selection != null ? nav.selection.end.line - nav.selection.start.line + 1 : 0;
84
+ const toggledCount = nav.toggledIndices.size;
85
+ const selectionItems = toggledCount > 0
86
+ ? [{ label: "Selected:", value: String(toggledCount) }]
87
+ : selectionCount > 0
88
+ ? [{ label: "Selected:", value: String(selectionCount) }]
89
+ : [];
90
+ return [
91
+ { label: "Format:", value: content.format },
92
+ { label: "Rows:", value: String(content.rows.length) },
93
+ { label: "Cols:", value: String(content.columns.length) },
94
+ ...selectionItems,
95
+ ];
96
+ }, [content.format, content.rows.length, content.columns.length, nav.selection, nav.toggledIndices]);
97
+ return (_jsx(SubviewLayout, { content: content, nav: layoutNav, streaming: streaming, themeName: themeName, extraStatusItems: extraStatusItems, children: _jsx(Table, { columns: content.columns, rows: content.rows, showLineNumbers: showLineNumbers, marks: markState, docRef: docRef }) }));
98
+ }
99
+ function stringifyRowCell(value) {
100
+ if (value == null)
101
+ return "";
102
+ if (typeof value === "string")
103
+ return value;
104
+ if (typeof value === "number" || typeof value === "boolean")
105
+ return String(value);
106
+ try {
107
+ return JSON.stringify(value);
108
+ }
109
+ catch {
110
+ return String(value);
111
+ }
112
+ }
113
+ //# sourceMappingURL=TableSubview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSubview.js","sourceRoot":"","sources":["../../../src/components/subviews/TableSubview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { MarkdownSubview } from "./MarkdownSubview.js";
2
+ export { CodeSubview } from "./CodeSubview.js";
3
+ export { TableSubview } from "./TableSubview.js";
4
+ export { ImageSubview } from "./ImageSubview.js";
5
+ export { CustomSubview } from "./CustomSubview.js";
6
+ export { SubviewLayout } from "../SubviewLayout.js";
7
+ export type { SubviewProps } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ export { MarkdownSubview } from "./MarkdownSubview.js";
2
+ export { CodeSubview } from "./CodeSubview.js";
3
+ export { TableSubview } from "./TableSubview.js";
4
+ export { ImageSubview } from "./ImageSubview.js";
5
+ export { CustomSubview } from "./CustomSubview.js";
6
+ export { SubviewLayout } from "../SubviewLayout.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/subviews/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { MarkSet } from "@tooee/marks";
2
+ import type { ActionDefinition } from "@tooee/commands";
3
+ import type { AnyContent } from "../../types.js";
4
+ export interface SubviewProps {
5
+ content: AnyContent;
6
+ providerMarks: MarkSet[];
7
+ userMarks: MarkSet[];
8
+ setMarkSet: (set: MarkSet) => void;
9
+ clearMarkNamespace: (namespace: string) => void;
10
+ clearAllUserMarks: () => void;
11
+ reload: () => void;
12
+ streaming: boolean;
13
+ actions?: ActionDefinition[];
14
+ }
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,UAAU,CAAA;IACnB,aAAa,EAAE,OAAO,EAAE,CAAA;IACxB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/subviews/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export { useContentLoader } from "./useContentLoader.js";
2
+ export { useMarkState } from "./useMarkState.js";
3
+ export { useViewCommands } from "./useViewCommands.js";
4
+ export { useViewCommandContext } from "./useViewCommandContext.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { useContentLoader } from "./useContentLoader.js";
2
+ export { useMarkState } from "./useMarkState.js";
3
+ export { useViewCommands } from "./useViewCommands.js";
4
+ export { useViewCommandContext } from "./useViewCommandContext.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { MarkSet } from "@tooee/marks";
2
+ import type { AnyContent, ContentProvider } from "../types.js";
3
+ export declare function useContentLoader(contentProvider: ContentProvider, reloadTrigger: number): {
4
+ content: AnyContent | null;
5
+ streaming: boolean;
6
+ error: string | null;
7
+ providerMarks: MarkSet[];
8
+ setProviderMarks: import("react").Dispatch<import("react").SetStateAction<MarkSet[]>>;
9
+ };
10
+ //# sourceMappingURL=useContentLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContentLoader.d.ts","sourceRoot":"","sources":["../../src/hooks/useContentLoader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,EACV,UAAU,EAGV,eAAe,EAGhB,MAAM,aAAa,CAAA;AAkEpB,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM;;;;;;EAuEvF"}
@@ -0,0 +1,125 @@
1
+ import { useState, useEffect } from "react";
2
+ function isAsyncIterable(value) {
3
+ return value != null && typeof value === "object" && Symbol.asyncIterator in value;
4
+ }
5
+ function createEmptyContent(format, title) {
6
+ switch (format) {
7
+ case "markdown":
8
+ return { format, markdown: "", title };
9
+ case "code":
10
+ return { format, code: "", title };
11
+ case "text":
12
+ return { format, text: "", title };
13
+ case "image":
14
+ return { format, src: "", title };
15
+ case "table":
16
+ return { format, columns: [], rows: [], title };
17
+ default:
18
+ return { format, data: undefined, title };
19
+ }
20
+ }
21
+ function ensureContentFormat(current, format, title) {
22
+ if (!current || current.format !== format) {
23
+ return createEmptyContent(format, title);
24
+ }
25
+ return current;
26
+ }
27
+ function applyContentChunk(current, chunk, title) {
28
+ switch (chunk.type) {
29
+ case "replace":
30
+ return chunk.content;
31
+ case "append":
32
+ if (chunk.format === "markdown") {
33
+ const target = ensureContentFormat(current, "markdown", title);
34
+ return { ...target, markdown: target.markdown + chunk.data };
35
+ }
36
+ if (chunk.format === "code") {
37
+ const target = ensureContentFormat(current, "code", title);
38
+ return {
39
+ ...target,
40
+ code: target.code + chunk.data,
41
+ language: chunk.language ?? target.language,
42
+ };
43
+ }
44
+ {
45
+ const target = ensureContentFormat(current, "text", title);
46
+ return { ...target, text: target.text + chunk.data };
47
+ }
48
+ case "patch":
49
+ return chunk.apply(current);
50
+ default:
51
+ return current ?? createEmptyContent("markdown", title);
52
+ }
53
+ }
54
+ export function useContentLoader(contentProvider, reloadTrigger) {
55
+ const [content, setContent] = useState(null);
56
+ const [streaming, setStreaming] = useState(false);
57
+ const [error, setError] = useState(null);
58
+ const [providerMarks, setProviderMarks] = useState([]);
59
+ useEffect(() => {
60
+ setError(null);
61
+ setStreaming(false);
62
+ // Reset provider marks on reload; initialize with static marks if provided
63
+ setProviderMarks(contentProvider.marks ?? []);
64
+ const loaded = contentProvider.load();
65
+ if (isAsyncIterable(loaded)) {
66
+ const fallbackFormat = contentProvider.format ?? "markdown";
67
+ const title = contentProvider.title;
68
+ let cancelled = false;
69
+ let current = createEmptyContent(fallbackFormat, title);
70
+ setContent(current);
71
+ setStreaming(true);
72
+ (async () => {
73
+ try {
74
+ for await (const chunk of loaded) {
75
+ if (cancelled)
76
+ break;
77
+ if (chunk.type === "marks") {
78
+ if (cancelled)
79
+ break;
80
+ // Streamed mark set: merge by replacing any existing set with same namespace
81
+ setProviderMarks((prev) => {
82
+ const filtered = prev.filter((s) => s.namespace !== chunk.set.namespace);
83
+ return [...filtered, chunk.set];
84
+ });
85
+ continue;
86
+ }
87
+ current = applyContentChunk(current, chunk, title);
88
+ setContent(current);
89
+ }
90
+ }
91
+ catch (err) {
92
+ if (!cancelled && err instanceof Error) {
93
+ setError(err.message);
94
+ }
95
+ }
96
+ finally {
97
+ if (!cancelled) {
98
+ setStreaming(false);
99
+ }
100
+ }
101
+ })();
102
+ return () => {
103
+ cancelled = true;
104
+ };
105
+ }
106
+ if (loaded instanceof Promise) {
107
+ let active = true;
108
+ loaded
109
+ .then((value) => {
110
+ if (active)
111
+ setContent(value);
112
+ })
113
+ .catch((err) => {
114
+ if (active)
115
+ setError(err.message);
116
+ });
117
+ return () => {
118
+ active = false;
119
+ };
120
+ }
121
+ setContent(loaded);
122
+ }, [contentProvider, reloadTrigger]);
123
+ return { content, streaming, error, providerMarks, setProviderMarks };
124
+ }
125
+ //# sourceMappingURL=useContentLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContentLoader.js","sourceRoot":"","sources":["../../src/hooks/useContentLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { MarkSet, MarkState } from "@tooee/marks";
2
+ import type { NavigationState, SearchState } from "@tooee/shell";
3
+ import type { ResolvedTheme } from "@tooee/themes";
4
+ interface UseMarkStateParams {
5
+ nav: Pick<NavigationState, "cursor" | "selection" | "toggledIndices">;
6
+ search: Pick<SearchState, "matchingLines" | "currentMatchIndex">;
7
+ theme: ResolvedTheme;
8
+ providerMarks: MarkSet[];
9
+ userMarks: MarkSet[];
10
+ }
11
+ export declare function useMarkState({ nav, search, theme, providerMarks, userMarks, }: UseMarkStateParams): MarkState | undefined;
12
+ export {};
13
+ //# sourceMappingURL=useMarkState.d.ts.map