@opentui/core 0.5.3 → 0.5.6
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/README.md +2 -2
- package/buffer.d.ts +2 -2
- package/{chunk-bun-26r5c5w5.js → chunk-bun-9335djz2.js} +450 -183
- package/{chunk-bun-26r5c5w5.js.map → chunk-bun-9335djz2.js.map} +7 -7
- package/{chunk-bun-t68f2fmr.js → chunk-bun-da1keqyp.js} +14 -4
- package/{chunk-bun-t68f2fmr.js.map → chunk-bun-da1keqyp.js.map} +4 -4
- package/{chunk-node-aj3n20gq.js → chunk-node-2h23nsbj.js} +450 -183
- package/{chunk-node-aj3n20gq.js.map → chunk-node-2h23nsbj.js.map} +7 -7
- package/{chunk-node-kq7as74d.js → chunk-node-ks0581vk.js} +14 -4
- package/{chunk-node-kq7as74d.js.map → chunk-node-ks0581vk.js.map} +4 -4
- package/index.bun.js +403 -6
- package/index.bun.js.map +5 -4
- package/index.node.js +403 -6
- package/index.node.js.map +5 -3
- package/package.json +9 -9
- package/renderables/EmbeddedTerminal.d.ts +67 -0
- package/renderables/index.d.ts +1 -0
- package/testing.bun.js +2 -2
- package/testing.js +2 -2
- package/utils.d.ts +2 -1
- package/yoga.bun.js +1 -1
- package/yoga.js +1 -1
- package/zig-structs.d.ts +2 -0
- package/zig.d.ts +65 -7
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "index.node.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.5.
|
|
7
|
+
"version": "0.5.6",
|
|
8
8
|
"description": "OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -75,13 +75,13 @@
|
|
|
75
75
|
"web-tree-sitter": "0.25.10"
|
|
76
76
|
},
|
|
77
77
|
"optionalDependencies": {
|
|
78
|
-
"@opentui/core-darwin-x64": "0.5.
|
|
79
|
-
"@opentui/core-darwin-arm64": "0.5.
|
|
80
|
-
"@opentui/core-linux-x64": "0.5.
|
|
81
|
-
"@opentui/core-linux-arm64": "0.5.
|
|
82
|
-
"@opentui/core-win32-x64": "0.5.
|
|
83
|
-
"@opentui/core-win32-arm64": "0.5.
|
|
84
|
-
"@opentui/core-linux-x64-musl": "0.5.
|
|
85
|
-
"@opentui/core-linux-arm64-musl": "0.5.
|
|
78
|
+
"@opentui/core-darwin-x64": "0.5.6",
|
|
79
|
+
"@opentui/core-darwin-arm64": "0.5.6",
|
|
80
|
+
"@opentui/core-linux-x64": "0.5.6",
|
|
81
|
+
"@opentui/core-linux-arm64": "0.5.6",
|
|
82
|
+
"@opentui/core-win32-x64": "0.5.6",
|
|
83
|
+
"@opentui/core-win32-arm64": "0.5.6",
|
|
84
|
+
"@opentui/core-linux-x64-musl": "0.5.6",
|
|
85
|
+
"@opentui/core-linux-arm64-musl": "0.5.6"
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type RenderableOptions, Renderable } from "../Renderable.js";
|
|
2
|
+
import type { KeyEvent, PasteEvent } from "../lib/KeyHandler.js";
|
|
3
|
+
import type { RenderContext } from "../types.js";
|
|
4
|
+
import type { OptimizedBuffer } from "../buffer.js";
|
|
5
|
+
import { type Selection } from "../lib/selection.js";
|
|
6
|
+
export type EmbeddedTerminalDataSource = "input" | "response";
|
|
7
|
+
export interface EmbeddedTerminalOptions extends RenderableOptions<EmbeddedTerminalRenderable> {
|
|
8
|
+
cols?: number;
|
|
9
|
+
rows?: number;
|
|
10
|
+
maxScrollback?: number;
|
|
11
|
+
onData?: (data: Uint8Array, source: EmbeddedTerminalDataSource) => void;
|
|
12
|
+
onTerminalResize?: (cols: number, rows: number) => void;
|
|
13
|
+
onScreenChange?: () => void;
|
|
14
|
+
selectable?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export type EmbeddedTerminalScreen = {
|
|
17
|
+
text: string;
|
|
18
|
+
lines: string[];
|
|
19
|
+
columns: number;
|
|
20
|
+
rows: number;
|
|
21
|
+
cursor: {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
visible: boolean;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare class EmbeddedTerminalRenderable extends Renderable {
|
|
28
|
+
selectable: boolean;
|
|
29
|
+
private readonly lib;
|
|
30
|
+
private handle;
|
|
31
|
+
private _onData?;
|
|
32
|
+
private _onTerminalResize?;
|
|
33
|
+
private _onScreenChange?;
|
|
34
|
+
private keyreleaseHandler;
|
|
35
|
+
private hadRenderHooks;
|
|
36
|
+
private selection;
|
|
37
|
+
constructor(ctx: RenderContext, options: EmbeddedTerminalOptions);
|
|
38
|
+
get onData(): ((data: Uint8Array, source: EmbeddedTerminalDataSource) => void) | undefined;
|
|
39
|
+
set onData(value: ((data: Uint8Array, source: EmbeddedTerminalDataSource) => void) | undefined);
|
|
40
|
+
get onTerminalResize(): ((cols: number, rows: number) => void) | undefined;
|
|
41
|
+
set onTerminalResize(value: ((cols: number, rows: number) => void) | undefined);
|
|
42
|
+
get onScreenChange(): (() => void) | undefined;
|
|
43
|
+
set onScreenChange(value: (() => void) | undefined);
|
|
44
|
+
screen(): EmbeddedTerminalScreen;
|
|
45
|
+
write(data: string | Uint8Array): void;
|
|
46
|
+
invalidate(): void;
|
|
47
|
+
encodeKey(key: KeyEvent): Uint8Array;
|
|
48
|
+
encodePaste(bytes: Uint8Array): Uint8Array;
|
|
49
|
+
shouldStartSelection(x: number, y: number): boolean;
|
|
50
|
+
onSelectionChanged(selection: Selection | null): boolean;
|
|
51
|
+
hasSelection(): boolean;
|
|
52
|
+
getSelectedText(): string;
|
|
53
|
+
focus(): void;
|
|
54
|
+
blur(): void;
|
|
55
|
+
handleKeyPress(key: KeyEvent): boolean;
|
|
56
|
+
handlePaste(event: PasteEvent): void;
|
|
57
|
+
render(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
58
|
+
protected onResize(width: number, height: number): void;
|
|
59
|
+
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
60
|
+
protected destroySelf(): void;
|
|
61
|
+
protected onRemove(): void;
|
|
62
|
+
private setupMouse;
|
|
63
|
+
private forwardMouse;
|
|
64
|
+
private flushResponses;
|
|
65
|
+
private removeKeyreleaseHandler;
|
|
66
|
+
private send;
|
|
67
|
+
}
|
package/renderables/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./composition/VRenderable.js";
|
|
|
6
6
|
export * from "./composition/vnode.js";
|
|
7
7
|
export * from "./Diff.js";
|
|
8
8
|
export * from "./EditBufferRenderable.js";
|
|
9
|
+
export * from "./EmbeddedTerminal.js";
|
|
9
10
|
export * from "./FrameBuffer.js";
|
|
10
11
|
export * from "./Input.js";
|
|
11
12
|
export * from "./Image.js";
|
package/testing.bun.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import {
|
|
3
3
|
ANSI,
|
|
4
4
|
CliRenderer
|
|
5
|
-
} from "./chunk-bun-
|
|
5
|
+
} from "./chunk-bun-da1keqyp.js";
|
|
6
6
|
import {
|
|
7
7
|
SystemClock,
|
|
8
8
|
TreeSitterClient
|
|
9
|
-
} from "./chunk-bun-
|
|
9
|
+
} from "./chunk-bun-9335djz2.js";
|
|
10
10
|
|
|
11
11
|
// src/testing/mock-keys.ts
|
|
12
12
|
import { Buffer as Buffer2 } from "buffer";
|
package/testing.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ANSI,
|
|
3
3
|
CliRenderer
|
|
4
|
-
} from "./chunk-node-
|
|
4
|
+
} from "./chunk-node-ks0581vk.js";
|
|
5
5
|
import {
|
|
6
6
|
SystemClock,
|
|
7
7
|
TreeSitterClient
|
|
8
|
-
} from "./chunk-node-
|
|
8
|
+
} from "./chunk-node-2h23nsbj.js";
|
|
9
9
|
|
|
10
10
|
// src/testing/mock-keys.ts
|
|
11
11
|
import { Buffer as Buffer2 } from "node:buffer";
|
package/utils.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Renderable } from "./Renderable.js";
|
|
2
|
-
export declare function createTextAttributes({ bold, italic, underline, dim, blink, inverse, hidden, strikethrough, }?: {
|
|
2
|
+
export declare function createTextAttributes({ bold, italic, underline, dim, blink, inverse, reverse, hidden, strikethrough, }?: {
|
|
3
3
|
bold?: boolean;
|
|
4
4
|
italic?: boolean;
|
|
5
5
|
underline?: boolean;
|
|
6
6
|
dim?: boolean;
|
|
7
7
|
blink?: boolean;
|
|
8
8
|
inverse?: boolean;
|
|
9
|
+
reverse?: boolean;
|
|
9
10
|
hidden?: boolean;
|
|
10
11
|
strikethrough?: boolean;
|
|
11
12
|
}): number;
|
package/yoga.bun.js
CHANGED
package/yoga.js
CHANGED
package/zig-structs.d.ts
CHANGED
|
@@ -82,6 +82,8 @@ export declare const LineInfoStruct: import("bun-ffi-structs").DefineStructRetur
|
|
|
82
82
|
}], readonly ["widthColsMax", "u32"]], {}>;
|
|
83
83
|
export declare const MeasureResultStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["lineCount", "u32"], readonly ["widthColsMax", "u32"]], {}>;
|
|
84
84
|
export declare const CursorStateStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["x", "u32"], readonly ["y", "u32"], readonly ["visible", "bool_u8"], readonly ["style", "u8"], readonly ["blinking", "bool_u8"], readonly ["r", "f32"], readonly ["g", "f32"], readonly ["b", "f32"], readonly ["a", "f32"]], {}>;
|
|
85
|
+
export declare const EmbeddedTerminalCursorStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["x", "u16"], readonly ["y", "u16"], readonly ["hasValue", "bool_u8"], readonly ["visible", "bool_u8"], readonly ["blinking", "bool_u8"], readonly ["wideTail", "bool_u8"], readonly ["style", "u8"], readonly ["colorHasValue", "bool_u8"], readonly ["colorR", "u8"], readonly ["colorG", "u8"], readonly ["colorB", "u8"], readonly ["padding", "u8"]], {}>;
|
|
86
|
+
export declare const EmbeddedTerminalKeyOptionsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["action", "u8"], readonly ["composing", "u8"], readonly ["mods", "u16"], readonly ["consumedMods", "u16"], readonly ["padding", "u16"], readonly ["unshiftedCodepoint", "u32"]], {}>;
|
|
85
87
|
export declare const CursorStyleOptionsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["style", "u8", {
|
|
86
88
|
readonly default: 255;
|
|
87
89
|
}], readonly ["blinking", "u8", {
|
package/zig.d.ts
CHANGED
|
@@ -89,6 +89,38 @@ export declare enum NativeClipboardShutdownStatus {
|
|
|
89
89
|
Ready = 1,
|
|
90
90
|
InvalidHandle = 2
|
|
91
91
|
}
|
|
92
|
+
export type EmbeddedTerminalHandle = NativeHandle<"embedded_terminal">;
|
|
93
|
+
export type EmbeddedTerminalCursor = {
|
|
94
|
+
x: number;
|
|
95
|
+
y: number;
|
|
96
|
+
hasValue: boolean;
|
|
97
|
+
visible: boolean;
|
|
98
|
+
blinking: boolean;
|
|
99
|
+
wideTail: boolean;
|
|
100
|
+
style: "bar" | "block" | "underline" | "block-hollow";
|
|
101
|
+
color?: {
|
|
102
|
+
r: number;
|
|
103
|
+
g: number;
|
|
104
|
+
b: number;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
export type EmbeddedTerminalKey = {
|
|
108
|
+
action?: "release" | "press" | "repeat";
|
|
109
|
+
key?: string;
|
|
110
|
+
mods?: number;
|
|
111
|
+
consumedMods?: number;
|
|
112
|
+
composing?: boolean;
|
|
113
|
+
text?: string;
|
|
114
|
+
unshiftedCodepoint?: number;
|
|
115
|
+
};
|
|
116
|
+
export type EmbeddedTerminalMouse = {
|
|
117
|
+
action: "press" | "release" | "motion";
|
|
118
|
+
button?: "unknown" | "left" | "right" | "middle" | "four" | "five" | "six" | "seven";
|
|
119
|
+
mods?: number;
|
|
120
|
+
x: number;
|
|
121
|
+
y: number;
|
|
122
|
+
anyButtonPressed?: boolean;
|
|
123
|
+
};
|
|
92
124
|
export declare enum LogLevel {
|
|
93
125
|
Error = 0,
|
|
94
126
|
Warn = 1,
|
|
@@ -225,7 +257,7 @@ export interface AudioEngineLib {
|
|
|
225
257
|
export interface RenderLib extends AudioEngineLib {
|
|
226
258
|
createRenderer: (width: number, height: number, options?: NativeRendererCreateOptions) => RendererHandle | null;
|
|
227
259
|
setTerminalEnvVar: (renderer: RendererHandle, key: string, value: string) => boolean;
|
|
228
|
-
destroyRenderer: (renderer: RendererHandle) => void;
|
|
260
|
+
destroyRenderer: (renderer: RendererHandle, flushInput?: boolean) => void;
|
|
229
261
|
setUseThread: (renderer: RendererHandle, useThread: boolean) => void;
|
|
230
262
|
setClearOnShutdown: (renderer: RendererHandle, clear: boolean) => void;
|
|
231
263
|
setBackgroundColor: (renderer: RendererHandle, color: RGBA) => void;
|
|
@@ -263,13 +295,13 @@ export interface RenderLib extends AudioEngineLib {
|
|
|
263
295
|
bufferSetCellWithAlphaBlending: (buffer: OptimizedBufferHandle, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void;
|
|
264
296
|
bufferSetCell: (buffer: OptimizedBufferHandle, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void;
|
|
265
297
|
bufferFillRect: (buffer: OptimizedBufferHandle, x: number, y: number, width: number, height: number, color: RGBA) => void;
|
|
266
|
-
bufferColorMatrix: (buffer: OptimizedBufferHandle,
|
|
267
|
-
bufferColorMatrixUniform: (buffer: OptimizedBufferHandle,
|
|
268
|
-
bufferDrawSuperSampleBuffer: (buffer: OptimizedBufferHandle, x: number, y: number,
|
|
298
|
+
bufferColorMatrix: (buffer: OptimizedBufferHandle, matrix: Pointer | Float32Array, cellMask: Pointer | Float32Array, cellMaskCount: number, strength: number, target: TargetChannel) => void;
|
|
299
|
+
bufferColorMatrixUniform: (buffer: OptimizedBufferHandle, matrix: Pointer | Float32Array, strength: number, target: TargetChannel) => void;
|
|
300
|
+
bufferDrawSuperSampleBuffer: (buffer: OptimizedBufferHandle, x: number, y: number, pixelData: Pointer | Uint8Array, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number) => void;
|
|
269
301
|
bufferDrawImage: (buffer: OptimizedBufferHandle, image: ImageHandle, x: number, y: number, width: number, height: number, pixelWidth: number, pixelHeight: number, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, protocol: ImageRenderProtocol) => boolean;
|
|
270
|
-
bufferDrawPackedBuffer: (buffer: OptimizedBufferHandle,
|
|
271
|
-
bufferDrawGrayscaleBuffer: (buffer: OptimizedBufferHandle, posX: number, posY: number,
|
|
272
|
-
bufferDrawGrayscaleBufferSupersampled: (buffer: OptimizedBufferHandle, posX: number, posY: number,
|
|
302
|
+
bufferDrawPackedBuffer: (buffer: OptimizedBufferHandle, data: Pointer | Uint8Array, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number) => void;
|
|
303
|
+
bufferDrawGrayscaleBuffer: (buffer: OptimizedBufferHandle, posX: number, posY: number, intensities: Pointer | Float32Array, srcWidth: number, srcHeight: number, fg: RGBA | null, bg: RGBA | null) => void;
|
|
304
|
+
bufferDrawGrayscaleBufferSupersampled: (buffer: OptimizedBufferHandle, posX: number, posY: number, intensities: Pointer | Float32Array, srcWidth: number, srcHeight: number, fg: RGBA | null, bg: RGBA | null) => void;
|
|
273
305
|
bufferDrawGrid: (buffer: OptimizedBufferHandle, borderChars: Uint32Array, borderFg: RGBA, borderBg: RGBA, columnOffsets: Int32Array, columnCount: number, rowOffsets: Int32Array, rowCount: number, options: {
|
|
274
306
|
drawInner: boolean;
|
|
275
307
|
drawOuter: boolean;
|
|
@@ -683,6 +715,32 @@ export interface RenderLib extends AudioEngineLib {
|
|
|
683
715
|
destroyNativeRenderable: (handle: NativeRenderableHandle) => void;
|
|
684
716
|
nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean;
|
|
685
717
|
nativeRenderableSetMeasureTarget: (handle: NativeRenderableHandle, kind: NativeMeasureTargetKind, target: NativeMeasureTargetHandle | 0) => boolean;
|
|
718
|
+
createEmbeddedTerminal: (options: {
|
|
719
|
+
cols: number;
|
|
720
|
+
rows: number;
|
|
721
|
+
maxScrollback?: number;
|
|
722
|
+
}) => EmbeddedTerminalHandle;
|
|
723
|
+
destroyEmbeddedTerminal: (handle: EmbeddedTerminalHandle) => void;
|
|
724
|
+
embeddedTerminalWrite: (handle: EmbeddedTerminalHandle, data: string | Uint8Array) => void;
|
|
725
|
+
embeddedTerminalResize: (handle: EmbeddedTerminalHandle, cols: number, rows: number) => void;
|
|
726
|
+
embeddedTerminalInvalidate: (handle: EmbeddedTerminalHandle) => void;
|
|
727
|
+
embeddedTerminalScroll: (handle: EmbeddedTerminalHandle, delta: number) => void;
|
|
728
|
+
embeddedTerminalSetSelection: (handle: EmbeddedTerminalHandle, start: {
|
|
729
|
+
x: number;
|
|
730
|
+
y: number;
|
|
731
|
+
}, end: {
|
|
732
|
+
x: number;
|
|
733
|
+
y: number;
|
|
734
|
+
}) => void;
|
|
735
|
+
embeddedTerminalClearSelection: (handle: EmbeddedTerminalHandle) => void;
|
|
736
|
+
embeddedTerminalGetSelectedText: (handle: EmbeddedTerminalHandle) => Uint8Array;
|
|
737
|
+
embeddedTerminalCompose: (handle: EmbeddedTerminalHandle, target: OptimizedBufferHandle, x: number, y: number) => void;
|
|
738
|
+
embeddedTerminalCursor: (handle: EmbeddedTerminalHandle) => EmbeddedTerminalCursor;
|
|
739
|
+
embeddedTerminalEncodeKey: (handle: EmbeddedTerminalHandle, key: EmbeddedTerminalKey) => Uint8Array;
|
|
740
|
+
embeddedTerminalEncodeMouse: (handle: EmbeddedTerminalHandle, mouse: EmbeddedTerminalMouse) => Uint8Array;
|
|
741
|
+
embeddedTerminalEncodePaste: (handle: EmbeddedTerminalHandle, input: Uint8Array) => Uint8Array;
|
|
742
|
+
embeddedTerminalEncodeFocus: (handle: EmbeddedTerminalHandle, focused: boolean) => Uint8Array;
|
|
743
|
+
embeddedTerminalDrainResponses: (handle: EmbeddedTerminalHandle) => Uint8Array;
|
|
686
744
|
onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
|
|
687
745
|
onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
|
|
688
746
|
offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
|