@opentui/core 0.5.4 → 0.5.7
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-xmsp0nqq.js} +551 -221
- package/{chunk-bun-1n307cze.js.map → chunk-bun-xmsp0nqq.js.map} +8 -8
- package/{chunk-bun-gvv8cwwz.js → chunk-bun-z4gs6jzg.js} +129 -54
- package/chunk-bun-z4gs6jzg.js.map +32 -0
- package/{chunk-node-crchpns1.js → chunk-node-267dafd8.js} +551 -221
- package/{chunk-node-crchpns1.js.map → chunk-node-267dafd8.js.map} +8 -8
- package/{chunk-node-tq0x9mbj.js → chunk-node-591ssncm.js} +129 -54
- package/chunk-node-591ssncm.js.map +32 -0
- package/editor-view.d.ts +9 -2
- package/index.bun.js +377 -4
- package/index.bun.js.map +5 -4
- package/index.node.js +377 -4
- package/index.node.js.map +5 -3
- package/lib/selection.d.ts +4 -2
- package/package.json +9 -9
- package/renderables/EditBufferRenderable.d.ts +5 -1
- package/renderables/EmbeddedTerminal.d.ts +67 -0
- package/renderables/index.d.ts +1 -0
- package/renderer.d.ts +5 -2
- package/testing.bun.js +2 -2
- package/testing.js +2 -2
- package/text-buffer-view.d.ts +5 -2
- package/types.d.ts +10 -1
- package/yoga.bun.js +1 -1
- package/yoga.js +1 -1
- package/zig-structs.d.ts +2 -0
- package/zig.d.ts +76 -11
- package/chunk-bun-gvv8cwwz.js.map +0 -32
- package/chunk-node-tq0x9mbj.js.map +0 -32
package/lib/selection.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Renderable } from "../Renderable.js";
|
|
2
|
-
import type { ViewportBounds } from "../types.js";
|
|
2
|
+
import type { SelectionBehavior, ViewportBounds } from "../types.js";
|
|
3
3
|
import { fonts } from "./ascii.font.js";
|
|
4
4
|
export declare class Selection {
|
|
5
5
|
private _anchor;
|
|
@@ -9,13 +9,14 @@ export declare class Selection {
|
|
|
9
9
|
private _isActive;
|
|
10
10
|
private _isDragging;
|
|
11
11
|
private _isStart;
|
|
12
|
+
behavior: SelectionBehavior;
|
|
12
13
|
constructor(anchorRenderable: Renderable, anchor: {
|
|
13
14
|
x: number;
|
|
14
15
|
y: number;
|
|
15
16
|
}, focus: {
|
|
16
17
|
x: number;
|
|
17
18
|
y: number;
|
|
18
|
-
});
|
|
19
|
+
}, behavior?: SelectionBehavior);
|
|
19
20
|
get isStart(): boolean;
|
|
20
21
|
set isStart(value: boolean);
|
|
21
22
|
get anchor(): {
|
|
@@ -47,6 +48,7 @@ export interface LocalSelectionBounds {
|
|
|
47
48
|
focusX: number;
|
|
48
49
|
focusY: number;
|
|
49
50
|
isActive: boolean;
|
|
51
|
+
behavior: SelectionBehavior;
|
|
50
52
|
}
|
|
51
53
|
export declare function convertGlobalToLocalSelection(globalSelection: Selection | null, localX: number, localY: number): LocalSelectionBounds | null;
|
|
52
54
|
export declare class ASCIIFontSelectionHelper {
|
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.7",
|
|
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.7",
|
|
79
|
+
"@opentui/core-darwin-arm64": "0.5.7",
|
|
80
|
+
"@opentui/core-linux-x64": "0.5.7",
|
|
81
|
+
"@opentui/core-linux-arm64": "0.5.7",
|
|
82
|
+
"@opentui/core-win32-x64": "0.5.7",
|
|
83
|
+
"@opentui/core-win32-arm64": "0.5.7",
|
|
84
|
+
"@opentui/core-linux-x64-musl": "0.5.7",
|
|
85
|
+
"@opentui/core-linux-arm64-musl": "0.5.7"
|
|
86
86
|
}
|
|
87
87
|
}
|
|
@@ -3,7 +3,7 @@ import { Selection, type LocalSelectionBounds } from "../lib/selection.js";
|
|
|
3
3
|
import { EditBuffer, type LogicalCursor } from "../edit-buffer.js";
|
|
4
4
|
import { EditorView, type VisualCursor } from "../editor-view.js";
|
|
5
5
|
import { RGBA } from "../lib/RGBA.js";
|
|
6
|
-
import type { RenderContext, Highlight, CursorStyleOptions, LineInfoProvider, LineInfo } from "../types.js";
|
|
6
|
+
import type { RenderContext, Highlight, CursorStyleOptions, LineInfoProvider, LineInfo, SelectionOccupancy } from "../types.js";
|
|
7
7
|
import type { OptimizedBuffer } from "../buffer.js";
|
|
8
8
|
import type { SyntaxStyle } from "../syntax-style.js";
|
|
9
9
|
declare const BrandedEditBufferRenderable: unique symbol;
|
|
@@ -36,6 +36,7 @@ export interface EditBufferOptions extends RenderableOptions<EditBufferRenderabl
|
|
|
36
36
|
showCursor?: boolean;
|
|
37
37
|
cursorColor?: string | RGBA;
|
|
38
38
|
cursorStyle?: CursorStyleOptions;
|
|
39
|
+
selectionOccupancy?: SelectionOccupancy;
|
|
39
40
|
syntaxStyle?: SyntaxStyle;
|
|
40
41
|
tabIndicator?: string | number;
|
|
41
42
|
tabIndicatorColor?: string | RGBA;
|
|
@@ -120,6 +121,8 @@ export declare abstract class EditBufferRenderable extends Renderable implements
|
|
|
120
121
|
set cursorColor(value: RGBA | string);
|
|
121
122
|
get cursorStyle(): CursorStyleOptions;
|
|
122
123
|
set cursorStyle(style: CursorStyleOptions);
|
|
124
|
+
get selectionOccupancy(): SelectionOccupancy;
|
|
125
|
+
set selectionOccupancy(value: SelectionOccupancy | null | undefined);
|
|
123
126
|
get tabIndicator(): string | number | undefined;
|
|
124
127
|
set tabIndicator(value: string | number | undefined);
|
|
125
128
|
get tabIndicatorColor(): RGBA | undefined;
|
|
@@ -153,6 +156,7 @@ export declare abstract class EditBufferRenderable extends Renderable implements
|
|
|
153
156
|
deleteCharBackward(): boolean;
|
|
154
157
|
newLine(): boolean;
|
|
155
158
|
deleteLine(): boolean;
|
|
159
|
+
private collapseSelectionToEdge;
|
|
156
160
|
moveCursorLeft(options?: {
|
|
157
161
|
select?: boolean;
|
|
158
162
|
}): boolean;
|
|
@@ -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/renderer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Renderable, RootRenderable } from "./Renderable.js";
|
|
2
|
-
import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type TerminalCapabilities, type ThemeMode, type WidthMethod } from "./types.js";
|
|
2
|
+
import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type TerminalCapabilities, type ThemeMode, type SelectionBehavior, type WidthMethod } from "./types.js";
|
|
3
3
|
import { RGBA, type ColorInput } from "./lib/RGBA.js";
|
|
4
4
|
import { OptimizedBuffer } from "./buffer.js";
|
|
5
5
|
import { type NativeBufferedOutput, type NativeRenderStats, type RendererHandle } from "./zig.js";
|
|
@@ -295,6 +295,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
295
295
|
private lastOverRenderable?;
|
|
296
296
|
private currentSelection;
|
|
297
297
|
private selectionContainers;
|
|
298
|
+
private lastClick;
|
|
298
299
|
private clipboard;
|
|
299
300
|
private _splitHeight;
|
|
300
301
|
private renderOffset;
|
|
@@ -585,11 +586,13 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
585
586
|
get hasSelection(): boolean;
|
|
586
587
|
getSelectionContainer(): Renderable | null;
|
|
587
588
|
clearSelection(): void;
|
|
589
|
+
private clearSelectionState;
|
|
588
590
|
/**
|
|
589
591
|
* Start a new selection at the given coordinates.
|
|
590
592
|
* Used by both mouse and keyboard selection.
|
|
591
593
|
*/
|
|
592
|
-
startSelection(renderable: Renderable, x: number, y: number): void;
|
|
594
|
+
startSelection(renderable: Renderable, x: number, y: number, behavior?: SelectionBehavior): void;
|
|
595
|
+
private nextClickBehavior;
|
|
593
596
|
updateSelection(currentRenderable: Renderable | undefined, x: number, y: number, options?: {
|
|
594
597
|
finishDragging?: boolean;
|
|
595
598
|
}): void;
|
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-z4gs6jzg.js";
|
|
6
6
|
import {
|
|
7
7
|
SystemClock,
|
|
8
8
|
TreeSitterClient
|
|
9
|
-
} from "./chunk-bun-
|
|
9
|
+
} from "./chunk-bun-xmsp0nqq.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-591ssncm.js";
|
|
5
5
|
import {
|
|
6
6
|
SystemClock,
|
|
7
7
|
TreeSitterClient
|
|
8
|
-
} from "./chunk-node-
|
|
8
|
+
} from "./chunk-node-267dafd8.js";
|
|
9
9
|
|
|
10
10
|
// src/testing/mock-keys.ts
|
|
11
11
|
import { Buffer as Buffer2 } from "node:buffer";
|
package/text-buffer-view.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RGBA } from "./lib/RGBA.js";
|
|
2
2
|
import { type LineInfo, type MeasureResult, type RenderLib, type TextBufferViewHandle } from "./zig.js";
|
|
3
3
|
import type { TextBuffer } from "./text-buffer.js";
|
|
4
|
+
import type { SelectionBehavior, SelectionOccupancy } from "./types.js";
|
|
4
5
|
export declare class TextBufferView {
|
|
5
6
|
private lib;
|
|
6
7
|
private viewPtr;
|
|
@@ -18,9 +19,11 @@ export declare class TextBufferView {
|
|
|
18
19
|
end: number;
|
|
19
20
|
} | null;
|
|
20
21
|
hasSelection(): boolean;
|
|
21
|
-
setLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA): boolean;
|
|
22
|
-
updateLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA): boolean;
|
|
22
|
+
setLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA, behavior?: SelectionBehavior): boolean;
|
|
23
|
+
updateLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA, behavior?: SelectionBehavior): boolean;
|
|
23
24
|
resetLocalSelection(): void;
|
|
25
|
+
setSelectionOccupancy(occupancy: SelectionOccupancy): void;
|
|
26
|
+
getSelectionOccupancy(): SelectionOccupancy;
|
|
24
27
|
setWrapWidth(width: number | null): void;
|
|
25
28
|
setWrapMode(mode: "none" | "char" | "word"): void;
|
|
26
29
|
setFirstLineOffset(offset: number): void;
|
package/types.d.ts
CHANGED
|
@@ -24,6 +24,15 @@ export declare const ATTRIBUTE_BASE_MASK = 255;
|
|
|
24
24
|
export declare function getBaseAttributes(attr: number): number;
|
|
25
25
|
export type ThemeMode = "dark" | "light";
|
|
26
26
|
export type CursorStyle = "block" | "line" | "underline" | "default";
|
|
27
|
+
/** How a selection occupies cells between stored anchor and focus offsets.
|
|
28
|
+
* Independent of `cursorStyle` (CSI `q` is paint). Default `cell` includes
|
|
29
|
+
* the grapheme under the max endpoint. `boundary` is the half-open insert
|
|
30
|
+
* range `[min, max)`. */
|
|
31
|
+
export type SelectionOccupancy = "cell" | "boundary";
|
|
32
|
+
/** How local cell coordinates expand into a highlight range.
|
|
33
|
+
* `cell` is the current inclusive press/drag. `word` and `line` expand
|
|
34
|
+
* each endpoint through native selectWord / selectLine. */
|
|
35
|
+
export type SelectionBehavior = "cell" | "word" | "line";
|
|
27
36
|
export type MousePointerStyle = "default" | "pointer" | "text" | "crosshair" | "move" | "not-allowed";
|
|
28
37
|
export interface CursorStyleOptions {
|
|
29
38
|
style?: CursorStyle;
|
|
@@ -128,7 +137,7 @@ export interface RenderContext extends EventEmitter {
|
|
|
128
137
|
keyInput: KeyHandler;
|
|
129
138
|
_internalKeyInput: InternalKeyHandler;
|
|
130
139
|
clearSelection: () => void;
|
|
131
|
-
startSelection: (renderable: Renderable, x: number, y: number) => void;
|
|
140
|
+
startSelection: (renderable: Renderable, x: number, y: number, behavior?: SelectionBehavior) => void;
|
|
132
141
|
updateSelection: (currentRenderable: Renderable | undefined, x: number, y: number, options?: {
|
|
133
142
|
finishDragging?: boolean;
|
|
134
143
|
}) => void;
|
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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FFICallbackInstance, type Pointer } from "./platform/ffi.js";
|
|
2
|
-
import { type CursorStyle, type CursorStyleOptions, type TargetChannel, type DebugOverlayCorner, type WidthMethod, type TerminalCapabilities, type Highlight, type LineInfo, type ImageRenderProtocol } from "./types.js";
|
|
2
|
+
import { type CursorStyle, type CursorStyleOptions, type SelectionOccupancy, type SelectionBehavior, type TargetChannel, type DebugOverlayCorner, type WidthMethod, type TerminalCapabilities, type Highlight, type LineInfo, type ImageRenderProtocol } from "./types.js";
|
|
3
3
|
export type { LineInfo, AllocatorStats, AudioStreamCreateOptions, BuildOptions, NativeAudioCaptureStats, NativeAudioStreamStats, NativeRenderStats, };
|
|
4
4
|
import { RGBA } from "./lib/RGBA.js";
|
|
5
5
|
import { OptimizedBuffer } from "./buffer.js";
|
|
@@ -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;
|
|
@@ -442,10 +474,12 @@ export interface RenderLib extends AudioEngineLib {
|
|
|
442
474
|
start: number;
|
|
443
475
|
end: number;
|
|
444
476
|
} | null;
|
|
445
|
-
textBufferViewSetLocalSelection: (view: TextBufferViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null) => boolean;
|
|
477
|
+
textBufferViewSetLocalSelection: (view: TextBufferViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, behavior?: SelectionBehavior) => boolean;
|
|
446
478
|
textBufferViewUpdateSelection: (view: TextBufferViewHandle, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void;
|
|
447
|
-
textBufferViewUpdateLocalSelection: (view: TextBufferViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null) => boolean;
|
|
479
|
+
textBufferViewUpdateLocalSelection: (view: TextBufferViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, behavior?: SelectionBehavior) => boolean;
|
|
448
480
|
textBufferViewResetLocalSelection: (view: TextBufferViewHandle) => void;
|
|
481
|
+
textBufferViewSetSelectionOccupancy: (view: TextBufferViewHandle, occupancy: SelectionOccupancy) => void;
|
|
482
|
+
textBufferViewGetSelectionOccupancy: (view: TextBufferViewHandle) => SelectionOccupancy;
|
|
449
483
|
textBufferViewSetWrapWidth: (view: TextBufferViewHandle, width: number) => void;
|
|
450
484
|
textBufferViewSetWrapMode: (view: TextBufferViewHandle, mode: "none" | "char" | "word") => void;
|
|
451
485
|
textBufferViewSetFirstLineOffset: (view: TextBufferViewHandle, offset: number) => void;
|
|
@@ -541,10 +575,14 @@ export interface RenderLib extends AudioEngineLib {
|
|
|
541
575
|
start: number;
|
|
542
576
|
end: number;
|
|
543
577
|
} | null;
|
|
544
|
-
editorViewSetLocalSelection: (view: EditorViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, updateCursor: boolean, followCursor: boolean) => boolean;
|
|
578
|
+
editorViewSetLocalSelection: (view: EditorViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, updateCursor: boolean, followCursor: boolean, behavior?: SelectionBehavior) => boolean;
|
|
545
579
|
editorViewUpdateSelection: (view: EditorViewHandle, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void;
|
|
546
|
-
editorViewUpdateLocalSelection: (view: EditorViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, updateCursor: boolean, followCursor: boolean) => boolean;
|
|
580
|
+
editorViewUpdateLocalSelection: (view: EditorViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, updateCursor: boolean, followCursor: boolean, behavior?: SelectionBehavior) => boolean;
|
|
547
581
|
editorViewResetLocalSelection: (view: EditorViewHandle) => void;
|
|
582
|
+
editorViewConvertSelectionToCell: (view: EditorViewHandle) => boolean;
|
|
583
|
+
editorViewSetSelectionOccupancy: (view: EditorViewHandle, occupancy: SelectionOccupancy) => void;
|
|
584
|
+
editorViewSetSelectionInclusive: (view: EditorViewHandle, start: number, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void;
|
|
585
|
+
editorViewSetSelectionColors: (view: EditorViewHandle, bgColor: RGBA | null, fgColor: RGBA | null) => void;
|
|
548
586
|
editorViewGetSelectedTextBytes: (view: EditorViewHandle, maxLength: number) => Uint8Array | null;
|
|
549
587
|
editorViewGetCursor: (view: EditorViewHandle) => {
|
|
550
588
|
row: number;
|
|
@@ -561,6 +599,7 @@ export interface RenderLib extends AudioEngineLib {
|
|
|
561
599
|
editorViewGetEOL: (view: EditorViewHandle) => VisualCursor;
|
|
562
600
|
editorViewGetVisualSOL: (view: EditorViewHandle) => VisualCursor;
|
|
563
601
|
editorViewGetVisualEOL: (view: EditorViewHandle) => VisualCursor;
|
|
602
|
+
editorViewGotoVisualLineEnd: (view: EditorViewHandle) => void;
|
|
564
603
|
editorViewGetLineInfo: (view: EditorViewHandle) => LineInfo;
|
|
565
604
|
editorViewGetLogicalLineInfo: (view: EditorViewHandle) => LineInfo;
|
|
566
605
|
editorViewSetPlaceholderStyledText: (view: EditorViewHandle, chunks: Array<{
|
|
@@ -683,6 +722,32 @@ export interface RenderLib extends AudioEngineLib {
|
|
|
683
722
|
destroyNativeRenderable: (handle: NativeRenderableHandle) => void;
|
|
684
723
|
nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean;
|
|
685
724
|
nativeRenderableSetMeasureTarget: (handle: NativeRenderableHandle, kind: NativeMeasureTargetKind, target: NativeMeasureTargetHandle | 0) => boolean;
|
|
725
|
+
createEmbeddedTerminal: (options: {
|
|
726
|
+
cols: number;
|
|
727
|
+
rows: number;
|
|
728
|
+
maxScrollback?: number;
|
|
729
|
+
}) => EmbeddedTerminalHandle;
|
|
730
|
+
destroyEmbeddedTerminal: (handle: EmbeddedTerminalHandle) => void;
|
|
731
|
+
embeddedTerminalWrite: (handle: EmbeddedTerminalHandle, data: string | Uint8Array) => void;
|
|
732
|
+
embeddedTerminalResize: (handle: EmbeddedTerminalHandle, cols: number, rows: number) => void;
|
|
733
|
+
embeddedTerminalInvalidate: (handle: EmbeddedTerminalHandle) => void;
|
|
734
|
+
embeddedTerminalScroll: (handle: EmbeddedTerminalHandle, delta: number) => void;
|
|
735
|
+
embeddedTerminalSetSelection: (handle: EmbeddedTerminalHandle, start: {
|
|
736
|
+
x: number;
|
|
737
|
+
y: number;
|
|
738
|
+
}, end: {
|
|
739
|
+
x: number;
|
|
740
|
+
y: number;
|
|
741
|
+
}) => void;
|
|
742
|
+
embeddedTerminalClearSelection: (handle: EmbeddedTerminalHandle) => void;
|
|
743
|
+
embeddedTerminalGetSelectedText: (handle: EmbeddedTerminalHandle) => Uint8Array;
|
|
744
|
+
embeddedTerminalCompose: (handle: EmbeddedTerminalHandle, target: OptimizedBufferHandle, x: number, y: number) => void;
|
|
745
|
+
embeddedTerminalCursor: (handle: EmbeddedTerminalHandle) => EmbeddedTerminalCursor;
|
|
746
|
+
embeddedTerminalEncodeKey: (handle: EmbeddedTerminalHandle, key: EmbeddedTerminalKey) => Uint8Array;
|
|
747
|
+
embeddedTerminalEncodeMouse: (handle: EmbeddedTerminalHandle, mouse: EmbeddedTerminalMouse) => Uint8Array;
|
|
748
|
+
embeddedTerminalEncodePaste: (handle: EmbeddedTerminalHandle, input: Uint8Array) => Uint8Array;
|
|
749
|
+
embeddedTerminalEncodeFocus: (handle: EmbeddedTerminalHandle, focused: boolean) => Uint8Array;
|
|
750
|
+
embeddedTerminalDrainResponses: (handle: EmbeddedTerminalHandle) => Uint8Array;
|
|
686
751
|
onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
|
|
687
752
|
onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
|
|
688
753
|
offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
|