@cascadetui/core 0.1.1

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.
Files changed (129) hide show
  1. package/3d/SpriteResourceManager.d.ts +74 -0
  2. package/3d/SpriteUtils.d.ts +13 -0
  3. package/3d/TextureUtils.d.ts +24 -0
  4. package/3d/ThreeRenderable.d.ts +40 -0
  5. package/3d/WGPURenderer.d.ts +61 -0
  6. package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
  7. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
  8. package/3d/animation/SpriteAnimator.d.ts +124 -0
  9. package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
  10. package/3d/canvas.d.ts +44 -0
  11. package/3d/index.d.ts +12 -0
  12. package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
  13. package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
  14. package/3d/physics/physics-interface.d.ts +27 -0
  15. package/3d.d.ts +2 -0
  16. package/3d.js +34041 -0
  17. package/3d.js.map +155 -0
  18. package/LICENSE +21 -0
  19. package/NativeSpanFeed.d.ts +41 -0
  20. package/README.md +62 -0
  21. package/Renderable.d.ts +334 -0
  22. package/animation/Timeline.d.ts +126 -0
  23. package/ansi.d.ts +13 -0
  24. package/assets/javascript/highlights.scm +205 -0
  25. package/assets/javascript/tree-sitter-javascript.wasm +0 -0
  26. package/assets/markdown/highlights.scm +150 -0
  27. package/assets/markdown/injections.scm +27 -0
  28. package/assets/markdown/tree-sitter-markdown.wasm +0 -0
  29. package/assets/markdown_inline/highlights.scm +115 -0
  30. package/assets/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  31. package/assets/typescript/highlights.scm +604 -0
  32. package/assets/typescript/tree-sitter-typescript.wasm +0 -0
  33. package/assets/zig/highlights.scm +284 -0
  34. package/assets/zig/tree-sitter-zig.wasm +0 -0
  35. package/buffer.d.ts +107 -0
  36. package/console.d.ts +140 -0
  37. package/edit-buffer.d.ts +98 -0
  38. package/editor-view.d.ts +73 -0
  39. package/index-jx194wn1.js +17723 -0
  40. package/index-jx194wn1.js.map +61 -0
  41. package/index.d.ts +18 -0
  42. package/index.js +12210 -0
  43. package/index.js.map +49 -0
  44. package/lib/KeyHandler.d.ts +61 -0
  45. package/lib/RGBA.d.ts +25 -0
  46. package/lib/ascii.font.d.ts +508 -0
  47. package/lib/border.d.ts +49 -0
  48. package/lib/bunfs.d.ts +7 -0
  49. package/lib/clipboard.d.ts +29 -0
  50. package/lib/data-paths.d.ts +26 -0
  51. package/lib/debounce.d.ts +42 -0
  52. package/lib/env.d.ts +42 -0
  53. package/lib/extmarks-history.d.ts +17 -0
  54. package/lib/extmarks.d.ts +89 -0
  55. package/lib/hast-styled-text.d.ts +17 -0
  56. package/lib/index.d.ts +18 -0
  57. package/lib/keymapping.d.ts +25 -0
  58. package/lib/objects-in-viewport.d.ts +24 -0
  59. package/lib/output.capture.d.ts +24 -0
  60. package/lib/parse.keypress-kitty.d.ts +2 -0
  61. package/lib/parse.keypress.d.ts +26 -0
  62. package/lib/parse.mouse.d.ts +30 -0
  63. package/lib/queue.d.ts +15 -0
  64. package/lib/renderable.validations.d.ts +12 -0
  65. package/lib/scroll-acceleration.d.ts +43 -0
  66. package/lib/selection.d.ts +63 -0
  67. package/lib/singleton.d.ts +7 -0
  68. package/lib/stdin-buffer.d.ts +44 -0
  69. package/lib/styled-text.d.ts +63 -0
  70. package/lib/terminal-capability-detection.d.ts +30 -0
  71. package/lib/terminal-palette.d.ts +43 -0
  72. package/lib/tree-sitter/assets/update.d.ts +11 -0
  73. package/lib/tree-sitter/client.d.ts +47 -0
  74. package/lib/tree-sitter/default-parsers.d.ts +2 -0
  75. package/lib/tree-sitter/download-utils.d.ts +21 -0
  76. package/lib/tree-sitter/index.d.ts +8 -0
  77. package/lib/tree-sitter/parser.worker.d.ts +1 -0
  78. package/lib/tree-sitter/parsers-config.d.ts +38 -0
  79. package/lib/tree-sitter/resolve-ft.d.ts +2 -0
  80. package/lib/tree-sitter/types.d.ts +81 -0
  81. package/lib/tree-sitter-styled-text.d.ts +14 -0
  82. package/lib/validate-dir-name.d.ts +1 -0
  83. package/lib/yoga.options.d.ts +32 -0
  84. package/package.json +67 -0
  85. package/parser.worker.js +878 -0
  86. package/parser.worker.js.map +12 -0
  87. package/post/filters.d.ts +105 -0
  88. package/renderables/ASCIIFont.d.ts +52 -0
  89. package/renderables/Box.d.ts +72 -0
  90. package/renderables/Code.d.ts +66 -0
  91. package/renderables/Diff.d.ts +135 -0
  92. package/renderables/EditBufferRenderable.d.ts +162 -0
  93. package/renderables/FrameBuffer.d.ts +16 -0
  94. package/renderables/Input.d.ts +67 -0
  95. package/renderables/LineNumberRenderable.d.ts +74 -0
  96. package/renderables/Markdown.d.ts +150 -0
  97. package/renderables/ScrollBar.d.ts +77 -0
  98. package/renderables/ScrollBox.d.ts +116 -0
  99. package/renderables/Select.d.ts +115 -0
  100. package/renderables/Slider.d.ts +44 -0
  101. package/renderables/TabSelect.d.ts +96 -0
  102. package/renderables/Text.d.ts +36 -0
  103. package/renderables/TextBufferRenderable.d.ts +105 -0
  104. package/renderables/TextNode.d.ts +91 -0
  105. package/renderables/TextTable.d.ts +130 -0
  106. package/renderables/Textarea.d.ts +114 -0
  107. package/renderables/__tests__/renderable-test-utils.d.ts +7 -0
  108. package/renderables/composition/VRenderable.d.ts +16 -0
  109. package/renderables/composition/constructs.d.ts +35 -0
  110. package/renderables/composition/vnode.d.ts +46 -0
  111. package/renderables/index.d.ts +21 -0
  112. package/renderables/markdown-parser.d.ts +10 -0
  113. package/renderer.d.ts +382 -0
  114. package/syntax-style.d.ts +54 -0
  115. package/testing/mock-keys.d.ts +80 -0
  116. package/testing/mock-mouse.d.ts +38 -0
  117. package/testing/mock-tree-sitter-client.d.ts +23 -0
  118. package/testing/spy.d.ts +7 -0
  119. package/testing/test-recorder.d.ts +61 -0
  120. package/testing/test-renderer.d.ts +23 -0
  121. package/testing.d.ts +6 -0
  122. package/testing.js +670 -0
  123. package/testing.js.map +15 -0
  124. package/text-buffer-view.d.ts +42 -0
  125. package/text-buffer.d.ts +67 -0
  126. package/types.d.ts +126 -0
  127. package/utils.d.ts +14 -0
  128. package/zig-structs.d.ts +155 -0
  129. package/zig.d.ts +351 -0
@@ -0,0 +1,114 @@
1
+ import { type RenderContext } from "../types";
2
+ import { EditBufferRenderable, type EditBufferOptions } from "./EditBufferRenderable";
3
+ import type { KeyEvent, PasteEvent } from "../lib/KeyHandler";
4
+ import { RGBA, type ColorInput } from "../lib/RGBA";
5
+ import { type KeyBinding as BaseKeyBinding, type KeyAliasMap } from "../lib/keymapping";
6
+ import { type StyledText } from "../lib/styled-text";
7
+ import type { ExtmarksController } from "../lib/extmarks";
8
+ export type TextareaAction = "move-left" | "move-right" | "move-up" | "move-down" | "select-left" | "select-right" | "select-up" | "select-down" | "line-home" | "line-end" | "select-line-home" | "select-line-end" | "visual-line-home" | "visual-line-end" | "select-visual-line-home" | "select-visual-line-end" | "buffer-home" | "buffer-end" | "select-buffer-home" | "select-buffer-end" | "delete-line" | "delete-to-line-end" | "delete-to-line-start" | "backspace" | "delete" | "newline" | "undo" | "redo" | "word-forward" | "word-backward" | "select-word-forward" | "select-word-backward" | "delete-word-forward" | "delete-word-backward" | "select-all" | "submit";
9
+ export type KeyBinding = BaseKeyBinding<TextareaAction>;
10
+ export interface SubmitEvent {
11
+ }
12
+ export interface TextareaOptions extends EditBufferOptions {
13
+ initialValue?: string;
14
+ backgroundColor?: ColorInput;
15
+ textColor?: ColorInput;
16
+ focusedBackgroundColor?: ColorInput;
17
+ focusedTextColor?: ColorInput;
18
+ placeholder?: StyledText | string | null;
19
+ placeholderColor?: ColorInput;
20
+ keyBindings?: KeyBinding[];
21
+ keyAliasMap?: KeyAliasMap;
22
+ onSubmit?: (event: SubmitEvent) => void;
23
+ }
24
+ export declare class TextareaRenderable extends EditBufferRenderable {
25
+ private _placeholder;
26
+ private _placeholderColor;
27
+ private _unfocusedBackgroundColor;
28
+ private _unfocusedTextColor;
29
+ private _focusedBackgroundColor;
30
+ private _focusedTextColor;
31
+ private _keyBindingsMap;
32
+ private _keyAliasMap;
33
+ private _keyBindings;
34
+ private _actionHandlers;
35
+ private _initialValueSet;
36
+ private _submitListener;
37
+ private static readonly defaults;
38
+ constructor(ctx: RenderContext, options: TextareaOptions);
39
+ private applyPlaceholder;
40
+ private buildActionHandlers;
41
+ handlePaste(event: PasteEvent): void;
42
+ handleKeyPress(key: KeyEvent): boolean;
43
+ private updateColors;
44
+ insertChar(char: string): void;
45
+ insertText(text: string): void;
46
+ deleteChar(): boolean;
47
+ deleteCharBackward(): boolean;
48
+ private deleteSelectedText;
49
+ newLine(): boolean;
50
+ deleteLine(): boolean;
51
+ moveCursorLeft(options?: {
52
+ select?: boolean;
53
+ }): boolean;
54
+ moveCursorRight(options?: {
55
+ select?: boolean;
56
+ }): boolean;
57
+ moveCursorUp(options?: {
58
+ select?: boolean;
59
+ }): boolean;
60
+ moveCursorDown(options?: {
61
+ select?: boolean;
62
+ }): boolean;
63
+ gotoLine(line: number): void;
64
+ gotoLineHome(options?: {
65
+ select?: boolean;
66
+ }): boolean;
67
+ gotoLineEnd(options?: {
68
+ select?: boolean;
69
+ }): boolean;
70
+ gotoVisualLineHome(options?: {
71
+ select?: boolean;
72
+ }): boolean;
73
+ gotoVisualLineEnd(options?: {
74
+ select?: boolean;
75
+ }): boolean;
76
+ gotoBufferHome(options?: {
77
+ select?: boolean;
78
+ }): boolean;
79
+ gotoBufferEnd(options?: {
80
+ select?: boolean;
81
+ }): boolean;
82
+ selectAll(): boolean;
83
+ deleteToLineEnd(): boolean;
84
+ deleteToLineStart(): boolean;
85
+ undo(): boolean;
86
+ redo(): boolean;
87
+ moveWordForward(options?: {
88
+ select?: boolean;
89
+ }): boolean;
90
+ moveWordBackward(options?: {
91
+ select?: boolean;
92
+ }): boolean;
93
+ deleteWordForward(): boolean;
94
+ deleteWordBackward(): boolean;
95
+ focus(): void;
96
+ blur(): void;
97
+ get placeholder(): StyledText | string | null;
98
+ set placeholder(value: StyledText | string | null | undefined);
99
+ get placeholderColor(): RGBA;
100
+ set placeholderColor(value: ColorInput);
101
+ get backgroundColor(): RGBA;
102
+ set backgroundColor(value: RGBA | string | undefined);
103
+ get textColor(): RGBA;
104
+ set textColor(value: RGBA | string | undefined);
105
+ set focusedBackgroundColor(value: ColorInput);
106
+ set focusedTextColor(value: ColorInput);
107
+ set initialValue(value: string);
108
+ submit(): boolean;
109
+ set onSubmit(handler: ((event: SubmitEvent) => void) | undefined);
110
+ get onSubmit(): ((event: SubmitEvent) => void) | undefined;
111
+ set keyBindings(bindings: KeyBinding[]);
112
+ set keyAliasMap(aliases: KeyAliasMap);
113
+ get extmarks(): ExtmarksController;
114
+ }
@@ -0,0 +1,7 @@
1
+ import { TextareaRenderable } from "../Textarea";
2
+ import { type TestRenderer } from "../../testing/test-renderer";
3
+ import { type TextareaOptions } from "../Textarea";
4
+ export declare function createTextareaRenderable(renderer: TestRenderer, renderOnce: () => Promise<void>, options: TextareaOptions): Promise<{
5
+ textarea: TextareaRenderable;
6
+ root: any;
7
+ }>;
@@ -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,35 @@
1
+ import { ASCIIFontRenderable, BoxRenderable, CodeRenderable, InputRenderable, ScrollBoxRenderable, SelectRenderable, TabSelectRenderable, TextRenderable, VRenderable, FrameBufferRenderable, type ASCIIFontOptions, type BoxOptions, type CodeOptions, type TextOptions, type VRenderableOptions, type InputRenderableOptions, type ScrollBoxOptions, type SelectRenderableOptions, type TabSelectRenderableOptions, type FrameBufferOptions } from "../";
2
+ import { TextNodeRenderable } from "../TextNode";
3
+ import { type VChild } from "./vnode";
4
+ import type { RGBA } from "../../lib/RGBA";
5
+ export declare function Generic(props?: VRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof VRenderable>;
6
+ export declare function Box(props?: BoxOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof BoxRenderable>;
7
+ export declare function Text(props?: TextOptions & {
8
+ content?: any;
9
+ }, ...children: VChild[] | TextNodeRenderable[]): import("./vnode").ProxiedVNode<typeof TextRenderable>;
10
+ export declare function ASCIIFont(props?: ASCIIFontOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof ASCIIFontRenderable>;
11
+ export declare function Input(props?: InputRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof InputRenderable>;
12
+ export declare function Select(props?: SelectRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof SelectRenderable>;
13
+ export declare function TabSelect(props?: TabSelectRenderableOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof TabSelectRenderable>;
14
+ export declare function FrameBuffer(props: FrameBufferOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof FrameBufferRenderable>;
15
+ export declare function Code(props: CodeOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof CodeRenderable>;
16
+ export declare function ScrollBox(props?: ScrollBoxOptions, ...children: VChild[]): import("./vnode").ProxiedVNode<typeof ScrollBoxRenderable>;
17
+ export declare const vstyles: {
18
+ bold: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
19
+ italic: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
20
+ underline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
21
+ dim: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
22
+ blink: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
23
+ inverse: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
24
+ hidden: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
25
+ strikethrough: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
26
+ boldItalic: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
27
+ boldUnderline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
28
+ italicUnderline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
29
+ boldItalicUnderline: (...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
30
+ color: (color: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
31
+ bgColor: (bgColor: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
32
+ fg: (color: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
33
+ bg: (bgColor: string | RGBA, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
34
+ styled: (attributes?: number, ...children: (string | TextNodeRenderable)[]) => TextNodeRenderable;
35
+ };
@@ -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,21 @@
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 "./TextTable";
17
+ export * from "./TabSelect";
18
+ export * from "./Text";
19
+ export * from "./TextBufferRenderable";
20
+ export * from "./TextNode";
21
+ 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,382 @@
1
+ import { Renderable, RootRenderable } from "./Renderable";
2
+ import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type ThemeMode, 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
+ testing?: boolean;
19
+ exitOnCtrlC?: boolean;
20
+ exitSignals?: NodeJS.Signals[];
21
+ forwardEnvKeys?: string[];
22
+ debounceDelay?: number;
23
+ targetFps?: number;
24
+ maxFps?: number;
25
+ memorySnapshotInterval?: number;
26
+ useThread?: boolean;
27
+ gatherStats?: boolean;
28
+ maxStatSamples?: number;
29
+ consoleOptions?: ConsoleOptions;
30
+ postProcessFns?: ((buffer: OptimizedBuffer, deltaTime: number) => void)[];
31
+ enableMouseMovement?: boolean;
32
+ useMouse?: boolean;
33
+ autoFocus?: boolean;
34
+ useAlternateScreen?: boolean;
35
+ useConsole?: boolean;
36
+ experimental_splitHeight?: number;
37
+ useKittyKeyboard?: KittyKeyboardOptions | null;
38
+ backgroundColor?: ColorInput;
39
+ openConsoleOnError?: boolean;
40
+ prependInputHandlers?: ((sequence: string) => boolean)[];
41
+ onDestroy?: () => void;
42
+ }
43
+ export type PixelResolution = {
44
+ width: number;
45
+ height: number;
46
+ };
47
+ /**
48
+ * Kitty Keyboard Protocol configuration options
49
+ * See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement
50
+ */
51
+ export interface KittyKeyboardOptions {
52
+ /** Disambiguate escape codes (fixes ESC timing, alt+key ambiguity, ctrl+c as event). Default: true */
53
+ disambiguate?: boolean;
54
+ /** Report alternate keys (numpad, shifted, base layout) for cross-keyboard shortcuts. Default: true */
55
+ alternateKeys?: boolean;
56
+ /** Report event types (press/repeat/release). Default: false */
57
+ events?: boolean;
58
+ /** Report all keys as escape codes. Default: false */
59
+ allKeysAsEscapes?: boolean;
60
+ /** Report text associated with key events. Default: false */
61
+ reportText?: boolean;
62
+ }
63
+ /**
64
+ * Build kitty keyboard protocol flags based on configuration
65
+ * @param config Kitty keyboard configuration object (null/undefined = disabled)
66
+ * @returns The combined flags value (0 = disabled, >0 = enabled)
67
+ * @internal Exported for testing
68
+ */
69
+ export declare function buildKittyKeyboardFlags(config: KittyKeyboardOptions | null | undefined): number;
70
+ export declare class MouseEvent {
71
+ readonly type: MouseEventType;
72
+ readonly button: number;
73
+ readonly x: number;
74
+ readonly y: number;
75
+ readonly source?: Renderable;
76
+ readonly modifiers: {
77
+ shift: boolean;
78
+ alt: boolean;
79
+ ctrl: boolean;
80
+ };
81
+ readonly scroll?: ScrollInfo;
82
+ readonly target: Renderable | null;
83
+ readonly isDragging?: boolean;
84
+ private _propagationStopped;
85
+ private _defaultPrevented;
86
+ get propagationStopped(): boolean;
87
+ get defaultPrevented(): boolean;
88
+ constructor(target: Renderable | null, attributes: RawMouseEvent & {
89
+ source?: Renderable;
90
+ isDragging?: boolean;
91
+ });
92
+ stopPropagation(): void;
93
+ preventDefault(): void;
94
+ }
95
+ export declare enum MouseButton {
96
+ LEFT = 0,
97
+ MIDDLE = 1,
98
+ RIGHT = 2,
99
+ WHEEL_UP = 4,
100
+ WHEEL_DOWN = 5
101
+ }
102
+ export declare function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>;
103
+ export declare enum CliRenderEvents {
104
+ DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle",
105
+ DESTROY = "destroy"
106
+ }
107
+ export declare enum RendererControlState {
108
+ IDLE = "idle",
109
+ AUTO_STARTED = "auto_started",
110
+ EXPLICIT_STARTED = "explicit_started",
111
+ EXPLICIT_PAUSED = "explicit_paused",
112
+ EXPLICIT_SUSPENDED = "explicit_suspended",
113
+ EXPLICIT_STOPPED = "explicit_stopped"
114
+ }
115
+ export declare class CliRenderer extends EventEmitter implements RenderContext {
116
+ private static animationFrameId;
117
+ private lib;
118
+ rendererPtr: Pointer;
119
+ stdin: NodeJS.ReadStream;
120
+ private stdout;
121
+ private exitOnCtrlC;
122
+ private exitSignals;
123
+ private _exitListenersAdded;
124
+ private _isDestroyed;
125
+ private _destroyPending;
126
+ private _destroyFinalized;
127
+ nextRenderBuffer: OptimizedBuffer;
128
+ currentRenderBuffer: OptimizedBuffer;
129
+ private _isRunning;
130
+ private targetFps;
131
+ private maxFps;
132
+ private automaticMemorySnapshot;
133
+ private memorySnapshotInterval;
134
+ private memorySnapshotTimer;
135
+ private lastMemorySnapshot;
136
+ readonly root: RootRenderable;
137
+ width: number;
138
+ height: number;
139
+ private _useThread;
140
+ private gatherStats;
141
+ private frameTimes;
142
+ private maxStatSamples;
143
+ private postProcessFns;
144
+ private backgroundColor;
145
+ private waitingForPixelResolution;
146
+ private rendering;
147
+ private renderingNative;
148
+ private renderTimeout;
149
+ private lastTime;
150
+ private frameCount;
151
+ private lastFpsTime;
152
+ private currentFps;
153
+ private targetFrameTime;
154
+ private minTargetFrameTime;
155
+ private immediateRerenderRequested;
156
+ private updateScheduled;
157
+ private liveRequestCounter;
158
+ private _controlState;
159
+ private frameCallbacks;
160
+ private renderStats;
161
+ debugOverlay: {
162
+ enabled: any;
163
+ corner: DebugOverlayCorner;
164
+ };
165
+ private _console;
166
+ private _resolution;
167
+ private _keyHandler;
168
+ private _stdinBuffer;
169
+ private animationRequest;
170
+ private resizeTimeoutId;
171
+ private capabilityTimeoutId;
172
+ private resizeDebounceDelay;
173
+ private enableMouseMovement;
174
+ private _useMouse;
175
+ private autoFocus;
176
+ private _useAlternateScreen;
177
+ private _suspendedMouseEnabled;
178
+ private _previousControlState;
179
+ private capturedRenderable?;
180
+ private lastOverRenderableNum;
181
+ private lastOverRenderable?;
182
+ private currentSelection;
183
+ private selectionContainers;
184
+ private clipboard;
185
+ private _splitHeight;
186
+ private renderOffset;
187
+ private _terminalWidth;
188
+ private _terminalHeight;
189
+ private _terminalIsSetup;
190
+ private realStdoutWrite;
191
+ private captureCallback;
192
+ private _useConsole;
193
+ private mouseParser;
194
+ private sigwinchHandler;
195
+ private _capabilities;
196
+ private _latestPointer;
197
+ private _hasPointer;
198
+ private _lastPointerModifiers;
199
+ private _currentMousePointerStyle;
200
+ private _currentFocusedRenderable;
201
+ private lifecyclePasses;
202
+ private _openConsoleOnError;
203
+ private _paletteDetector;
204
+ private _cachedPalette;
205
+ private _paletteDetectionPromise;
206
+ private _onDestroy?;
207
+ private _themeMode;
208
+ private inputHandlers;
209
+ private prependedInputHandlers;
210
+ private idleResolvers;
211
+ private _debugInputs;
212
+ private _debugModeEnabled;
213
+ private handleError;
214
+ private dumpOutputCache;
215
+ private exitHandler;
216
+ private warningHandler;
217
+ get controlState(): RendererControlState;
218
+ constructor(lib: RenderLib, rendererPtr: Pointer, stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, width: number, height: number, config?: CliRendererConfig);
219
+ private addExitListeners;
220
+ private removeExitListeners;
221
+ get isDestroyed(): boolean;
222
+ registerLifecyclePass(renderable: Renderable): void;
223
+ unregisterLifecyclePass(renderable: Renderable): void;
224
+ getLifecyclePasses(): Set<Renderable>;
225
+ get currentFocusedRenderable(): Renderable | null;
226
+ focusRenderable(renderable: Renderable): void;
227
+ private setCapturedRenderable;
228
+ addToHitGrid(x: number, y: number, width: number, height: number, id: number): void;
229
+ pushHitGridScissorRect(x: number, y: number, width: number, height: number): void;
230
+ popHitGridScissorRect(): void;
231
+ clearHitGridScissorRects(): void;
232
+ get widthMethod(): WidthMethod;
233
+ private writeOut;
234
+ requestRender(): void;
235
+ private activateFrame;
236
+ get useConsole(): boolean;
237
+ set useConsole(value: boolean);
238
+ get isRunning(): boolean;
239
+ private isIdleNow;
240
+ private resolveIdleIfNeeded;
241
+ idle(): Promise<void>;
242
+ get resolution(): PixelResolution | null;
243
+ get console(): TerminalConsole;
244
+ get keyInput(): KeyHandler;
245
+ get _internalKeyInput(): InternalKeyHandler;
246
+ get terminalWidth(): number;
247
+ get terminalHeight(): number;
248
+ get useThread(): boolean;
249
+ get useMouse(): boolean;
250
+ set useMouse(useMouse: boolean);
251
+ get experimental_splitHeight(): number;
252
+ get liveRequestCount(): number;
253
+ get currentControlState(): string;
254
+ get capabilities(): any | null;
255
+ get themeMode(): ThemeMode | null;
256
+ getDebugInputs(): Array<{
257
+ timestamp: string;
258
+ sequence: string;
259
+ }>;
260
+ get useKittyKeyboard(): boolean;
261
+ set useKittyKeyboard(use: boolean);
262
+ set experimental_splitHeight(splitHeight: number);
263
+ private interceptStdoutWrite;
264
+ disableStdoutInterception(): void;
265
+ private flushStdoutCache;
266
+ private enableMouse;
267
+ private disableMouse;
268
+ enableKittyKeyboard(flags?: number): void;
269
+ disableKittyKeyboard(): void;
270
+ set useThread(useThread: boolean);
271
+ setupTerminal(): Promise<void>;
272
+ private stdinListener;
273
+ addInputHandler(handler: (sequence: string) => boolean): void;
274
+ prependInputHandler(handler: (sequence: string) => boolean): void;
275
+ removeInputHandler(handler: (sequence: string) => boolean): void;
276
+ private capabilityHandler;
277
+ private focusHandler;
278
+ private themeModeHandler;
279
+ private setupInput;
280
+ private dispatchMouseEvent;
281
+ private handleMouseData;
282
+ private processSingleMouseEvent;
283
+ /**
284
+ * Recheck hover state after hit grid changes.
285
+ * Called after render when native code detects the hit grid changed.
286
+ * Fires out/over events if the element under the cursor changed.
287
+ */
288
+ private recheckHoverState;
289
+ setMousePointer(style: MousePointerStyle): void;
290
+ hitTest(x: number, y: number): number;
291
+ private takeMemorySnapshot;
292
+ private startMemorySnapshotTimer;
293
+ private stopMemorySnapshotTimer;
294
+ setMemorySnapshotInterval(interval: number): void;
295
+ private handleResize;
296
+ private queryPixelResolution;
297
+ private processResize;
298
+ setBackgroundColor(color: ColorInput): void;
299
+ toggleDebugOverlay(): void;
300
+ configureDebugOverlay(options: {
301
+ enabled?: boolean;
302
+ corner?: DebugOverlayCorner;
303
+ }): void;
304
+ setTerminalTitle(title: string): void;
305
+ copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean;
306
+ copyToSystemClipboard(text: string): boolean;
307
+ readFromSystemClipboard(): string | null;
308
+ copyToClipboard(text: string, target?: ClipboardTarget): boolean;
309
+ private copyActiveSelectionToClipboard;
310
+ clearClipboardOSC52(target?: ClipboardTarget): boolean;
311
+ isOsc52Supported(): boolean;
312
+ dumpHitGrid(): void;
313
+ dumpBuffers(timestamp?: number): void;
314
+ dumpStdoutBuffer(timestamp?: number): void;
315
+ static setCursorPosition(renderer: CliRenderer, x: number, y: number, visible?: boolean): void;
316
+ static setCursorStyle(renderer: CliRenderer, options: CursorStyleOptions): void;
317
+ static setCursorColor(renderer: CliRenderer, color: RGBA): void;
318
+ setCursorPosition(x: number, y: number, visible?: boolean): void;
319
+ setCursorStyle(options: CursorStyleOptions): void;
320
+ setCursorColor(color: RGBA): void;
321
+ getCursorState(): import("./zig").CursorState;
322
+ addPostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
323
+ removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
324
+ clearPostProcessFns(): void;
325
+ setFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
326
+ removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
327
+ clearFrameCallbacks(): void;
328
+ requestLive(): void;
329
+ dropLive(): void;
330
+ start(): void;
331
+ auto(): void;
332
+ private internalStart;
333
+ pause(): void;
334
+ suspend(): void;
335
+ resume(): void;
336
+ private internalPause;
337
+ stop(): void;
338
+ private internalStop;
339
+ destroy(): void;
340
+ private finalizeDestroy;
341
+ private startRenderLoop;
342
+ private loop;
343
+ intermediateRender(): void;
344
+ private renderNative;
345
+ private collectStatSample;
346
+ getStats(): {
347
+ fps: number;
348
+ frameCount: number;
349
+ frameTimes: number[];
350
+ averageFrameTime: number;
351
+ minFrameTime: number;
352
+ maxFrameTime: number;
353
+ };
354
+ resetStats(): void;
355
+ setGatherStats(enabled: boolean): void;
356
+ getSelection(): Selection | null;
357
+ get hasSelection(): boolean;
358
+ getSelectionContainer(): Renderable | null;
359
+ clearSelection(): void;
360
+ /**
361
+ * Start a new selection at the given coordinates.
362
+ * Used by both mouse and keyboard selection.
363
+ */
364
+ startSelection(renderable: Renderable, x: number, y: number): void;
365
+ updateSelection(currentRenderable: Renderable | undefined, x: number, y: number, options?: {
366
+ finishDragging?: boolean;
367
+ }): void;
368
+ requestSelectionUpdate(): void;
369
+ private isWithinContainer;
370
+ private finishSelection;
371
+ private notifySelectablesOfSelectionChange;
372
+ private walkSelectableRenderables;
373
+ get paletteDetectionStatus(): "idle" | "detecting" | "cached";
374
+ clearPaletteCache(): void;
375
+ /**
376
+ * Detects the terminal's color palette
377
+ *
378
+ * @returns Promise resolving to TerminalColors object containing palette and special colors
379
+ * @throws Error if renderer is suspended
380
+ */
381
+ getPalette(options?: GetPaletteOptions): Promise<TerminalColors>;
382
+ }