@opentui/core 0.1.27 → 0.1.29
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/3d.js.map +1 -1
- package/README.md +10 -0
- package/Renderable.d.ts +25 -24
- package/buffer.d.ts +4 -7
- package/edit-buffer.d.ts +76 -0
- package/editor-view.d.ts +50 -0
- package/{index-zx1dwm33.js → index-bztetjc3.js} +1671 -347
- package/{index-zx1dwm33.js.map → index-bztetjc3.js.map} +18 -17
- package/index.d.ts +4 -0
- package/index.js +1334 -65
- package/index.js.map +12 -6
- package/lib/hast-styled-text.d.ts +2 -3
- package/lib/index.d.ts +0 -1
- package/lib/objects-in-viewport.d.ts +14 -0
- package/lib/tree-sitter/index.d.ts +0 -2
- package/lib/tree-sitter-styled-text.d.ts +1 -1
- package/lib/yoga.options.d.ts +6 -6
- package/package.json +8 -7
- package/renderables/Code.d.ts +1 -1
- package/renderables/EditBufferRenderable.d.ts +106 -0
- package/renderables/Text.d.ts +0 -3
- package/renderables/TextBufferRenderable.d.ts +8 -14
- package/renderables/Textarea.d.ts +66 -0
- package/renderables/index.d.ts +1 -0
- package/renderer.d.ts +6 -2
- package/{lib/syntax-style.d.ts → syntax-style.d.ts} +21 -5
- package/testing/mock-keys.d.ts +10 -2
- package/testing.js +14 -5
- package/testing.js.map +3 -3
- package/text-buffer-view.d.ts +31 -0
- package/text-buffer.d.ts +28 -21
- package/types.d.ts +10 -0
- package/zig-structs.d.ts +20 -0
- package/zig.d.ts +126 -23
- package/lib/word-jumps.d.ts +0 -2
package/README.md
CHANGED
|
@@ -30,6 +30,16 @@ bun install
|
|
|
30
30
|
bun run src/examples/index.ts
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
## Benchmarks
|
|
34
|
+
|
|
35
|
+
Run native performance benchmarks:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
bun run bench:native
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
See [src/zig/bench.zig](src/zig/bench.zig) for available options like `--filter` and `--mem`.
|
|
42
|
+
|
|
33
43
|
## CLI Renderer
|
|
34
44
|
|
|
35
45
|
### Renderables
|
package/Renderable.d.ts
CHANGED
|
@@ -140,6 +140,7 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
140
140
|
protected _positionType: PositionTypeString;
|
|
141
141
|
protected _overflow: OverflowString;
|
|
142
142
|
protected _position: Position;
|
|
143
|
+
private _flexShrink;
|
|
143
144
|
private renderableMapById;
|
|
144
145
|
protected _childrenInLayoutOrder: Renderable[];
|
|
145
146
|
protected _childrenInZIndexOrder: Renderable[];
|
|
@@ -201,33 +202,33 @@ export declare abstract class Renderable extends BaseRenderable {
|
|
|
201
202
|
getChildrenSortedByPrimaryAxis(): Renderable[];
|
|
202
203
|
private setupYogaProperties;
|
|
203
204
|
private setupMarginAndPadding;
|
|
204
|
-
set position(positionType: PositionTypeString);
|
|
205
|
+
set position(positionType: PositionTypeString | null | undefined);
|
|
205
206
|
get overflow(): OverflowString;
|
|
206
|
-
set overflow(overflow: OverflowString);
|
|
207
|
+
set overflow(overflow: OverflowString | null | undefined);
|
|
207
208
|
setPosition(position: Position): void;
|
|
208
209
|
private updateYogaPosition;
|
|
209
|
-
set flexGrow(grow: number);
|
|
210
|
-
set flexShrink(shrink: number);
|
|
211
|
-
set flexDirection(direction: FlexDirectionString);
|
|
212
|
-
set flexWrap(wrap: WrapString);
|
|
213
|
-
set alignItems(alignItems: AlignString);
|
|
214
|
-
set justifyContent(justifyContent: JustifyString);
|
|
215
|
-
set alignSelf(alignSelf: AlignString);
|
|
216
|
-
set flexBasis(basis: number | "auto" | undefined);
|
|
217
|
-
set minWidth(minWidth: number | `${number}%` | undefined);
|
|
218
|
-
set maxWidth(maxWidth: number | `${number}%` | undefined);
|
|
219
|
-
set minHeight(minHeight: number | `${number}%` | undefined);
|
|
220
|
-
set maxHeight(maxHeight: number | `${number}%` | undefined);
|
|
221
|
-
set margin(margin: number | "auto" | `${number}%` | undefined);
|
|
222
|
-
set marginTop(margin: number | "auto" | `${number}%` | undefined);
|
|
223
|
-
set marginRight(margin: number | "auto" | `${number}%` | undefined);
|
|
224
|
-
set marginBottom(margin: number | "auto" | `${number}%` | undefined);
|
|
225
|
-
set marginLeft(margin: number | "auto" | `${number}%` | undefined);
|
|
226
|
-
set padding(padding: number | `${number}%` | undefined);
|
|
227
|
-
set paddingTop(padding: number | `${number}%` | undefined);
|
|
228
|
-
set paddingRight(padding: number | `${number}%` | undefined);
|
|
229
|
-
set paddingBottom(padding: number | `${number}%` | undefined);
|
|
230
|
-
set paddingLeft(padding: number | `${number}%` | undefined);
|
|
210
|
+
set flexGrow(grow: number | null | undefined);
|
|
211
|
+
set flexShrink(shrink: number | null | undefined);
|
|
212
|
+
set flexDirection(direction: FlexDirectionString | null | undefined);
|
|
213
|
+
set flexWrap(wrap: WrapString | null | undefined);
|
|
214
|
+
set alignItems(alignItems: AlignString | null | undefined);
|
|
215
|
+
set justifyContent(justifyContent: JustifyString | null | undefined);
|
|
216
|
+
set alignSelf(alignSelf: AlignString | null | undefined);
|
|
217
|
+
set flexBasis(basis: number | "auto" | null | undefined);
|
|
218
|
+
set minWidth(minWidth: number | `${number}%` | null | undefined);
|
|
219
|
+
set maxWidth(maxWidth: number | `${number}%` | null | undefined);
|
|
220
|
+
set minHeight(minHeight: number | `${number}%` | null | undefined);
|
|
221
|
+
set maxHeight(maxHeight: number | `${number}%` | null | undefined);
|
|
222
|
+
set margin(margin: number | "auto" | `${number}%` | null | undefined);
|
|
223
|
+
set marginTop(margin: number | "auto" | `${number}%` | null | undefined);
|
|
224
|
+
set marginRight(margin: number | "auto" | `${number}%` | null | undefined);
|
|
225
|
+
set marginBottom(margin: number | "auto" | `${number}%` | null | undefined);
|
|
226
|
+
set marginLeft(margin: number | "auto" | `${number}%` | null | undefined);
|
|
227
|
+
set padding(padding: number | `${number}%` | null | undefined);
|
|
228
|
+
set paddingTop(padding: number | `${number}%` | null | undefined);
|
|
229
|
+
set paddingRight(padding: number | `${number}%` | null | undefined);
|
|
230
|
+
set paddingBottom(padding: number | `${number}%` | null | undefined);
|
|
231
|
+
set paddingLeft(padding: number | `${number}%` | null | undefined);
|
|
231
232
|
getLayoutNode(): YogaNode;
|
|
232
233
|
updateFromLayout(): void;
|
|
233
234
|
protected onLayoutResize(width: number, height: number): void;
|
package/buffer.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { TextBuffer } from "./text-buffer";
|
|
2
1
|
import { RGBA } from "./lib";
|
|
3
2
|
import { type RenderLib } from "./zig";
|
|
4
3
|
import { type Pointer } from "bun:ffi";
|
|
5
4
|
import { type BorderStyle, type BorderSides } from "./lib";
|
|
6
5
|
import { type WidthMethod } from "./types";
|
|
6
|
+
import type { TextBufferView } from "./text-buffer-view";
|
|
7
|
+
import type { EditorView } from "./editor-view";
|
|
7
8
|
export declare class OptimizedBuffer {
|
|
8
9
|
private static fbIdCounter;
|
|
9
10
|
id: string;
|
|
@@ -47,12 +48,8 @@ export declare class OptimizedBuffer {
|
|
|
47
48
|
fillRect(x: number, y: number, width: number, height: number, bg: RGBA): void;
|
|
48
49
|
drawFrameBuffer(destX: number, destY: number, frameBuffer: OptimizedBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
|
|
49
50
|
destroy(): void;
|
|
50
|
-
drawTextBuffer(
|
|
51
|
-
|
|
52
|
-
y: number;
|
|
53
|
-
width: number;
|
|
54
|
-
height: number;
|
|
55
|
-
}): void;
|
|
51
|
+
drawTextBuffer(textBufferView: TextBufferView, x: number, y: number): void;
|
|
52
|
+
drawEditorView(editorView: EditorView, x: number, y: number): void;
|
|
56
53
|
drawSuperSampleBuffer(x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number): void;
|
|
57
54
|
drawPackedBuffer(dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number): void;
|
|
58
55
|
resize(width: number, height: number): void;
|
package/edit-buffer.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { 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 interface CursorPosition {
|
|
8
|
+
line: number;
|
|
9
|
+
visualColumn: number;
|
|
10
|
+
offset: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* EditBuffer provides a text editing buffer with cursor management,
|
|
14
|
+
* incremental editing, and grapheme-aware operations.
|
|
15
|
+
*/
|
|
16
|
+
export declare class EditBuffer extends EventEmitter {
|
|
17
|
+
private static registry;
|
|
18
|
+
private static nativeEventsSubscribed;
|
|
19
|
+
private lib;
|
|
20
|
+
private bufferPtr;
|
|
21
|
+
private textBufferPtr;
|
|
22
|
+
readonly id: number;
|
|
23
|
+
private _destroyed;
|
|
24
|
+
private _textBytes;
|
|
25
|
+
private _singleTextBytes;
|
|
26
|
+
private _singleTextMemId;
|
|
27
|
+
private _syntaxStyle?;
|
|
28
|
+
constructor(lib: RenderLib, ptr: Pointer);
|
|
29
|
+
static create(widthMethod: WidthMethod): EditBuffer;
|
|
30
|
+
private static subscribeToNativeEvents;
|
|
31
|
+
private guard;
|
|
32
|
+
get ptr(): Pointer;
|
|
33
|
+
setText(text: string, opts?: {
|
|
34
|
+
history?: boolean;
|
|
35
|
+
}): void;
|
|
36
|
+
setTextOwned(text: string, opts?: {
|
|
37
|
+
history?: boolean;
|
|
38
|
+
}): void;
|
|
39
|
+
getText(): string;
|
|
40
|
+
insertChar(char: string): void;
|
|
41
|
+
insertText(text: string): void;
|
|
42
|
+
deleteChar(): void;
|
|
43
|
+
deleteCharBackward(): void;
|
|
44
|
+
newLine(): void;
|
|
45
|
+
deleteLine(): void;
|
|
46
|
+
moveCursorLeft(): void;
|
|
47
|
+
moveCursorRight(): void;
|
|
48
|
+
moveCursorUp(): void;
|
|
49
|
+
moveCursorDown(): void;
|
|
50
|
+
gotoLine(line: number): void;
|
|
51
|
+
setCursor(line: number, col: number): void;
|
|
52
|
+
setCursorToLineCol(line: number, col: number): void;
|
|
53
|
+
setCursorByOffset(offset: number): void;
|
|
54
|
+
getCursorPosition(): CursorPosition;
|
|
55
|
+
debugLogRope(): void;
|
|
56
|
+
undo(): string | null;
|
|
57
|
+
redo(): string | null;
|
|
58
|
+
canUndo(): boolean;
|
|
59
|
+
canRedo(): boolean;
|
|
60
|
+
clearHistory(): void;
|
|
61
|
+
setDefaultFg(fg: RGBA | null): void;
|
|
62
|
+
setDefaultBg(bg: RGBA | null): void;
|
|
63
|
+
setDefaultAttributes(attributes: number | null): void;
|
|
64
|
+
resetDefaults(): void;
|
|
65
|
+
setPlaceholder(text: string | null): void;
|
|
66
|
+
setPlaceholderColor(color: RGBA): void;
|
|
67
|
+
setSyntaxStyle(style: SyntaxStyle | null): void;
|
|
68
|
+
getSyntaxStyle(): SyntaxStyle | null;
|
|
69
|
+
addHighlight(lineIdx: number, highlight: Highlight): void;
|
|
70
|
+
addHighlightByCharRange(highlight: Highlight): void;
|
|
71
|
+
removeHighlightsByRef(hlRef: number): void;
|
|
72
|
+
clearLineHighlights(lineIdx: number): void;
|
|
73
|
+
clearAllHighlights(): void;
|
|
74
|
+
getLineHighlights(lineIdx: number): Array<Highlight>;
|
|
75
|
+
destroy(): void;
|
|
76
|
+
}
|
package/editor-view.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
constructor(lib: RenderLib, ptr: Pointer, editBuffer: EditBuffer);
|
|
18
|
+
static create(editBuffer: EditBuffer, viewportWidth: number, viewportHeight: number): EditorView;
|
|
19
|
+
private guard;
|
|
20
|
+
get ptr(): Pointer;
|
|
21
|
+
setViewportSize(width: number, height: number): void;
|
|
22
|
+
getViewport(): Viewport;
|
|
23
|
+
setScrollMargin(margin: number): void;
|
|
24
|
+
setWrapMode(mode: "none" | "char" | "word"): void;
|
|
25
|
+
getVirtualLineCount(): number;
|
|
26
|
+
getTotalVirtualLineCount(): number;
|
|
27
|
+
setSelection(start: number, end: number, bgColor?: RGBA, fgColor?: RGBA): void;
|
|
28
|
+
resetSelection(): void;
|
|
29
|
+
getSelection(): {
|
|
30
|
+
start: number;
|
|
31
|
+
end: number;
|
|
32
|
+
} | null;
|
|
33
|
+
hasSelection(): boolean;
|
|
34
|
+
setLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA): boolean;
|
|
35
|
+
resetLocalSelection(): void;
|
|
36
|
+
getSelectedText(): string;
|
|
37
|
+
getCursor(): {
|
|
38
|
+
row: number;
|
|
39
|
+
col: number;
|
|
40
|
+
};
|
|
41
|
+
getText(): string;
|
|
42
|
+
getVisualCursor(): VisualCursor;
|
|
43
|
+
moveUpVisual(): void;
|
|
44
|
+
moveDownVisual(): void;
|
|
45
|
+
deleteSelectedText(): void;
|
|
46
|
+
setCursorByOffset(offset: number): void;
|
|
47
|
+
getLineInfo(): LineInfo;
|
|
48
|
+
getLogicalLineInfo(): LineInfo;
|
|
49
|
+
destroy(): void;
|
|
50
|
+
}
|