@opentui/core 0.5.4 → 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 +1 -1
- package/buffer.d.ts +2 -2
- package/{chunk-bun-1n307cze.js → chunk-bun-9335djz2.js} +445 -179
- package/{chunk-bun-1n307cze.js.map → chunk-bun-9335djz2.js.map} +6 -6
- package/{chunk-bun-gvv8cwwz.js → chunk-bun-da1keqyp.js} +2 -2
- package/{chunk-node-crchpns1.js → chunk-node-2h23nsbj.js} +445 -179
- package/{chunk-node-crchpns1.js.map → chunk-node-2h23nsbj.js.map} +6 -6
- package/{chunk-node-tq0x9mbj.js → chunk-node-ks0581vk.js} +2 -2
- package/index.bun.js +376 -3
- package/index.bun.js.map +4 -3
- package/index.node.js +376 -3
- package/index.node.js.map +4 -2
- 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/yoga.bun.js +1 -1
- package/yoga.js +1 -1
- package/zig-structs.d.ts +2 -0
- package/zig.d.ts +64 -6
- /package/{chunk-bun-gvv8cwwz.js.map → chunk-bun-da1keqyp.js.map} +0 -0
- /package/{chunk-node-tq0x9mbj.js.map → chunk-node-ks0581vk.js.map} +0 -0
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/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,
|
|
@@ -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;
|
|
File without changes
|
|
File without changes
|