@opentui/core 0.1.24 → 0.1.26
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.js +1 -1
- package/README.md +5 -1
- package/Renderable.d.ts +18 -8
- package/animation/Timeline.d.ts +2 -1
- package/ansi.d.ts +2 -17
- package/assets/javascript/highlights.scm +205 -0
- package/assets/javascript/tree-sitter-javascript.wasm +0 -0
- package/assets/typescript/highlights.scm +604 -0
- package/assets/typescript/tree-sitter-typescript.wasm +0 -0
- package/{index-0yx9rnxg.js → index-pxa2sv92.js} +1798 -258
- package/index-pxa2sv92.js.map +52 -0
- package/index.js +449 -246
- package/index.js.map +15 -13
- package/lib/KeyHandler.d.ts +51 -9
- package/lib/data-paths.d.ts +26 -0
- package/lib/debounce.d.ts +42 -0
- package/lib/env.d.ts +42 -0
- package/lib/hast-styled-text.d.ts +3 -23
- package/lib/index.d.ts +6 -0
- package/lib/parse.keypress.d.ts +2 -2
- package/lib/queue.d.ts +15 -0
- package/lib/scroll-acceleration.d.ts +43 -0
- package/{singleton.d.ts → lib/singleton.d.ts} +2 -0
- package/lib/styled-text.d.ts +0 -15
- package/lib/syntax-style.d.ts +36 -0
- package/lib/tree-sitter/assets/update.d.ts +11 -0
- package/lib/tree-sitter/client.d.ts +46 -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 +10 -0
- package/lib/tree-sitter/parser.worker.d.ts +1 -0
- package/lib/tree-sitter/resolve-ft.d.ts +2 -0
- package/lib/tree-sitter/types.d.ts +64 -0
- package/lib/tree-sitter-styled-text.d.ts +7 -0
- package/lib/validate-dir-name.d.ts +1 -0
- package/package.json +21 -8
- package/parser.worker.js +640 -0
- package/parser.worker.js.map +11 -0
- package/renderables/ASCIIFont.d.ts +1 -1
- package/renderables/Code.d.ts +31 -0
- package/renderables/Input.d.ts +4 -4
- package/renderables/ScrollBar.d.ts +2 -2
- package/renderables/ScrollBox.d.ts +7 -3
- package/renderables/Select.d.ts +2 -2
- package/renderables/TabSelect.d.ts +2 -2
- package/renderables/Text.d.ts +11 -65
- package/renderables/TextBufferRenderable.d.ts +81 -0
- package/renderables/TextNode.d.ts +1 -0
- package/renderables/index.d.ts +2 -0
- package/renderer.d.ts +5 -3
- package/testing/mock-keys.d.ts +1 -0
- package/testing/spy.d.ts +7 -0
- package/testing/test-renderer.d.ts +1 -0
- package/testing.d.ts +1 -0
- package/testing.js +31 -6
- package/testing.js.map +6 -5
- package/types.d.ts +2 -1
- package/zig.d.ts +1 -0
- package/index-0yx9rnxg.js.map +0 -38
package/3d.js
CHANGED
package/README.md
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
OpenTUI Core is a TypeScript library for building terminal user interfaces (TUIs). It is currently in
|
|
4
4
|
development and is not ready for production use.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
## Documentation
|
|
7
|
+
|
|
8
|
+
- [Getting Started](docs/getting-started.md)
|
|
9
|
+
- [Tree-Sitter](docs/tree-sitter.md)
|
|
10
|
+
- [Environment Variables](docs/env-vars.md)
|
|
7
11
|
|
|
8
12
|
## Install
|
|
9
13
|
|
package/Renderable.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from "events";
|
|
2
2
|
import { type Node as YogaNode } from "yoga-layout";
|
|
3
3
|
import { OptimizedBuffer } from "./buffer";
|
|
4
|
-
import type {
|
|
4
|
+
import type { KeyEvent, PasteEvent } from "./lib/KeyHandler";
|
|
5
5
|
import type { Selection } from "./lib/selection";
|
|
6
6
|
import { type AlignString, type FlexDirectionString, type JustifyString, type OverflowString, type PositionTypeString, type WrapString } from "./lib/yoga.options";
|
|
7
7
|
import { type VNode } from "./renderables/composition/vnode";
|
|
@@ -77,7 +77,8 @@ export interface RenderableOptions<T extends BaseRenderable = BaseRenderable> ex
|
|
|
77
77
|
onMouseOver?: (this: T, event: MouseEvent) => void;
|
|
78
78
|
onMouseOut?: (this: T, event: MouseEvent) => void;
|
|
79
79
|
onMouseScroll?: (this: T, event: MouseEvent) => void;
|
|
80
|
-
|
|
80
|
+
onPaste?: (this: T, text: string) => void;
|
|
81
|
+
onKeyDown?: (key: KeyEvent) => void;
|
|
81
82
|
onSizeChange?: (this: T) => void;
|
|
82
83
|
}
|
|
83
84
|
export declare function isRenderable(obj: any): obj is Renderable;
|
|
@@ -97,6 +98,7 @@ export declare abstract class BaseRenderable extends EventEmitter {
|
|
|
97
98
|
abstract getChildrenCount(): number;
|
|
98
99
|
abstract getRenderable(id: string): BaseRenderable | undefined;
|
|
99
100
|
abstract requestRender(): void;
|
|
101
|
+
abstract findDescendantById(id: string): BaseRenderable | undefined;
|
|
100
102
|
get id(): string;
|
|
101
103
|
set id(value: string);
|
|
102
104
|
get isDirty(): boolean;
|
|
@@ -125,12 +127,14 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
125
127
|
protected frameBuffer: OptimizedBuffer | null;
|
|
126
128
|
protected _focusable: boolean;
|
|
127
129
|
protected _focused: boolean;
|
|
128
|
-
protected keypressHandler: ((key:
|
|
130
|
+
protected keypressHandler: ((key: KeyEvent) => void) | null;
|
|
131
|
+
protected pasteHandler: ((event: PasteEvent) => void) | null;
|
|
129
132
|
private _live;
|
|
130
133
|
protected _liveCount: number;
|
|
131
134
|
private _sizeChangeListener;
|
|
132
135
|
private _mouseListener;
|
|
133
136
|
private _mouseListeners;
|
|
137
|
+
private _pasteListener;
|
|
134
138
|
private _keyListeners;
|
|
135
139
|
protected yogaNode: YogaNode;
|
|
136
140
|
protected _positionType: PositionTypeString;
|
|
@@ -166,7 +170,8 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
166
170
|
get liveCount(): number;
|
|
167
171
|
set live(value: boolean);
|
|
168
172
|
protected propagateLiveCount(delta: number): void;
|
|
169
|
-
handleKeyPress?(key:
|
|
173
|
+
handleKeyPress?(key: KeyEvent | string): boolean;
|
|
174
|
+
handlePaste?(text: string): void;
|
|
170
175
|
findDescendantById(id: string): Renderable | undefined;
|
|
171
176
|
requestRender(): void;
|
|
172
177
|
get translateX(): number;
|
|
@@ -228,6 +233,11 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
228
233
|
protected onLayoutResize(width: number, height: number): void;
|
|
229
234
|
protected handleFrameBufferResize(width: number, height: number): void;
|
|
230
235
|
protected createFrameBuffer(): void;
|
|
236
|
+
/**
|
|
237
|
+
* This will be called during a render pass.
|
|
238
|
+
* Requesting a render during a render pass will drop the requested render.
|
|
239
|
+
* If you need to request a render during a render pass, use process.nextTick.
|
|
240
|
+
*/
|
|
231
241
|
protected onResize(width: number, height: number): void;
|
|
232
242
|
private replaceParent;
|
|
233
243
|
private _forceLayoutUpdateFor;
|
|
@@ -265,8 +275,10 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
265
275
|
set onMouseOver(handler: ((event: MouseEvent) => void) | undefined);
|
|
266
276
|
set onMouseOut(handler: ((event: MouseEvent) => void) | undefined);
|
|
267
277
|
set onMouseScroll(handler: ((event: MouseEvent) => void) | undefined);
|
|
268
|
-
set
|
|
269
|
-
get
|
|
278
|
+
set onPaste(handler: ((text: string) => void) | undefined);
|
|
279
|
+
get onPaste(): ((text: string) => void) | undefined;
|
|
280
|
+
set onKeyDown(handler: ((key: KeyEvent) => void) | undefined);
|
|
281
|
+
get onKeyDown(): ((key: KeyEvent) => void) | undefined;
|
|
270
282
|
set onSizeChange(handler: (() => void) | undefined);
|
|
271
283
|
get onSizeChange(): (() => void) | undefined;
|
|
272
284
|
private applyEventOptions;
|
|
@@ -290,13 +302,11 @@ interface RenderCommandRender extends RenderCommandBase {
|
|
|
290
302
|
}
|
|
291
303
|
export type RenderCommand = RenderCommandPushScissorRect | RenderCommandPopScissorRect | RenderCommandRender;
|
|
292
304
|
export declare class RootRenderable extends Renderable {
|
|
293
|
-
private yogaConfig;
|
|
294
305
|
private renderList;
|
|
295
306
|
constructor(ctx: RenderContext);
|
|
296
307
|
render(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
297
308
|
protected propagateLiveCount(delta: number): void;
|
|
298
309
|
calculateLayout(): void;
|
|
299
310
|
resize(width: number, height: number): void;
|
|
300
|
-
protected destroySelf(): void;
|
|
301
311
|
}
|
|
302
312
|
export {};
|
package/animation/Timeline.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CliRenderer } from "../renderer";
|
|
1
2
|
export interface TimelineOptions {
|
|
2
3
|
duration?: number;
|
|
3
4
|
loop?: boolean;
|
|
@@ -111,7 +112,7 @@ declare class TimelineEngine {
|
|
|
111
112
|
defaults: {
|
|
112
113
|
frameRate: number;
|
|
113
114
|
};
|
|
114
|
-
attach(renderer:
|
|
115
|
+
attach(renderer: CliRenderer): void;
|
|
115
116
|
detach(): void;
|
|
116
117
|
private updateLiveState;
|
|
117
118
|
private onTimelineStateChange;
|
package/ansi.d.ts
CHANGED
|
@@ -2,27 +2,12 @@ export declare const ANSI: {
|
|
|
2
2
|
switchToAlternateScreen: string;
|
|
3
3
|
switchToMainScreen: string;
|
|
4
4
|
reset: string;
|
|
5
|
-
hideCursor: string;
|
|
6
|
-
showCursor: string;
|
|
7
|
-
resetCursorColor: string;
|
|
8
|
-
saveCursorState: string;
|
|
9
|
-
restoreCursorState: string;
|
|
10
|
-
queryPixelSize: string;
|
|
11
5
|
scrollDown: (lines: number) => string;
|
|
12
6
|
scrollUp: (lines: number) => string;
|
|
13
7
|
moveCursor: (row: number, col: number) => string;
|
|
14
8
|
moveCursorAndClear: (row: number, col: number) => string;
|
|
15
|
-
clearFromCursor: string;
|
|
16
9
|
setRgbBackground: (r: number, g: number, b: number) => string;
|
|
17
10
|
resetBackground: string;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
enableButtonEventTracking: string;
|
|
21
|
-
disableButtonEventTracking: string;
|
|
22
|
-
enableAnyEventTracking: string;
|
|
23
|
-
disableAnyEventTracking: string;
|
|
24
|
-
enableSGRMouseMode: string;
|
|
25
|
-
disableSGRMouseMode: string;
|
|
26
|
-
makeRoomForRenderer: (height: number) => string;
|
|
27
|
-
clearRendererSpace: (height: number) => string;
|
|
11
|
+
bracketedPasteStart: string;
|
|
12
|
+
bracketedPasteEnd: string;
|
|
28
13
|
};
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
; Query from: https://raw.githubusercontent.com/tree-sitter/tree-sitter-javascript/refs/heads/master/queries/highlights.scm
|
|
2
|
+
; Variables
|
|
3
|
+
;----------
|
|
4
|
+
|
|
5
|
+
(identifier) @variable
|
|
6
|
+
|
|
7
|
+
; Properties
|
|
8
|
+
;-----------
|
|
9
|
+
|
|
10
|
+
(property_identifier) @property
|
|
11
|
+
|
|
12
|
+
; Function and method definitions
|
|
13
|
+
;--------------------------------
|
|
14
|
+
|
|
15
|
+
(function_expression
|
|
16
|
+
name: (identifier) @function)
|
|
17
|
+
(function_declaration
|
|
18
|
+
name: (identifier) @function)
|
|
19
|
+
(method_definition
|
|
20
|
+
name: (property_identifier) @function.method)
|
|
21
|
+
|
|
22
|
+
(pair
|
|
23
|
+
key: (property_identifier) @function.method
|
|
24
|
+
value: [(function_expression) (arrow_function)])
|
|
25
|
+
|
|
26
|
+
(assignment_expression
|
|
27
|
+
left: (member_expression
|
|
28
|
+
property: (property_identifier) @function.method)
|
|
29
|
+
right: [(function_expression) (arrow_function)])
|
|
30
|
+
|
|
31
|
+
(variable_declarator
|
|
32
|
+
name: (identifier) @function
|
|
33
|
+
value: [(function_expression) (arrow_function)])
|
|
34
|
+
|
|
35
|
+
(assignment_expression
|
|
36
|
+
left: (identifier) @function
|
|
37
|
+
right: [(function_expression) (arrow_function)])
|
|
38
|
+
|
|
39
|
+
; Function and method calls
|
|
40
|
+
;--------------------------
|
|
41
|
+
|
|
42
|
+
(call_expression
|
|
43
|
+
function: (identifier) @function)
|
|
44
|
+
|
|
45
|
+
(call_expression
|
|
46
|
+
function: (member_expression
|
|
47
|
+
property: (property_identifier) @function.method))
|
|
48
|
+
|
|
49
|
+
; Special identifiers
|
|
50
|
+
;--------------------
|
|
51
|
+
|
|
52
|
+
((identifier) @constructor
|
|
53
|
+
(#match? @constructor "^[A-Z]"))
|
|
54
|
+
|
|
55
|
+
([
|
|
56
|
+
(identifier)
|
|
57
|
+
(shorthand_property_identifier)
|
|
58
|
+
(shorthand_property_identifier_pattern)
|
|
59
|
+
] @constant
|
|
60
|
+
(#match? @constant "^[A-Z_][A-Z\\d_]+$"))
|
|
61
|
+
|
|
62
|
+
((identifier) @variable.builtin
|
|
63
|
+
(#match? @variable.builtin "^(arguments|module|console|window|document)$")
|
|
64
|
+
(#is-not? local))
|
|
65
|
+
|
|
66
|
+
((identifier) @function.builtin
|
|
67
|
+
(#eq? @function.builtin "require")
|
|
68
|
+
(#is-not? local))
|
|
69
|
+
|
|
70
|
+
; Literals
|
|
71
|
+
;---------
|
|
72
|
+
|
|
73
|
+
(this) @variable.builtin
|
|
74
|
+
(super) @variable.builtin
|
|
75
|
+
|
|
76
|
+
[
|
|
77
|
+
(true)
|
|
78
|
+
(false)
|
|
79
|
+
(null)
|
|
80
|
+
(undefined)
|
|
81
|
+
] @constant.builtin
|
|
82
|
+
|
|
83
|
+
(comment) @comment
|
|
84
|
+
|
|
85
|
+
[
|
|
86
|
+
(string)
|
|
87
|
+
(template_string)
|
|
88
|
+
] @string
|
|
89
|
+
|
|
90
|
+
(regex) @string.special
|
|
91
|
+
(number) @number
|
|
92
|
+
|
|
93
|
+
; Tokens
|
|
94
|
+
;-------
|
|
95
|
+
|
|
96
|
+
[
|
|
97
|
+
";"
|
|
98
|
+
(optional_chain)
|
|
99
|
+
"."
|
|
100
|
+
","
|
|
101
|
+
] @punctuation.delimiter
|
|
102
|
+
|
|
103
|
+
[
|
|
104
|
+
"-"
|
|
105
|
+
"--"
|
|
106
|
+
"-="
|
|
107
|
+
"+"
|
|
108
|
+
"++"
|
|
109
|
+
"+="
|
|
110
|
+
"*"
|
|
111
|
+
"*="
|
|
112
|
+
"**"
|
|
113
|
+
"**="
|
|
114
|
+
"/"
|
|
115
|
+
"/="
|
|
116
|
+
"%"
|
|
117
|
+
"%="
|
|
118
|
+
"<"
|
|
119
|
+
"<="
|
|
120
|
+
"<<"
|
|
121
|
+
"<<="
|
|
122
|
+
"="
|
|
123
|
+
"=="
|
|
124
|
+
"==="
|
|
125
|
+
"!"
|
|
126
|
+
"!="
|
|
127
|
+
"!=="
|
|
128
|
+
"=>"
|
|
129
|
+
">"
|
|
130
|
+
">="
|
|
131
|
+
">>"
|
|
132
|
+
">>="
|
|
133
|
+
">>>"
|
|
134
|
+
">>>="
|
|
135
|
+
"~"
|
|
136
|
+
"^"
|
|
137
|
+
"&"
|
|
138
|
+
"|"
|
|
139
|
+
"^="
|
|
140
|
+
"&="
|
|
141
|
+
"|="
|
|
142
|
+
"&&"
|
|
143
|
+
"||"
|
|
144
|
+
"??"
|
|
145
|
+
"&&="
|
|
146
|
+
"||="
|
|
147
|
+
"??="
|
|
148
|
+
] @operator
|
|
149
|
+
|
|
150
|
+
[
|
|
151
|
+
"("
|
|
152
|
+
")"
|
|
153
|
+
"["
|
|
154
|
+
"]"
|
|
155
|
+
"{"
|
|
156
|
+
"}"
|
|
157
|
+
] @punctuation.bracket
|
|
158
|
+
|
|
159
|
+
(template_substitution
|
|
160
|
+
"${" @punctuation.special
|
|
161
|
+
"}" @punctuation.special) @embedded
|
|
162
|
+
|
|
163
|
+
[
|
|
164
|
+
"as"
|
|
165
|
+
"async"
|
|
166
|
+
"await"
|
|
167
|
+
"break"
|
|
168
|
+
"case"
|
|
169
|
+
"catch"
|
|
170
|
+
"class"
|
|
171
|
+
"const"
|
|
172
|
+
"continue"
|
|
173
|
+
"debugger"
|
|
174
|
+
"default"
|
|
175
|
+
"delete"
|
|
176
|
+
"do"
|
|
177
|
+
"else"
|
|
178
|
+
"export"
|
|
179
|
+
"extends"
|
|
180
|
+
"finally"
|
|
181
|
+
"for"
|
|
182
|
+
"from"
|
|
183
|
+
"function"
|
|
184
|
+
"get"
|
|
185
|
+
"if"
|
|
186
|
+
"import"
|
|
187
|
+
"in"
|
|
188
|
+
"instanceof"
|
|
189
|
+
"let"
|
|
190
|
+
"new"
|
|
191
|
+
"of"
|
|
192
|
+
"return"
|
|
193
|
+
"set"
|
|
194
|
+
"static"
|
|
195
|
+
"switch"
|
|
196
|
+
"target"
|
|
197
|
+
"throw"
|
|
198
|
+
"try"
|
|
199
|
+
"typeof"
|
|
200
|
+
"var"
|
|
201
|
+
"void"
|
|
202
|
+
"while"
|
|
203
|
+
"with"
|
|
204
|
+
"yield"
|
|
205
|
+
] @keyword
|
|
Binary file
|