@opentui/core 0.1.14 → 0.1.15
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 +3 -3
- package/3d.js.map +3 -3
- package/Renderable.d.ts +20 -9
- package/buffer.d.ts +5 -27
- package/console.d.ts +1 -1
- package/{index-rv93tneq.js → index-sw194bbj.js} +489 -766
- package/index-sw194bbj.js.map +36 -0
- package/index.js +856 -47
- package/index.js.map +8 -5
- package/lib/selection.d.ts +31 -38
- package/lib/styled-text.d.ts +0 -3
- package/package.json +7 -7
- package/renderables/ASCIIFont.d.ts +4 -2
- package/renderables/ScrollBar.d.ts +77 -0
- package/renderables/ScrollBox.d.ts +82 -0
- package/renderables/Slider.d.ts +31 -0
- package/renderables/Text.d.ts +9 -5
- package/renderables/index.d.ts +2 -0
- package/renderer.d.ts +8 -5
- package/text-buffer.d.ts +9 -10
- package/types.d.ts +23 -12
- package/zig.d.ts +13 -23
- package/index-rv93tneq.js.map +0 -36
package/lib/selection.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { Renderable } from "..";
|
|
2
|
-
import type { SelectionState } from "../types";
|
|
1
|
+
import { Renderable, type ViewportBounds } from "..";
|
|
3
2
|
import { fonts } from "./ascii.font";
|
|
4
3
|
export declare class Selection {
|
|
5
4
|
private _anchor;
|
|
6
|
-
private
|
|
5
|
+
private _originalFocus;
|
|
6
|
+
private _normalizedAnchor;
|
|
7
|
+
private _normalizedFocus;
|
|
7
8
|
private _selectedRenderables;
|
|
8
|
-
|
|
9
|
+
private _touchedRenderables;
|
|
10
|
+
private _isActive;
|
|
11
|
+
private _isSelecting;
|
|
12
|
+
constructor(anchorRenderable: Renderable, anchor: {
|
|
9
13
|
x: number;
|
|
10
14
|
y: number;
|
|
11
15
|
}, focus: {
|
|
@@ -20,51 +24,40 @@ export declare class Selection {
|
|
|
20
24
|
x: number;
|
|
21
25
|
y: number;
|
|
22
26
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
set focus(value: {
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
});
|
|
31
|
+
private _updateNormalizedSelection;
|
|
32
|
+
get isActive(): boolean;
|
|
33
|
+
set isActive(value: boolean);
|
|
34
|
+
get isSelecting(): boolean;
|
|
35
|
+
set isSelecting(value: boolean);
|
|
36
|
+
get bounds(): ViewportBounds;
|
|
29
37
|
updateSelectedRenderables(selectedRenderables: Renderable[]): void;
|
|
38
|
+
get selectedRenderables(): Renderable[];
|
|
39
|
+
updateTouchedRenderables(touchedRenderables: Renderable[]): void;
|
|
40
|
+
get touchedRenderables(): Renderable[];
|
|
30
41
|
getSelectedText(): string;
|
|
31
42
|
}
|
|
32
|
-
export
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
private cachedGlobalSelection;
|
|
39
|
-
constructor(getX: () => number, getY: () => number, getTextLength: () => number, getLineInfo?: (() => {
|
|
40
|
-
lineStarts: number[];
|
|
41
|
-
lineWidths: number[];
|
|
42
|
-
}) | undefined);
|
|
43
|
-
hasSelection(): boolean;
|
|
44
|
-
getSelection(): {
|
|
45
|
-
start: number;
|
|
46
|
-
end: number;
|
|
47
|
-
} | null;
|
|
48
|
-
reevaluateSelection(width: number, height?: number): boolean;
|
|
49
|
-
shouldStartSelection(x: number, y: number, width: number, height: number): boolean;
|
|
50
|
-
onSelectionChanged(selection: SelectionState | null, width: number, height?: number): boolean;
|
|
51
|
-
private calculateSingleLineSelection;
|
|
52
|
-
private calculateMultiLineSelection;
|
|
43
|
+
export interface LocalSelectionBounds {
|
|
44
|
+
anchorX: number;
|
|
45
|
+
anchorY: number;
|
|
46
|
+
focusX: number;
|
|
47
|
+
focusY: number;
|
|
48
|
+
isActive: boolean;
|
|
53
49
|
}
|
|
50
|
+
export declare function convertGlobalToLocalSelection(globalSelection: Selection | null, localX: number, localY: number): LocalSelectionBounds | null;
|
|
54
51
|
export declare class ASCIIFontSelectionHelper {
|
|
55
|
-
private getX;
|
|
56
|
-
private getY;
|
|
57
52
|
private getText;
|
|
58
53
|
private getFont;
|
|
59
54
|
private localSelection;
|
|
60
|
-
|
|
61
|
-
constructor(getX: () => number, getY: () => number, getText: () => string, getFont: () => keyof typeof fonts);
|
|
55
|
+
constructor(getText: () => string, getFont: () => keyof typeof fonts);
|
|
62
56
|
hasSelection(): boolean;
|
|
63
57
|
getSelection(): {
|
|
64
58
|
start: number;
|
|
65
59
|
end: number;
|
|
66
60
|
} | null;
|
|
67
|
-
shouldStartSelection(
|
|
68
|
-
|
|
69
|
-
reevaluateSelection(width: number, height: number): boolean;
|
|
61
|
+
shouldStartSelection(localX: number, localY: number, width: number, height: number): boolean;
|
|
62
|
+
onLocalSelectionChanged(localSelection: LocalSelectionBounds | null, width: number, height: number): boolean;
|
|
70
63
|
}
|
package/lib/styled-text.d.ts
CHANGED
|
@@ -14,11 +14,8 @@ export interface StyleAttrs {
|
|
|
14
14
|
}
|
|
15
15
|
export declare class StyledText {
|
|
16
16
|
readonly chunks: TextChunk[];
|
|
17
|
-
private _plainText;
|
|
18
17
|
constructor(chunks: TextChunk[]);
|
|
19
|
-
toString(): string;
|
|
20
18
|
private static _createInstance;
|
|
21
|
-
private static _chunksToPlainText;
|
|
22
19
|
insert(chunk: TextChunk, index?: number): StyledText;
|
|
23
20
|
remove(chunk: TextChunk): StyledText;
|
|
24
21
|
replace(chunk: TextChunk, oldChunk: TextChunk): StyledText;
|
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.15",
|
|
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.15",
|
|
42
|
+
"@opentui/core-darwin-arm64": "0.1.15",
|
|
43
|
+
"@opentui/core-linux-x64": "0.1.15",
|
|
44
|
+
"@opentui/core-linux-arm64": "0.1.15",
|
|
45
|
+
"@opentui/core-win32-x64": "0.1.15",
|
|
46
|
+
"@opentui/core-win32-arm64": "0.1.15"
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { RenderableOptions } from "../Renderable";
|
|
2
|
+
import { Selection } from "../lib/selection";
|
|
2
3
|
import { type fonts, type ASCIIFontName } from "../lib/ascii.font";
|
|
3
4
|
import { RGBA } from "../lib/RGBA";
|
|
4
5
|
import { FrameBufferRenderable } from "./FrameBuffer";
|
|
5
|
-
import type { RenderContext
|
|
6
|
+
import type { RenderContext } from "../types";
|
|
6
7
|
export interface ASCIIFontOptions extends RenderableOptions<ASCIIFontRenderable> {
|
|
7
8
|
text?: string;
|
|
8
9
|
font?: ASCIIFontName;
|
|
@@ -20,6 +21,7 @@ export declare class ASCIIFontRenderable extends FrameBufferRenderable {
|
|
|
20
21
|
private _bg;
|
|
21
22
|
private _selectionBg;
|
|
22
23
|
private _selectionFg;
|
|
24
|
+
private lastLocalSelection;
|
|
23
25
|
private selectionHelper;
|
|
24
26
|
constructor(ctx: RenderContext, options: ASCIIFontOptions);
|
|
25
27
|
get text(): string;
|
|
@@ -32,7 +34,7 @@ export declare class ASCIIFontRenderable extends FrameBufferRenderable {
|
|
|
32
34
|
set bg(value: RGBA | string);
|
|
33
35
|
private updateDimensions;
|
|
34
36
|
shouldStartSelection(x: number, y: number): boolean;
|
|
35
|
-
onSelectionChanged(selection:
|
|
37
|
+
onSelectionChanged(selection: Selection | null): boolean;
|
|
36
38
|
getSelectedText(): string;
|
|
37
39
|
hasSelection(): boolean;
|
|
38
40
|
protected onResize(width: number, height: number): void;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { OptimizedBuffer } from "../buffer";
|
|
2
|
+
import { RGBA, type ColorInput } from "../lib";
|
|
3
|
+
import type { ParsedKey } from "../lib/parse.keypress";
|
|
4
|
+
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
5
|
+
import type { RenderContext } from "../types";
|
|
6
|
+
import { SliderRenderable, type SliderOptions } from "./Slider";
|
|
7
|
+
export interface ScrollBarOptions extends RenderableOptions<ScrollBarRenderable> {
|
|
8
|
+
orientation: "vertical" | "horizontal";
|
|
9
|
+
showArrows?: boolean;
|
|
10
|
+
arrowOptions?: Omit<ArrowOptions, "direction">;
|
|
11
|
+
trackOptions?: Partial<SliderOptions>;
|
|
12
|
+
onChange?: (position: number) => void;
|
|
13
|
+
}
|
|
14
|
+
export type ScrollUnit = "absolute" | "viewport" | "content" | "step";
|
|
15
|
+
export declare class ScrollBarRenderable extends Renderable {
|
|
16
|
+
readonly slider: SliderRenderable;
|
|
17
|
+
readonly startArrow: ArrowRenderable;
|
|
18
|
+
readonly endArrow: ArrowRenderable;
|
|
19
|
+
readonly orientation: "vertical" | "horizontal";
|
|
20
|
+
protected focusable: boolean;
|
|
21
|
+
private _scrollSize;
|
|
22
|
+
private _scrollPosition;
|
|
23
|
+
private _viewportSize;
|
|
24
|
+
private _showArrows;
|
|
25
|
+
private _manualVisibility;
|
|
26
|
+
private _onChange;
|
|
27
|
+
scrollStep: number | undefined | null;
|
|
28
|
+
get visible(): boolean;
|
|
29
|
+
set visible(value: boolean);
|
|
30
|
+
resetVisibilityControl(): void;
|
|
31
|
+
get scrollSize(): number;
|
|
32
|
+
get scrollPosition(): number;
|
|
33
|
+
get viewportSize(): number;
|
|
34
|
+
set scrollSize(value: number);
|
|
35
|
+
set scrollPosition(value: number);
|
|
36
|
+
set viewportSize(value: number);
|
|
37
|
+
get showArrows(): boolean;
|
|
38
|
+
set showArrows(value: boolean);
|
|
39
|
+
constructor(ctx: RenderContext, { trackOptions, arrowOptions, orientation, showArrows, ...options }: ScrollBarOptions);
|
|
40
|
+
set arrowOptions(options: ScrollBarOptions["arrowOptions"]);
|
|
41
|
+
set trackOptions(options: ScrollBarOptions["trackOptions"]);
|
|
42
|
+
private updateSliderFromScrollState;
|
|
43
|
+
scrollBy(delta: number, unit?: ScrollUnit): void;
|
|
44
|
+
private recalculateVisibility;
|
|
45
|
+
handleKeyPress(key: ParsedKey | string): boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface ArrowOptions extends RenderableOptions<ArrowRenderable> {
|
|
48
|
+
direction: "up" | "down" | "left" | "right";
|
|
49
|
+
foregroundColor?: ColorInput;
|
|
50
|
+
backgroundColor?: ColorInput;
|
|
51
|
+
attributes?: number;
|
|
52
|
+
arrowChars?: {
|
|
53
|
+
up?: string;
|
|
54
|
+
down?: string;
|
|
55
|
+
left?: string;
|
|
56
|
+
right?: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export declare class ArrowRenderable extends Renderable {
|
|
60
|
+
private _direction;
|
|
61
|
+
private _foregroundColor;
|
|
62
|
+
private _backgroundColor;
|
|
63
|
+
private _attributes;
|
|
64
|
+
private _arrowChars;
|
|
65
|
+
constructor(ctx: RenderContext, options: ArrowOptions);
|
|
66
|
+
get direction(): "up" | "down" | "left" | "right";
|
|
67
|
+
set direction(value: "up" | "down" | "left" | "right");
|
|
68
|
+
get foregroundColor(): RGBA;
|
|
69
|
+
set foregroundColor(value: ColorInput);
|
|
70
|
+
get backgroundColor(): RGBA;
|
|
71
|
+
set backgroundColor(value: ColorInput);
|
|
72
|
+
get attributes(): number;
|
|
73
|
+
set attributes(value: number);
|
|
74
|
+
set arrowChars(value: ArrowOptions["arrowChars"]);
|
|
75
|
+
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
76
|
+
private getArrowChar;
|
|
77
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type ParsedKey } from "../lib";
|
|
2
|
+
import type { Renderable, RenderableOptions } from "../Renderable";
|
|
3
|
+
import type { MouseEvent } from "../renderer";
|
|
4
|
+
import type { RenderContext } from "../types";
|
|
5
|
+
import { BoxRenderable, type BoxOptions } from "./Box";
|
|
6
|
+
import type { VNode } from "./composition/vnode";
|
|
7
|
+
import { ScrollBarRenderable, type ScrollBarOptions, type ScrollUnit } from "./ScrollBar";
|
|
8
|
+
declare class ContentRenderable extends BoxRenderable {
|
|
9
|
+
private viewport;
|
|
10
|
+
constructor(ctx: RenderContext, viewport: BoxRenderable, options: RenderableOptions<BoxRenderable>);
|
|
11
|
+
protected _getChildren(): Renderable[];
|
|
12
|
+
}
|
|
13
|
+
export interface ScrollBoxOptions extends BoxOptions<ScrollBoxRenderable> {
|
|
14
|
+
rootOptions?: BoxOptions;
|
|
15
|
+
wrapperOptions?: BoxOptions;
|
|
16
|
+
viewportOptions?: BoxOptions;
|
|
17
|
+
contentOptions?: BoxOptions;
|
|
18
|
+
scrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
|
|
19
|
+
verticalScrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
|
|
20
|
+
horizontalScrollbarOptions?: Omit<ScrollBarOptions, "orientation">;
|
|
21
|
+
}
|
|
22
|
+
export declare class ScrollBoxRenderable extends BoxRenderable {
|
|
23
|
+
static idCounter: number;
|
|
24
|
+
private internalId;
|
|
25
|
+
readonly wrapper: BoxRenderable;
|
|
26
|
+
readonly viewport: BoxRenderable;
|
|
27
|
+
readonly content: ContentRenderable;
|
|
28
|
+
readonly horizontalScrollBar: ScrollBarRenderable;
|
|
29
|
+
readonly verticalScrollBar: ScrollBarRenderable;
|
|
30
|
+
protected focusable: boolean;
|
|
31
|
+
private selectionListener?;
|
|
32
|
+
private autoScrollMouseX;
|
|
33
|
+
private autoScrollMouseY;
|
|
34
|
+
private readonly autoScrollThresholdVertical;
|
|
35
|
+
private readonly autoScrollThresholdHorizontal;
|
|
36
|
+
private readonly autoScrollSpeedSlow;
|
|
37
|
+
private readonly autoScrollSpeedMedium;
|
|
38
|
+
private readonly autoScrollSpeedFast;
|
|
39
|
+
private isAutoScrolling;
|
|
40
|
+
private cachedAutoScrollSpeed;
|
|
41
|
+
private autoScrollAccumulatorX;
|
|
42
|
+
private autoScrollAccumulatorY;
|
|
43
|
+
get scrollTop(): number;
|
|
44
|
+
set scrollTop(value: number);
|
|
45
|
+
get scrollLeft(): number;
|
|
46
|
+
set scrollLeft(value: number);
|
|
47
|
+
get scrollWidth(): number;
|
|
48
|
+
get scrollHeight(): number;
|
|
49
|
+
constructor(ctx: RenderContext, { wrapperOptions, viewportOptions, contentOptions, rootOptions, scrollbarOptions, verticalScrollbarOptions, horizontalScrollbarOptions, ...options }: ScrollBoxOptions);
|
|
50
|
+
protected onUpdate(deltaTime: number): void;
|
|
51
|
+
scrollBy(delta: number | {
|
|
52
|
+
x: number;
|
|
53
|
+
y: number;
|
|
54
|
+
}, unit?: ScrollUnit): void;
|
|
55
|
+
scrollTo(position: number | {
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
}): void;
|
|
59
|
+
add(obj: Renderable | VNode<any, any[]>, index?: number): number;
|
|
60
|
+
remove(id: string): void;
|
|
61
|
+
getChildren(): Renderable[];
|
|
62
|
+
protected onMouseEvent(event: MouseEvent): void;
|
|
63
|
+
handleKeyPress(key: ParsedKey | string): boolean;
|
|
64
|
+
startAutoScroll(mouseX: number, mouseY: number): void;
|
|
65
|
+
updateAutoScroll(mouseX: number, mouseY: number): void;
|
|
66
|
+
stopAutoScroll(): void;
|
|
67
|
+
private hasOtherLiveReasons;
|
|
68
|
+
private handleAutoScroll;
|
|
69
|
+
private getAutoScrollDirectionX;
|
|
70
|
+
private getAutoScrollDirectionY;
|
|
71
|
+
private getAutoScrollSpeed;
|
|
72
|
+
private recalculateBarProps;
|
|
73
|
+
set rootOptions(options: ScrollBoxOptions["rootOptions"]);
|
|
74
|
+
set wrapperOptions(options: ScrollBoxOptions["wrapperOptions"]);
|
|
75
|
+
set viewportOptions(options: ScrollBoxOptions["viewportOptions"]);
|
|
76
|
+
set contentOptions(options: ScrollBoxOptions["contentOptions"]);
|
|
77
|
+
set scrollbarOptions(options: ScrollBoxOptions["scrollbarOptions"]);
|
|
78
|
+
set verticalScrollbarOptions(options: ScrollBoxOptions["verticalScrollbarOptions"]);
|
|
79
|
+
set horizontalScrollbarOptions(options: ScrollBoxOptions["horizontalScrollbarOptions"]);
|
|
80
|
+
protected destroySelf(): void;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ColorInput, OptimizedBuffer, Renderable, type RenderableOptions, type RenderContext, RGBA } from "../index";
|
|
2
|
+
export interface SliderOptions extends RenderableOptions<SliderRenderable> {
|
|
3
|
+
orientation: "vertical" | "horizontal";
|
|
4
|
+
thumbSize?: number;
|
|
5
|
+
thumbPosition?: number;
|
|
6
|
+
backgroundColor?: ColorInput;
|
|
7
|
+
foregroundColor?: ColorInput;
|
|
8
|
+
onChange?: (position: number) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class SliderRenderable extends Renderable {
|
|
11
|
+
readonly orientation: "vertical" | "horizontal";
|
|
12
|
+
private _thumbSize;
|
|
13
|
+
private _thumbPosition;
|
|
14
|
+
private _backgroundColor;
|
|
15
|
+
private _foregroundColor;
|
|
16
|
+
private _onChange?;
|
|
17
|
+
constructor(ctx: RenderContext, options: SliderOptions);
|
|
18
|
+
get thumbSize(): number;
|
|
19
|
+
set thumbSize(value: number);
|
|
20
|
+
get thumbPosition(): number;
|
|
21
|
+
set thumbPosition(value: number);
|
|
22
|
+
get backgroundColor(): RGBA;
|
|
23
|
+
set backgroundColor(value: ColorInput);
|
|
24
|
+
get foregroundColor(): RGBA;
|
|
25
|
+
set foregroundColor(value: ColorInput);
|
|
26
|
+
private setupMouseHandling;
|
|
27
|
+
private updatePositionFromMouse;
|
|
28
|
+
private getThumbPosition;
|
|
29
|
+
private getThumbRect;
|
|
30
|
+
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
31
|
+
}
|
package/renderables/Text.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
2
|
+
import { Selection } from "../lib/selection";
|
|
2
3
|
import { StyledText } from "../lib/styled-text";
|
|
3
4
|
import { RGBA } from "../lib/RGBA";
|
|
4
|
-
import { type
|
|
5
|
+
import { type RenderContext } from "../types";
|
|
5
6
|
import type { OptimizedBuffer } from "../buffer";
|
|
6
7
|
export interface TextOptions extends RenderableOptions<TextRenderable> {
|
|
7
8
|
content?: StyledText | string;
|
|
@@ -20,9 +21,8 @@ export declare class TextRenderable extends Renderable {
|
|
|
20
21
|
private _defaultAttributes;
|
|
21
22
|
private _selectionBg;
|
|
22
23
|
private _selectionFg;
|
|
23
|
-
private
|
|
24
|
+
private lastLocalSelection;
|
|
24
25
|
private textBuffer;
|
|
25
|
-
private _plainText;
|
|
26
26
|
private _lineInfo;
|
|
27
27
|
protected _defaultOptions: {
|
|
28
28
|
content: string;
|
|
@@ -47,13 +47,17 @@ export declare class TextRenderable extends Renderable {
|
|
|
47
47
|
get attributes(): number;
|
|
48
48
|
set attributes(value: number);
|
|
49
49
|
protected onResize(width: number, height: number): void;
|
|
50
|
-
private
|
|
50
|
+
private updateLocalSelection;
|
|
51
51
|
private updateTextInfo;
|
|
52
52
|
private setupMeasureFunc;
|
|
53
53
|
shouldStartSelection(x: number, y: number): boolean;
|
|
54
|
-
onSelectionChanged(selection:
|
|
54
|
+
onSelectionChanged(selection: Selection | null): boolean;
|
|
55
55
|
getSelectedText(): string;
|
|
56
56
|
hasSelection(): boolean;
|
|
57
|
+
getSelection(): {
|
|
58
|
+
start: number;
|
|
59
|
+
end: number;
|
|
60
|
+
} | null;
|
|
57
61
|
private updateTextBuffer;
|
|
58
62
|
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
59
63
|
destroy(): void;
|
package/renderables/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export * from "./ASCIIFont";
|
|
|
5
5
|
export * from "./Input";
|
|
6
6
|
export * from "./Select";
|
|
7
7
|
export * from "./TabSelect";
|
|
8
|
+
export * from "./ScrollBox";
|
|
9
|
+
export * from "./ScrollBar";
|
|
8
10
|
export * from "./composition/constructs";
|
|
9
11
|
export * from "./composition/vnode";
|
|
10
12
|
export * from "./composition/VRenderable";
|
package/renderer.d.ts
CHANGED
|
@@ -43,12 +43,14 @@ export declare class MouseEvent {
|
|
|
43
43
|
};
|
|
44
44
|
readonly scroll?: ScrollInfo;
|
|
45
45
|
readonly target: Renderable | null;
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
readonly isSelecting?: boolean;
|
|
47
|
+
private _propagationStopped;
|
|
48
|
+
get propagationStopped(): boolean;
|
|
48
49
|
constructor(target: Renderable | null, attributes: RawMouseEvent & {
|
|
49
50
|
source?: Renderable;
|
|
51
|
+
isSelecting?: boolean;
|
|
50
52
|
});
|
|
51
|
-
|
|
53
|
+
stopPropagation(): void;
|
|
52
54
|
}
|
|
53
55
|
export declare enum MouseButton {
|
|
54
56
|
LEFT = 0,
|
|
@@ -116,7 +118,6 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
116
118
|
private lastOverRenderableNum;
|
|
117
119
|
private lastOverRenderable?;
|
|
118
120
|
private currentSelection;
|
|
119
|
-
private selectionState;
|
|
120
121
|
private selectionContainers;
|
|
121
122
|
private _splitHeight;
|
|
122
123
|
private renderOffset;
|
|
@@ -214,12 +215,14 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
214
215
|
resetStats(): void;
|
|
215
216
|
setGatherStats(enabled: boolean): void;
|
|
216
217
|
getSelection(): Selection | null;
|
|
218
|
+
get hasSelection(): boolean;
|
|
217
219
|
getSelectionContainer(): Renderable | null;
|
|
218
|
-
hasSelection(): boolean;
|
|
219
220
|
clearSelection(): void;
|
|
220
221
|
private startSelection;
|
|
221
222
|
private updateSelection;
|
|
223
|
+
requestSelectionUpdate(): void;
|
|
222
224
|
private isWithinContainer;
|
|
223
225
|
private finishSelection;
|
|
224
226
|
private notifySelectablesOfSelectionChange;
|
|
227
|
+
private walkSelectableRenderables;
|
|
225
228
|
}
|
package/text-buffer.d.ts
CHANGED
|
@@ -14,18 +14,11 @@ export interface TextChunk {
|
|
|
14
14
|
export declare class TextBuffer {
|
|
15
15
|
private lib;
|
|
16
16
|
private bufferPtr;
|
|
17
|
-
private buffer;
|
|
18
17
|
private _length;
|
|
19
18
|
private _capacity;
|
|
20
19
|
private _lineInfo?;
|
|
21
|
-
constructor(lib: RenderLib, ptr: Pointer,
|
|
22
|
-
char: Uint32Array;
|
|
23
|
-
fg: Float32Array;
|
|
24
|
-
bg: Float32Array;
|
|
25
|
-
attributes: Uint16Array;
|
|
26
|
-
}, capacity: number);
|
|
20
|
+
constructor(lib: RenderLib, ptr: Pointer, capacity: number);
|
|
27
21
|
static create(capacity: number | undefined, widthMethod: WidthMethod): TextBuffer;
|
|
28
|
-
private syncBuffersAfterResize;
|
|
29
22
|
setStyledText(text: StyledText): void;
|
|
30
23
|
setDefaultFg(fg: RGBA | null): void;
|
|
31
24
|
setDefaultBg(bg: RGBA | null): void;
|
|
@@ -34,13 +27,19 @@ export declare class TextBuffer {
|
|
|
34
27
|
get length(): number;
|
|
35
28
|
get capacity(): number;
|
|
36
29
|
get ptr(): Pointer;
|
|
30
|
+
getSelectedText(): string;
|
|
37
31
|
get lineInfo(): {
|
|
38
32
|
lineStarts: number[];
|
|
39
33
|
lineWidths: number[];
|
|
40
34
|
};
|
|
41
|
-
toString(): string;
|
|
42
|
-
concat(other: TextBuffer): TextBuffer;
|
|
43
35
|
setSelection(start: number, end: number, bgColor?: RGBA, fgColor?: RGBA): void;
|
|
44
36
|
resetSelection(): void;
|
|
37
|
+
setLocalSelection(anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor?: RGBA, fgColor?: RGBA): boolean;
|
|
38
|
+
resetLocalSelection(): void;
|
|
39
|
+
getSelection(): {
|
|
40
|
+
start: number;
|
|
41
|
+
end: number;
|
|
42
|
+
} | null;
|
|
43
|
+
hasSelection(): boolean;
|
|
45
44
|
destroy(): void;
|
|
46
45
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { RGBA } from "./lib/RGBA";
|
|
2
|
+
import type { EventEmitter } from "events";
|
|
3
|
+
import type { Selection } from "./lib/selection";
|
|
2
4
|
export declare const TextAttributes: {
|
|
3
5
|
NONE: number;
|
|
4
6
|
BOLD: number;
|
|
@@ -18,7 +20,18 @@ export declare enum DebugOverlayCorner {
|
|
|
18
20
|
bottomRight = 3
|
|
19
21
|
}
|
|
20
22
|
export type WidthMethod = "wcwidth" | "unicode";
|
|
21
|
-
export interface
|
|
23
|
+
export interface RendererEvents {
|
|
24
|
+
resize: (width: number, height: number) => void;
|
|
25
|
+
key: (data: Buffer) => void;
|
|
26
|
+
"memory:snapshot": (snapshot: {
|
|
27
|
+
heapUsed: number;
|
|
28
|
+
heapTotal: number;
|
|
29
|
+
arrayBuffers: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
selection: (selection: Selection) => void;
|
|
32
|
+
"debugOverlay:toggle": (enabled: boolean) => void;
|
|
33
|
+
}
|
|
34
|
+
export interface RenderContext extends EventEmitter {
|
|
22
35
|
addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
|
|
23
36
|
width: number;
|
|
24
37
|
height: number;
|
|
@@ -30,16 +43,14 @@ export interface RenderContext {
|
|
|
30
43
|
capabilities: any | null;
|
|
31
44
|
requestLive: () => void;
|
|
32
45
|
dropLive: () => void;
|
|
46
|
+
hasSelection: boolean;
|
|
47
|
+
getSelection: () => Selection | null;
|
|
48
|
+
requestSelectionUpdate: () => void;
|
|
33
49
|
}
|
|
34
|
-
export
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
x: number;
|
|
41
|
-
y: number;
|
|
42
|
-
};
|
|
43
|
-
isActive: boolean;
|
|
44
|
-
isSelecting: boolean;
|
|
50
|
+
export type Timeout = ReturnType<typeof setTimeout> | undefined;
|
|
51
|
+
export interface ViewportBounds {
|
|
52
|
+
x: number;
|
|
53
|
+
y: number;
|
|
54
|
+
width: number;
|
|
55
|
+
height: number;
|
|
45
56
|
}
|
package/zig.d.ts
CHANGED
|
@@ -35,16 +35,12 @@ export interface RenderLib {
|
|
|
35
35
|
bufferGetId: (buffer: Pointer) => string;
|
|
36
36
|
bufferDrawText: (buffer: Pointer, text: string, x: number, y: number, color: RGBA, bgColor?: RGBA, attributes?: number) => void;
|
|
37
37
|
bufferSetCellWithAlphaBlending: (buffer: Pointer, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void;
|
|
38
|
+
bufferSetCell: (buffer: Pointer, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void;
|
|
38
39
|
bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void;
|
|
39
40
|
bufferDrawSuperSampleBuffer: (buffer: Pointer, x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number) => void;
|
|
40
41
|
bufferDrawPackedBuffer: (buffer: Pointer, dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number) => void;
|
|
41
42
|
bufferDrawBox: (buffer: Pointer, x: number, y: number, width: number, height: number, borderChars: Uint32Array, packedOptions: number, borderColor: RGBA, backgroundColor: RGBA, title: string | null) => void;
|
|
42
|
-
bufferResize: (buffer: Pointer, width: number, height: number) =>
|
|
43
|
-
char: Uint32Array;
|
|
44
|
-
fg: Float32Array;
|
|
45
|
-
bg: Float32Array;
|
|
46
|
-
attributes: Uint8Array;
|
|
47
|
-
};
|
|
43
|
+
bufferResize: (buffer: Pointer, width: number, height: number) => void;
|
|
48
44
|
resizeRenderer: (renderer: Pointer, width: number, height: number) => void;
|
|
49
45
|
setCursorPosition: (renderer: Pointer, x: number, y: number, visible: boolean) => void;
|
|
50
46
|
setCursorStyle: (renderer: Pointer, style: CursorStyle, blinking: boolean) => void;
|
|
@@ -65,21 +61,13 @@ export interface RenderLib {
|
|
|
65
61
|
createTextBuffer: (capacity: number, widthMethod: WidthMethod) => TextBuffer;
|
|
66
62
|
destroyTextBuffer: (buffer: Pointer) => void;
|
|
67
63
|
textBufferGetCharPtr: (buffer: Pointer) => Pointer;
|
|
68
|
-
textBufferGetFgPtr: (buffer: Pointer) => Pointer;
|
|
69
|
-
textBufferGetBgPtr: (buffer: Pointer) => Pointer;
|
|
70
|
-
textBufferGetAttributesPtr: (buffer: Pointer) => Pointer;
|
|
71
64
|
textBufferGetLength: (buffer: Pointer) => number;
|
|
72
|
-
|
|
73
|
-
textBufferConcat: (buffer1: Pointer, buffer2: Pointer) => TextBuffer;
|
|
74
|
-
textBufferResize: (buffer: Pointer, newLength: number) => {
|
|
75
|
-
char: Uint32Array;
|
|
76
|
-
fg: Float32Array;
|
|
77
|
-
bg: Float32Array;
|
|
78
|
-
attributes: Uint16Array;
|
|
79
|
-
};
|
|
65
|
+
textBufferResize: (buffer: Pointer, newLength: number) => void;
|
|
80
66
|
textBufferReset: (buffer: Pointer) => void;
|
|
81
67
|
textBufferSetSelection: (buffer: Pointer, start: number, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void;
|
|
82
68
|
textBufferResetSelection: (buffer: Pointer) => void;
|
|
69
|
+
textBufferSetLocalSelection: (buffer: Pointer, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null) => boolean;
|
|
70
|
+
textBufferResetLocalSelection: (buffer: Pointer) => void;
|
|
83
71
|
textBufferSetDefaultFg: (buffer: Pointer, fg: RGBA | null) => void;
|
|
84
72
|
textBufferSetDefaultBg: (buffer: Pointer, bg: RGBA | null) => void;
|
|
85
73
|
textBufferSetDefaultAttributes: (buffer: Pointer, attributes: number | null) => void;
|
|
@@ -87,16 +75,18 @@ export interface RenderLib {
|
|
|
87
75
|
textBufferWriteChunk: (buffer: Pointer, textBytes: Uint8Array, fg: RGBA | null, bg: RGBA | null, attributes: number | null) => number;
|
|
88
76
|
textBufferGetCapacity: (buffer: Pointer) => number;
|
|
89
77
|
textBufferFinalizeLineInfo: (buffer: Pointer) => void;
|
|
78
|
+
textBufferGetLineCount: (buffer: Pointer) => number;
|
|
79
|
+
textBufferGetLineInfoDirect: (buffer: Pointer, lineStartsPtr: Pointer, lineWidthsPtr: Pointer) => void;
|
|
90
80
|
textBufferGetLineInfo: (buffer: Pointer) => {
|
|
91
81
|
lineStarts: number[];
|
|
92
82
|
lineWidths: number[];
|
|
93
83
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
84
|
+
textBufferGetSelection: (buffer: Pointer) => {
|
|
85
|
+
start: number;
|
|
86
|
+
end: number;
|
|
87
|
+
} | null;
|
|
88
|
+
getSelectedTextBytes: (buffer: Pointer, maxLength: number) => Uint8Array | null;
|
|
89
|
+
readonly decoder: TextDecoder;
|
|
100
90
|
bufferDrawTextBuffer: (buffer: Pointer, textBuffer: Pointer, x: number, y: number, clipRect?: {
|
|
101
91
|
x: number;
|
|
102
92
|
y: number;
|