@opentui/core 0.1.10 → 0.1.12
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/Renderable.d.ts +37 -24
- package/buffer.d.ts +6 -5
- package/index-bpwzbxgn.js +8819 -0
- package/index-bpwzbxgn.js.map +36 -0
- package/index.js +1186 -9495
- package/index.js.map +14 -38
- package/lib/ascii.font.d.ts +1 -0
- package/lib/word-jumps.d.ts +2 -0
- package/package.json +7 -7
- package/renderables/ASCIIFont.d.ts +5 -5
- package/renderables/Box.d.ts +10 -2
- package/renderables/FrameBuffer.d.ts +3 -2
- package/renderables/Group.d.ts +2 -1
- package/renderables/Input.d.ts +4 -2
- package/renderables/Select.d.ts +3 -2
- package/renderables/TabSelect.d.ts +3 -2
- package/renderables/Text.d.ts +3 -3
- package/renderables/composition/VRenderable.d.ts +16 -0
- package/renderables/composition/constructs.d.ts +14 -0
- package/renderables/composition/vnode.d.ts +38 -0
- package/renderables/index.d.ts +3 -0
- package/renderer.d.ts +13 -7
- package/text-buffer.d.ts +2 -1
- package/types.d.ts +11 -2
- package/zig.d.ts +11 -6
package/lib/ascii.font.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.1.
|
|
7
|
+
"version": "0.1.12",
|
|
8
8
|
"description": "OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"bun-webgpu": "0.1.3",
|
|
39
39
|
"planck": "^1.4.2",
|
|
40
40
|
"three": "0.177.0",
|
|
41
|
-
"@opentui/core-darwin-x64": "0.1.
|
|
42
|
-
"@opentui/core-darwin-arm64": "0.1.
|
|
43
|
-
"@opentui/core-linux-x64": "0.1.
|
|
44
|
-
"@opentui/core-linux-arm64": "0.1.
|
|
45
|
-
"@opentui/core-win32-x64": "0.1.
|
|
46
|
-
"@opentui/core-win32-arm64": "0.1.
|
|
41
|
+
"@opentui/core-darwin-x64": "0.1.12",
|
|
42
|
+
"@opentui/core-darwin-arm64": "0.1.12",
|
|
43
|
+
"@opentui/core-linux-x64": "0.1.12",
|
|
44
|
+
"@opentui/core-linux-arm64": "0.1.12",
|
|
45
|
+
"@opentui/core-win32-x64": "0.1.12",
|
|
46
|
+
"@opentui/core-win32-arm64": "0.1.12"
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RenderableOptions } from "../Renderable";
|
|
2
|
-
import { type fonts } from "../lib/ascii.font";
|
|
2
|
+
import { type fonts, type ASCIIFontName } from "../lib/ascii.font";
|
|
3
3
|
import { RGBA } from "../lib/RGBA";
|
|
4
4
|
import { FrameBufferRenderable } from "./FrameBuffer";
|
|
5
|
-
import type { SelectionState } from "../types";
|
|
6
|
-
export interface ASCIIFontOptions extends RenderableOptions {
|
|
5
|
+
import type { RenderContext, SelectionState } from "../types";
|
|
6
|
+
export interface ASCIIFontOptions extends RenderableOptions<ASCIIFontRenderable> {
|
|
7
7
|
text?: string;
|
|
8
|
-
font?:
|
|
8
|
+
font?: ASCIIFontName;
|
|
9
9
|
fg?: RGBA | RGBA[];
|
|
10
10
|
bg?: RGBA;
|
|
11
11
|
selectionBg?: string | RGBA;
|
|
@@ -21,7 +21,7 @@ export declare class ASCIIFontRenderable extends FrameBufferRenderable {
|
|
|
21
21
|
private _selectionBg;
|
|
22
22
|
private _selectionFg;
|
|
23
23
|
private selectionHelper;
|
|
24
|
-
constructor(
|
|
24
|
+
constructor(ctx: RenderContext, options: ASCIIFontOptions);
|
|
25
25
|
get text(): string;
|
|
26
26
|
set text(value: string);
|
|
27
27
|
get font(): keyof typeof fonts;
|
package/renderables/Box.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { type RenderableOptions, Renderable } from "../Renderable";
|
|
|
2
2
|
import type { OptimizedBuffer } from "../buffer";
|
|
3
3
|
import { type BorderCharacters, type BorderSides, type BorderSidesConfig, type BorderStyle } from "../lib";
|
|
4
4
|
import { type ColorInput, RGBA } from "../lib/RGBA";
|
|
5
|
-
|
|
5
|
+
import type { RenderContext } from "../types";
|
|
6
|
+
export interface BoxOptions extends RenderableOptions<BoxRenderable> {
|
|
6
7
|
backgroundColor?: string | RGBA;
|
|
7
8
|
borderStyle?: BorderStyle;
|
|
8
9
|
border?: boolean | BorderSides[];
|
|
@@ -12,6 +13,9 @@ export interface BoxOptions extends RenderableOptions {
|
|
|
12
13
|
title?: string;
|
|
13
14
|
titleAlignment?: "left" | "center" | "right";
|
|
14
15
|
focusedBorderColor?: ColorInput;
|
|
16
|
+
gap?: number | `${number}%`;
|
|
17
|
+
rowGap?: number | `${number}%`;
|
|
18
|
+
columnGap?: number | `${number}%`;
|
|
15
19
|
}
|
|
16
20
|
export declare class BoxRenderable extends Renderable {
|
|
17
21
|
protected _backgroundColor: RGBA;
|
|
@@ -34,7 +38,7 @@ export declare class BoxRenderable extends Renderable {
|
|
|
34
38
|
titleAlignment: "left";
|
|
35
39
|
focusedBorderColor: string;
|
|
36
40
|
};
|
|
37
|
-
constructor(
|
|
41
|
+
constructor(ctx: RenderContext, options: BoxOptions);
|
|
38
42
|
get customBorderChars(): BorderCharacters | undefined;
|
|
39
43
|
set customBorderChars(value: BorderCharacters | undefined);
|
|
40
44
|
get backgroundColor(): RGBA;
|
|
@@ -53,4 +57,8 @@ export declare class BoxRenderable extends Renderable {
|
|
|
53
57
|
set titleAlignment(value: "left" | "center" | "right");
|
|
54
58
|
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
55
59
|
private applyYogaBorders;
|
|
60
|
+
private applyYogaGap;
|
|
61
|
+
set gap(gap: number | `${number}%` | undefined);
|
|
62
|
+
set rowGap(rowGap: number | `${number}%` | undefined);
|
|
63
|
+
set columnGap(columnGap: number | `${number}%` | undefined);
|
|
56
64
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type RenderableOptions, Renderable } from "../Renderable";
|
|
2
2
|
import { OptimizedBuffer } from "../buffer";
|
|
3
|
-
|
|
3
|
+
import type { RenderContext } from "../types";
|
|
4
|
+
export interface FrameBufferOptions extends RenderableOptions<FrameBufferRenderable> {
|
|
4
5
|
width: number;
|
|
5
6
|
height: number;
|
|
6
7
|
respectAlpha?: boolean;
|
|
@@ -8,7 +9,7 @@ export interface FrameBufferOptions extends RenderableOptions {
|
|
|
8
9
|
export declare class FrameBufferRenderable extends Renderable {
|
|
9
10
|
frameBuffer: OptimizedBuffer;
|
|
10
11
|
protected respectAlpha: boolean;
|
|
11
|
-
constructor(
|
|
12
|
+
constructor(ctx: RenderContext, options: FrameBufferOptions);
|
|
12
13
|
protected onResize(width: number, height: number): void;
|
|
13
14
|
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
14
15
|
protected destroySelf(): void;
|
package/renderables/Group.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
2
|
+
import type { RenderContext } from "../types";
|
|
2
3
|
export declare class GroupRenderable extends Renderable {
|
|
3
|
-
constructor(
|
|
4
|
+
constructor(ctx: RenderContext, options: RenderableOptions);
|
|
4
5
|
}
|
package/renderables/Input.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { OptimizedBuffer } from "../buffer";
|
|
|
2
2
|
import type { ParsedKey } from "../lib/parse.keypress";
|
|
3
3
|
import { type ColorInput } from "../lib/RGBA";
|
|
4
4
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
5
|
-
|
|
5
|
+
import type { RenderContext } from "../types";
|
|
6
|
+
export interface InputRenderableOptions extends RenderableOptions<InputRenderable> {
|
|
6
7
|
backgroundColor?: ColorInput;
|
|
7
8
|
textColor?: ColorInput;
|
|
8
9
|
focusedBackgroundColor?: ColorInput;
|
|
@@ -42,7 +43,7 @@ export declare class InputRenderable extends Renderable {
|
|
|
42
43
|
maxLength: number;
|
|
43
44
|
value: string;
|
|
44
45
|
};
|
|
45
|
-
constructor(
|
|
46
|
+
constructor(ctx: RenderContext, options: InputRenderableOptions);
|
|
46
47
|
private updateCursorPosition;
|
|
47
48
|
focus(): void;
|
|
48
49
|
blur(): void;
|
|
@@ -64,5 +65,6 @@ export declare class InputRenderable extends Renderable {
|
|
|
64
65
|
set cursorColor(value: ColorInput);
|
|
65
66
|
updateFromLayout(): void;
|
|
66
67
|
protected onResize(width: number, height: number): void;
|
|
68
|
+
protected onRemove(): void;
|
|
67
69
|
protected destroySelf(): void;
|
|
68
70
|
}
|
package/renderables/Select.d.ts
CHANGED
|
@@ -3,12 +3,13 @@ import { fonts } from "../lib/ascii.font";
|
|
|
3
3
|
import type { ParsedKey } from "../lib/parse.keypress";
|
|
4
4
|
import { type ColorInput } from "../lib/RGBA";
|
|
5
5
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
6
|
+
import type { RenderContext } from "../types";
|
|
6
7
|
export interface SelectOption {
|
|
7
8
|
name: string;
|
|
8
9
|
description: string;
|
|
9
10
|
value?: any;
|
|
10
11
|
}
|
|
11
|
-
export interface SelectRenderableOptions extends RenderableOptions {
|
|
12
|
+
export interface SelectRenderableOptions extends RenderableOptions<SelectRenderable> {
|
|
12
13
|
backgroundColor?: ColorInput;
|
|
13
14
|
textColor?: ColorInput;
|
|
14
15
|
focusedBackgroundColor?: ColorInput;
|
|
@@ -66,7 +67,7 @@ export declare class SelectRenderable extends Renderable {
|
|
|
66
67
|
itemSpacing: number;
|
|
67
68
|
fastScrollStep: number;
|
|
68
69
|
};
|
|
69
|
-
constructor(
|
|
70
|
+
constructor(ctx: RenderContext, options: SelectRenderableOptions);
|
|
70
71
|
protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
71
72
|
private refreshFrameBuffer;
|
|
72
73
|
private renderScrollIndicatorToFrameBuffer;
|
|
@@ -2,12 +2,13 @@ import { Renderable, type RenderableOptions } from "../Renderable";
|
|
|
2
2
|
import { OptimizedBuffer } from "../buffer";
|
|
3
3
|
import { type ColorInput } from "../lib/RGBA";
|
|
4
4
|
import type { ParsedKey } from "../lib/parse.keypress";
|
|
5
|
+
import type { RenderContext } from "../types";
|
|
5
6
|
export interface TabSelectOption {
|
|
6
7
|
name: string;
|
|
7
8
|
description: string;
|
|
8
9
|
value?: any;
|
|
9
10
|
}
|
|
10
|
-
export interface TabSelectRenderableOptions extends Omit<RenderableOptions
|
|
11
|
+
export interface TabSelectRenderableOptions extends Omit<RenderableOptions<TabSelectRenderable>, "height"> {
|
|
11
12
|
height?: number;
|
|
12
13
|
options?: TabSelectOption[];
|
|
13
14
|
tabWidth?: number;
|
|
@@ -45,7 +46,7 @@ export declare class TabSelectRenderable extends Renderable {
|
|
|
45
46
|
private _showDescription;
|
|
46
47
|
private _showUnderline;
|
|
47
48
|
private _wrapSelection;
|
|
48
|
-
constructor(
|
|
49
|
+
constructor(ctx: RenderContext, options: TabSelectRenderableOptions);
|
|
49
50
|
private calculateDynamicHeight;
|
|
50
51
|
protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
51
52
|
private refreshFrameBuffer;
|
package/renderables/Text.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
2
2
|
import { StyledText } from "../lib/styled-text";
|
|
3
3
|
import { RGBA } from "../lib/RGBA";
|
|
4
|
-
import type
|
|
4
|
+
import { type SelectionState, type RenderContext } from "../types";
|
|
5
5
|
import type { OptimizedBuffer } from "../buffer";
|
|
6
|
-
export interface TextOptions extends RenderableOptions {
|
|
6
|
+
export interface TextOptions extends RenderableOptions<TextRenderable> {
|
|
7
7
|
content?: StyledText | string;
|
|
8
8
|
fg?: string | RGBA;
|
|
9
9
|
bg?: string | RGBA;
|
|
@@ -24,7 +24,7 @@ export declare class TextRenderable extends Renderable {
|
|
|
24
24
|
private textBuffer;
|
|
25
25
|
private _plainText;
|
|
26
26
|
private _lineInfo;
|
|
27
|
-
constructor(
|
|
27
|
+
constructor(ctx: RenderContext, options: TextOptions);
|
|
28
28
|
get content(): StyledText;
|
|
29
29
|
set content(value: StyledText | string);
|
|
30
30
|
get fg(): RGBA;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Renderable, type RenderableOptions } from "../../Renderable";
|
|
2
|
+
import type { OptimizedBuffer } from "../../buffer";
|
|
3
|
+
import type { RenderContext } from "../../types";
|
|
4
|
+
export interface VRenderableOptions extends RenderableOptions<VRenderable> {
|
|
5
|
+
render?: (this: VRenderable | VRenderableOptions, buffer: OptimizedBuffer, deltaTime: number, renderable: VRenderable) => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A generic renderable that accepts a custom render function as a prop.
|
|
9
|
+
* This allows functional constructs to specify custom rendering behavior
|
|
10
|
+
* without needing to subclass Renderable.
|
|
11
|
+
*/
|
|
12
|
+
export declare class VRenderable extends Renderable {
|
|
13
|
+
private options;
|
|
14
|
+
constructor(ctx: RenderContext, options: VRenderableOptions);
|
|
15
|
+
protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ASCIIFontRenderable, BoxRenderable, GroupRenderable, InputRenderable, SelectRenderable, TabSelectRenderable, TextRenderable, VRenderable, type ASCIIFontOptions, type BoxOptions, type TextOptions, type VRenderableOptions, type InputRenderableOptions, type SelectRenderableOptions, type TabSelectRenderableOptions, FrameBufferRenderable, type FrameBufferOptions } from "../";
|
|
2
|
+
import type { RenderableOptions } from "../../Renderable";
|
|
3
|
+
import { type VChild, type ProxiedVNode } from "./vnode";
|
|
4
|
+
export declare function Generic(props?: VRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof VRenderable>;
|
|
5
|
+
export declare function Group(props?: RenderableOptions<any>, ...children: VChild[]): ProxiedVNode<typeof GroupRenderable>;
|
|
6
|
+
export declare function Box(props?: BoxOptions, ...children: VChild[]): ProxiedVNode<typeof BoxRenderable>;
|
|
7
|
+
export declare function Text(props?: TextOptions & {
|
|
8
|
+
content?: any;
|
|
9
|
+
}, ...children: VChild[]): ProxiedVNode<typeof TextRenderable>;
|
|
10
|
+
export declare function ASCIIFont(props?: ASCIIFontOptions, ...children: VChild[]): ProxiedVNode<typeof ASCIIFontRenderable>;
|
|
11
|
+
export declare function Input(props?: InputRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof InputRenderable>;
|
|
12
|
+
export declare function Select(props?: SelectRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof SelectRenderable>;
|
|
13
|
+
export declare function TabSelect(props?: TabSelectRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof TabSelectRenderable>;
|
|
14
|
+
export declare function FrameBuffer(props: FrameBufferOptions, ...children: VChild[]): ProxiedVNode<typeof FrameBufferRenderable>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Renderable, type RenderableOptions } from "../../Renderable";
|
|
2
|
+
import type { RenderContext } from "../../types";
|
|
3
|
+
export type VChild = VNode | Renderable | VChild[] | null | undefined | false;
|
|
4
|
+
export interface PendingCall {
|
|
5
|
+
method: string;
|
|
6
|
+
args: any[];
|
|
7
|
+
isProperty?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface VNode<P = any, C = VChild[]> {
|
|
10
|
+
__isVNode: true;
|
|
11
|
+
type: Construct<P>;
|
|
12
|
+
props?: P;
|
|
13
|
+
children?: C;
|
|
14
|
+
__delegateMap?: Record<string, string>;
|
|
15
|
+
__pendingCalls?: PendingCall[];
|
|
16
|
+
}
|
|
17
|
+
export type ProxiedVNode<TCtor extends RenderableConstructor<any>> = VNode<TCtor extends RenderableConstructor<infer P> ? P : any> & {
|
|
18
|
+
[K in keyof InstanceType<TCtor>]: InstanceType<TCtor>[K] extends (...args: infer Args) => any ? (...args: Args) => ProxiedVNode<TCtor> : InstanceType<TCtor>[K];
|
|
19
|
+
};
|
|
20
|
+
export interface RenderableConstructor<P extends RenderableOptions<any> = RenderableOptions<any>> {
|
|
21
|
+
new (ctx: RenderContext, options: P): Renderable;
|
|
22
|
+
}
|
|
23
|
+
export type FunctionalConstruct<P = any> = (props: P, children?: VChild[]) => VNode;
|
|
24
|
+
export type Construct<P = any> = RenderableConstructor<P extends RenderableOptions<any> ? P : never> | FunctionalConstruct<P>;
|
|
25
|
+
export declare function h<TCtor extends RenderableConstructor<any>>(type: TCtor, props?: TCtor extends RenderableConstructor<infer P> ? P : never, ...children: VChild[]): ProxiedVNode<TCtor>;
|
|
26
|
+
export declare function h<P>(type: FunctionalConstruct<P>, props?: P, ...children: VChild[]): VNode<P>;
|
|
27
|
+
export declare function h<P>(type: Construct<P>, props?: P, ...children: VChild[]): VNode<P> | ProxiedVNode<any>;
|
|
28
|
+
export declare function isVNode(node: any): node is VNode;
|
|
29
|
+
export declare function ensureRenderable(ctx: RenderContext, node: Renderable | VNode<any, any[]>): Renderable;
|
|
30
|
+
export declare function wrapWithDelegates<T extends InstanceType<RenderableConstructor>>(instance: T, delegateMap: Record<string, string> | undefined): T;
|
|
31
|
+
export declare function instantiate(ctx: RenderContext, node: VChild): Renderable;
|
|
32
|
+
export type DelegateMap<T> = Partial<Record<keyof T, string>>;
|
|
33
|
+
export declare function delegate<TCtor extends RenderableConstructor<any>, K extends keyof InstanceType<TCtor>>(mapping: Partial<Record<K, string>>, vnode: ProxiedVNode<TCtor>): ProxiedVNode<TCtor>;
|
|
34
|
+
export declare function delegate<TCtor extends RenderableConstructor<any>, K extends keyof InstanceType<TCtor>>(mapping: Partial<Record<K, string>>, vnode: VNode<any> & {
|
|
35
|
+
type: TCtor;
|
|
36
|
+
}): VNode;
|
|
37
|
+
export declare function delegate(mapping: Record<string, string>, vnode: VNode<any>): VNode;
|
|
38
|
+
export declare function delegate(mapping: Record<string, string>, renderable: Renderable): Renderable;
|
package/renderables/index.d.ts
CHANGED
package/renderer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Renderable, RootRenderable } from "./Renderable";
|
|
2
|
-
import { type CursorStyle, DebugOverlayCorner } from "./types";
|
|
2
|
+
import { type CursorStyle, DebugOverlayCorner, type RenderContext, type WidthMethod } from "./types";
|
|
3
3
|
import { RGBA, type ColorInput } from "./lib/RGBA";
|
|
4
4
|
import type { Pointer } from "bun:ffi";
|
|
5
5
|
import { OptimizedBuffer } from "./buffer";
|
|
@@ -61,7 +61,7 @@ export declare function createCliRenderer(config?: CliRendererConfig): Promise<C
|
|
|
61
61
|
export declare enum CliRenderEvents {
|
|
62
62
|
DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle"
|
|
63
63
|
}
|
|
64
|
-
export declare class CliRenderer extends EventEmitter {
|
|
64
|
+
export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
65
65
|
private static animationFrameId;
|
|
66
66
|
private lib;
|
|
67
67
|
rendererPtr: Pointer;
|
|
@@ -109,7 +109,6 @@ export declare class CliRenderer extends EventEmitter {
|
|
|
109
109
|
private animationRequest;
|
|
110
110
|
private resizeTimeoutId;
|
|
111
111
|
private resizeDebounceDelay;
|
|
112
|
-
private renderContext;
|
|
113
112
|
private enableMouseMovement;
|
|
114
113
|
private _useMouse;
|
|
115
114
|
private _useAlternateScreen;
|
|
@@ -123,12 +122,16 @@ export declare class CliRenderer extends EventEmitter {
|
|
|
123
122
|
private renderOffset;
|
|
124
123
|
private _terminalWidth;
|
|
125
124
|
private _terminalHeight;
|
|
125
|
+
private _terminalIsSetup;
|
|
126
126
|
private realStdoutWrite;
|
|
127
127
|
private captureCallback;
|
|
128
128
|
private _useConsole;
|
|
129
129
|
private mouseParser;
|
|
130
130
|
private sigwinchHandler;
|
|
131
|
+
private _capabilities;
|
|
131
132
|
constructor(lib: RenderLib, rendererPtr: Pointer, stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, width: number, height: number, config?: CliRendererConfig);
|
|
133
|
+
addToHitGrid(x: number, y: number, width: number, height: number, id: number): void;
|
|
134
|
+
get widthMethod(): WidthMethod;
|
|
132
135
|
private writeOut;
|
|
133
136
|
needsUpdate(): void;
|
|
134
137
|
get useConsole(): boolean;
|
|
@@ -144,14 +147,17 @@ export declare class CliRenderer extends EventEmitter {
|
|
|
144
147
|
get experimental_splitHeight(): number;
|
|
145
148
|
get liveRequestCount(): number;
|
|
146
149
|
get currentControlState(): string;
|
|
150
|
+
get capabilities(): any | null;
|
|
147
151
|
set experimental_splitHeight(splitHeight: number);
|
|
148
152
|
private interceptStdoutWrite;
|
|
149
153
|
private disableStdoutInterception;
|
|
150
154
|
private flushStdoutCache;
|
|
151
155
|
private enableMouse;
|
|
152
156
|
private disableMouse;
|
|
157
|
+
enableKittyKeyboard(flags?: number): void;
|
|
158
|
+
disableKittyKeyboard(): void;
|
|
153
159
|
set useThread(useThread: boolean);
|
|
154
|
-
|
|
160
|
+
setupTerminal(): Promise<void>;
|
|
155
161
|
private handleMouseData;
|
|
156
162
|
private takeMemorySnapshot;
|
|
157
163
|
private startMemorySnapshotTimer;
|
|
@@ -169,9 +175,9 @@ export declare class CliRenderer extends EventEmitter {
|
|
|
169
175
|
dumpHitGrid(): void;
|
|
170
176
|
dumpBuffers(timestamp?: number): void;
|
|
171
177
|
dumpStdoutBuffer(timestamp?: number): void;
|
|
172
|
-
static setCursorPosition(x: number, y: number, visible?: boolean): void;
|
|
173
|
-
static setCursorStyle(style: CursorStyle, blinking?: boolean, color?: RGBA): void;
|
|
174
|
-
static setCursorColor(color: RGBA): void;
|
|
178
|
+
static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible?: boolean): void;
|
|
179
|
+
static setCursorStyle(renderer: CliRenderer, style: CursorStyle, blinking?: boolean, color?: RGBA): void;
|
|
180
|
+
static setCursorColor(renderer: CliRenderer, color: RGBA): void;
|
|
175
181
|
setCursorPosition(x: number, y: number, visible?: boolean): void;
|
|
176
182
|
setCursorStyle(style: CursorStyle, blinking?: boolean, color?: RGBA): void;
|
|
177
183
|
setCursorColor(color: RGBA): void;
|
package/text-buffer.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { StyledText } from "./lib/styled-text";
|
|
|
2
2
|
import { RGBA } from "./lib/RGBA";
|
|
3
3
|
import { type RenderLib } from "./zig";
|
|
4
4
|
import { type Pointer } from "bun:ffi";
|
|
5
|
+
import { type WidthMethod } from "./types";
|
|
5
6
|
export interface TextChunk {
|
|
6
7
|
__isChunk: true;
|
|
7
8
|
text: Uint8Array;
|
|
@@ -23,7 +24,7 @@ export declare class TextBuffer {
|
|
|
23
24
|
bg: Float32Array;
|
|
24
25
|
attributes: Uint16Array;
|
|
25
26
|
}, capacity: number);
|
|
26
|
-
static create(capacity
|
|
27
|
+
static create(capacity: number | undefined, widthMethod: WidthMethod): TextBuffer;
|
|
27
28
|
private syncBuffersAfterResize;
|
|
28
29
|
setStyledText(text: StyledText): void;
|
|
29
30
|
setDefaultFg(fg: RGBA | null): void;
|
package/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RGBA } from "./lib/RGBA";
|
|
1
2
|
export declare const TextAttributes: {
|
|
2
3
|
NONE: number;
|
|
3
4
|
BOLD: number;
|
|
@@ -16,11 +17,19 @@ export declare enum DebugOverlayCorner {
|
|
|
16
17
|
bottomLeft = 2,
|
|
17
18
|
bottomRight = 3
|
|
18
19
|
}
|
|
20
|
+
export type WidthMethod = "wcwidth" | "unicode";
|
|
19
21
|
export interface RenderContext {
|
|
20
22
|
addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
|
|
21
|
-
width:
|
|
22
|
-
height:
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
23
25
|
needsUpdate: () => void;
|
|
26
|
+
setCursorPosition: (x: number, y: number, visible: boolean) => void;
|
|
27
|
+
setCursorStyle: (style: CursorStyle, blinking: boolean) => void;
|
|
28
|
+
setCursorColor: (color: RGBA) => void;
|
|
29
|
+
widthMethod: WidthMethod;
|
|
30
|
+
capabilities: any | null;
|
|
31
|
+
requestLive: () => void;
|
|
32
|
+
dropLive: () => void;
|
|
24
33
|
}
|
|
25
34
|
export interface SelectionState {
|
|
26
35
|
anchor: {
|
package/zig.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Pointer } from "bun:ffi";
|
|
2
|
-
import type
|
|
2
|
+
import { type CursorStyle, type DebugOverlayCorner, type WidthMethod } from "./types";
|
|
3
3
|
import { RGBA } from "./lib/RGBA";
|
|
4
4
|
import { OptimizedBuffer } from "./buffer";
|
|
5
5
|
import { TextBuffer } from "./text-buffer";
|
|
@@ -14,7 +14,7 @@ export interface RenderLib {
|
|
|
14
14
|
render: (renderer: Pointer, force: boolean) => void;
|
|
15
15
|
getNextBuffer: (renderer: Pointer) => OptimizedBuffer;
|
|
16
16
|
getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer;
|
|
17
|
-
createOptimizedBuffer: (width: number, height: number, respectAlpha?: boolean) => OptimizedBuffer;
|
|
17
|
+
createOptimizedBuffer: (width: number, height: number, widthMethod: WidthMethod, respectAlpha?: boolean) => OptimizedBuffer;
|
|
18
18
|
destroyOptimizedBuffer: (bufferPtr: Pointer) => void;
|
|
19
19
|
drawFrameBuffer: (targetBufferPtr: Pointer, destX: number, destY: number, bufferPtr: Pointer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number) => void;
|
|
20
20
|
getBufferWidth: (buffer: Pointer) => number;
|
|
@@ -39,9 +39,9 @@ export interface RenderLib {
|
|
|
39
39
|
attributes: Uint8Array;
|
|
40
40
|
};
|
|
41
41
|
resizeRenderer: (renderer: Pointer, width: number, height: number) => void;
|
|
42
|
-
setCursorPosition: (x: number, y: number, visible: boolean) => void;
|
|
43
|
-
setCursorStyle: (style: CursorStyle, blinking: boolean) => void;
|
|
44
|
-
setCursorColor: (color: RGBA) => void;
|
|
42
|
+
setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void;
|
|
43
|
+
setCursorStyle: (renderer: Pointer, style: CursorStyle, blinking: boolean) => void;
|
|
44
|
+
setCursorColor: (renderer: Pointer, color: RGBA) => void;
|
|
45
45
|
setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void;
|
|
46
46
|
clearTerminal: (renderer: Pointer) => void;
|
|
47
47
|
addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void;
|
|
@@ -51,7 +51,10 @@ export interface RenderLib {
|
|
|
51
51
|
dumpStdoutBuffer: (renderer: Pointer, timestamp?: number) => void;
|
|
52
52
|
enableMouse: (renderer: Pointer, enableMovement: boolean) => void;
|
|
53
53
|
disableMouse: (renderer: Pointer) => void;
|
|
54
|
-
|
|
54
|
+
enableKittyKeyboard: (renderer: Pointer, flags: number) => void;
|
|
55
|
+
disableKittyKeyboard: (renderer: Pointer) => void;
|
|
56
|
+
setupTerminal: (renderer: Pointer, useAlternateScreen: boolean) => void;
|
|
57
|
+
createTextBuffer: (capacity: number, widthMethod: WidthMethod) => TextBuffer;
|
|
55
58
|
destroyTextBuffer: (buffer: Pointer) => void;
|
|
56
59
|
textBufferGetCharPtr: (buffer: Pointer) => Pointer;
|
|
57
60
|
textBufferGetFgPtr: (buffer: Pointer) => Pointer;
|
|
@@ -92,6 +95,8 @@ export interface RenderLib {
|
|
|
92
95
|
width: number;
|
|
93
96
|
height: number;
|
|
94
97
|
}) => void;
|
|
98
|
+
getTerminalCapabilities: (renderer: Pointer) => any;
|
|
99
|
+
processCapabilityResponse: (renderer: Pointer, response: string) => void;
|
|
95
100
|
}
|
|
96
101
|
export declare function setRenderLibPath(libPath: string): void;
|
|
97
102
|
export declare function resolveRenderLib(): RenderLib;
|