@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.
- package/3d/SpriteResourceManager.d.ts +74 -0
- package/3d/SpriteUtils.d.ts +13 -0
- package/3d/TextureUtils.d.ts +24 -0
- package/3d/ThreeRenderable.d.ts +40 -0
- package/3d/WGPURenderer.d.ts +61 -0
- package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
- package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
- package/3d/animation/SpriteAnimator.d.ts +124 -0
- package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
- package/3d/canvas.d.ts +44 -0
- package/3d/index.d.ts +12 -0
- package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
- package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
- package/3d/physics/physics-interface.d.ts +27 -0
- package/3d.d.ts +2 -0
- package/3d.js +2805 -0
- package/3d.js.map +22 -0
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/Renderable.d.ts +334 -0
- package/animation/Timeline.d.ts +126 -0
- package/ansi.d.ts +13 -0
- package/assets/javascript/highlights.scm +205 -0
- package/assets/javascript/tree-sitter-javascript.wasm +0 -0
- package/assets/markdown/highlights.scm +150 -0
- package/assets/markdown/injections.scm +27 -0
- package/assets/markdown/tree-sitter-markdown.wasm +0 -0
- package/assets/markdown_inline/highlights.scm +115 -0
- package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
- package/assets/typescript/highlights.scm +604 -0
- package/assets/typescript/tree-sitter-typescript.wasm +0 -0
- package/assets/zig/highlights.scm +284 -0
- package/assets/zig/tree-sitter-zig.wasm +0 -0
- package/buffer.d.ts +98 -0
- package/console.d.ts +140 -0
- package/edit-buffer.d.ts +98 -0
- package/editor-view.d.ts +73 -0
- package/index-cgvb25mm.js +14921 -0
- package/index-cgvb25mm.js.map +56 -0
- package/index.d.ts +17 -0
- package/index.js +9331 -0
- package/index.js.map +37 -0
- package/lib/KeyHandler.d.ts +61 -0
- package/lib/RGBA.d.ts +27 -0
- package/lib/ascii.font.d.ts +508 -0
- package/lib/border.d.ts +49 -0
- package/lib/bunfs.d.ts +7 -0
- package/lib/clipboard.d.ts +17 -0
- package/lib/data-paths.d.ts +26 -0
- package/lib/debounce.d.ts +42 -0
- package/lib/env.d.ts +42 -0
- package/lib/extmarks-history.d.ts +17 -0
- package/lib/extmarks.d.ts +89 -0
- package/lib/hast-styled-text.d.ts +17 -0
- package/lib/index.d.ts +18 -0
- package/lib/keymapping.d.ts +25 -0
- package/lib/objects-in-viewport.d.ts +24 -0
- package/lib/output.capture.d.ts +24 -0
- package/lib/parse.keypress-kitty.d.ts +2 -0
- package/lib/parse.keypress.d.ts +26 -0
- package/lib/parse.mouse.d.ts +23 -0
- package/lib/queue.d.ts +15 -0
- package/lib/renderable.validations.d.ts +12 -0
- package/lib/scroll-acceleration.d.ts +43 -0
- package/lib/selection.d.ts +63 -0
- package/lib/singleton.d.ts +7 -0
- package/lib/stdin-buffer.d.ts +44 -0
- package/lib/styled-text.d.ts +63 -0
- package/lib/terminal-capability-detection.d.ts +30 -0
- package/lib/terminal-palette.d.ts +43 -0
- package/lib/tree-sitter/assets/update.d.ts +11 -0
- package/lib/tree-sitter/client.d.ts +47 -0
- package/lib/tree-sitter/default-parsers.d.ts +2 -0
- package/lib/tree-sitter/download-utils.d.ts +21 -0
- package/lib/tree-sitter/index.d.ts +8 -0
- package/lib/tree-sitter/parser.worker.d.ts +1 -0
- package/lib/tree-sitter/parsers-config.d.ts +38 -0
- package/lib/tree-sitter/resolve-ft.d.ts +2 -0
- package/lib/tree-sitter/types.d.ts +81 -0
- package/lib/tree-sitter-styled-text.d.ts +14 -0
- package/lib/validate-dir-name.d.ts +1 -0
- package/lib/yoga.options.d.ts +32 -0
- package/package.json +67 -0
- package/parser.worker.js +855 -0
- package/parser.worker.js.map +12 -0
- package/post/filters.d.ts +105 -0
- package/renderables/ASCIIFont.d.ts +52 -0
- package/renderables/Box.d.ts +72 -0
- package/renderables/Code.d.ts +66 -0
- package/renderables/Diff.d.ts +185 -0
- package/renderables/EditBufferRenderable.d.ts +162 -0
- package/renderables/FrameBuffer.d.ts +16 -0
- package/renderables/Input.d.ts +60 -0
- package/renderables/LineNumberRenderable.d.ts +111 -0
- package/renderables/Markdown.d.ts +98 -0
- package/renderables/ScrollBar.d.ts +77 -0
- package/renderables/ScrollBox.d.ts +116 -0
- package/renderables/Select.d.ts +115 -0
- package/renderables/Slider.d.ts +44 -0
- package/renderables/TabSelect.d.ts +96 -0
- package/renderables/Text.d.ts +36 -0
- package/renderables/TextBufferRenderable.d.ts +103 -0
- package/renderables/TextNode.d.ts +91 -0
- package/renderables/Textarea.d.ts +114 -0
- package/renderables/__tests__/renderable-test-utils.d.ts +7 -0
- package/renderables/composition/VRenderable.d.ts +16 -0
- package/renderables/composition/constructs.d.ts +35 -0
- package/renderables/composition/vnode.d.ts +46 -0
- package/renderables/index.d.ts +20 -0
- package/renderables/markdown-parser.d.ts +10 -0
- package/renderer.d.ts +370 -0
- package/syntax-style.d.ts +54 -0
- package/testing/mock-keys.d.ts +80 -0
- package/testing/mock-mouse.d.ts +38 -0
- package/testing/mock-tree-sitter-client.d.ts +23 -0
- package/testing/spy.d.ts +7 -0
- package/testing/test-recorder.d.ts +61 -0
- package/testing/test-renderer.d.ts +23 -0
- package/testing.d.ts +6 -0
- package/testing.js +670 -0
- package/testing.js.map +15 -0
- package/text-buffer-view.d.ts +42 -0
- package/text-buffer.d.ts +67 -0
- package/types.d.ts +120 -0
- package/utils.d.ts +14 -0
- package/zig-structs.d.ts +42 -0
- 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
|
+
}
|
package/edit-buffer.d.ts
ADDED
|
@@ -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
|
+
}
|
package/editor-view.d.ts
ADDED
|
@@ -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
|
+
}
|