@tooee/view 0.1.19 → 0.1.21

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 (45) hide show
  1. package/dist/View.d.ts +7 -1
  2. package/dist/View.d.ts.map +1 -1
  3. package/dist/View.js +2 -2
  4. package/dist/View.js.map +1 -1
  5. package/dist/components/subviews/CodeSubview.d.ts.map +1 -1
  6. package/dist/components/subviews/CodeSubview.js +28 -3
  7. package/dist/components/subviews/CodeSubview.js.map +1 -1
  8. package/dist/components/subviews/CustomSubview.d.ts.map +1 -1
  9. package/dist/components/subviews/CustomSubview.js +15 -1
  10. package/dist/components/subviews/CustomSubview.js.map +1 -1
  11. package/dist/components/subviews/MarkdownSubview.d.ts +3 -1
  12. package/dist/components/subviews/MarkdownSubview.d.ts.map +1 -1
  13. package/dist/components/subviews/MarkdownSubview.js +62 -5
  14. package/dist/components/subviews/MarkdownSubview.js.map +1 -1
  15. package/dist/components/subviews/TableSubview.d.ts.map +1 -1
  16. package/dist/components/subviews/TableSubview.js +37 -4
  17. package/dist/components/subviews/TableSubview.js.map +1 -1
  18. package/dist/hooks/useContentLoader.d.ts.map +1 -1
  19. package/dist/hooks/useContentLoader.js +13 -7
  20. package/dist/hooks/useContentLoader.js.map +1 -1
  21. package/dist/hooks/useViewCommandContext.d.ts +28 -0
  22. package/dist/hooks/useViewCommandContext.d.ts.map +1 -1
  23. package/dist/hooks/useViewCommandContext.js.map +1 -1
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/launch.d.ts +7 -0
  29. package/dist/launch.d.ts.map +1 -1
  30. package/dist/launch.js +1 -1
  31. package/dist/launch.js.map +1 -1
  32. package/dist/types.d.ts +10 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js.map +1 -1
  35. package/package.json +10 -10
  36. package/src/View.tsx +10 -2
  37. package/src/components/subviews/CodeSubview.tsx +41 -5
  38. package/src/components/subviews/CustomSubview.tsx +20 -9
  39. package/src/components/subviews/MarkdownSubview.tsx +85 -5
  40. package/src/components/subviews/TableSubview.tsx +53 -7
  41. package/src/hooks/useContentLoader.ts +15 -7
  42. package/src/hooks/useViewCommandContext.ts +27 -0
  43. package/src/index.ts +2 -0
  44. package/src/launch.tsx +8 -0
  45. package/src/types.ts +10 -0
package/src/launch.tsx CHANGED
@@ -1,5 +1,6 @@
1
1
  import { launchCli } from "@tooee/shell"
2
2
  import type { ActionDefinition } from "@tooee/commands"
3
+ import type { CodeBlockRenderer } from "@tooee/renderers"
3
4
  import { View } from "./View.js"
4
5
  import { DirectoryView } from "./DirectoryView.js"
5
6
  import type { ContentProvider, ContentRenderer } from "./types.js"
@@ -8,6 +9,12 @@ export interface ViewLaunchOptions {
8
9
  contentProvider: ContentProvider
9
10
  actions?: ActionDefinition[]
10
11
  renderers?: Record<string, ContentRenderer>
12
+ /**
13
+ * Custom renderers for fenced code blocks in markdown content, keyed by
14
+ * fence type (first word of the fence info string, case-insensitive).
15
+ * Unmatched types fall back to the default syntax-highlighted code block.
16
+ */
17
+ codeBlockRenderers?: Record<string, CodeBlockRenderer>
11
18
  }
12
19
 
13
20
  export interface DirectoryLaunchOptions {
@@ -21,6 +28,7 @@ export async function launch(options: ViewLaunchOptions): Promise<void> {
21
28
  contentProvider={options.contentProvider}
22
29
  actions={options.actions}
23
30
  renderers={options.renderers}
31
+ codeBlockRenderers={options.codeBlockRenderers}
24
32
  />,
25
33
  )
26
34
  }
package/src/types.ts CHANGED
@@ -57,6 +57,16 @@ export interface ContentRendererProps {
57
57
  selectionEnd?: number
58
58
  /** Combined mark state (nav + provider + user marks) */
59
59
  marks?: MarkState
60
+ /**
61
+ * Select a row by index — the mouse equivalent of the keyboard cursor move.
62
+ * A custom renderer that has a notion of rows should call this from its own
63
+ * `onMouseDown`/`onRowClick` handlers to make left-click select a row, the
64
+ * same way the built-in code/markdown/table views do. Selection is a no-op
65
+ * while a modal overlay is open (the host guards it), so renderers can wire
66
+ * it unconditionally. Renderers that own a `RowDocumentRenderable` can map a
67
+ * click's screen-Y to a row via its `getRowAtScreenY(event.y)` helper.
68
+ */
69
+ onSelectRow?: (index: number) => void
60
70
  }
61
71
 
62
72
  export type ContentRenderer = (props: ContentRendererProps) => ReactNode