@tooee/view 0.2.3 → 0.2.4
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/dist/View.d.ts +4 -2
- package/dist/View.d.ts.map +1 -1
- package/dist/View.js +2 -2
- package/dist/View.js.map +1 -1
- package/dist/components/subviews/MarkdownSubview.d.ts +3 -2
- package/dist/components/subviews/MarkdownSubview.d.ts.map +1 -1
- package/dist/components/subviews/MarkdownSubview.js +2 -2
- package/dist/components/subviews/MarkdownSubview.js.map +1 -1
- package/package.json +10 -10
- package/src/View.tsx +16 -3
- package/src/components/subviews/MarkdownSubview.tsx +4 -0
package/dist/View.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActionDefinition } from "@tooee/commands";
|
|
2
|
-
import type { CodeBlockRenderer } from "@tooee/renderers";
|
|
2
|
+
import type { CodeBlockRenderer, MarkdownLinkHandler } from "@tooee/renderers";
|
|
3
3
|
import { type ContentProvider, type ContentRenderer } from "./types.js";
|
|
4
4
|
interface ViewProps {
|
|
5
5
|
contentProvider: ContentProvider;
|
|
@@ -10,7 +10,9 @@ interface ViewProps {
|
|
|
10
10
|
* fence type (first word of the fence info string, case-insensitive).
|
|
11
11
|
*/
|
|
12
12
|
codeBlockRenderers?: Record<string, CodeBlockRenderer>;
|
|
13
|
+
/** Handles primary-button activation of inline Markdown links. */
|
|
14
|
+
onMarkdownLinkActivate?: MarkdownLinkHandler;
|
|
13
15
|
}
|
|
14
|
-
export declare function View({ contentProvider, actions, renderers, codeBlockRenderers }: ViewProps): import("react").ReactNode;
|
|
16
|
+
export declare function View({ contentProvider, actions, renderers, codeBlockRenderers, onMarkdownLinkActivate, }: ViewProps): import("react").ReactNode;
|
|
15
17
|
export {};
|
|
16
18
|
//# sourceMappingURL=View.d.ts.map
|
package/dist/View.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../src/View.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../src/View.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAmB,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AASxF,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;IAC3C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACtD,kEAAkE;IAClE,sBAAsB,CAAC,EAAE,mBAAmB,CAAA;CAC7C;AAED,wBAAgB,IAAI,CAAC,EACnB,eAAe,EACf,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,sBAAsB,GACvB,EAAE,SAAS,6BAyEX"}
|
package/dist/View.js
CHANGED
|
@@ -4,7 +4,7 @@ import { useTheme } from "@tooee/themes";
|
|
|
4
4
|
import { isCustomContent } from "./types.js";
|
|
5
5
|
import { useContentLoader } from "./hooks/useContentLoader.js";
|
|
6
6
|
import { MarkdownSubview, CodeSubview, TableSubview, CustomSubview, } from "./components/subviews/index.js";
|
|
7
|
-
export function View({ contentProvider, actions, renderers, codeBlockRenderers }) {
|
|
7
|
+
export function View({ contentProvider, actions, renderers, codeBlockRenderers, onMarkdownLinkActivate, }) {
|
|
8
8
|
const { theme } = useTheme();
|
|
9
9
|
const { content, streaming, error, providerMarks, reload } = useContentLoader(contentProvider);
|
|
10
10
|
const [userMarks, setUserMarks] = useState([]);
|
|
@@ -45,7 +45,7 @@ export function View({ contentProvider, actions, renderers, codeBlockRenderers }
|
|
|
45
45
|
}
|
|
46
46
|
switch (content.format) {
|
|
47
47
|
case "markdown":
|
|
48
|
-
return (_jsx(MarkdownSubview, { content: content, codeBlockRenderers: codeBlockRenderers, ...shared }));
|
|
48
|
+
return (_jsx(MarkdownSubview, { content: content, codeBlockRenderers: codeBlockRenderers, onLinkActivate: onMarkdownLinkActivate, ...shared }));
|
|
49
49
|
case "code":
|
|
50
50
|
case "text":
|
|
51
51
|
return _jsx(CodeSubview, { content: content, ...shared });
|
package/dist/View.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../src/View.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,OAAO,EAAE,eAAe,EAA8C,MAAM,YAAY,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../src/View.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,OAAO,EAAE,eAAe,EAA8C,MAAM,YAAY,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,gCAAgC,CAAA;AAevC,MAAM,UAAU,IAAI,CAAC,EACnB,eAAe,EACf,OAAO,EACP,SAAS,EACT,kBAAkB,EAClB,sBAAsB,GACZ;IACV,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;IAE9F,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,EAAE,CAAC,CAAA;IAEzD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,GAAY,EAAE,EAAE;QAC9C,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAC,CAAA;YAClE,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QAC3D,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAA;IACvE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,YAAY,CAAC,EAAE,CAAC,CAAA;IAClB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAA;IAE/F,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,YACrC,eAAM,OAAO,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,GAAI,GACjD,CACP,CAAA;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,wBACE,eAAM,OAAO,EAAC,YAAY,EAAC,EAAE,EAAE,KAAK,CAAC,SAAS,GAAI,GAC9C,CACP,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,WAAW;QACX,aAAa;QACb,SAAS;QACT,UAAU;QACV,kBAAkB;QAClB,iBAAiB;QACjB,MAAM;QACN,SAAS;QACT,OAAO;KACR,CAAA;IAED,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,KAAM,MAAM,GAAI,CAAA;IAC9E,CAAC;IAED,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,CACL,KAAC,eAAe,IACd,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,sBAAsB,KAClC,MAAM,GACV,CACH,CAAA;QACH,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,KAAM,MAAM,GAAI,CAAA;QACtD,KAAK,OAAO;YACV,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,KAAM,MAAM,GAAI,CAAA;IACzD,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { type CodeBlockRenderer } from "@tooee/renderers";
|
|
1
|
+
import { type CodeBlockRenderer, type MarkdownLinkHandler } from "@tooee/renderers";
|
|
2
2
|
import type { MarkdownContent } from "../../types.js";
|
|
3
3
|
import type { SubviewProps } from "./types.js";
|
|
4
4
|
interface MarkdownSubviewProps extends SubviewProps {
|
|
5
5
|
content: MarkdownContent;
|
|
6
6
|
codeBlockRenderers?: Record<string, CodeBlockRenderer>;
|
|
7
|
+
onLinkActivate?: MarkdownLinkHandler;
|
|
7
8
|
}
|
|
8
|
-
export declare function MarkdownSubview({ content, codeBlockRenderers, decorations, actions, ...screen }: MarkdownSubviewProps): import("react").ReactNode;
|
|
9
|
+
export declare function MarkdownSubview({ content, codeBlockRenderers, onLinkActivate, decorations, actions, ...screen }: MarkdownSubviewProps): import("react").ReactNode;
|
|
9
10
|
export {};
|
|
10
11
|
//# sourceMappingURL=MarkdownSubview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownSubview.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/MarkdownSubview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MarkdownSubview.d.ts","sourceRoot":"","sources":["../../../src/components/subviews/MarkdownSubview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAEzB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,UAAU,oBAAqB,SAAQ,YAAY;IACjD,OAAO,EAAE,eAAe,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IACtD,cAAc,CAAC,EAAE,mBAAmB,CAAA;CACrC;AAeD,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,OAAO,EACP,GAAG,MAAM,EACV,EAAE,oBAAoB,6BAuEtB"}
|
|
@@ -16,7 +16,7 @@ const MARKDOWN_BLOCK_ADAPTER = {
|
|
|
16
16
|
getText: (block) => getFlatBlockText(block),
|
|
17
17
|
getSource: (block) => block.source,
|
|
18
18
|
};
|
|
19
|
-
export function MarkdownSubview({ content, codeBlockRenderers, decorations, actions, ...screen }) {
|
|
19
|
+
export function MarkdownSubview({ content, codeBlockRenderers, onLinkActivate, decorations, actions, ...screen }) {
|
|
20
20
|
const textContent = content.markdown;
|
|
21
21
|
const lineCount = useMemo(() => textContent.split("\n").length, [textContent]);
|
|
22
22
|
const blocks = useMemo(() => flattenMarkdown(content.markdown), [content.markdown]);
|
|
@@ -61,6 +61,6 @@ export function MarkdownSubview({ content, codeBlockRenderers, decorations, acti
|
|
|
61
61
|
{ label: "Format:", value: content.format },
|
|
62
62
|
{ label: "Lines:", value: String(lineCount) },
|
|
63
63
|
], [content.format, lineCount]);
|
|
64
|
-
return (_jsx(ViewScreen, { content: content, controller: document, actions: actions, statusItems: statusItems, ...screen, children: _jsx(MarkdownView, { content: content.markdown, blocks: blocks, showLineNumbers: showLineNumbers, document: document, hScrollableBlocksRef: hScrollableBlocksRef, codeBlockRenderers: codeBlockRenderers }) }));
|
|
64
|
+
return (_jsx(ViewScreen, { content: content, controller: document, actions: actions, statusItems: statusItems, ...screen, children: _jsx(MarkdownView, { content: content.markdown, blocks: blocks, showLineNumbers: showLineNumbers, document: document, hScrollableBlocksRef: hScrollableBlocksRef, codeBlockRenderers: codeBlockRenderers, onLinkActivate: onLinkActivate }) }));
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=MarkdownSubview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownSubview.js","sourceRoot":"","sources":["../../../src/components/subviews/MarkdownSubview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"MarkdownSubview.js","sourceRoot":"","sources":["../../../src/components/subviews/MarkdownSubview.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tooee/view",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "Terminal content viewer for markdown, code, text, and tables",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
"typecheck": "tsc --noEmit"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@tooee/commands": "0.2.
|
|
41
|
-
"@tooee/config": "0.2.
|
|
42
|
-
"@tooee/layout": "0.2.
|
|
43
|
-
"@tooee/marks": "0.2.
|
|
44
|
-
"@tooee/overlays": "0.2.
|
|
45
|
-
"@tooee/renderers": "0.2.
|
|
46
|
-
"@tooee/search": "0.2.
|
|
47
|
-
"@tooee/shell": "0.2.
|
|
48
|
-
"@tooee/themes": "0.2.
|
|
40
|
+
"@tooee/commands": "0.2.4",
|
|
41
|
+
"@tooee/config": "0.2.4",
|
|
42
|
+
"@tooee/layout": "0.2.4",
|
|
43
|
+
"@tooee/marks": "0.2.4",
|
|
44
|
+
"@tooee/overlays": "0.2.4",
|
|
45
|
+
"@tooee/renderers": "0.2.4",
|
|
46
|
+
"@tooee/search": "0.2.4",
|
|
47
|
+
"@tooee/shell": "0.2.4",
|
|
48
|
+
"@tooee/themes": "0.2.4",
|
|
49
49
|
"@xstate/store": "^4",
|
|
50
50
|
"@xstate/store-react": "^2",
|
|
51
51
|
"marked": "^17.0.4"
|
package/src/View.tsx
CHANGED
|
@@ -2,7 +2,7 @@ import { useCallback, useMemo, useState } from "react"
|
|
|
2
2
|
import { useTheme } from "@tooee/themes"
|
|
3
3
|
import type { ActionDefinition } from "@tooee/commands"
|
|
4
4
|
import type { MarkSet } from "@tooee/marks"
|
|
5
|
-
import type { CodeBlockRenderer } from "@tooee/renderers"
|
|
5
|
+
import type { CodeBlockRenderer, MarkdownLinkHandler } from "@tooee/renderers"
|
|
6
6
|
import { isCustomContent, type ContentProvider, type ContentRenderer } from "./types.js"
|
|
7
7
|
import { useContentLoader } from "./hooks/useContentLoader.js"
|
|
8
8
|
import {
|
|
@@ -21,9 +21,17 @@ interface ViewProps {
|
|
|
21
21
|
* fence type (first word of the fence info string, case-insensitive).
|
|
22
22
|
*/
|
|
23
23
|
codeBlockRenderers?: Record<string, CodeBlockRenderer>
|
|
24
|
+
/** Handles primary-button activation of inline Markdown links. */
|
|
25
|
+
onMarkdownLinkActivate?: MarkdownLinkHandler
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
export function View({
|
|
28
|
+
export function View({
|
|
29
|
+
contentProvider,
|
|
30
|
+
actions,
|
|
31
|
+
renderers,
|
|
32
|
+
codeBlockRenderers,
|
|
33
|
+
onMarkdownLinkActivate,
|
|
34
|
+
}: ViewProps) {
|
|
27
35
|
const { theme } = useTheme()
|
|
28
36
|
const { content, streaming, error, providerMarks, reload } = useContentLoader(contentProvider)
|
|
29
37
|
|
|
@@ -83,7 +91,12 @@ export function View({ contentProvider, actions, renderers, codeBlockRenderers }
|
|
|
83
91
|
switch (content.format) {
|
|
84
92
|
case "markdown":
|
|
85
93
|
return (
|
|
86
|
-
<MarkdownSubview
|
|
94
|
+
<MarkdownSubview
|
|
95
|
+
content={content}
|
|
96
|
+
codeBlockRenderers={codeBlockRenderers}
|
|
97
|
+
onLinkActivate={onMarkdownLinkActivate}
|
|
98
|
+
{...shared}
|
|
99
|
+
/>
|
|
87
100
|
)
|
|
88
101
|
case "code":
|
|
89
102
|
case "text":
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
flattenMarkdown,
|
|
6
6
|
getFlatBlockText,
|
|
7
7
|
type CodeBlockRenderer,
|
|
8
|
+
type MarkdownLinkHandler,
|
|
8
9
|
type FlatBlock,
|
|
9
10
|
} from "@tooee/renderers"
|
|
10
11
|
import { useCommand } from "@tooee/commands"
|
|
@@ -17,6 +18,7 @@ import type { SubviewProps } from "./types.js"
|
|
|
17
18
|
interface MarkdownSubviewProps extends SubviewProps {
|
|
18
19
|
content: MarkdownContent
|
|
19
20
|
codeBlockRenderers?: Record<string, CodeBlockRenderer>
|
|
21
|
+
onLinkActivate?: MarkdownLinkHandler
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
/** Columns moved per h/l press when scrolling a wide block horizontally. */
|
|
@@ -35,6 +37,7 @@ const MARKDOWN_BLOCK_ADAPTER: DocumentRowAdapter<FlatBlock> = {
|
|
|
35
37
|
export function MarkdownSubview({
|
|
36
38
|
content,
|
|
37
39
|
codeBlockRenderers,
|
|
40
|
+
onLinkActivate,
|
|
38
41
|
decorations,
|
|
39
42
|
actions,
|
|
40
43
|
...screen
|
|
@@ -105,6 +108,7 @@ export function MarkdownSubview({
|
|
|
105
108
|
document={document}
|
|
106
109
|
hScrollableBlocksRef={hScrollableBlocksRef}
|
|
107
110
|
codeBlockRenderers={codeBlockRenderers}
|
|
111
|
+
onLinkActivate={onLinkActivate}
|
|
108
112
|
/>
|
|
109
113
|
</ViewScreen>
|
|
110
114
|
)
|