@opentuah/core 0.1.77

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 (127) hide show
  1. package/3d/SpriteResourceManager.d.ts +74 -0
  2. package/3d/SpriteUtils.d.ts +13 -0
  3. package/3d/TextureUtils.d.ts +24 -0
  4. package/3d/ThreeRenderable.d.ts +40 -0
  5. package/3d/WGPURenderer.d.ts +61 -0
  6. package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
  7. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
  8. package/3d/animation/SpriteAnimator.d.ts +124 -0
  9. package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
  10. package/3d/canvas.d.ts +44 -0
  11. package/3d/index.d.ts +12 -0
  12. package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
  13. package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
  14. package/3d/physics/physics-interface.d.ts +27 -0
  15. package/3d.d.ts +2 -0
  16. package/3d.js +2805 -0
  17. package/3d.js.map +22 -0
  18. package/LICENSE +21 -0
  19. package/README.md +59 -0
  20. package/Renderable.d.ts +334 -0
  21. package/animation/Timeline.d.ts +126 -0
  22. package/ansi.d.ts +13 -0
  23. package/assets/javascript/highlights.scm +205 -0
  24. package/assets/javascript/tree-sitter-javascript.wasm +0 -0
  25. package/assets/markdown/highlights.scm +150 -0
  26. package/assets/markdown/injections.scm +27 -0
  27. package/assets/markdown/tree-sitter-markdown.wasm +0 -0
  28. package/assets/markdown_inline/highlights.scm +115 -0
  29. package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  30. package/assets/typescript/highlights.scm +604 -0
  31. package/assets/typescript/tree-sitter-typescript.wasm +0 -0
  32. package/assets/zig/highlights.scm +284 -0
  33. package/assets/zig/tree-sitter-zig.wasm +0 -0
  34. package/buffer.d.ts +98 -0
  35. package/console.d.ts +140 -0
  36. package/edit-buffer.d.ts +98 -0
  37. package/editor-view.d.ts +73 -0
  38. package/index-cgvb25mm.js +14921 -0
  39. package/index-cgvb25mm.js.map +56 -0
  40. package/index.d.ts +17 -0
  41. package/index.js +9331 -0
  42. package/index.js.map +37 -0
  43. package/lib/KeyHandler.d.ts +61 -0
  44. package/lib/RGBA.d.ts +27 -0
  45. package/lib/ascii.font.d.ts +508 -0
  46. package/lib/border.d.ts +49 -0
  47. package/lib/bunfs.d.ts +7 -0
  48. package/lib/clipboard.d.ts +17 -0
  49. package/lib/data-paths.d.ts +26 -0
  50. package/lib/debounce.d.ts +42 -0
  51. package/lib/env.d.ts +42 -0
  52. package/lib/extmarks-history.d.ts +17 -0
  53. package/lib/extmarks.d.ts +89 -0
  54. package/lib/hast-styled-text.d.ts +17 -0
  55. package/lib/index.d.ts +18 -0
  56. package/lib/keymapping.d.ts +25 -0
  57. package/lib/objects-in-viewport.d.ts +24 -0
  58. package/lib/output.capture.d.ts +24 -0
  59. package/lib/parse.keypress-kitty.d.ts +2 -0
  60. package/lib/parse.keypress.d.ts +26 -0
  61. package/lib/parse.mouse.d.ts +23 -0
  62. package/lib/queue.d.ts +15 -0
  63. package/lib/renderable.validations.d.ts +12 -0
  64. package/lib/scroll-acceleration.d.ts +43 -0
  65. package/lib/selection.d.ts +63 -0
  66. package/lib/singleton.d.ts +7 -0
  67. package/lib/stdin-buffer.d.ts +44 -0
  68. package/lib/styled-text.d.ts +63 -0
  69. package/lib/terminal-capability-detection.d.ts +30 -0
  70. package/lib/terminal-palette.d.ts +43 -0
  71. package/lib/tree-sitter/assets/update.d.ts +11 -0
  72. package/lib/tree-sitter/client.d.ts +47 -0
  73. package/lib/tree-sitter/default-parsers.d.ts +2 -0
  74. package/lib/tree-sitter/download-utils.d.ts +21 -0
  75. package/lib/tree-sitter/index.d.ts +8 -0
  76. package/lib/tree-sitter/parser.worker.d.ts +1 -0
  77. package/lib/tree-sitter/parsers-config.d.ts +38 -0
  78. package/lib/tree-sitter/resolve-ft.d.ts +2 -0
  79. package/lib/tree-sitter/types.d.ts +81 -0
  80. package/lib/tree-sitter-styled-text.d.ts +14 -0
  81. package/lib/validate-dir-name.d.ts +1 -0
  82. package/lib/yoga.options.d.ts +32 -0
  83. package/package.json +67 -0
  84. package/parser.worker.js +855 -0
  85. package/parser.worker.js.map +12 -0
  86. package/post/filters.d.ts +105 -0
  87. package/renderables/ASCIIFont.d.ts +52 -0
  88. package/renderables/Box.d.ts +72 -0
  89. package/renderables/Code.d.ts +66 -0
  90. package/renderables/Diff.d.ts +185 -0
  91. package/renderables/EditBufferRenderable.d.ts +162 -0
  92. package/renderables/FrameBuffer.d.ts +16 -0
  93. package/renderables/Input.d.ts +60 -0
  94. package/renderables/LineNumberRenderable.d.ts +111 -0
  95. package/renderables/Markdown.d.ts +98 -0
  96. package/renderables/ScrollBar.d.ts +77 -0
  97. package/renderables/ScrollBox.d.ts +116 -0
  98. package/renderables/Select.d.ts +115 -0
  99. package/renderables/Slider.d.ts +44 -0
  100. package/renderables/TabSelect.d.ts +96 -0
  101. package/renderables/Text.d.ts +36 -0
  102. package/renderables/TextBufferRenderable.d.ts +103 -0
  103. package/renderables/TextNode.d.ts +91 -0
  104. package/renderables/Textarea.d.ts +114 -0
  105. package/renderables/__tests__/renderable-test-utils.d.ts +7 -0
  106. package/renderables/composition/VRenderable.d.ts +16 -0
  107. package/renderables/composition/constructs.d.ts +35 -0
  108. package/renderables/composition/vnode.d.ts +46 -0
  109. package/renderables/index.d.ts +20 -0
  110. package/renderables/markdown-parser.d.ts +10 -0
  111. package/renderer.d.ts +370 -0
  112. package/syntax-style.d.ts +54 -0
  113. package/testing/mock-keys.d.ts +80 -0
  114. package/testing/mock-mouse.d.ts +38 -0
  115. package/testing/mock-tree-sitter-client.d.ts +23 -0
  116. package/testing/spy.d.ts +7 -0
  117. package/testing/test-recorder.d.ts +61 -0
  118. package/testing/test-renderer.d.ts +23 -0
  119. package/testing.d.ts +6 -0
  120. package/testing.js +670 -0
  121. package/testing.js.map +15 -0
  122. package/text-buffer-view.d.ts +42 -0
  123. package/text-buffer.d.ts +67 -0
  124. package/types.d.ts +120 -0
  125. package/utils.d.ts +14 -0
  126. package/zig-structs.d.ts +42 -0
  127. package/zig.d.ts +326 -0
@@ -0,0 +1,162 @@
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";
9
+ export interface CursorChangeEvent {
10
+ line: number;
11
+ visualColumn: number;
12
+ }
13
+ export interface ContentChangeEvent {
14
+ }
15
+ export interface EditBufferOptions extends RenderableOptions<EditBufferRenderable> {
16
+ textColor?: string | RGBA;
17
+ backgroundColor?: string | RGBA;
18
+ selectionBg?: string | RGBA;
19
+ selectionFg?: string | RGBA;
20
+ selectable?: boolean;
21
+ attributes?: number;
22
+ wrapMode?: "none" | "char" | "word";
23
+ scrollMargin?: number;
24
+ scrollSpeed?: number;
25
+ showCursor?: boolean;
26
+ cursorColor?: string | RGBA;
27
+ cursorStyle?: CursorStyleOptions;
28
+ syntaxStyle?: SyntaxStyle;
29
+ tabIndicator?: string | number;
30
+ tabIndicatorColor?: string | RGBA;
31
+ onCursorChange?: (event: CursorChangeEvent) => void;
32
+ onContentChange?: (event: ContentChangeEvent) => void;
33
+ }
34
+ export declare abstract class EditBufferRenderable extends Renderable implements LineInfoProvider {
35
+ protected _focusable: boolean;
36
+ selectable: boolean;
37
+ protected _textColor: RGBA;
38
+ protected _backgroundColor: RGBA;
39
+ protected _defaultAttributes: number;
40
+ protected _selectionBg: RGBA | undefined;
41
+ protected _selectionFg: RGBA | undefined;
42
+ protected _wrapMode: "none" | "char" | "word";
43
+ protected _scrollMargin: number;
44
+ protected _showCursor: boolean;
45
+ protected _cursorColor: RGBA;
46
+ protected _cursorStyle: CursorStyleOptions;
47
+ protected lastLocalSelection: LocalSelectionBounds | null;
48
+ protected _tabIndicator?: string | number;
49
+ protected _tabIndicatorColor?: RGBA;
50
+ private _cursorChangeListener;
51
+ private _contentChangeListener;
52
+ private _autoScrollVelocity;
53
+ private _autoScrollAccumulator;
54
+ private _scrollSpeed;
55
+ private _keyboardSelectionActive;
56
+ readonly editBuffer: EditBuffer;
57
+ readonly editorView: EditorView;
58
+ protected _defaultOptions: {
59
+ textColor: RGBA;
60
+ backgroundColor: string;
61
+ selectionBg: undefined;
62
+ selectionFg: undefined;
63
+ selectable: true;
64
+ attributes: number;
65
+ wrapMode: "none" | "char" | "word";
66
+ scrollMargin: number;
67
+ scrollSpeed: number;
68
+ showCursor: true;
69
+ cursorColor: RGBA;
70
+ cursorStyle: {
71
+ style: "block";
72
+ blinking: true;
73
+ };
74
+ tabIndicator: undefined;
75
+ tabIndicatorColor: undefined;
76
+ };
77
+ constructor(ctx: RenderContext, options: EditBufferOptions);
78
+ get lineInfo(): LineInfo;
79
+ private setupEventListeners;
80
+ get lineCount(): number;
81
+ get virtualLineCount(): number;
82
+ get scrollY(): number;
83
+ get plainText(): string;
84
+ get logicalCursor(): LogicalCursor;
85
+ get visualCursor(): VisualCursor;
86
+ get cursorOffset(): number;
87
+ set cursorOffset(offset: number);
88
+ get textColor(): RGBA;
89
+ set textColor(value: RGBA | string | undefined);
90
+ get selectionBg(): RGBA | undefined;
91
+ set selectionBg(value: RGBA | string | undefined);
92
+ get selectionFg(): RGBA | undefined;
93
+ set selectionFg(value: RGBA | string | undefined);
94
+ get backgroundColor(): RGBA;
95
+ set backgroundColor(value: RGBA | string | undefined);
96
+ get attributes(): number;
97
+ set attributes(value: number);
98
+ get wrapMode(): "none" | "char" | "word";
99
+ set wrapMode(value: "none" | "char" | "word");
100
+ get showCursor(): boolean;
101
+ set showCursor(value: boolean);
102
+ get cursorColor(): RGBA;
103
+ set cursorColor(value: RGBA | string);
104
+ get cursorStyle(): CursorStyleOptions;
105
+ set cursorStyle(style: CursorStyleOptions);
106
+ get tabIndicator(): string | number | undefined;
107
+ set tabIndicator(value: string | number | undefined);
108
+ get tabIndicatorColor(): RGBA | undefined;
109
+ set tabIndicatorColor(value: RGBA | string | undefined);
110
+ get scrollSpeed(): number;
111
+ set scrollSpeed(value: number);
112
+ protected onMouseEvent(event: any): void;
113
+ protected handleScroll(event: any): void;
114
+ protected onResize(width: number, height: number): void;
115
+ protected refreshLocalSelection(): boolean;
116
+ private updateLocalSelection;
117
+ shouldStartSelection(x: number, y: number): boolean;
118
+ onSelectionChanged(selection: Selection | null): boolean;
119
+ protected onUpdate(deltaTime: number): void;
120
+ getSelectedText(): string;
121
+ hasSelection(): boolean;
122
+ getSelection(): {
123
+ start: number;
124
+ end: number;
125
+ } | null;
126
+ private setupMeasureFunc;
127
+ render(buffer: OptimizedBuffer, deltaTime: number): void;
128
+ protected renderSelf(buffer: OptimizedBuffer): void;
129
+ protected renderCursor(buffer: OptimizedBuffer): void;
130
+ focus(): void;
131
+ blur(): void;
132
+ protected onRemove(): void;
133
+ destroy(): void;
134
+ set onCursorChange(handler: ((event: CursorChangeEvent) => void) | undefined);
135
+ get onCursorChange(): ((event: CursorChangeEvent) => void) | undefined;
136
+ set onContentChange(handler: ((event: ContentChangeEvent) => void) | undefined);
137
+ get onContentChange(): ((event: ContentChangeEvent) => void) | undefined;
138
+ get syntaxStyle(): SyntaxStyle | null;
139
+ set syntaxStyle(style: SyntaxStyle | null);
140
+ addHighlight(lineIdx: number, highlight: Highlight): void;
141
+ addHighlightByCharRange(highlight: Highlight): void;
142
+ removeHighlightsByRef(hlRef: number): void;
143
+ clearLineHighlights(lineIdx: number): void;
144
+ clearAllHighlights(): void;
145
+ getLineHighlights(lineIdx: number): Array<Highlight>;
146
+ /**
147
+ * Set text and completely reset the buffer state (clears history, resets add_buffer).
148
+ * Use this for initial text setting or when you want a clean slate.
149
+ */
150
+ setText(text: string): void;
151
+ /**
152
+ * Replace text while preserving undo history (creates an undo point).
153
+ * Use this when you want the setText operation to be undoable.
154
+ */
155
+ replaceText(text: string): void;
156
+ clear(): void;
157
+ deleteRange(startLine: number, startCol: number, endLine: number, endCol: number): void;
158
+ insertText(text: string): void;
159
+ getTextRange(startOffset: number, endOffset: number): string;
160
+ getTextRangeByCoords(startRow: number, startCol: number, endRow: number, endCol: number): string;
161
+ protected updateSelectionForMovement(shiftPressed: boolean, isBeforeMovement: boolean): void;
162
+ }
@@ -0,0 +1,16 @@
1
+ import { type RenderableOptions, Renderable } from "../Renderable";
2
+ import { OptimizedBuffer } from "../buffer";
3
+ import type { RenderContext } from "../types";
4
+ export interface FrameBufferOptions extends RenderableOptions<FrameBufferRenderable> {
5
+ width: number;
6
+ height: number;
7
+ respectAlpha?: boolean;
8
+ }
9
+ export declare class FrameBufferRenderable extends Renderable {
10
+ frameBuffer: OptimizedBuffer;
11
+ protected respectAlpha: boolean;
12
+ constructor(ctx: RenderContext, options: FrameBufferOptions);
13
+ protected onResize(width: number, height: number): void;
14
+ protected renderSelf(buffer: OptimizedBuffer): void;
15
+ protected destroySelf(): void;
16
+ }
@@ -0,0 +1,60 @@
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";
4
+ export type InputAction = TextareaAction;
5
+ export type InputKeyBinding = TextareaKeyBinding;
6
+ export interface InputRenderableOptions extends Omit<TextareaOptions, "height" | "minHeight" | "maxHeight" | "initialValue"> {
7
+ /** Initial text value (newlines are stripped) */
8
+ value?: string;
9
+ /** Maximum number of characters allowed */
10
+ maxLength?: number;
11
+ /** Placeholder text (Input only supports string, not StyledText) */
12
+ placeholder?: string;
13
+ }
14
+ export declare enum InputRenderableEvents {
15
+ INPUT = "input",
16
+ CHANGE = "change",
17
+ ENTER = "enter"
18
+ }
19
+ /**
20
+ * InputRenderable - A single-line text input component.
21
+ *
22
+ * Extends TextareaRenderable with single-line constraints:
23
+ * - Height is always 1
24
+ * - No text wrapping
25
+ * - Newlines are stripped from input
26
+ * - Enter key submits instead of inserting newline
27
+ *
28
+ * Inherits all keybindings from TextareaRenderable.
29
+ */
30
+ export declare class InputRenderable extends TextareaRenderable {
31
+ private _maxLength;
32
+ private _lastCommittedValue;
33
+ private static readonly defaultOptions;
34
+ constructor(ctx: RenderContext, options: InputRenderableOptions);
35
+ /**
36
+ * Prevent newlines in single-line input
37
+ */
38
+ newLine(): boolean;
39
+ /**
40
+ * Handle paste - strip newlines and enforce maxLength
41
+ */
42
+ handlePaste(event: PasteEvent): void;
43
+ /**
44
+ * Insert text - strip newlines and enforce maxLength
45
+ */
46
+ insertText(text: string): void;
47
+ get value(): string;
48
+ set value(value: string);
49
+ focus(): void;
50
+ blur(): void;
51
+ submit(): boolean;
52
+ deleteCharBackward(): boolean;
53
+ deleteChar(): boolean;
54
+ deleteCharacter(direction: "backward" | "forward"): void;
55
+ set maxLength(maxLength: number);
56
+ get maxLength(): number;
57
+ set placeholder(placeholder: string);
58
+ get placeholder(): string;
59
+ set initialValue(value: string);
60
+ }
@@ -0,0 +1,111 @@
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";
5
+ export interface LineSign {
6
+ before?: string;
7
+ beforeColor?: string | RGBA;
8
+ after?: string;
9
+ afterColor?: string | RGBA;
10
+ }
11
+ export interface LineColorConfig {
12
+ gutter?: string | RGBA;
13
+ content?: string | RGBA;
14
+ }
15
+ /**
16
+ * Represents a highlighted span within a line for word-level diff highlighting.
17
+ */
18
+ export interface LineInlineHighlight {
19
+ /** Starting column (0-based, in display characters) */
20
+ startCol: number;
21
+ /** Ending column (exclusive, in display characters) */
22
+ endCol: number;
23
+ /** Background color for this highlight */
24
+ bg: RGBA;
25
+ }
26
+ export interface LineNumberOptions extends RenderableOptions<LineNumberRenderable> {
27
+ target?: Renderable & LineInfoProvider;
28
+ fg?: string | RGBA;
29
+ bg?: string | RGBA;
30
+ minWidth?: number;
31
+ paddingRight?: number;
32
+ lineColors?: Map<number, string | RGBA | LineColorConfig>;
33
+ lineSigns?: Map<number, LineSign>;
34
+ lineNumberOffset?: number;
35
+ hideLineNumbers?: Set<number>;
36
+ lineNumbers?: Map<number, number>;
37
+ showLineNumbers?: boolean;
38
+ /** Inline highlights for word-level diff highlighting (per logical line) */
39
+ inlineHighlights?: Map<number, LineInlineHighlight[]>;
40
+ }
41
+ export declare class LineNumberRenderable extends Renderable {
42
+ private gutter;
43
+ private target;
44
+ private _lineColorsGutter;
45
+ private _lineColorsContent;
46
+ private _lineSigns;
47
+ private _inlineHighlights;
48
+ private _fg;
49
+ private _bg;
50
+ private _minWidth;
51
+ private _paddingRight;
52
+ private _lineNumberOffset;
53
+ private _hideLineNumbers;
54
+ private _lineNumbers;
55
+ private _isDestroying;
56
+ private handleLineInfoChange;
57
+ private parseLineColor;
58
+ constructor(ctx: RenderContext, options: LineNumberOptions);
59
+ private setTarget;
60
+ add(child: Renderable): number;
61
+ remove(id: string): void;
62
+ destroyRecursively(): void;
63
+ clearTarget(): void;
64
+ protected renderSelf(buffer: OptimizedBuffer): void;
65
+ set showLineNumbers(value: boolean);
66
+ get showLineNumbers(): boolean;
67
+ setLineColor(line: number, color: string | RGBA | LineColorConfig): void;
68
+ clearLineColor(line: number): void;
69
+ clearAllLineColors(): void;
70
+ setLineColors(lineColors: Map<number, string | RGBA | LineColorConfig>): void;
71
+ getLineColors(): {
72
+ gutter: Map<number, RGBA>;
73
+ content: Map<number, RGBA>;
74
+ };
75
+ setLineSign(line: number, sign: LineSign): void;
76
+ clearLineSign(line: number): void;
77
+ clearAllLineSigns(): void;
78
+ setLineSigns(lineSigns: Map<number, LineSign>): void;
79
+ getLineSigns(): Map<number, LineSign>;
80
+ set lineNumberOffset(value: number);
81
+ get lineNumberOffset(): number;
82
+ setHideLineNumbers(hideLineNumbers: Set<number>): void;
83
+ getHideLineNumbers(): Set<number>;
84
+ setLineNumbers(lineNumbers: Map<number, number>): void;
85
+ getLineNumbers(): Map<number, number>;
86
+ /**
87
+ * Sets inline highlights for word-level diff highlighting.
88
+ *
89
+ * @param inlineHighlights - Map from logical line index to array of highlights
90
+ */
91
+ setInlineHighlights(inlineHighlights: Map<number, LineInlineHighlight[]>): void;
92
+ /**
93
+ * Gets the current inline highlights.
94
+ */
95
+ getInlineHighlights(): Map<number, LineInlineHighlight[]>;
96
+ /**
97
+ * Clears all inline highlights.
98
+ */
99
+ clearInlineHighlights(): void;
100
+ /**
101
+ * Sets inline highlights for a specific line.
102
+ *
103
+ * @param line - Logical line index
104
+ * @param highlights - Array of highlights for this line
105
+ */
106
+ setLineInlineHighlights(line: number, highlights: LineInlineHighlight[]): void;
107
+ /**
108
+ * Clears inline highlights for a specific line.
109
+ */
110
+ clearLineInlineHighlights(line: number): void;
111
+ }
@@ -0,0 +1,98 @@
1
+ import { Renderable, type RenderableOptions } from "../Renderable";
2
+ import { type RenderContext } from "../types";
3
+ import { SyntaxStyle } from "../syntax-style";
4
+ import { type MarkedToken, type Token } from "marked";
5
+ import type { TreeSitterClient } from "../lib/tree-sitter";
6
+ import { type ParseState } from "./markdown-parser";
7
+ import type { OptimizedBuffer } from "../buffer";
8
+ export interface MarkdownOptions extends RenderableOptions<MarkdownRenderable> {
9
+ content?: string;
10
+ syntaxStyle: SyntaxStyle;
11
+ conceal?: boolean;
12
+ treeSitterClient?: TreeSitterClient;
13
+ /**
14
+ * Enable streaming mode for incremental content updates.
15
+ * When true, trailing tokens are kept unstable to handle incomplete content.
16
+ */
17
+ streaming?: boolean;
18
+ /**
19
+ * Custom node renderer. Return a Renderable to override default rendering,
20
+ * or undefined/null to use default rendering.
21
+ */
22
+ renderNode?: (token: Token, context: RenderNodeContext) => Renderable | undefined | null;
23
+ }
24
+ export interface RenderNodeContext {
25
+ syntaxStyle: SyntaxStyle;
26
+ conceal: boolean;
27
+ treeSitterClient?: TreeSitterClient;
28
+ /** Creates default renderable for this token */
29
+ defaultRender: () => Renderable | null;
30
+ }
31
+ export interface BlockState {
32
+ token: MarkedToken;
33
+ tokenRaw: string;
34
+ renderable: Renderable;
35
+ }
36
+ export type { ParseState };
37
+ export declare class MarkdownRenderable extends Renderable {
38
+ private _content;
39
+ private _syntaxStyle;
40
+ private _conceal;
41
+ private _treeSitterClient?;
42
+ private _renderNode?;
43
+ _parseState: ParseState | null;
44
+ private _streaming;
45
+ _blockStates: BlockState[];
46
+ private _styleDirty;
47
+ protected _contentDefaultOptions: {
48
+ content: string;
49
+ conceal: true;
50
+ streaming: false;
51
+ };
52
+ constructor(ctx: RenderContext, options: MarkdownOptions);
53
+ get content(): string;
54
+ set content(value: string);
55
+ get syntaxStyle(): SyntaxStyle;
56
+ set syntaxStyle(value: SyntaxStyle);
57
+ get conceal(): boolean;
58
+ set conceal(value: boolean);
59
+ get streaming(): boolean;
60
+ set streaming(value: boolean);
61
+ private getStyle;
62
+ private createChunk;
63
+ private createDefaultChunk;
64
+ private renderInlineContent;
65
+ private renderInlineToken;
66
+ private renderInlineTokenWithStyle;
67
+ private renderHeadingChunks;
68
+ private renderParagraphChunks;
69
+ private renderThematicBreakChunks;
70
+ private renderTokenToChunks;
71
+ private createBlockRenderable;
72
+ private createTextRenderable;
73
+ private createCodeRenderable;
74
+ private createListRenderable;
75
+ /**
76
+ * Update an existing table renderable in-place for style/conceal changes.
77
+ * Much faster than rebuilding the entire table structure.
78
+ */
79
+ private updateTableRenderable;
80
+ private createTableRenderable;
81
+ private getBlockMarginBottom;
82
+ private getTableRowsToRender;
83
+ private getTableRenderableRowCount;
84
+ private createBlockquoteRenderable;
85
+ private addBlockquoteChildren;
86
+ private updateBlockquoteRenderable;
87
+ private createDefaultRenderable;
88
+ private updateBlockRenderable;
89
+ private updateBlocks;
90
+ private clearBlockStates;
91
+ /**
92
+ * Re-render existing blocks without rebuilding the parse state or block structure.
93
+ * Used when only style/conceal changes - much faster than full rebuild.
94
+ */
95
+ private rerenderBlocks;
96
+ clearCache(): void;
97
+ protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void;
98
+ }
@@ -0,0 +1,77 @@
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";
7
+ export interface ScrollBarOptions extends RenderableOptions<ScrollBarRenderable> {
8
+ orientation: "vertical" | "horizontal";
9
+ showArrows?: boolean;
10
+ arrowOptions?: Omit<ArrowOptions, "direction">;
11
+ trackOptions?: Partial<SliderOptions>;
12
+ onChange?: (position: number) => void;
13
+ }
14
+ export type ScrollUnit = "absolute" | "viewport" | "content" | "step";
15
+ export declare class ScrollBarRenderable extends Renderable {
16
+ readonly slider: SliderRenderable;
17
+ readonly startArrow: ArrowRenderable;
18
+ readonly endArrow: ArrowRenderable;
19
+ readonly orientation: "vertical" | "horizontal";
20
+ protected _focusable: boolean;
21
+ private _scrollSize;
22
+ private _scrollPosition;
23
+ private _viewportSize;
24
+ private _showArrows;
25
+ private _manualVisibility;
26
+ private _onChange;
27
+ scrollStep: number | undefined | null;
28
+ get visible(): boolean;
29
+ set visible(value: boolean);
30
+ resetVisibilityControl(): void;
31
+ get scrollSize(): number;
32
+ get scrollPosition(): number;
33
+ get viewportSize(): number;
34
+ set scrollSize(value: number);
35
+ set scrollPosition(value: number);
36
+ set viewportSize(value: number);
37
+ get showArrows(): boolean;
38
+ set showArrows(value: boolean);
39
+ constructor(ctx: RenderContext, { trackOptions, arrowOptions, orientation, showArrows, ...options }: ScrollBarOptions);
40
+ set arrowOptions(options: ScrollBarOptions["arrowOptions"]);
41
+ set trackOptions(options: ScrollBarOptions["trackOptions"]);
42
+ private updateSliderFromScrollState;
43
+ scrollBy(delta: number, unit?: ScrollUnit): void;
44
+ private recalculateVisibility;
45
+ handleKeyPress(key: KeyEvent): boolean;
46
+ }
47
+ export interface ArrowOptions extends RenderableOptions<ArrowRenderable> {
48
+ direction: "up" | "down" | "left" | "right";
49
+ foregroundColor?: ColorInput;
50
+ backgroundColor?: ColorInput;
51
+ attributes?: number;
52
+ arrowChars?: {
53
+ up?: string;
54
+ down?: string;
55
+ left?: string;
56
+ right?: string;
57
+ };
58
+ }
59
+ export declare class ArrowRenderable extends Renderable {
60
+ private _direction;
61
+ private _foregroundColor;
62
+ private _backgroundColor;
63
+ private _attributes;
64
+ private _arrowChars;
65
+ constructor(ctx: RenderContext, options: ArrowOptions);
66
+ get direction(): "up" | "down" | "left" | "right";
67
+ set direction(value: "up" | "down" | "left" | "right");
68
+ get foregroundColor(): RGBA;
69
+ set foregroundColor(value: ColorInput);
70
+ get backgroundColor(): RGBA;
71
+ set backgroundColor(value: ColorInput);
72
+ get attributes(): number;
73
+ set attributes(value: number);
74
+ set arrowChars(value: ArrowOptions["arrowChars"]);
75
+ protected renderSelf(buffer: OptimizedBuffer): void;
76
+ private getArrowChar;
77
+ }
@@ -0,0 +1,116 @@
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";
9
+ declare class ContentRenderable extends BoxRenderable {
10
+ private viewport;
11
+ private _viewportCulling;
12
+ constructor(ctx: RenderContext, viewport: BoxRenderable, viewportCulling: boolean, options: RenderableOptions<BoxRenderable>);
13
+ get viewportCulling(): boolean;
14
+ set viewportCulling(value: boolean);
15
+ protected _getVisibleChildren(): number[];
16
+ }
17
+ export interface ScrollBoxOptions extends BoxOptions<ScrollBoxRenderable> {
18
+ rootOptions?: BoxOptions;
19
+ wrapperOptions?: BoxOptions;
20
+ viewportOptions?: BoxOptions;
21
+ contentOptions?: BoxOptions;
22
+ scrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
23
+ verticalScrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
24
+ horizontalScrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
25
+ stickyScroll?: boolean;
26
+ stickyStart?: "bottom" | "top" | "left" | "right";
27
+ scrollX?: boolean;
28
+ scrollY?: boolean;
29
+ scrollAcceleration?: ScrollAcceleration;
30
+ viewportCulling?: boolean;
31
+ }
32
+ export declare class ScrollBoxRenderable extends BoxRenderable {
33
+ static idCounter: number;
34
+ private internalId;
35
+ readonly wrapper: BoxRenderable;
36
+ readonly viewport: BoxRenderable;
37
+ readonly content: ContentRenderable;
38
+ readonly horizontalScrollBar: ScrollBarRenderable;
39
+ readonly verticalScrollBar: ScrollBarRenderable;
40
+ protected _focusable: boolean;
41
+ private selectionListener?;
42
+ private autoScrollMouseX;
43
+ private autoScrollMouseY;
44
+ private readonly autoScrollThresholdVertical;
45
+ private readonly autoScrollThresholdHorizontal;
46
+ private readonly autoScrollSpeedSlow;
47
+ private readonly autoScrollSpeedMedium;
48
+ private readonly autoScrollSpeedFast;
49
+ private isAutoScrolling;
50
+ private cachedAutoScrollSpeed;
51
+ private autoScrollAccumulatorX;
52
+ private autoScrollAccumulatorY;
53
+ private scrollAccumulatorX;
54
+ private scrollAccumulatorY;
55
+ private _stickyScroll;
56
+ private _stickyScrollTop;
57
+ private _stickyScrollBottom;
58
+ private _stickyScrollLeft;
59
+ private _stickyScrollRight;
60
+ private _stickyStart?;
61
+ private _hasManualScroll;
62
+ private _isApplyingStickyScroll;
63
+ private scrollAccel;
64
+ get stickyScroll(): boolean;
65
+ set stickyScroll(value: boolean);
66
+ get stickyStart(): "bottom" | "top" | "left" | "right" | undefined;
67
+ set stickyStart(value: "bottom" | "top" | "left" | "right" | undefined);
68
+ get scrollTop(): number;
69
+ set scrollTop(value: number);
70
+ get scrollLeft(): number;
71
+ set scrollLeft(value: number);
72
+ get scrollWidth(): number;
73
+ get scrollHeight(): number;
74
+ private updateStickyState;
75
+ private applyStickyStart;
76
+ constructor(ctx: RenderContext, { wrapperOptions, viewportOptions, contentOptions, rootOptions, scrollbarOptions, verticalScrollbarOptions, horizontalScrollbarOptions, stickyScroll, stickyStart, scrollX, scrollY, scrollAcceleration, viewportCulling, ...options }: ScrollBoxOptions);
77
+ protected onUpdate(deltaTime: number): void;
78
+ scrollBy(delta: number | {
79
+ x: number;
80
+ y: number;
81
+ }, unit?: ScrollUnit): void;
82
+ scrollTo(position: number | {
83
+ x: number;
84
+ y: number;
85
+ }): void;
86
+ private isAtStickyPosition;
87
+ add(obj: Renderable | VNode<any, any[]>, index?: number): number;
88
+ insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number;
89
+ remove(id: string): void;
90
+ getChildren(): Renderable[];
91
+ protected onMouseEvent(event: MouseEvent): void;
92
+ handleKeyPress(key: KeyEvent): boolean;
93
+ private resetScrollAccumulators;
94
+ startAutoScroll(mouseX: number, mouseY: number): void;
95
+ updateAutoScroll(mouseX: number, mouseY: number): void;
96
+ stopAutoScroll(): void;
97
+ private hasOtherLiveReasons;
98
+ private handleAutoScroll;
99
+ private getAutoScrollDirectionX;
100
+ private getAutoScrollDirectionY;
101
+ private getAutoScrollSpeed;
102
+ private recalculateBarProps;
103
+ set rootOptions(options: ScrollBoxOptions["rootOptions"]);
104
+ set wrapperOptions(options: ScrollBoxOptions["wrapperOptions"]);
105
+ set viewportOptions(options: ScrollBoxOptions["viewportOptions"]);
106
+ set contentOptions(options: ScrollBoxOptions["contentOptions"]);
107
+ set scrollbarOptions(options: ScrollBoxOptions["scrollbarOptions"]);
108
+ set verticalScrollbarOptions(options: ScrollBoxOptions["verticalScrollbarOptions"]);
109
+ set horizontalScrollbarOptions(options: ScrollBoxOptions["horizontalScrollbarOptions"]);
110
+ get scrollAcceleration(): ScrollAcceleration;
111
+ set scrollAcceleration(value: ScrollAcceleration);
112
+ get viewportCulling(): boolean;
113
+ set viewportCulling(value: boolean);
114
+ protected destroySelf(): void;
115
+ }
116
+ export {};