@opentui/core 0.1.87 → 0.1.88

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 (101) hide show
  1. package/3d/ThreeRenderable.d.ts +4 -4
  2. package/3d/WGPURenderer.d.ts +4 -4
  3. package/3d/animation/ExplodingSpriteEffect.d.ts +2 -2
  4. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +3 -3
  5. package/3d/animation/SpriteAnimator.d.ts +1 -1
  6. package/3d/animation/SpriteParticleGenerator.d.ts +1 -1
  7. package/3d/canvas.d.ts +2 -2
  8. package/3d/index.d.ts +12 -12
  9. package/3d/physics/PlanckPhysicsAdapter.d.ts +1 -1
  10. package/3d/physics/RapierPhysicsAdapter.d.ts +1 -1
  11. package/3d.d.ts +1 -1
  12. package/3d.js +1 -1
  13. package/3d.js.map +12 -12
  14. package/Renderable.d.ts +7 -7
  15. package/animation/Timeline.d.ts +1 -1
  16. package/buffer.d.ts +6 -6
  17. package/console.d.ts +7 -4
  18. package/edit-buffer.d.ts +4 -4
  19. package/editor-view.d.ts +3 -3
  20. package/index-e4hzc2j2.js +113 -0
  21. package/index-e4hzc2j2.js.map +10 -0
  22. package/{index-0wbvecnk.js → index-nkrr8a4c.js} +128 -59
  23. package/index-nkrr8a4c.js.map +64 -0
  24. package/index-nyw5p3ep.js +12619 -0
  25. package/index-nyw5p3ep.js.map +43 -0
  26. package/index.d.ts +20 -17
  27. package/index.js +78 -11590
  28. package/index.js.map +3 -35
  29. package/lib/KeyHandler.d.ts +7 -4
  30. package/lib/ascii.font.d.ts +2 -2
  31. package/lib/border.d.ts +1 -1
  32. package/lib/clipboard.d.ts +1 -1
  33. package/lib/clock.d.ts +4 -0
  34. package/lib/extmarks-history.d.ts +1 -1
  35. package/lib/extmarks.d.ts +2 -2
  36. package/lib/hast-styled-text.d.ts +3 -3
  37. package/lib/index.d.ts +21 -20
  38. package/lib/objects-in-viewport.d.ts +1 -1
  39. package/lib/parse.keypress-kitty.d.ts +1 -1
  40. package/lib/paste.d.ts +7 -0
  41. package/lib/renderable.validations.d.ts +2 -2
  42. package/lib/selection.d.ts +2 -2
  43. package/lib/stdin-parser.d.ts +4 -2
  44. package/lib/styled-text.d.ts +2 -2
  45. package/lib/terminal-palette.d.ts +4 -2
  46. package/lib/tree-sitter/client.d.ts +1 -1
  47. package/lib/tree-sitter/default-parsers.d.ts +1 -1
  48. package/lib/tree-sitter/index.d.ts +7 -7
  49. package/lib/tree-sitter-styled-text.d.ts +5 -5
  50. package/package.json +17 -7
  51. package/parser.worker.js.map +1 -1
  52. package/plugins/core-slot.d.ts +72 -0
  53. package/plugins/registry.d.ts +38 -0
  54. package/plugins/types.d.ts +34 -0
  55. package/post/filters.d.ts +1 -1
  56. package/renderables/ASCIIFont.d.ts +6 -6
  57. package/renderables/Box.d.ts +5 -5
  58. package/renderables/Code.d.ts +10 -8
  59. package/renderables/Diff.d.ts +7 -7
  60. package/renderables/EditBufferRenderable.d.ts +8 -8
  61. package/renderables/FrameBuffer.d.ts +3 -3
  62. package/renderables/Input.d.ts +3 -3
  63. package/renderables/LineNumberRenderable.d.ts +4 -4
  64. package/renderables/Markdown.d.ts +9 -9
  65. package/renderables/ScrollBar.d.ts +6 -6
  66. package/renderables/ScrollBox.d.ts +9 -8
  67. package/renderables/Select.d.ts +7 -7
  68. package/renderables/Slider.d.ts +1 -1
  69. package/renderables/TabSelect.d.ts +6 -6
  70. package/renderables/Text.d.ts +7 -7
  71. package/renderables/TextBufferRenderable.d.ts +9 -9
  72. package/renderables/TextNode.d.ts +6 -6
  73. package/renderables/Textarea.d.ts +7 -7
  74. package/renderables/__tests__/renderable-test-utils.d.ts +8 -3
  75. package/renderables/composition/VRenderable.d.ts +3 -3
  76. package/renderables/composition/constructs.d.ts +14 -14
  77. package/renderables/composition/vnode.d.ts +2 -2
  78. package/renderables/index.d.ts +22 -22
  79. package/renderer.d.ts +16 -15
  80. package/runtime-plugin-support.d.ts +3 -0
  81. package/runtime-plugin-support.js +29 -0
  82. package/runtime-plugin-support.js.map +10 -0
  83. package/runtime-plugin.d.ts +11 -0
  84. package/runtime-plugin.js +16 -0
  85. package/runtime-plugin.js.map +9 -0
  86. package/syntax-style.d.ts +2 -2
  87. package/testing/mock-keys.d.ts +2 -1
  88. package/testing/mock-mouse.d.ts +1 -1
  89. package/testing/mock-tree-sitter-client.d.ts +2 -2
  90. package/testing/test-recorder.d.ts +1 -1
  91. package/testing/test-renderer.d.ts +4 -4
  92. package/testing.d.ts +6 -6
  93. package/testing.js +12 -7
  94. package/testing.js.map +7 -7
  95. package/text-buffer-view.d.ts +3 -3
  96. package/text-buffer.d.ts +5 -5
  97. package/types.d.ts +4 -4
  98. package/utils.d.ts +1 -1
  99. package/zig-structs.d.ts +1 -1
  100. package/zig.d.ts +5 -5
  101. package/index-0wbvecnk.js.map +0 -63
@@ -0,0 +1,38 @@
1
+ import type { CliRenderer } from "../renderer";
2
+ import type { Plugin, PluginContext, PluginErrorEvent, PluginErrorReport, ResolvedSlotRenderer, SlotRenderer } from "./types";
3
+ export interface SlotRegistryOptions {
4
+ onPluginError?: (event: PluginErrorEvent) => void;
5
+ debugPluginErrors?: boolean;
6
+ maxPluginErrors?: number;
7
+ }
8
+ export declare class SlotRegistry<TNode, TSlots extends object, TContext extends PluginContext = PluginContext> {
9
+ private plugins;
10
+ private sortedPluginsCache;
11
+ private listeners;
12
+ private errorListeners;
13
+ private pluginErrors;
14
+ private registrationOrder;
15
+ private rendererInstance;
16
+ private hostContext;
17
+ private options;
18
+ constructor(renderer: CliRenderer, context: TContext, options?: SlotRegistryOptions);
19
+ get renderer(): CliRenderer;
20
+ get context(): Readonly<TContext>;
21
+ configure(options: SlotRegistryOptions): void;
22
+ register(plugin: Plugin<TNode, TSlots, TContext>): () => void;
23
+ unregister(id: string): boolean;
24
+ updateOrder(id: string, order: number): boolean;
25
+ clear(): void;
26
+ subscribe(listener: () => void): () => void;
27
+ onPluginError(listener: (event: PluginErrorEvent) => void): () => void;
28
+ getPluginErrors(): readonly PluginErrorEvent[];
29
+ clearPluginErrors(): void;
30
+ reportPluginError(report: PluginErrorReport): PluginErrorEvent;
31
+ resolve<K extends keyof TSlots>(slot: K): Array<SlotRenderer<TNode, TSlots[K], TContext>>;
32
+ resolveEntries<K extends keyof TSlots>(slot: K): Array<ResolvedSlotRenderer<TNode, TSlots[K], TContext>>;
33
+ private getSortedPlugins;
34
+ private syncPluginSortMetadata;
35
+ private invalidateSortedPluginsCache;
36
+ private notifyListeners;
37
+ }
38
+ export declare function createSlotRegistry<TNode, TSlots extends object, TContext extends PluginContext = PluginContext>(renderer: CliRenderer, key: string, context: TContext, options?: SlotRegistryOptions): SlotRegistry<TNode, TSlots, TContext>;
@@ -0,0 +1,34 @@
1
+ import type { CliRenderer } from "../renderer";
2
+ export type PluginContext = object;
3
+ export type SlotMode = "append" | "replace" | "single_winner";
4
+ export type PluginErrorPhase = "setup" | "render" | "dispose" | "error_placeholder";
5
+ export type PluginErrorSource = "registry" | "core" | (string & {});
6
+ export interface PluginErrorEvent {
7
+ pluginId: string;
8
+ slot?: string;
9
+ phase: PluginErrorPhase;
10
+ source: PluginErrorSource;
11
+ error: Error;
12
+ timestamp: number;
13
+ }
14
+ export interface PluginErrorReport {
15
+ pluginId: string;
16
+ slot?: string;
17
+ phase: PluginErrorPhase;
18
+ source?: PluginErrorSource;
19
+ error: unknown;
20
+ }
21
+ export type SlotRenderer<TNode, TProps, TContext extends PluginContext = PluginContext> = (ctx: Readonly<TContext>, props: TProps) => TNode;
22
+ export interface Plugin<TNode, TSlots extends object, TContext extends PluginContext = PluginContext> {
23
+ id: string;
24
+ order?: number;
25
+ setup?: (ctx: Readonly<TContext>, renderer: CliRenderer) => void;
26
+ dispose?: () => void;
27
+ slots: {
28
+ [K in keyof TSlots]?: SlotRenderer<TNode, TSlots[K], TContext>;
29
+ };
30
+ }
31
+ export interface ResolvedSlotRenderer<TNode, TProps, TContext extends PluginContext = PluginContext> {
32
+ id: string;
33
+ renderer: SlotRenderer<TNode, TProps, TContext>;
34
+ }
package/post/filters.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { OptimizedBuffer } from "../buffer";
1
+ import type { OptimizedBuffer } from "../buffer.js";
2
2
  /**
3
3
  * Applies a scanline effect by darkening every nth row.
4
4
  */
@@ -1,9 +1,9 @@
1
- import { type ASCIIFontName, type fonts } from "../lib/ascii.font";
2
- import { type ColorInput } from "../lib/RGBA";
3
- import { Selection, type LocalSelectionBounds } from "../lib/selection";
4
- import type { RenderableOptions } from "../Renderable";
5
- import type { RenderContext } from "../types";
6
- import { FrameBufferRenderable } from "./FrameBuffer";
1
+ import { type ASCIIFontName, type fonts } from "../lib/ascii.font.js";
2
+ import { type ColorInput } from "../lib/RGBA.js";
3
+ import { Selection, type LocalSelectionBounds } from "../lib/selection.js";
4
+ import type { RenderableOptions } from "../Renderable.js";
5
+ import type { RenderContext } from "../types.js";
6
+ import { FrameBufferRenderable } from "./FrameBuffer.js";
7
7
  export interface ASCIIFontOptions extends Omit<RenderableOptions<ASCIIFontRenderable>, "width" | "height"> {
8
8
  text?: string;
9
9
  font?: ASCIIFontName;
@@ -1,8 +1,8 @@
1
- import { type RenderableOptions, Renderable } from "../Renderable";
2
- import type { OptimizedBuffer } from "../buffer";
3
- import { type BorderCharacters, type BorderSides, type BorderSidesConfig, type BorderStyle } from "../lib";
4
- import { type ColorInput, RGBA } from "../lib/RGBA";
5
- import type { RenderContext } from "../types";
1
+ import { type RenderableOptions, Renderable } from "../Renderable.js";
2
+ import type { OptimizedBuffer } from "../buffer.js";
3
+ import { type BorderCharacters, type BorderSides, type BorderSidesConfig, type BorderStyle } from "../lib/index.js";
4
+ import { type ColorInput, RGBA } from "../lib/RGBA.js";
5
+ import type { RenderContext } from "../types.js";
6
6
  export interface BoxOptions<TRenderable extends Renderable = BoxRenderable> extends RenderableOptions<TRenderable> {
7
7
  backgroundColor?: string | RGBA;
8
8
  borderStyle?: BorderStyle;
@@ -1,10 +1,10 @@
1
- import { type RenderContext } from "../types";
2
- import { SyntaxStyle } from "../syntax-style";
3
- import { TreeSitterClient } from "../lib/tree-sitter";
4
- import { TextBufferRenderable, type TextBufferOptions } from "./TextBufferRenderable";
5
- import type { OptimizedBuffer } from "../buffer";
6
- import type { SimpleHighlight } from "../lib/tree-sitter/types";
7
- import type { TextChunk } from "../text-buffer";
1
+ import { type RenderContext } from "../types.js";
2
+ import { SyntaxStyle } from "../syntax-style.js";
3
+ import { TreeSitterClient } from "../lib/tree-sitter/index.js";
4
+ import { TextBufferRenderable, type TextBufferOptions } from "./TextBufferRenderable.js";
5
+ import type { OptimizedBuffer } from "../buffer.js";
6
+ import type { SimpleHighlight } from "../lib/tree-sitter/types.js";
7
+ import type { TextChunk } from "../text-buffer.js";
8
8
  export interface HighlightContext {
9
9
  content: string;
10
10
  filetype: string;
@@ -42,6 +42,7 @@ export declare class CodeRenderable extends TextBufferRenderable {
42
42
  private _lastHighlights;
43
43
  private _onHighlight?;
44
44
  private _onChunks?;
45
+ private _highlightingPromise;
45
46
  protected _contentDefaultOptions: {
46
47
  content: string;
47
48
  conceal: true;
@@ -68,9 +69,10 @@ export declare class CodeRenderable extends TextBufferRenderable {
68
69
  get onChunks(): OnChunksCallback | undefined;
69
70
  set onChunks(value: OnChunksCallback | undefined);
70
71
  get isHighlighting(): boolean;
72
+ get highlightingDone(): Promise<void>;
71
73
  protected transformChunks(chunks: TextChunk[], context: ChunkRenderContext): Promise<TextChunk[]>;
72
74
  private ensureVisibleTextBeforeHighlight;
73
75
  private startHighlight;
74
- getLineHighlights(lineIdx: number): import("..").Highlight[];
76
+ getLineHighlights(lineIdx: number): import("../types.js").Highlight[];
75
77
  protected renderSelf(buffer: OptimizedBuffer): void;
76
78
  }
@@ -1,10 +1,10 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import type { RenderContext } from "../types";
3
- import { type LineColorConfig } from "./LineNumberRenderable";
4
- import { RGBA } from "../lib/RGBA";
5
- import { SyntaxStyle } from "../syntax-style";
6
- import type { TreeSitterClient } from "../lib/tree-sitter";
7
- import type { MouseEvent } from "../renderer";
1
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
2
+ import type { RenderContext } from "../types.js";
3
+ import { type LineColorConfig } from "./LineNumberRenderable.js";
4
+ import { RGBA } from "../lib/RGBA.js";
5
+ import { SyntaxStyle } from "../syntax-style.js";
6
+ import type { TreeSitterClient } from "../lib/tree-sitter/index.js";
7
+ import type { MouseEvent } from "../renderer.js";
8
8
  export interface DiffRenderableOptions extends RenderableOptions<DiffRenderable> {
9
9
  diff?: string;
10
10
  syncScroll?: boolean;
@@ -1,11 +1,11 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import { Selection, type LocalSelectionBounds } from "../lib/selection";
3
- import { EditBuffer, type LogicalCursor } from "../edit-buffer";
4
- import { EditorView, type VisualCursor } from "../editor-view";
5
- import { RGBA } from "../lib/RGBA";
6
- import type { RenderContext, Highlight, CursorStyleOptions, LineInfoProvider, LineInfo } from "../types";
7
- import type { OptimizedBuffer } from "../buffer";
8
- import type { SyntaxStyle } from "../syntax-style";
1
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
2
+ import { Selection, type LocalSelectionBounds } from "../lib/selection.js";
3
+ import { EditBuffer, type LogicalCursor } from "../edit-buffer.js";
4
+ import { EditorView, type VisualCursor } from "../editor-view.js";
5
+ import { RGBA } from "../lib/RGBA.js";
6
+ import type { RenderContext, Highlight, CursorStyleOptions, LineInfoProvider, LineInfo } from "../types.js";
7
+ import type { OptimizedBuffer } from "../buffer.js";
8
+ import type { SyntaxStyle } from "../syntax-style.js";
9
9
  export interface CursorChangeEvent {
10
10
  line: number;
11
11
  visualColumn: number;
@@ -1,6 +1,6 @@
1
- import { type RenderableOptions, Renderable } from "../Renderable";
2
- import { OptimizedBuffer } from "../buffer";
3
- import type { RenderContext } from "../types";
1
+ import { type RenderableOptions, Renderable } from "../Renderable.js";
2
+ import { OptimizedBuffer } from "../buffer.js";
3
+ import type { RenderContext } from "../types.js";
4
4
  export interface FrameBufferOptions extends RenderableOptions<FrameBufferRenderable> {
5
5
  width: number;
6
6
  height: number;
@@ -1,6 +1,6 @@
1
- import type { PasteEvent } from "../lib/KeyHandler";
2
- import type { RenderContext } from "../types";
3
- import { TextareaRenderable, type TextareaOptions, type TextareaAction, type KeyBinding as TextareaKeyBinding } from "./Textarea";
1
+ import type { PasteEvent } from "../lib/KeyHandler.js";
2
+ import type { RenderContext } from "../types.js";
3
+ import { TextareaRenderable, type TextareaOptions, type TextareaAction, type KeyBinding as TextareaKeyBinding } from "./Textarea.js";
4
4
  export type InputAction = TextareaAction;
5
5
  export type InputKeyBinding = TextareaKeyBinding;
6
6
  export interface InputRenderableOptions extends Omit<TextareaOptions, "height" | "minHeight" | "maxHeight" | "initialValue"> {
@@ -1,7 +1,7 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import { OptimizedBuffer } from "../buffer";
3
- import type { RenderContext, LineInfoProvider } from "../types";
4
- import { RGBA } from "../lib/RGBA";
1
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
2
+ import { OptimizedBuffer } from "../buffer.js";
3
+ import type { RenderContext, LineInfoProvider } from "../types.js";
4
+ import { RGBA } from "../lib/RGBA.js";
5
5
  export interface LineSign {
6
6
  before?: string;
7
7
  beforeColor?: string | RGBA;
@@ -1,13 +1,13 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import { type RenderContext } from "../types";
3
- import { SyntaxStyle } from "../syntax-style";
4
- import type { BorderStyle } from "../lib/border";
5
- import type { ColorInput } from "../lib/RGBA";
1
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
2
+ import { type RenderContext } from "../types.js";
3
+ import { SyntaxStyle } from "../syntax-style.js";
4
+ import type { BorderStyle } from "../lib/border.js";
5
+ import type { ColorInput } from "../lib/RGBA.js";
6
6
  import { type MarkedToken, type Token } from "marked";
7
- import { type TextTableColumnFitter, type TextTableColumnWidthMode, type TextTableContent } from "./TextTable";
8
- import type { TreeSitterClient } from "../lib/tree-sitter";
9
- import { type ParseState } from "./markdown-parser";
10
- import type { OptimizedBuffer } from "../buffer";
7
+ import { type TextTableColumnFitter, type TextTableColumnWidthMode, type TextTableContent } from "./TextTable.js";
8
+ import type { TreeSitterClient } from "../lib/tree-sitter/index.js";
9
+ import { type ParseState } from "./markdown-parser.js";
10
+ import type { OptimizedBuffer } from "../buffer.js";
11
11
  export interface MarkdownTableOptions {
12
12
  /**
13
13
  * Strategy for sizing table columns.
@@ -1,9 +1,9 @@
1
- import type { OptimizedBuffer } from "../buffer";
2
- import { RGBA, type ColorInput } from "../lib";
3
- import type { KeyEvent } from "../lib/KeyHandler";
4
- import { Renderable, type RenderableOptions } from "../Renderable";
5
- import type { RenderContext } from "../types";
6
- import { SliderRenderable, type SliderOptions } from "./Slider";
1
+ import type { OptimizedBuffer } from "../buffer.js";
2
+ import { RGBA, type ColorInput } from "../lib/index.js";
3
+ import type { KeyEvent } from "../lib/KeyHandler.js";
4
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
5
+ import type { RenderContext } from "../types.js";
6
+ import { SliderRenderable, type SliderOptions } from "./Slider.js";
7
7
  export interface ScrollBarOptions extends RenderableOptions<ScrollBarRenderable> {
8
8
  orientation: "vertical" | "horizontal";
9
9
  showArrows?: boolean;
@@ -1,11 +1,11 @@
1
- import { type KeyEvent } from "../lib";
2
- import { type ScrollAcceleration } from "../lib/scroll-acceleration";
3
- import type { Renderable, RenderableOptions } from "../Renderable";
4
- import type { MouseEvent } from "../renderer";
5
- import type { RenderContext } from "../types";
6
- import { BoxRenderable, type BoxOptions } from "./Box";
7
- import type { VNode } from "./composition/vnode";
8
- import { ScrollBarRenderable, type ScrollBarOptions, type ScrollUnit } from "./ScrollBar";
1
+ import { type KeyEvent } from "../lib/index.js";
2
+ import { type ScrollAcceleration } from "../lib/scroll-acceleration.js";
3
+ import type { Renderable, RenderableOptions } from "../Renderable.js";
4
+ import type { MouseEvent } from "../renderer.js";
5
+ import type { RenderContext } from "../types.js";
6
+ import { BoxRenderable, type BoxOptions } from "./Box.js";
7
+ import type { VNode } from "./composition/vnode.js";
8
+ import { ScrollBarRenderable, type ScrollBarOptions, type ScrollUnit } from "./ScrollBar.js";
9
9
  declare class ContentRenderable extends BoxRenderable {
10
10
  private viewport;
11
11
  private _viewportCulling;
@@ -79,6 +79,7 @@ export declare class ScrollBoxRenderable extends BoxRenderable {
79
79
  x: number;
80
80
  y: number;
81
81
  }, unit?: ScrollUnit): void;
82
+ scrollChildIntoView(childId: string): void;
82
83
  scrollTo(position: number | {
83
84
  x: number;
84
85
  y: number;
@@ -1,10 +1,10 @@
1
- import { OptimizedBuffer } from "../buffer";
2
- import { fonts } from "../lib/ascii.font";
3
- import type { KeyEvent } from "../lib/KeyHandler";
4
- import { type ColorInput } from "../lib/RGBA";
5
- import { Renderable, type RenderableOptions } from "../Renderable";
6
- import type { RenderContext } from "../types";
7
- import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping";
1
+ import { OptimizedBuffer } from "../buffer.js";
2
+ import { fonts } from "../lib/ascii.font.js";
3
+ import type { KeyEvent } from "../lib/KeyHandler.js";
4
+ import { type ColorInput } from "../lib/RGBA.js";
5
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
6
+ import type { RenderContext } from "../types.js";
7
+ import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping.js";
8
8
  export interface SelectOption {
9
9
  name: string;
10
10
  description: string;
@@ -1,4 +1,4 @@
1
- import { type ColorInput, OptimizedBuffer, Renderable, type RenderableOptions, type RenderContext, RGBA } from "../index";
1
+ import { type ColorInput, OptimizedBuffer, Renderable, type RenderableOptions, type RenderContext, RGBA } from "../index.js";
2
2
  export interface SliderOptions extends RenderableOptions<SliderRenderable> {
3
3
  orientation: "vertical" | "horizontal";
4
4
  value?: number;
@@ -1,9 +1,9 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import { OptimizedBuffer } from "../buffer";
3
- import { type ColorInput } from "../lib/RGBA";
4
- import type { KeyEvent } from "../lib/KeyHandler";
5
- import type { RenderContext } from "../types";
6
- import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping";
1
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
2
+ import { OptimizedBuffer } from "../buffer.js";
3
+ import { type ColorInput } from "../lib/RGBA.js";
4
+ import type { KeyEvent } from "../lib/KeyHandler.js";
5
+ import type { RenderContext } from "../types.js";
6
+ import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping.js";
7
7
  export interface TabSelectOption {
8
8
  name: string;
9
9
  description: string;
@@ -1,10 +1,10 @@
1
- import { BaseRenderable } from "../Renderable";
2
- import { StyledText } from "../lib/styled-text";
3
- import { type TextChunk } from "../text-buffer";
4
- import { RGBA } from "../lib/RGBA";
5
- import { type RenderContext } from "../types";
6
- import { RootTextNodeRenderable, TextNodeRenderable } from "./TextNode";
7
- import { TextBufferRenderable, type TextBufferOptions } from "./TextBufferRenderable";
1
+ import { BaseRenderable } from "../Renderable.js";
2
+ import { StyledText } from "../lib/styled-text.js";
3
+ import { type TextChunk } from "../text-buffer.js";
4
+ import { RGBA } from "../lib/RGBA.js";
5
+ import { type RenderContext } from "../types.js";
6
+ import { RootTextNodeRenderable, TextNodeRenderable } from "./TextNode.js";
7
+ import { TextBufferRenderable, type TextBufferOptions } from "./TextBufferRenderable.js";
8
8
  export interface TextOptions extends TextBufferOptions {
9
9
  content?: StyledText | string;
10
10
  }
@@ -1,12 +1,12 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import { Selection, type LocalSelectionBounds } from "../lib/selection";
3
- import { TextBuffer } from "../text-buffer";
4
- import { TextBufferView } from "../text-buffer-view";
5
- import { RGBA } from "../lib/RGBA";
6
- import { type RenderContext, type LineInfoProvider } from "../types";
7
- import type { OptimizedBuffer } from "../buffer";
8
- import type { LineInfo } from "../zig";
9
- import { SyntaxStyle } from "../syntax-style";
1
+ import { Renderable, type RenderableOptions } from "../Renderable.js";
2
+ import { Selection, type LocalSelectionBounds } from "../lib/selection.js";
3
+ import { TextBuffer } from "../text-buffer.js";
4
+ import { TextBufferView } from "../text-buffer-view.js";
5
+ import { RGBA } from "../lib/RGBA.js";
6
+ import { type RenderContext, type LineInfoProvider } from "../types.js";
7
+ import type { OptimizedBuffer } from "../buffer.js";
8
+ import type { LineInfo } from "../zig.js";
9
+ import { SyntaxStyle } from "../syntax-style.js";
10
10
  export interface TextBufferOptions extends RenderableOptions<TextBufferRenderable> {
11
11
  fg?: string | RGBA;
12
12
  bg?: string | RGBA;
@@ -1,9 +1,9 @@
1
- import type { TextRenderable } from ".";
2
- import { BaseRenderable, type BaseRenderableOptions } from "../Renderable";
3
- import { RGBA } from "../lib/RGBA";
4
- import { StyledText } from "../lib/styled-text";
5
- import { type TextChunk } from "../text-buffer";
6
- import type { RenderContext } from "../types";
1
+ import type { TextRenderable } from "./index.js";
2
+ import { BaseRenderable, type BaseRenderableOptions } from "../Renderable.js";
3
+ import { RGBA } from "../lib/RGBA.js";
4
+ import { StyledText } from "../lib/styled-text.js";
5
+ import { type TextChunk } from "../text-buffer.js";
6
+ import type { RenderContext } from "../types.js";
7
7
  export interface TextNodeOptions extends BaseRenderableOptions {
8
8
  fg?: string | RGBA;
9
9
  bg?: string | RGBA;
@@ -1,10 +1,10 @@
1
- import { type RenderContext } from "../types";
2
- import { EditBufferRenderable, type EditBufferOptions } from "./EditBufferRenderable";
3
- import type { KeyEvent, PasteEvent } from "../lib/KeyHandler";
4
- import { RGBA, type ColorInput } from "../lib/RGBA";
5
- import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping";
6
- import { type StyledText } from "../lib/styled-text";
7
- import type { ExtmarksController } from "../lib/extmarks";
1
+ import type { KeyEvent, PasteEvent } from "../lib/KeyHandler.js";
2
+ import { RGBA, type ColorInput } from "../lib/RGBA.js";
3
+ import { type RenderContext } from "../types.js";
4
+ import { EditBufferRenderable, type EditBufferOptions } from "./EditBufferRenderable.js";
5
+ import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping.js";
6
+ import { type StyledText } from "../lib/styled-text.js";
7
+ import type { ExtmarksController } from "../lib/extmarks.js";
8
8
  export type TextareaAction = "move-left" | "move-right" | "move-up" | "move-down" | "select-left" | "select-right" | "select-up" | "select-down" | "line-home" | "line-end" | "select-line-home" | "select-line-end" | "visual-line-home" | "visual-line-end" | "select-visual-line-home" | "select-visual-line-end" | "buffer-home" | "buffer-end" | "select-buffer-home" | "select-buffer-end" | "delete-line" | "delete-to-line-end" | "delete-to-line-start" | "backspace" | "delete" | "newline" | "undo" | "redo" | "word-forward" | "word-backward" | "select-word-forward" | "select-word-backward" | "delete-word-forward" | "delete-word-backward" | "select-all" | "submit";
9
9
  export type KeyBinding = BaseKeyBinding<TextareaAction>;
10
10
  export interface SubmitEvent {
@@ -1,7 +1,12 @@
1
- import { TextareaRenderable } from "../Textarea";
2
- import { type TestRenderer } from "../../testing/test-renderer";
3
- import { type TextareaOptions } from "../Textarea";
1
+ import { TextareaRenderable } from "../Textarea.js";
2
+ import { type TestRenderer } from "../../testing/test-renderer.js";
3
+ import { type TextareaOptions } from "../Textarea.js";
4
+ import type { DiffRenderable } from "../Diff.js";
5
+ import type { MockTreeSitterClient } from "../../testing/mock-tree-sitter-client.js";
6
+ import type { ManualClock } from "../../testing/manual-clock.js";
4
7
  export declare function createTextareaRenderable(renderer: TestRenderer, renderOnce: () => Promise<void>, options: TextareaOptions): Promise<{
5
8
  textarea: TextareaRenderable;
6
9
  root: any;
7
10
  }>;
11
+ export declare function settleDiffHighlighting(diff: DiffRenderable, client: MockTreeSitterClient, render: () => Promise<void>): Promise<void>;
12
+ export declare function simulateFrames(clock: ManualClock, renderOnce: () => Promise<void>, ms: number, frameInterval?: number): Promise<void>;
@@ -1,6 +1,6 @@
1
- import { Renderable, type RenderableOptions } from "../../Renderable";
2
- import type { OptimizedBuffer } from "../../buffer";
3
- import type { RenderContext } from "../../types";
1
+ import { Renderable, type RenderableOptions } from "../../Renderable.js";
2
+ import type { OptimizedBuffer } from "../../buffer.js";
3
+ import type { RenderContext } from "../../types.js";
4
4
  export interface VRenderableOptions extends RenderableOptions<VRenderable> {
5
5
  render?: (this: VRenderable | VRenderableOptions, buffer: OptimizedBuffer, deltaTime: number, renderable: VRenderable) => void;
6
6
  }
@@ -1,19 +1,19 @@
1
- import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, InputRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextRenderable, VRenderable, FrameBufferRenderable, type ASCIIFontOptions, type BoxOptions, type CodeOptions, type TextOptions, type VRenderableOptions, type InputRenderableOptions, type ScrollBoxOptions, type SelectRenderableOptions, type TabSelectRenderableOptions, type FrameBufferOptions } from "../";
2
- import { TextNodeRenderable } from "../TextNode";
3
- import { type VChild } from "./vnode";
4
- import type { RGBA } from "../../lib/RGBA";
5
- export declare function Generic(props?: VRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof VRenderable>;
6
- export declare function Box(props?: BoxOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof BoxRenderable>;
1
+ import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, InputRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextRenderable, VRenderable, FrameBufferRenderable, type ASCIIFontOptions, type BoxOptions, type CodeOptions, type TextOptions, type VRenderableOptions, type InputRenderableOptions, type ScrollBoxOptions, type SelectRenderableOptions, type TabSelectRenderableOptions, type FrameBufferOptions } from "..//index.js";
2
+ import { TextNodeRenderable } from "../TextNode.js";
3
+ import { type VChild } from "./vnode.js";
4
+ import type { RGBA } from "../../lib/RGBA.js";
5
+ export declare function Generic(props?: VRenderableOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof VRenderable>;
6
+ export declare function Box(props?: BoxOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof BoxRenderable>;
7
7
  export declare function Text(props?: TextOptions & {
8
8
  content?: any;
9
- }, ...children: VChild[] | TextNodeRenderable[]): import("./vnode").ProxiedVNode<typeof TextRenderable>;
10
- export declare function ASCIIFont(props?: ASCIIFontOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof ASCIIFontRenderable>;
11
- export declare function Input(props?: InputRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof InputRenderable>;
12
- export declare function Select(props?: SelectRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof SelectRenderable>;
13
- export declare function TabSelect(props?: TabSelectRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof TabSelectRenderable>;
14
- export declare function FrameBuffer(props: FrameBufferOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof FrameBufferRenderable>;
15
- export declare function Code(props: CodeOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof CodeRenderable>;
16
- export declare function ScrollBox(props?: ScrollBoxOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof ScrollBoxRenderable>;
9
+ }, ...children: VChild[] | TextNodeRenderable[]): import("./vnode.js").ProxiedVNode<typeof TextRenderable>;
10
+ export declare function ASCIIFont(props?: ASCIIFontOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof ASCIIFontRenderable>;
11
+ export declare function Input(props?: InputRenderableOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof InputRenderable>;
12
+ export declare function Select(props?: SelectRenderableOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof SelectRenderable>;
13
+ export declare function TabSelect(props?: TabSelectRenderableOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof TabSelectRenderable>;
14
+ export declare function FrameBuffer(props: FrameBufferOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof FrameBufferRenderable>;
15
+ export declare function Code(props: CodeOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof CodeRenderable>;
16
+ export declare function ScrollBox(props?: ScrollBoxOptions, ...children: VChild[]): import("./vnode.js").ProxiedVNode<typeof ScrollBoxRenderable>;
17
17
  export declare const vstyles: {
18
18
  bold: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
19
19
  italic: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
@@ -1,5 +1,5 @@
1
- import { Renderable, type RenderableOptions } from "../../Renderable";
2
- import type { RenderContext } from "../../types";
1
+ import { Renderable, type RenderableOptions } from "../../Renderable.js";
2
+ import type { RenderContext } from "../../types.js";
3
3
  export type VChild = VNode | Renderable | VChild[] | null | undefined | false;
4
4
  export interface PendingCall {
5
5
  method: string;
@@ -1,22 +1,22 @@
1
- export * from "./ASCIIFont";
2
- export * from "./Box";
3
- export * from "./Code";
4
- export * from "./composition/constructs";
5
- export * from "./composition/VRenderable";
6
- export * from "./composition/vnode";
7
- export * from "./Diff";
8
- export * from "./FrameBuffer";
9
- export * from "./Input";
10
- export * from "./LineNumberRenderable";
11
- export * from "./Markdown";
12
- export * from "./ScrollBar";
13
- export * from "./ScrollBox";
14
- export * from "./Select";
15
- export * from "./Slider";
16
- export * from "./TextTable";
17
- export * from "./TabSelect";
18
- export * from "./Text";
19
- export * from "./TimeToFirstDraw";
20
- export * from "./TextBufferRenderable";
21
- export * from "./TextNode";
22
- export * from "./Textarea";
1
+ export * from "./ASCIIFont.js";
2
+ export * from "./Box.js";
3
+ export * from "./Code.js";
4
+ export * from "./composition/constructs.js";
5
+ export * from "./composition/VRenderable.js";
6
+ export * from "./composition/vnode.js";
7
+ export * from "./Diff.js";
8
+ export * from "./FrameBuffer.js";
9
+ export * from "./Input.js";
10
+ export * from "./LineNumberRenderable.js";
11
+ export * from "./Markdown.js";
12
+ export * from "./ScrollBar.js";
13
+ export * from "./ScrollBox.js";
14
+ export * from "./Select.js";
15
+ export * from "./Slider.js";
16
+ export * from "./TextTable.js";
17
+ export * from "./TabSelect.js";
18
+ export * from "./Text.js";
19
+ export * from "./TimeToFirstDraw.js";
20
+ export * from "./TextBufferRenderable.js";
21
+ export * from "./TextNode.js";
22
+ export * from "./Textarea.js";
package/renderer.d.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { Renderable, RootRenderable } from "./Renderable";
2
- import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type ThemeMode, type WidthMethod } from "./types";
3
- import { RGBA, type ColorInput } from "./lib/RGBA";
1
+ import { Renderable, RootRenderable } from "./Renderable.js";
2
+ import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type ThemeMode, type WidthMethod } from "./types.js";
3
+ import { RGBA, type ColorInput } from "./lib/RGBA.js";
4
4
  import type { Pointer } from "bun:ffi";
5
- import { OptimizedBuffer } from "./buffer";
6
- import { type RenderLib } from "./zig";
7
- import { TerminalConsole, type ConsoleOptions } from "./console";
8
- import { type MouseEventType, type RawMouseEvent, type ScrollInfo } from "./lib/parse.mouse";
9
- import { Selection } from "./lib/selection";
10
- import { type ClipboardTarget } from "./lib/clipboard";
5
+ import { OptimizedBuffer } from "./buffer.js";
6
+ import { type RenderLib } from "./zig.js";
7
+ import { TerminalConsole, type ConsoleOptions } from "./console.js";
8
+ import { type MouseEventType, type RawMouseEvent, type ScrollInfo } from "./lib/parse.mouse.js";
9
+ import { Selection } from "./lib/selection.js";
10
+ import { type ClipboardTarget } from "./lib/clipboard.js";
11
11
  import { EventEmitter } from "events";
12
- import { KeyHandler, InternalKeyHandler } from "./lib/KeyHandler";
13
- import { type TerminalColors, type GetPaletteOptions } from "./lib/terminal-palette";
14
- import { type Clock } from "./lib/clock";
12
+ import { KeyHandler, InternalKeyHandler } from "./lib/KeyHandler.js";
13
+ import { type TerminalColors, type GetPaletteOptions } from "./lib/terminal-palette.js";
14
+ import { type Clock } from "./lib/clock.js";
15
15
  export interface CliRendererConfig {
16
16
  stdin?: NodeJS.ReadStream;
17
17
  stdout?: NodeJS.WriteStream;
@@ -27,7 +27,7 @@ export interface CliRendererConfig {
27
27
  useThread?: boolean;
28
28
  gatherStats?: boolean;
29
29
  maxStatSamples?: number;
30
- consoleOptions?: ConsoleOptions;
30
+ consoleOptions?: Omit<ConsoleOptions, "clock">;
31
31
  postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[];
32
32
  enableMouseMovement?: boolean;
33
33
  useMouse?: boolean;
@@ -40,7 +40,7 @@ export interface CliRendererConfig {
40
40
  openConsoleOnError?: boolean;
41
41
  prependInputHandlers?: ((sequence: string) => boolean)[];
42
42
  stdinParserMaxBufferBytes?: number;
43
- stdinParserClock?: Clock;
43
+ clock?: Clock;
44
44
  onDestroy?: () => void;
45
45
  }
46
46
  export type PixelResolution = {
@@ -146,6 +146,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
146
146
  private postProcessFns;
147
147
  private backgroundColor;
148
148
  private waitingForPixelResolution;
149
+ private readonly clock;
149
150
  private rendering;
150
151
  private renderingNative;
151
152
  private renderTimeout;
@@ -323,7 +324,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
323
324
  setCursorPosition(x: number, y: number, visible?: boolean): void;
324
325
  setCursorStyle(options: CursorStyleOptions): void;
325
326
  setCursorColor(color: RGBA): void;
326
- getCursorState(): import("./zig").CursorState;
327
+ getCursorState(): import("./zig.js").CursorState;
327
328
  addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
328
329
  removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
329
330
  clearPostProcessFns(): void;
@@ -0,0 +1,3 @@
1
+ import { createRuntimePlugin, runtimeModuleIdForSpecifier, type CreateRuntimePluginOptions, type RuntimeModuleEntry, type RuntimeModuleExports, type RuntimeModuleLoader } from "./runtime-plugin";
2
+ export declare function ensureRuntimePluginSupport(options?: CreateRuntimePluginOptions): boolean;
3
+ export { createRuntimePlugin, runtimeModuleIdForSpecifier, type CreateRuntimePluginOptions, type RuntimeModuleEntry, type RuntimeModuleExports, type RuntimeModuleLoader, };