@opentuah/core 0.1.77
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/SpriteResourceManager.d.ts +74 -0
- package/3d/SpriteUtils.d.ts +13 -0
- package/3d/TextureUtils.d.ts +24 -0
- package/3d/ThreeRenderable.d.ts +40 -0
- package/3d/WGPURenderer.d.ts +61 -0
- package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
- package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
- package/3d/animation/SpriteAnimator.d.ts +124 -0
- package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
- package/3d/canvas.d.ts +44 -0
- package/3d/index.d.ts +12 -0
- package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
- package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
- package/3d/physics/physics-interface.d.ts +27 -0
- package/3d.d.ts +2 -0
- package/3d.js +2805 -0
- package/3d.js.map +22 -0
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/Renderable.d.ts +334 -0
- package/animation/Timeline.d.ts +126 -0
- package/ansi.d.ts +13 -0
- package/assets/javascript/highlights.scm +205 -0
- package/assets/javascript/tree-sitter-javascript.wasm +0 -0
- package/assets/markdown/highlights.scm +150 -0
- package/assets/markdown/injections.scm +27 -0
- package/assets/markdown/tree-sitter-markdown.wasm +0 -0
- package/assets/markdown_inline/highlights.scm +115 -0
- package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
- package/assets/typescript/highlights.scm +604 -0
- package/assets/typescript/tree-sitter-typescript.wasm +0 -0
- package/assets/zig/highlights.scm +284 -0
- package/assets/zig/tree-sitter-zig.wasm +0 -0
- package/buffer.d.ts +98 -0
- package/console.d.ts +140 -0
- package/edit-buffer.d.ts +98 -0
- package/editor-view.d.ts +73 -0
- package/index-cgvb25mm.js +14921 -0
- package/index-cgvb25mm.js.map +56 -0
- package/index.d.ts +17 -0
- package/index.js +9331 -0
- package/index.js.map +37 -0
- package/lib/KeyHandler.d.ts +61 -0
- package/lib/RGBA.d.ts +27 -0
- package/lib/ascii.font.d.ts +508 -0
- package/lib/border.d.ts +49 -0
- package/lib/bunfs.d.ts +7 -0
- package/lib/clipboard.d.ts +17 -0
- package/lib/data-paths.d.ts +26 -0
- package/lib/debounce.d.ts +42 -0
- package/lib/env.d.ts +42 -0
- package/lib/extmarks-history.d.ts +17 -0
- package/lib/extmarks.d.ts +89 -0
- package/lib/hast-styled-text.d.ts +17 -0
- package/lib/index.d.ts +18 -0
- package/lib/keymapping.d.ts +25 -0
- package/lib/objects-in-viewport.d.ts +24 -0
- package/lib/output.capture.d.ts +24 -0
- package/lib/parse.keypress-kitty.d.ts +2 -0
- package/lib/parse.keypress.d.ts +26 -0
- package/lib/parse.mouse.d.ts +23 -0
- package/lib/queue.d.ts +15 -0
- package/lib/renderable.validations.d.ts +12 -0
- package/lib/scroll-acceleration.d.ts +43 -0
- package/lib/selection.d.ts +63 -0
- package/lib/singleton.d.ts +7 -0
- package/lib/stdin-buffer.d.ts +44 -0
- package/lib/styled-text.d.ts +63 -0
- package/lib/terminal-capability-detection.d.ts +30 -0
- package/lib/terminal-palette.d.ts +43 -0
- package/lib/tree-sitter/assets/update.d.ts +11 -0
- package/lib/tree-sitter/client.d.ts +47 -0
- package/lib/tree-sitter/default-parsers.d.ts +2 -0
- package/lib/tree-sitter/download-utils.d.ts +21 -0
- package/lib/tree-sitter/index.d.ts +8 -0
- package/lib/tree-sitter/parser.worker.d.ts +1 -0
- package/lib/tree-sitter/parsers-config.d.ts +38 -0
- package/lib/tree-sitter/resolve-ft.d.ts +2 -0
- package/lib/tree-sitter/types.d.ts +81 -0
- package/lib/tree-sitter-styled-text.d.ts +14 -0
- package/lib/validate-dir-name.d.ts +1 -0
- package/lib/yoga.options.d.ts +32 -0
- package/package.json +67 -0
- package/parser.worker.js +855 -0
- package/parser.worker.js.map +12 -0
- package/post/filters.d.ts +105 -0
- package/renderables/ASCIIFont.d.ts +52 -0
- package/renderables/Box.d.ts +72 -0
- package/renderables/Code.d.ts +66 -0
- package/renderables/Diff.d.ts +185 -0
- package/renderables/EditBufferRenderable.d.ts +162 -0
- package/renderables/FrameBuffer.d.ts +16 -0
- package/renderables/Input.d.ts +60 -0
- package/renderables/LineNumberRenderable.d.ts +111 -0
- package/renderables/Markdown.d.ts +98 -0
- package/renderables/ScrollBar.d.ts +77 -0
- package/renderables/ScrollBox.d.ts +116 -0
- package/renderables/Select.d.ts +115 -0
- package/renderables/Slider.d.ts +44 -0
- package/renderables/TabSelect.d.ts +96 -0
- package/renderables/Text.d.ts +36 -0
- package/renderables/TextBufferRenderable.d.ts +103 -0
- package/renderables/TextNode.d.ts +91 -0
- package/renderables/Textarea.d.ts +114 -0
- package/renderables/__tests__/renderable-test-utils.d.ts +7 -0
- package/renderables/composition/VRenderable.d.ts +16 -0
- package/renderables/composition/constructs.d.ts +35 -0
- package/renderables/composition/vnode.d.ts +46 -0
- package/renderables/index.d.ts +20 -0
- package/renderables/markdown-parser.d.ts +10 -0
- package/renderer.d.ts +370 -0
- package/syntax-style.d.ts +54 -0
- package/testing/mock-keys.d.ts +80 -0
- package/testing/mock-mouse.d.ts +38 -0
- package/testing/mock-tree-sitter-client.d.ts +23 -0
- package/testing/spy.d.ts +7 -0
- package/testing/test-recorder.d.ts +61 -0
- package/testing/test-renderer.d.ts +23 -0
- package/testing.d.ts +6 -0
- package/testing.js +670 -0
- package/testing.js.map +15 -0
- package/text-buffer-view.d.ts +42 -0
- package/text-buffer.d.ts +67 -0
- package/types.d.ts +120 -0
- package/utils.d.ts +14 -0
- package/zig-structs.d.ts +42 -0
- package/zig.d.ts +326 -0
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
declare const BrandedVNode: unique symbol;
|
|
10
|
+
export interface VNode<P = any, C = VChild[]> {
|
|
11
|
+
[BrandedVNode]: true;
|
|
12
|
+
type: Construct<P>;
|
|
13
|
+
props?: P;
|
|
14
|
+
children?: C;
|
|
15
|
+
__delegateMap?: Record<string, string>;
|
|
16
|
+
__pendingCalls?: PendingCall[];
|
|
17
|
+
}
|
|
18
|
+
export type ProxiedVNode<TCtor extends RenderableConstructor<any>> = VNode<TCtor extends RenderableConstructor<infer P> ? P : any> & {
|
|
19
|
+
[K in keyof InstanceType<TCtor>]: InstanceType<TCtor>[K] extends (...args: infer Args) => any ? (...args: Args) => ProxiedVNode<TCtor> : InstanceType<TCtor>[K];
|
|
20
|
+
};
|
|
21
|
+
export interface RenderableConstructor<P extends RenderableOptions<any> = RenderableOptions<any>> {
|
|
22
|
+
new (ctx: RenderContext, options: P): Renderable;
|
|
23
|
+
}
|
|
24
|
+
export type FunctionalConstruct<P = any> = (props: P, children?: VChild[]) => VNode;
|
|
25
|
+
export type Construct<P = any> = RenderableConstructor<P extends RenderableOptions<any> ? P : never> | FunctionalConstruct<P>;
|
|
26
|
+
export declare function h<TCtor extends RenderableConstructor<any>>(type: TCtor, props?: TCtor extends RenderableConstructor<infer P> ? P : never, ...children: VChild[]): ProxiedVNode<TCtor>;
|
|
27
|
+
export declare function h<P>(type: FunctionalConstruct<P>, props?: P, ...children: VChild[]): VNode<P>;
|
|
28
|
+
export declare function h<P>(type: Construct<P>, props?: P, ...children: VChild[]): VNode<P> | ProxiedVNode<any>;
|
|
29
|
+
export declare function isVNode(node: any): node is VNode;
|
|
30
|
+
export declare function maybeMakeRenderable(ctx: RenderContext, node: Renderable | VNode<any, any[]> | unknown): Renderable | null;
|
|
31
|
+
export declare function wrapWithDelegates<T extends InstanceType<RenderableConstructor>>(instance: T, delegateMap: Record<string, string> | undefined): T;
|
|
32
|
+
export type InstantiateFn<NodeType extends VNode | Renderable> = Renderable & {
|
|
33
|
+
__node?: NodeType;
|
|
34
|
+
};
|
|
35
|
+
export declare function instantiate<NodeType extends VNode | Renderable>(ctx: RenderContext, node: NodeType): InstantiateFn<NodeType>;
|
|
36
|
+
export type DelegateMap<T> = Partial<Record<keyof T, string>>;
|
|
37
|
+
export type ValidateShape<Given, AllowedKeys> = {
|
|
38
|
+
[K in keyof Given]: K extends keyof AllowedKeys ? NonNullable<Given[K]> : never;
|
|
39
|
+
};
|
|
40
|
+
type InferNode<T> = T extends InstantiateFn<infer U> ? U : never;
|
|
41
|
+
export declare function delegate<Factory extends InstantiateFn<any>, InnerNode extends InferNode<Factory>, TargetMap extends Record<keyof InnerNode, string>, const Mapping extends Partial<TargetMap>>(mapping: ValidateShape<Mapping, TargetMap>, vnode: Factory): Renderable;
|
|
42
|
+
export declare function delegate<ConstructorType extends RenderableConstructor<any>, TargetMap extends Record<keyof InstanceType<ConstructorType>, string>, const Mapping extends Partial<TargetMap>>(mapping: ValidateShape<Mapping, TargetMap>, vnode: ProxiedVNode<ConstructorType>): ProxiedVNode<ConstructorType>;
|
|
43
|
+
export declare function delegate<ConstructorType extends RenderableConstructor<any>, const Mapping extends DelegateMap<InstanceType<ConstructorType>>>(mapping: ValidateShape<Mapping, string>, vnode: VNode & {
|
|
44
|
+
type: ConstructorType;
|
|
45
|
+
}): VNode;
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from "./ASCIIFont";
|
|
2
|
+
export * from "./Box";
|
|
3
|
+
export * from "./Code";
|
|
4
|
+
export * from "./composition/constructs";
|
|
5
|
+
export * from "./composition/VRenderable";
|
|
6
|
+
export * from "./composition/vnode";
|
|
7
|
+
export * from "./Diff";
|
|
8
|
+
export * from "./FrameBuffer";
|
|
9
|
+
export * from "./Input";
|
|
10
|
+
export * from "./LineNumberRenderable";
|
|
11
|
+
export * from "./Markdown";
|
|
12
|
+
export * from "./ScrollBar";
|
|
13
|
+
export * from "./ScrollBox";
|
|
14
|
+
export * from "./Select";
|
|
15
|
+
export * from "./Slider";
|
|
16
|
+
export * from "./TabSelect";
|
|
17
|
+
export * from "./Text";
|
|
18
|
+
export * from "./TextBufferRenderable";
|
|
19
|
+
export * from "./TextNode";
|
|
20
|
+
export * from "./Textarea";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type MarkedToken } from "marked";
|
|
2
|
+
export interface ParseState {
|
|
3
|
+
content: string;
|
|
4
|
+
tokens: MarkedToken[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Incrementally parse markdown, reusing unchanged tokens from previous parse.
|
|
8
|
+
* Compares token.raw at each offset - matching tokens keep same object reference.
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseMarkdownIncremental(newContent: string, prevState: ParseState | null, trailingUnstable?: number): ParseState;
|
package/renderer.d.ts
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { Renderable, RootRenderable } from "./Renderable";
|
|
2
|
+
import { type CursorStyle, DebugOverlayCorner, type RenderContext, type WidthMethod } from "./types";
|
|
3
|
+
import { RGBA, type ColorInput } from "./lib/RGBA";
|
|
4
|
+
import type { Pointer } from "bun:ffi";
|
|
5
|
+
import { OptimizedBuffer } from "./buffer";
|
|
6
|
+
import { type RenderLib } from "./zig";
|
|
7
|
+
import { TerminalConsole, type ConsoleOptions } from "./console";
|
|
8
|
+
import { type MouseEventType, type RawMouseEvent, type ScrollInfo } from "./lib/parse.mouse";
|
|
9
|
+
import { Selection } from "./lib/selection";
|
|
10
|
+
import { type ClipboardTarget } from "./lib/clipboard";
|
|
11
|
+
import { EventEmitter } from "events";
|
|
12
|
+
import { KeyHandler, InternalKeyHandler } from "./lib/KeyHandler";
|
|
13
|
+
import { type TerminalColors, type GetPaletteOptions } from "./lib/terminal-palette";
|
|
14
|
+
export interface CliRendererConfig {
|
|
15
|
+
stdin?: NodeJS.ReadStream;
|
|
16
|
+
stdout?: NodeJS.WriteStream;
|
|
17
|
+
remote?: boolean;
|
|
18
|
+
exitOnCtrlC?: boolean;
|
|
19
|
+
exitSignals?: NodeJS.Signals[];
|
|
20
|
+
debounceDelay?: number;
|
|
21
|
+
targetFps?: number;
|
|
22
|
+
maxFps?: number;
|
|
23
|
+
memorySnapshotInterval?: number;
|
|
24
|
+
useThread?: boolean;
|
|
25
|
+
gatherStats?: boolean;
|
|
26
|
+
maxStatSamples?: number;
|
|
27
|
+
consoleOptions?: ConsoleOptions;
|
|
28
|
+
postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[];
|
|
29
|
+
enableMouseMovement?: boolean;
|
|
30
|
+
useMouse?: boolean;
|
|
31
|
+
autoFocus?: boolean;
|
|
32
|
+
useAlternateScreen?: boolean;
|
|
33
|
+
useConsole?: boolean;
|
|
34
|
+
experimental_splitHeight?: number;
|
|
35
|
+
useKittyKeyboard?: KittyKeyboardOptions | null;
|
|
36
|
+
backgroundColor?: ColorInput;
|
|
37
|
+
openConsoleOnError?: boolean;
|
|
38
|
+
prependInputHandlers?: ((sequence: string) => boolean)[];
|
|
39
|
+
onDestroy?: () => void;
|
|
40
|
+
}
|
|
41
|
+
export type PixelResolution = {
|
|
42
|
+
width: number;
|
|
43
|
+
height: number;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Kitty Keyboard Protocol configuration options
|
|
47
|
+
* See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement
|
|
48
|
+
*/
|
|
49
|
+
export interface KittyKeyboardOptions {
|
|
50
|
+
/** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */
|
|
51
|
+
disambiguate?: boolean;
|
|
52
|
+
/** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */
|
|
53
|
+
alternateKeys?: boolean;
|
|
54
|
+
/** Report event types (press/repeat/release). Default: false */
|
|
55
|
+
events?: boolean;
|
|
56
|
+
/** Report all keys as escape codes. Default: false */
|
|
57
|
+
allKeysAsEscapes?: boolean;
|
|
58
|
+
/** Report text associated with key events. Default: false */
|
|
59
|
+
reportText?: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build kitty keyboard protocol flags based on configuration
|
|
63
|
+
* @param config Kitty keyboard configuration object (null/undefined = disabled)
|
|
64
|
+
* @returns The combined flags value (0 = disabled, >0 = enabled)
|
|
65
|
+
* @internal Exported for testing
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number;
|
|
68
|
+
export declare class MouseEvent {
|
|
69
|
+
readonly type: MouseEventType;
|
|
70
|
+
readonly button: number;
|
|
71
|
+
readonly x: number;
|
|
72
|
+
readonly y: number;
|
|
73
|
+
readonly source?: Renderable;
|
|
74
|
+
readonly modifiers: {
|
|
75
|
+
shift: boolean;
|
|
76
|
+
alt: boolean;
|
|
77
|
+
ctrl: boolean;
|
|
78
|
+
};
|
|
79
|
+
readonly scroll?: ScrollInfo;
|
|
80
|
+
readonly target: Renderable | null;
|
|
81
|
+
readonly isDragging?: boolean;
|
|
82
|
+
private _propagationStopped;
|
|
83
|
+
private _defaultPrevented;
|
|
84
|
+
get propagationStopped(): boolean;
|
|
85
|
+
get defaultPrevented(): boolean;
|
|
86
|
+
constructor(target: Renderable | null, attributes: RawMouseEvent & {
|
|
87
|
+
source?: Renderable;
|
|
88
|
+
isDragging?: boolean;
|
|
89
|
+
});
|
|
90
|
+
stopPropagation(): void;
|
|
91
|
+
preventDefault(): void;
|
|
92
|
+
}
|
|
93
|
+
export declare enum MouseButton {
|
|
94
|
+
LEFT = 0,
|
|
95
|
+
MIDDLE = 1,
|
|
96
|
+
RIGHT = 2,
|
|
97
|
+
WHEEL_UP = 4,
|
|
98
|
+
WHEEL_DOWN = 5
|
|
99
|
+
}
|
|
100
|
+
export declare function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>;
|
|
101
|
+
export declare enum CliRenderEvents {
|
|
102
|
+
DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle",
|
|
103
|
+
DESTROY = "destroy"
|
|
104
|
+
}
|
|
105
|
+
export declare enum RendererControlState {
|
|
106
|
+
IDLE = "idle",
|
|
107
|
+
AUTO_STARTED = "auto_started",
|
|
108
|
+
EXPLICIT_STARTED = "explicit_started",
|
|
109
|
+
EXPLICIT_PAUSED = "explicit_paused",
|
|
110
|
+
EXPLICIT_SUSPENDED = "explicit_suspended",
|
|
111
|
+
EXPLICIT_STOPPED = "explicit_stopped"
|
|
112
|
+
}
|
|
113
|
+
export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
114
|
+
private static animationFrameId;
|
|
115
|
+
private lib;
|
|
116
|
+
rendererPtr: Pointer;
|
|
117
|
+
stdin: NodeJS.ReadStream;
|
|
118
|
+
private stdout;
|
|
119
|
+
private exitOnCtrlC;
|
|
120
|
+
private exitSignals;
|
|
121
|
+
private _exitListenersAdded;
|
|
122
|
+
private _isDestroyed;
|
|
123
|
+
private _destroyPending;
|
|
124
|
+
private _destroyFinalized;
|
|
125
|
+
nextRenderBuffer: OptimizedBuffer;
|
|
126
|
+
currentRenderBuffer: OptimizedBuffer;
|
|
127
|
+
private _isRunning;
|
|
128
|
+
private targetFps;
|
|
129
|
+
private maxFps;
|
|
130
|
+
private automaticMemorySnapshot;
|
|
131
|
+
private memorySnapshotInterval;
|
|
132
|
+
private memorySnapshotTimer;
|
|
133
|
+
private lastMemorySnapshot;
|
|
134
|
+
readonly root: RootRenderable;
|
|
135
|
+
width: number;
|
|
136
|
+
height: number;
|
|
137
|
+
private _useThread;
|
|
138
|
+
private gatherStats;
|
|
139
|
+
private frameTimes;
|
|
140
|
+
private maxStatSamples;
|
|
141
|
+
private postProcessFns;
|
|
142
|
+
private backgroundColor;
|
|
143
|
+
private waitingForPixelResolution;
|
|
144
|
+
private rendering;
|
|
145
|
+
private renderingNative;
|
|
146
|
+
private renderTimeout;
|
|
147
|
+
private lastTime;
|
|
148
|
+
private frameCount;
|
|
149
|
+
private lastFpsTime;
|
|
150
|
+
private currentFps;
|
|
151
|
+
private targetFrameTime;
|
|
152
|
+
private minTargetFrameTime;
|
|
153
|
+
private immediateRerenderRequested;
|
|
154
|
+
private updateScheduled;
|
|
155
|
+
private liveRequestCounter;
|
|
156
|
+
private _controlState;
|
|
157
|
+
private frameCallbacks;
|
|
158
|
+
private renderStats;
|
|
159
|
+
debugOverlay: {
|
|
160
|
+
enabled: any;
|
|
161
|
+
corner: DebugOverlayCorner;
|
|
162
|
+
};
|
|
163
|
+
private _console;
|
|
164
|
+
private _resolution;
|
|
165
|
+
private _keyHandler;
|
|
166
|
+
private _stdinBuffer;
|
|
167
|
+
private animationRequest;
|
|
168
|
+
private resizeTimeoutId;
|
|
169
|
+
private capabilityTimeoutId;
|
|
170
|
+
private resizeDebounceDelay;
|
|
171
|
+
private enableMouseMovement;
|
|
172
|
+
private _useMouse;
|
|
173
|
+
private autoFocus;
|
|
174
|
+
private _useAlternateScreen;
|
|
175
|
+
private _suspendedMouseEnabled;
|
|
176
|
+
private _previousControlState;
|
|
177
|
+
private capturedRenderable?;
|
|
178
|
+
private lastOverRenderableNum;
|
|
179
|
+
private lastOverRenderable?;
|
|
180
|
+
private currentSelection;
|
|
181
|
+
private selectionContainers;
|
|
182
|
+
private clipboard;
|
|
183
|
+
private _splitHeight;
|
|
184
|
+
private renderOffset;
|
|
185
|
+
private _terminalWidth;
|
|
186
|
+
private _terminalHeight;
|
|
187
|
+
private _terminalIsSetup;
|
|
188
|
+
private realStdoutWrite;
|
|
189
|
+
private captureCallback;
|
|
190
|
+
private _useConsole;
|
|
191
|
+
private mouseParser;
|
|
192
|
+
private sigwinchHandler;
|
|
193
|
+
private _capabilities;
|
|
194
|
+
private _latestPointer;
|
|
195
|
+
private _hasPointer;
|
|
196
|
+
private _lastPointerModifiers;
|
|
197
|
+
private _currentFocusedRenderable;
|
|
198
|
+
private lifecyclePasses;
|
|
199
|
+
private _openConsoleOnError;
|
|
200
|
+
private _paletteDetector;
|
|
201
|
+
private _cachedPalette;
|
|
202
|
+
private _paletteDetectionPromise;
|
|
203
|
+
private _onDestroy?;
|
|
204
|
+
private inputHandlers;
|
|
205
|
+
private prependedInputHandlers;
|
|
206
|
+
private idleResolvers;
|
|
207
|
+
private _debugInputs;
|
|
208
|
+
private _debugModeEnabled;
|
|
209
|
+
private handleError;
|
|
210
|
+
private dumpOutputCache;
|
|
211
|
+
private exitHandler;
|
|
212
|
+
private warningHandler;
|
|
213
|
+
get controlState(): RendererControlState;
|
|
214
|
+
constructor(lib: RenderLib, rendererPtr: Pointer, stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, width: number, height: number, config?: CliRendererConfig);
|
|
215
|
+
private addExitListeners;
|
|
216
|
+
private removeExitListeners;
|
|
217
|
+
get isDestroyed(): boolean;
|
|
218
|
+
registerLifecyclePass(renderable: Renderable): void;
|
|
219
|
+
unregisterLifecyclePass(renderable: Renderable): void;
|
|
220
|
+
getLifecyclePasses(): Set<Renderable>;
|
|
221
|
+
get currentFocusedRenderable(): Renderable | null;
|
|
222
|
+
focusRenderable(renderable: Renderable): void;
|
|
223
|
+
private setCapturedRenderable;
|
|
224
|
+
addToHitGrid(x: number, y: number, width: number, height: number, id: number): void;
|
|
225
|
+
pushHitGridScissorRect(x: number, y: number, width: number, height: number): void;
|
|
226
|
+
popHitGridScissorRect(): void;
|
|
227
|
+
clearHitGridScissorRects(): void;
|
|
228
|
+
get widthMethod(): WidthMethod;
|
|
229
|
+
private writeOut;
|
|
230
|
+
requestRender(): void;
|
|
231
|
+
private activateFrame;
|
|
232
|
+
get useConsole(): boolean;
|
|
233
|
+
set useConsole(value: boolean);
|
|
234
|
+
get isRunning(): boolean;
|
|
235
|
+
private isIdleNow;
|
|
236
|
+
private resolveIdleIfNeeded;
|
|
237
|
+
idle(): Promise<void>;
|
|
238
|
+
get resolution(): PixelResolution | null;
|
|
239
|
+
get console(): TerminalConsole;
|
|
240
|
+
get keyInput(): KeyHandler;
|
|
241
|
+
get _internalKeyInput(): InternalKeyHandler;
|
|
242
|
+
get terminalWidth(): number;
|
|
243
|
+
get terminalHeight(): number;
|
|
244
|
+
get useThread(): boolean;
|
|
245
|
+
get useMouse(): boolean;
|
|
246
|
+
set useMouse(useMouse: boolean);
|
|
247
|
+
get experimental_splitHeight(): number;
|
|
248
|
+
get liveRequestCount(): number;
|
|
249
|
+
get currentControlState(): string;
|
|
250
|
+
get capabilities(): any | null;
|
|
251
|
+
getDebugInputs(): Array<{
|
|
252
|
+
timestamp: string;
|
|
253
|
+
sequence: string;
|
|
254
|
+
}>;
|
|
255
|
+
get useKittyKeyboard(): boolean;
|
|
256
|
+
set useKittyKeyboard(use: boolean);
|
|
257
|
+
set experimental_splitHeight(splitHeight: number);
|
|
258
|
+
private interceptStdoutWrite;
|
|
259
|
+
disableStdoutInterception(): void;
|
|
260
|
+
private flushStdoutCache;
|
|
261
|
+
private enableMouse;
|
|
262
|
+
private disableMouse;
|
|
263
|
+
enableKittyKeyboard(flags?: number): void;
|
|
264
|
+
disableKittyKeyboard(): void;
|
|
265
|
+
set useThread(useThread: boolean);
|
|
266
|
+
setupTerminal(): Promise<void>;
|
|
267
|
+
private stdinListener;
|
|
268
|
+
addInputHandler(handler: (sequence: string) => boolean): void;
|
|
269
|
+
prependInputHandler(handler: (sequence: string) => boolean): void;
|
|
270
|
+
removeInputHandler(handler: (sequence: string) => boolean): void;
|
|
271
|
+
private capabilityHandler;
|
|
272
|
+
private focusHandler;
|
|
273
|
+
private setupInput;
|
|
274
|
+
private dispatchMouseEvent;
|
|
275
|
+
private handleMouseData;
|
|
276
|
+
/**
|
|
277
|
+
* Recheck hover state after hit grid changes.
|
|
278
|
+
* Called after render when native code detects the hit grid changed.
|
|
279
|
+
* Fires out/over events if the element under the cursor changed.
|
|
280
|
+
*/
|
|
281
|
+
private recheckHoverState;
|
|
282
|
+
hitTest(x: number, y: number): number;
|
|
283
|
+
private takeMemorySnapshot;
|
|
284
|
+
private startMemorySnapshotTimer;
|
|
285
|
+
private stopMemorySnapshotTimer;
|
|
286
|
+
setMemorySnapshotInterval(interval: number): void;
|
|
287
|
+
private handleResize;
|
|
288
|
+
private queryPixelResolution;
|
|
289
|
+
private processResize;
|
|
290
|
+
setBackgroundColor(color: ColorInput): void;
|
|
291
|
+
toggleDebugOverlay(): void;
|
|
292
|
+
configureDebugOverlay(options: {
|
|
293
|
+
enabled?: boolean;
|
|
294
|
+
corner?: DebugOverlayCorner;
|
|
295
|
+
}): void;
|
|
296
|
+
setTerminalTitle(title: string): void;
|
|
297
|
+
copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean;
|
|
298
|
+
clearClipboardOSC52(target?: ClipboardTarget): boolean;
|
|
299
|
+
isOsc52Supported(): boolean;
|
|
300
|
+
dumpHitGrid(): void;
|
|
301
|
+
dumpBuffers(timestamp?: number): void;
|
|
302
|
+
dumpStdoutBuffer(timestamp?: number): void;
|
|
303
|
+
static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible?: boolean): void;
|
|
304
|
+
static setCursorStyle(renderer: CliRenderer, style: CursorStyle, blinking?: boolean, color?: RGBA): void;
|
|
305
|
+
static setCursorColor(renderer: CliRenderer, color: RGBA): void;
|
|
306
|
+
setCursorPosition(x: number, y: number, visible?: boolean): void;
|
|
307
|
+
setCursorStyle(style: CursorStyle, blinking?: boolean, color?: RGBA): void;
|
|
308
|
+
setCursorColor(color: RGBA): void;
|
|
309
|
+
getCursorState(): import("./zig").CursorState;
|
|
310
|
+
addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
|
|
311
|
+
removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
|
|
312
|
+
clearPostProcessFns(): void;
|
|
313
|
+
setFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
|
|
314
|
+
removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
|
|
315
|
+
clearFrameCallbacks(): void;
|
|
316
|
+
requestLive(): void;
|
|
317
|
+
dropLive(): void;
|
|
318
|
+
start(): void;
|
|
319
|
+
auto(): void;
|
|
320
|
+
private internalStart;
|
|
321
|
+
pause(): void;
|
|
322
|
+
suspend(): void;
|
|
323
|
+
resume(): void;
|
|
324
|
+
private internalPause;
|
|
325
|
+
stop(): void;
|
|
326
|
+
private internalStop;
|
|
327
|
+
destroy(): void;
|
|
328
|
+
private finalizeDestroy;
|
|
329
|
+
private startRenderLoop;
|
|
330
|
+
private loop;
|
|
331
|
+
intermediateRender(): void;
|
|
332
|
+
private renderNative;
|
|
333
|
+
private collectStatSample;
|
|
334
|
+
getStats(): {
|
|
335
|
+
fps: number;
|
|
336
|
+
frameCount: number;
|
|
337
|
+
frameTimes: number[];
|
|
338
|
+
averageFrameTime: number;
|
|
339
|
+
minFrameTime: number;
|
|
340
|
+
maxFrameTime: number;
|
|
341
|
+
};
|
|
342
|
+
resetStats(): void;
|
|
343
|
+
setGatherStats(enabled: boolean): void;
|
|
344
|
+
getSelection(): Selection | null;
|
|
345
|
+
get hasSelection(): boolean;
|
|
346
|
+
getSelectionContainer(): Renderable | null;
|
|
347
|
+
clearSelection(): void;
|
|
348
|
+
/**
|
|
349
|
+
* Start a new selection at the given coordinates.
|
|
350
|
+
* Used by both mouse and keyboard selection.
|
|
351
|
+
*/
|
|
352
|
+
startSelection(renderable: Renderable, x: number, y: number): void;
|
|
353
|
+
updateSelection(currentRenderable: Renderable | undefined, x: number, y: number, options?: {
|
|
354
|
+
finishDragging?: boolean;
|
|
355
|
+
}): void;
|
|
356
|
+
requestSelectionUpdate(): void;
|
|
357
|
+
private isWithinContainer;
|
|
358
|
+
private finishSelection;
|
|
359
|
+
private notifySelectablesOfSelectionChange;
|
|
360
|
+
private walkSelectableRenderables;
|
|
361
|
+
get paletteDetectionStatus(): "idle" | "detecting" | "cached";
|
|
362
|
+
clearPaletteCache(): void;
|
|
363
|
+
/**
|
|
364
|
+
* Detects the terminal's color palette
|
|
365
|
+
*
|
|
366
|
+
* @returns Promise resolving to TerminalColors object containing palette and special colors
|
|
367
|
+
* @throws Error if renderer is suspended
|
|
368
|
+
*/
|
|
369
|
+
getPalette(options?: GetPaletteOptions): Promise<TerminalColors>;
|
|
370
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { RGBA, type ColorInput } from "./lib/RGBA";
|
|
2
|
+
import { type RenderLib } from "./zig";
|
|
3
|
+
import { type Pointer } from "bun:ffi";
|
|
4
|
+
export interface StyleDefinition {
|
|
5
|
+
fg?: RGBA;
|
|
6
|
+
bg?: RGBA;
|
|
7
|
+
bold?: boolean;
|
|
8
|
+
italic?: boolean;
|
|
9
|
+
underline?: boolean;
|
|
10
|
+
dim?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface MergedStyle {
|
|
13
|
+
fg?: RGBA;
|
|
14
|
+
bg?: RGBA;
|
|
15
|
+
attributes: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ThemeTokenStyle {
|
|
18
|
+
scope: string[];
|
|
19
|
+
style: {
|
|
20
|
+
foreground?: ColorInput;
|
|
21
|
+
background?: ColorInput;
|
|
22
|
+
bold?: boolean;
|
|
23
|
+
italic?: boolean;
|
|
24
|
+
underline?: boolean;
|
|
25
|
+
dim?: boolean;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export declare function convertThemeToStyles(theme: ThemeTokenStyle[]): Record<string, StyleDefinition>;
|
|
29
|
+
export declare class SyntaxStyle {
|
|
30
|
+
private lib;
|
|
31
|
+
private stylePtr;
|
|
32
|
+
private _destroyed;
|
|
33
|
+
private nameCache;
|
|
34
|
+
private styleDefs;
|
|
35
|
+
private mergedCache;
|
|
36
|
+
constructor(lib: RenderLib, ptr: Pointer);
|
|
37
|
+
static create(): SyntaxStyle;
|
|
38
|
+
static fromTheme(theme: ThemeTokenStyle[]): SyntaxStyle;
|
|
39
|
+
static fromStyles(styles: Record<string, StyleDefinition>): SyntaxStyle;
|
|
40
|
+
private guard;
|
|
41
|
+
registerStyle(name: string, style: StyleDefinition): number;
|
|
42
|
+
resolveStyleId(name: string): number | null;
|
|
43
|
+
getStyleId(name: string): number | null;
|
|
44
|
+
get ptr(): Pointer;
|
|
45
|
+
getStyleCount(): number;
|
|
46
|
+
clearNameCache(): void;
|
|
47
|
+
getStyle(name: string): StyleDefinition | undefined;
|
|
48
|
+
mergeStyles(...styleNames: string[]): MergedStyle;
|
|
49
|
+
clearCache(): void;
|
|
50
|
+
getCacheSize(): number;
|
|
51
|
+
getAllStyles(): Map<string, StyleDefinition>;
|
|
52
|
+
getRegisteredNames(): string[];
|
|
53
|
+
destroy(): void;
|
|
54
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { CliRenderer } from "../renderer";
|
|
2
|
+
export declare const KeyCodes: {
|
|
3
|
+
readonly RETURN: "\r";
|
|
4
|
+
readonly LINEFEED: "\n";
|
|
5
|
+
readonly TAB: "\t";
|
|
6
|
+
readonly BACKSPACE: "\b";
|
|
7
|
+
readonly DELETE: "\u001B[3~";
|
|
8
|
+
readonly HOME: "\u001B[H";
|
|
9
|
+
readonly END: "\u001B[F";
|
|
10
|
+
readonly ESCAPE: "\u001B";
|
|
11
|
+
readonly ARROW_UP: "\u001B[A";
|
|
12
|
+
readonly ARROW_DOWN: "\u001B[B";
|
|
13
|
+
readonly ARROW_RIGHT: "\u001B[C";
|
|
14
|
+
readonly ARROW_LEFT: "\u001B[D";
|
|
15
|
+
readonly F1: "\u001BOP";
|
|
16
|
+
readonly F2: "\u001BOQ";
|
|
17
|
+
readonly F3: "\u001BOR";
|
|
18
|
+
readonly F4: "\u001BOS";
|
|
19
|
+
readonly F5: "\u001B[15~";
|
|
20
|
+
readonly F6: "\u001B[17~";
|
|
21
|
+
readonly F7: "\u001B[18~";
|
|
22
|
+
readonly F8: "\u001B[19~";
|
|
23
|
+
readonly F9: "\u001B[20~";
|
|
24
|
+
readonly F10: "\u001B[21~";
|
|
25
|
+
readonly F11: "\u001B[23~";
|
|
26
|
+
readonly F12: "\u001B[24~";
|
|
27
|
+
};
|
|
28
|
+
export type KeyInput = string | keyof typeof KeyCodes;
|
|
29
|
+
export interface MockKeysOptions {
|
|
30
|
+
kittyKeyboard?: boolean;
|
|
31
|
+
otherModifiersMode?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare function createMockKeys(renderer: CliRenderer, options?: MockKeysOptions): {
|
|
34
|
+
pressKeys: (keys: KeyInput[], delayMs?: number) => Promise<void>;
|
|
35
|
+
pressKey: (key: KeyInput, modifiers?: {
|
|
36
|
+
shift?: boolean;
|
|
37
|
+
ctrl?: boolean;
|
|
38
|
+
meta?: boolean;
|
|
39
|
+
super?: boolean;
|
|
40
|
+
hyper?: boolean;
|
|
41
|
+
}) => void;
|
|
42
|
+
typeText: (text: string, delayMs?: number) => Promise<void>;
|
|
43
|
+
pressEnter: (modifiers?: {
|
|
44
|
+
shift?: boolean;
|
|
45
|
+
ctrl?: boolean;
|
|
46
|
+
meta?: boolean;
|
|
47
|
+
super?: boolean;
|
|
48
|
+
hyper?: boolean;
|
|
49
|
+
}) => void;
|
|
50
|
+
pressEscape: (modifiers?: {
|
|
51
|
+
shift?: boolean;
|
|
52
|
+
ctrl?: boolean;
|
|
53
|
+
meta?: boolean;
|
|
54
|
+
super?: boolean;
|
|
55
|
+
hyper?: boolean;
|
|
56
|
+
}) => void;
|
|
57
|
+
pressTab: (modifiers?: {
|
|
58
|
+
shift?: boolean;
|
|
59
|
+
ctrl?: boolean;
|
|
60
|
+
meta?: boolean;
|
|
61
|
+
super?: boolean;
|
|
62
|
+
hyper?: boolean;
|
|
63
|
+
}) => void;
|
|
64
|
+
pressBackspace: (modifiers?: {
|
|
65
|
+
shift?: boolean;
|
|
66
|
+
ctrl?: boolean;
|
|
67
|
+
meta?: boolean;
|
|
68
|
+
super?: boolean;
|
|
69
|
+
hyper?: boolean;
|
|
70
|
+
}) => void;
|
|
71
|
+
pressArrow: (direction: "up" | "down" | "left" | "right", modifiers?: {
|
|
72
|
+
shift?: boolean;
|
|
73
|
+
ctrl?: boolean;
|
|
74
|
+
meta?: boolean;
|
|
75
|
+
super?: boolean;
|
|
76
|
+
hyper?: boolean;
|
|
77
|
+
}) => void;
|
|
78
|
+
pressCtrlC: () => void;
|
|
79
|
+
pasteBracketedText: (text: string) => Promise<void>;
|
|
80
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CliRenderer } from "../renderer";
|
|
2
|
+
export declare const MouseButtons: {
|
|
3
|
+
readonly LEFT: 0;
|
|
4
|
+
readonly MIDDLE: 1;
|
|
5
|
+
readonly RIGHT: 2;
|
|
6
|
+
readonly WHEEL_UP: 64;
|
|
7
|
+
readonly WHEEL_DOWN: 65;
|
|
8
|
+
readonly WHEEL_LEFT: 66;
|
|
9
|
+
readonly WHEEL_RIGHT: 67;
|
|
10
|
+
};
|
|
11
|
+
export type MouseButton = (typeof MouseButtons)[keyof typeof MouseButtons];
|
|
12
|
+
export interface MousePosition {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
}
|
|
16
|
+
export interface MouseModifiers {
|
|
17
|
+
shift?: boolean;
|
|
18
|
+
alt?: boolean;
|
|
19
|
+
ctrl?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export type MouseEventType = "down" | "up" | "move" | "drag" | "scroll";
|
|
22
|
+
export interface MouseEventOptions {
|
|
23
|
+
button?: MouseButton;
|
|
24
|
+
modifiers?: MouseModifiers;
|
|
25
|
+
delayMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function createMockMouse(renderer: CliRenderer): {
|
|
28
|
+
moveTo: (x: number, y: number, options?: MouseEventOptions) => Promise<void>;
|
|
29
|
+
click: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
|
|
30
|
+
doubleClick: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
|
|
31
|
+
pressDown: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
|
|
32
|
+
release: (x: number, y: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
|
|
33
|
+
drag: (startX: number, startY: number, endX: number, endY: number, button?: MouseButton, options?: MouseEventOptions) => Promise<void>;
|
|
34
|
+
scroll: (x: number, y: number, direction: "up" | "down" | "left" | "right", options?: MouseEventOptions) => Promise<void>;
|
|
35
|
+
getCurrentPosition: () => MousePosition;
|
|
36
|
+
getPressedButtons: () => MouseButton[];
|
|
37
|
+
emitMouseEvent: (type: MouseEventType, x: number, y: number, button?: MouseButton, options?: Omit<MouseEventOptions, "button">) => Promise<void>;
|
|
38
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TreeSitterClient } from "../lib/tree-sitter";
|
|
2
|
+
import type { SimpleHighlight } from "../lib/tree-sitter/types";
|
|
3
|
+
export declare class MockTreeSitterClient extends TreeSitterClient {
|
|
4
|
+
private _highlightPromises;
|
|
5
|
+
private _mockResult;
|
|
6
|
+
private _autoResolveTimeout?;
|
|
7
|
+
constructor(options?: {
|
|
8
|
+
autoResolveTimeout?: number;
|
|
9
|
+
});
|
|
10
|
+
highlightOnce(content: string, filetype: string): Promise<{
|
|
11
|
+
highlights?: SimpleHighlight[];
|
|
12
|
+
warning?: string;
|
|
13
|
+
error?: string;
|
|
14
|
+
}>;
|
|
15
|
+
setMockResult(result: {
|
|
16
|
+
highlights?: SimpleHighlight[];
|
|
17
|
+
warning?: string;
|
|
18
|
+
error?: string;
|
|
19
|
+
}): void;
|
|
20
|
+
resolveHighlightOnce(index?: number): void;
|
|
21
|
+
resolveAllHighlightOnce(): void;
|
|
22
|
+
isHighlighting(): boolean;
|
|
23
|
+
}
|