@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,284 @@
1
+ ; Query from: https://github.com/nvim-treesitter/nvim-treesitter/raw/refs/heads/master/queries/zig/highlights.scm
2
+ ; Variables
3
+ (identifier) @variable
4
+
5
+ ; Parameters
6
+ (parameter
7
+ name: (identifier) @variable.parameter)
8
+
9
+ (payload
10
+ (identifier) @variable.parameter)
11
+
12
+ ; Types
13
+ (parameter
14
+ type: (identifier) @type)
15
+
16
+ ((identifier) @type
17
+ (#lua-match? @type "^[A-Z_][a-zA-Z0-9_]*"))
18
+
19
+ (variable_declaration
20
+ (identifier) @type
21
+ "="
22
+ [
23
+ (struct_declaration)
24
+ (enum_declaration)
25
+ (union_declaration)
26
+ (opaque_declaration)
27
+ ])
28
+
29
+ [
30
+ (builtin_type)
31
+ "anyframe"
32
+ ] @type.builtin
33
+
34
+ ; Constants
35
+ ((identifier) @constant
36
+ (#lua-match? @constant "^[A-Z][A-Z_0-9]+$"))
37
+
38
+ [
39
+ "null"
40
+ "unreachable"
41
+ "undefined"
42
+ ] @constant.builtin
43
+
44
+ (field_expression
45
+ .
46
+ member: (identifier) @constant)
47
+
48
+ (enum_declaration
49
+ (container_field
50
+ type: (identifier) @constant))
51
+
52
+ ; Labels
53
+ (block_label
54
+ (identifier) @label)
55
+
56
+ (break_label
57
+ (identifier) @label)
58
+
59
+ ; Fields
60
+ (field_initializer
61
+ .
62
+ (identifier) @variable.member)
63
+
64
+ (field_expression
65
+ (_)
66
+ member: (identifier) @variable.member)
67
+
68
+ (container_field
69
+ name: (identifier) @variable.member)
70
+
71
+ (initializer_list
72
+ (assignment_expression
73
+ left: (field_expression
74
+ .
75
+ member: (identifier) @variable.member)))
76
+
77
+ ; Functions
78
+ (builtin_identifier) @function.builtin
79
+
80
+ (call_expression
81
+ function: (identifier) @function.call)
82
+
83
+ (call_expression
84
+ function: (field_expression
85
+ member: (identifier) @function.call))
86
+
87
+ (function_declaration
88
+ name: (identifier) @function)
89
+
90
+ ; Modules
91
+ (variable_declaration
92
+ (identifier) @module
93
+ (builtin_function
94
+ (builtin_identifier) @keyword.import
95
+ (#any-of? @keyword.import "@import" "@cImport")))
96
+
97
+ ; Builtins
98
+ [
99
+ "c"
100
+ "..."
101
+ ] @variable.builtin
102
+
103
+ ((identifier) @variable.builtin
104
+ (#eq? @variable.builtin "_"))
105
+
106
+ (calling_convention
107
+ (identifier) @variable.builtin)
108
+
109
+ ; Keywords
110
+ [
111
+ "asm"
112
+ "defer"
113
+ "errdefer"
114
+ "test"
115
+ "error"
116
+ "const"
117
+ "var"
118
+ ] @keyword
119
+
120
+ [
121
+ "struct"
122
+ "union"
123
+ "enum"
124
+ "opaque"
125
+ ] @keyword.type
126
+
127
+ [
128
+ "async"
129
+ "await"
130
+ "suspend"
131
+ "nosuspend"
132
+ "resume"
133
+ ] @keyword.coroutine
134
+
135
+ "fn" @keyword.function
136
+
137
+ [
138
+ "and"
139
+ "or"
140
+ "orelse"
141
+ ] @keyword.operator
142
+
143
+ "return" @keyword.return
144
+
145
+ [
146
+ "if"
147
+ "else"
148
+ "switch"
149
+ ] @keyword.conditional
150
+
151
+ [
152
+ "for"
153
+ "while"
154
+ "break"
155
+ "continue"
156
+ ] @keyword.repeat
157
+
158
+ [
159
+ "usingnamespace"
160
+ "export"
161
+ ] @keyword.import
162
+
163
+ [
164
+ "try"
165
+ "catch"
166
+ ] @keyword.exception
167
+
168
+ [
169
+ "volatile"
170
+ "allowzero"
171
+ "noalias"
172
+ "addrspace"
173
+ "align"
174
+ "callconv"
175
+ "linksection"
176
+ "pub"
177
+ "inline"
178
+ "noinline"
179
+ "extern"
180
+ "comptime"
181
+ "packed"
182
+ "threadlocal"
183
+ ] @keyword.modifier
184
+
185
+ ; Operator
186
+ [
187
+ "="
188
+ "*="
189
+ "*%="
190
+ "*|="
191
+ "/="
192
+ "%="
193
+ "+="
194
+ "+%="
195
+ "+|="
196
+ "-="
197
+ "-%="
198
+ "-|="
199
+ "<<="
200
+ "<<|="
201
+ ">>="
202
+ "&="
203
+ "^="
204
+ "|="
205
+ "!"
206
+ "~"
207
+ "-"
208
+ "-%"
209
+ "&"
210
+ "=="
211
+ "!="
212
+ ">"
213
+ ">="
214
+ "<="
215
+ "<"
216
+ "&"
217
+ "^"
218
+ "|"
219
+ "<<"
220
+ ">>"
221
+ "<<|"
222
+ "+"
223
+ "++"
224
+ "+%"
225
+ "-%"
226
+ "+|"
227
+ "-|"
228
+ "*"
229
+ "/"
230
+ "%"
231
+ "**"
232
+ "*%"
233
+ "*|"
234
+ "||"
235
+ ".*"
236
+ ".?"
237
+ "?"
238
+ ".."
239
+ ] @operator
240
+
241
+ ; Literals
242
+ (character) @character
243
+
244
+ ([
245
+ (string)
246
+ (multiline_string)
247
+ ] @string
248
+ (#set! "priority" 95))
249
+
250
+ (integer) @number
251
+
252
+ (float) @number.float
253
+
254
+ (boolean) @boolean
255
+
256
+ (escape_sequence) @string.escape
257
+
258
+ ; Punctuation
259
+ [
260
+ "["
261
+ "]"
262
+ "("
263
+ ")"
264
+ "{"
265
+ "}"
266
+ ] @punctuation.bracket
267
+
268
+ [
269
+ ";"
270
+ "."
271
+ ","
272
+ ":"
273
+ "=>"
274
+ "->"
275
+ ] @punctuation.delimiter
276
+
277
+ (payload
278
+ "|" @punctuation.bracket)
279
+
280
+ ; Comments
281
+ (comment) @comment @spell
282
+
283
+ ((comment) @comment.documentation
284
+ (#lua-match? @comment.documentation "^//!"))
Binary file
package/buffer.d.ts ADDED
@@ -0,0 +1,98 @@
1
+ import { RGBA } from "./lib";
2
+ import { type RenderLib } from "./zig";
3
+ import { type Pointer } from "bun:ffi";
4
+ import { type BorderStyle, type BorderSides } from "./lib";
5
+ import { type WidthMethod, type CapturedLine } from "./types";
6
+ import type { TextBufferView } from "./text-buffer-view";
7
+ import type { EditorView } from "./editor-view";
8
+ export declare class OptimizedBuffer {
9
+ private static fbIdCounter;
10
+ id: string;
11
+ lib: RenderLib;
12
+ private bufferPtr;
13
+ private _width;
14
+ private _height;
15
+ private _widthMethod;
16
+ respectAlpha: boolean;
17
+ private _rawBuffers;
18
+ private _destroyed;
19
+ get ptr(): Pointer;
20
+ private guard;
21
+ get buffers(): {
22
+ char: Uint32Array;
23
+ fg: Float32Array;
24
+ bg: Float32Array;
25
+ attributes: Uint32Array;
26
+ };
27
+ constructor(lib: RenderLib, ptr: Pointer, width: number, height: number, options: {
28
+ respectAlpha?: boolean;
29
+ id?: string;
30
+ widthMethod?: WidthMethod;
31
+ });
32
+ static create(width: number, height: number, widthMethod: WidthMethod, options?: {
33
+ respectAlpha?: boolean;
34
+ id?: string;
35
+ }): OptimizedBuffer;
36
+ get widthMethod(): WidthMethod;
37
+ get width(): number;
38
+ get height(): number;
39
+ setRespectAlpha(respectAlpha: boolean): void;
40
+ getNativeId(): string;
41
+ getRealCharBytes(addLineBreaks?: boolean): Uint8Array;
42
+ getSpanLines(): CapturedLine[];
43
+ clear(bg?: RGBA): void;
44
+ setCell(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
45
+ setCellWithAlphaBlending(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
46
+ drawText(text: string, x: number, y: number, fg: RGBA, bg?: RGBA, attributes?: number, selection?: {
47
+ start: number;
48
+ end: number;
49
+ bgColor?: RGBA;
50
+ fgColor?: RGBA;
51
+ } | null): void;
52
+ fillRect(x: number, y: number, width: number, height: number, bg: RGBA): void;
53
+ drawFrameBuffer(destX: number, destY: number, frameBuffer: OptimizedBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
54
+ destroy(): void;
55
+ drawTextBuffer(textBufferView: TextBufferView, x: number, y: number): void;
56
+ drawEditorView(editorView: EditorView, x: number, y: number): void;
57
+ drawSuperSampleBuffer(x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number): void;
58
+ drawPackedBuffer(dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number): void;
59
+ drawGrayscaleBuffer(posX: number, posY: number, intensities: Float32Array, srcWidth: number, srcHeight: number, fg?: RGBA | null, bg?: RGBA | null): void;
60
+ drawGrayscaleBufferSupersampled(posX: number, posY: number, intensities: Float32Array, srcWidth: number, srcHeight: number, fg?: RGBA | null, bg?: RGBA | null): void;
61
+ resize(width: number, height: number): void;
62
+ drawBox(options: {
63
+ x: number;
64
+ y: number;
65
+ width: number;
66
+ height: number;
67
+ borderStyle?: BorderStyle;
68
+ customBorderChars?: Uint32Array;
69
+ border: boolean | BorderSides[];
70
+ borderColor: RGBA;
71
+ backgroundColor: RGBA;
72
+ shouldFill?: boolean;
73
+ title?: string;
74
+ titleAlignment?: "left" | "center" | "right";
75
+ }): void;
76
+ pushScissorRect(x: number, y: number, width: number, height: number): void;
77
+ popScissorRect(): void;
78
+ clearScissorRects(): void;
79
+ pushOpacity(opacity: number): void;
80
+ popOpacity(): void;
81
+ getCurrentOpacity(): number;
82
+ clearOpacity(): void;
83
+ encodeUnicode(text: string): {
84
+ ptr: Pointer;
85
+ data: Array<{
86
+ width: number;
87
+ char: number;
88
+ }>;
89
+ } | null;
90
+ freeUnicode(encoded: {
91
+ ptr: Pointer;
92
+ data: Array<{
93
+ width: number;
94
+ char: number;
95
+ }>;
96
+ }): void;
97
+ drawChar(char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number): void;
98
+ }
package/console.d.ts ADDED
@@ -0,0 +1,140 @@
1
+ import { EventEmitter } from "events";
2
+ import type { CliRenderer, ColorInput, MouseEvent } from ".";
3
+ import { OptimizedBuffer } from "./buffer";
4
+ import { Capture } from "./lib/output.capture";
5
+ import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "./lib/keymapping";
6
+ export declare const capture: Capture;
7
+ export declare enum ConsolePosition {
8
+ TOP = "top",
9
+ BOTTOM = "bottom",
10
+ LEFT = "left",
11
+ RIGHT = "right"
12
+ }
13
+ export type ConsoleAction = "scroll-up" | "scroll-down" | "scroll-to-top" | "scroll-to-bottom" | "position-previous" | "position-next" | "size-increase" | "size-decrease" | "save-logs" | "copy-selection";
14
+ export type ConsoleKeyBinding = BaseKeyBinding<ConsoleAction>;
15
+ export interface ConsoleOptions {
16
+ position?: ConsolePosition;
17
+ sizePercent?: number;
18
+ zIndex?: number;
19
+ colorInfo?: ColorInput;
20
+ colorWarn?: ColorInput;
21
+ colorError?: ColorInput;
22
+ colorDebug?: ColorInput;
23
+ colorDefault?: ColorInput;
24
+ backgroundColor?: ColorInput;
25
+ startInDebugMode?: boolean;
26
+ title?: string;
27
+ titleBarColor?: ColorInput;
28
+ titleBarTextColor?: ColorInput;
29
+ cursorColor?: ColorInput;
30
+ maxStoredLogs?: number;
31
+ maxDisplayLines?: number;
32
+ onCopySelection?: (text: string) => void;
33
+ keyBindings?: ConsoleKeyBinding[];
34
+ keyAliasMap?: KeyAliasMap;
35
+ selectionColor?: ColorInput;
36
+ copyButtonColor?: ColorInput;
37
+ }
38
+ export declare class TerminalConsole extends EventEmitter {
39
+ private isVisible;
40
+ private isFocused;
41
+ private renderer;
42
+ private keyHandler;
43
+ private options;
44
+ private _debugModeEnabled;
45
+ private frameBuffer;
46
+ private consoleX;
47
+ private consoleY;
48
+ private consoleWidth;
49
+ private consoleHeight;
50
+ private scrollTopIndex;
51
+ private isScrolledToBottom;
52
+ private currentLineIndex;
53
+ private _displayLines;
54
+ private _allLogEntries;
55
+ private _needsFrameBufferUpdate;
56
+ private _entryListener;
57
+ private _selectionStart;
58
+ private _selectionEnd;
59
+ private _isDragging;
60
+ private _copyButtonBounds;
61
+ private _autoScrollInterval;
62
+ private _keyBindingsMap;
63
+ private _keyAliasMap;
64
+ private _keyBindings;
65
+ private _mergedKeyBindings;
66
+ private _actionHandlers;
67
+ private markNeedsRerender;
68
+ private getCopyButtonLabel;
69
+ private _rgbaInfo;
70
+ private _rgbaWarn;
71
+ private _rgbaError;
72
+ private _rgbaDebug;
73
+ private _rgbaDefault;
74
+ private backgroundColor;
75
+ private _rgbaTitleBar;
76
+ private _rgbaTitleBarText;
77
+ private _title;
78
+ private _rgbaCursor;
79
+ private _rgbaSelection;
80
+ private _rgbaCopyButton;
81
+ private _positions;
82
+ constructor(renderer: CliRenderer, options?: ConsoleOptions);
83
+ private buildActionHandlers;
84
+ activate(): void;
85
+ deactivate(): void;
86
+ private _handleNewLog;
87
+ private _updateConsoleDimensions;
88
+ private handleKeyPress;
89
+ private scrollUp;
90
+ private scrollDown;
91
+ private scrollToTop;
92
+ private scrollToBottomAction;
93
+ private positionPrevious;
94
+ private positionNext;
95
+ private sizeIncrease;
96
+ private sizeDecrease;
97
+ private saveLogsAction;
98
+ private triggerCopyAction;
99
+ private attachStdin;
100
+ private detachStdin;
101
+ private formatTimestamp;
102
+ private formatArguments;
103
+ resize(width: number, height: number): void;
104
+ clear(): void;
105
+ toggle(): void;
106
+ focus(): void;
107
+ blur(): void;
108
+ show(): void;
109
+ hide(): void;
110
+ destroy(): void;
111
+ getCachedLogs(): string;
112
+ private updateFrameBuffer;
113
+ renderToBuffer(buffer: OptimizedBuffer): void;
114
+ setDebugMode(enabled: boolean): void;
115
+ toggleDebugMode(): void;
116
+ set keyBindings(bindings: ConsoleKeyBinding[]);
117
+ set keyAliasMap(aliases: KeyAliasMap);
118
+ set onCopySelection(callback: ((text: string) => void) | undefined);
119
+ get onCopySelection(): ((text: string) => void) | undefined;
120
+ private _scrollToBottom;
121
+ private _processLogEntry;
122
+ private _processCachedLogs;
123
+ private hasSelection;
124
+ private normalizeSelection;
125
+ private getSelectedText;
126
+ private clearSelection;
127
+ private stopAutoScroll;
128
+ private startAutoScroll;
129
+ private triggerCopy;
130
+ private getLineSelectionRange;
131
+ handleMouse(event: MouseEvent): boolean;
132
+ get visible(): boolean;
133
+ get bounds(): {
134
+ x: number;
135
+ y: number;
136
+ width: number;
137
+ height: number;
138
+ };
139
+ private saveLogsToFile;
140
+ }
@@ -0,0 +1,98 @@
1
+ import { type LogicalCursor, type RenderLib } from "./zig";
2
+ import { type Pointer } from "bun:ffi";
3
+ import { type WidthMethod, type Highlight } from "./types";
4
+ import { RGBA } from "./lib/RGBA";
5
+ import { EventEmitter } from "events";
6
+ import type { SyntaxStyle } from "./syntax-style";
7
+ export type { LogicalCursor };
8
+ /**
9
+ * EditBuffer provides a text editing buffer with cursor management,
10
+ * incremental editing, and grapheme-aware operations.
11
+ */
12
+ export declare class EditBuffer extends EventEmitter {
13
+ private static registry;
14
+ private static nativeEventsSubscribed;
15
+ private lib;
16
+ private bufferPtr;
17
+ private textBufferPtr;
18
+ readonly id: number;
19
+ private _destroyed;
20
+ private _textBytes;
21
+ private _singleTextBytes;
22
+ private _singleTextMemId;
23
+ private _syntaxStyle?;
24
+ constructor(lib: RenderLib, ptr: Pointer);
25
+ static create(widthMethod: WidthMethod): EditBuffer;
26
+ private static subscribeToNativeEvents;
27
+ private guard;
28
+ get ptr(): Pointer;
29
+ /**
30
+ * Set text and completely reset the buffer state (clears history, resets add_buffer).
31
+ * Use this for initial text setting or when you want a clean slate.
32
+ */
33
+ setText(text: string): void;
34
+ /**
35
+ * Set text using owned memory and completely reset the buffer state (clears history, resets add_buffer).
36
+ * The native code takes ownership of the memory.
37
+ */
38
+ setTextOwned(text: string): void;
39
+ /**
40
+ * Replace text while preserving undo history (creates an undo point).
41
+ * Use this when you want the setText operation to be undoable.
42
+ */
43
+ replaceText(text: string): void;
44
+ /**
45
+ * Replace text using owned memory while preserving undo history (creates an undo point).
46
+ * The native code takes ownership of the memory.
47
+ */
48
+ replaceTextOwned(text: string): void;
49
+ getLineCount(): number;
50
+ getText(): string;
51
+ insertChar(char: string): void;
52
+ insertText(text: string): void;
53
+ deleteChar(): void;
54
+ deleteCharBackward(): void;
55
+ deleteRange(startLine: number, startCol: number, endLine: number, endCol: number): void;
56
+ newLine(): void;
57
+ deleteLine(): void;
58
+ moveCursorLeft(): void;
59
+ moveCursorRight(): void;
60
+ moveCursorUp(): void;
61
+ moveCursorDown(): void;
62
+ gotoLine(line: number): void;
63
+ setCursor(line: number, col: number): void;
64
+ setCursorToLineCol(line: number, col: number): void;
65
+ setCursorByOffset(offset: number): void;
66
+ getCursorPosition(): LogicalCursor;
67
+ getNextWordBoundary(): LogicalCursor;
68
+ getPrevWordBoundary(): LogicalCursor;
69
+ getEOL(): LogicalCursor;
70
+ offsetToPosition(offset: number): {
71
+ row: number;
72
+ col: number;
73
+ } | null;
74
+ positionToOffset(row: number, col: number): number;
75
+ getLineStartOffset(row: number): number;
76
+ getTextRange(startOffset: number, endOffset: number): string;
77
+ getTextRangeByCoords(startRow: number, startCol: number, endRow: number, endCol: number): string;
78
+ debugLogRope(): void;
79
+ undo(): string | null;
80
+ redo(): string | null;
81
+ canUndo(): boolean;
82
+ canRedo(): boolean;
83
+ clearHistory(): void;
84
+ setDefaultFg(fg: RGBA | null): void;
85
+ setDefaultBg(bg: RGBA | null): void;
86
+ setDefaultAttributes(attributes: number | null): void;
87
+ resetDefaults(): void;
88
+ setSyntaxStyle(style: SyntaxStyle | null): void;
89
+ getSyntaxStyle(): SyntaxStyle | null;
90
+ addHighlight(lineIdx: number, highlight: Highlight): void;
91
+ addHighlightByCharRange(highlight: Highlight): void;
92
+ removeHighlightsByRef(hlRef: number): void;
93
+ clearLineHighlights(lineIdx: number): void;
94
+ clearAllHighlights(): void;
95
+ getLineHighlights(lineIdx: number): Array<Highlight>;
96
+ clear(): void;
97
+ destroy(): void;
98
+ }
@@ -0,0 +1,73 @@
1
+ import { RGBA } from "./lib/RGBA";
2
+ import { type RenderLib, type VisualCursor, type LineInfo } from "./zig";
3
+ import { type Pointer } from "bun:ffi";
4
+ import type { EditBuffer } from "./edit-buffer";
5
+ export interface Viewport {
6
+ offsetY: number;
7
+ offsetX: number;
8
+ height: number;
9
+ width: number;
10
+ }
11
+ export type { VisualCursor };
12
+ export declare class EditorView {
13
+ private lib;
14
+ private viewPtr;
15
+ private editBuffer;
16
+ private _destroyed;
17
+ private _extmarksController?;
18
+ private _textBufferViewPtr?;
19
+ constructor(lib: RenderLib, ptr: Pointer, editBuffer: EditBuffer);
20
+ static create(editBuffer: EditBuffer, viewportWidth: number, viewportHeight: number): EditorView;
21
+ private guard;
22
+ get ptr(): Pointer;
23
+ setViewportSize(width: number, height: number): void;
24
+ setViewport(x: number, y: number, width: number, height: number, moveCursor?: boolean): void;
25
+ getViewport(): Viewport;
26
+ setScrollMargin(margin: number): void;
27
+ setWrapMode(mode: "none" | "char" | "word"): void;
28
+ getVirtualLineCount(): number;
29
+ getTotalVirtualLineCount(): number;
30
+ setSelection(start: number, end: number, bgColor?: RGBA, fgColor?: RGBA): void;
31
+ updateSelection(end: number, bgColor?: RGBA, fgColor?: RGBA): void;
32
+ resetSelection(): void;
33
+ getSelection(): {
34
+ start: number;
35
+ end: number;
36
+ } | null;
37
+ hasSelection(): boolean;
38
+ setLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA, updateCursor?: boolean, followCursor?: boolean): boolean;
39
+ updateLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA, updateCursor?: boolean, followCursor?: boolean): boolean;
40
+ resetLocalSelection(): void;
41
+ getSelectedText(): string;
42
+ getCursor(): {
43
+ row: number;
44
+ col: number;
45
+ };
46
+ getText(): string;
47
+ getVisualCursor(): VisualCursor;
48
+ moveUpVisual(): void;
49
+ moveDownVisual(): void;
50
+ deleteSelectedText(): void;
51
+ setCursorByOffset(offset: number): void;
52
+ getNextWordBoundary(): VisualCursor;
53
+ getPrevWordBoundary(): VisualCursor;
54
+ getEOL(): VisualCursor;
55
+ getVisualSOL(): VisualCursor;
56
+ getVisualEOL(): VisualCursor;
57
+ getLineInfo(): LineInfo;
58
+ getLogicalLineInfo(): LineInfo;
59
+ get extmarks(): any;
60
+ setPlaceholderStyledText(chunks: {
61
+ text: string;
62
+ fg?: RGBA;
63
+ bg?: RGBA;
64
+ attributes?: number;
65
+ }[]): void;
66
+ setTabIndicator(indicator: string | number): void;
67
+ setTabIndicatorColor(color: RGBA): void;
68
+ measureForDimensions(width: number, height: number): {
69
+ lineCount: number;
70
+ maxWidth: number;
71
+ } | null;
72
+ destroy(): void;
73
+ }