@opentui/core 0.0.0-20251106-dd34dace → 0.0.0-20251108-0c7899b1

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/lib/index.d.ts CHANGED
@@ -15,3 +15,4 @@ export * from "./tree-sitter-styled-text";
15
15
  export * from "./tree-sitter";
16
16
  export * from "./data-paths";
17
17
  export * from "./extmarks";
18
+ export * from "./terminal-palette";
@@ -0,0 +1,38 @@
1
+ type Hex = string | null;
2
+ export type WriteFunction = (data: string | Buffer) => boolean;
3
+ export interface TerminalColors {
4
+ palette: Hex[];
5
+ defaultForeground: Hex;
6
+ defaultBackground: Hex;
7
+ cursorColor: Hex;
8
+ mouseForeground: Hex;
9
+ mouseBackground: Hex;
10
+ tekForeground: Hex;
11
+ tekBackground: Hex;
12
+ highlightBackground: Hex;
13
+ highlightForeground: Hex;
14
+ }
15
+ export interface GetPaletteOptions {
16
+ timeout?: number;
17
+ size?: number;
18
+ }
19
+ export interface TerminalPaletteDetector {
20
+ detect(options?: GetPaletteOptions): Promise<TerminalColors>;
21
+ detectOSCSupport(timeoutMs?: number): Promise<boolean>;
22
+ cleanup(): void;
23
+ }
24
+ export declare class TerminalPalette implements TerminalPaletteDetector {
25
+ private stdin;
26
+ private stdout;
27
+ private writeFn;
28
+ private activeListeners;
29
+ private activeTimers;
30
+ constructor(stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, writeFn?: WriteFunction);
31
+ cleanup(): void;
32
+ detectOSCSupport(timeoutMs?: number): Promise<boolean>;
33
+ private queryPalette;
34
+ private querySpecialColors;
35
+ detect(options?: GetPaletteOptions): Promise<TerminalColors>;
36
+ }
37
+ export declare function createTerminalPalette(stdin: NodeJS.ReadStream, stdout: NodeJS.WriteStream, writeFn?: WriteFunction): TerminalPaletteDetector;
38
+ export {};
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.0.0-20251106-dd34dace",
7
+ "version": "0.0.0-20251108-0c7899b1",
8
8
  "description": "OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)",
9
9
  "license": "MIT",
10
10
  "repository": {
@@ -55,11 +55,11 @@
55
55
  "bun-webgpu": "0.1.3",
56
56
  "planck": "^1.4.2",
57
57
  "three": "0.177.0",
58
- "@opentui/core-darwin-x64": "0.0.0-20251106-dd34dace",
59
- "@opentui/core-darwin-arm64": "0.0.0-20251106-dd34dace",
60
- "@opentui/core-linux-x64": "0.0.0-20251106-dd34dace",
61
- "@opentui/core-linux-arm64": "0.0.0-20251106-dd34dace",
62
- "@opentui/core-win32-x64": "0.0.0-20251106-dd34dace",
63
- "@opentui/core-win32-arm64": "0.0.0-20251106-dd34dace"
58
+ "@opentui/core-darwin-x64": "0.0.0-20251108-0c7899b1",
59
+ "@opentui/core-darwin-arm64": "0.0.0-20251108-0c7899b1",
60
+ "@opentui/core-linux-x64": "0.0.0-20251108-0c7899b1",
61
+ "@opentui/core-linux-arm64": "0.0.0-20251108-0c7899b1",
62
+ "@opentui/core-win32-x64": "0.0.0-20251108-0c7899b1",
63
+ "@opentui/core-win32-arm64": "0.0.0-20251108-0c7899b1"
64
64
  }
65
65
  }
@@ -18,9 +18,8 @@ export declare class CodeRenderable extends TextBufferRenderable {
18
18
  private _syntaxStyle;
19
19
  private _isHighlighting;
20
20
  private _treeSitterClient;
21
- private _pendingRehighlight;
22
- private _pendingUpdate;
23
- private _currentHighlightId;
21
+ private _highlightsDirty;
22
+ private _highlightSnapshotId;
24
23
  private _conceal;
25
24
  private _drawUnstyledText;
26
25
  private _shouldRenderTextBuffer;
@@ -48,10 +47,8 @@ export declare class CodeRenderable extends TextBufferRenderable {
48
47
  set streaming(value: boolean);
49
48
  get treeSitterClient(): TreeSitterClient;
50
49
  set treeSitterClient(value: TreeSitterClient);
51
- private scheduleUpdate;
52
- private updateContent;
53
- private fallback;
54
- private createFallbackStyledText;
50
+ private ensureVisibleTextBeforeHighlight;
51
+ private startHighlight;
55
52
  getLineHighlights(lineIdx: number): import("..").Highlight[];
56
53
  protected renderSelf(buffer: OptimizedBuffer): void;
57
54
  }
@@ -12,7 +12,7 @@ declare class ContentRenderable extends BoxRenderable {
12
12
  constructor(ctx: RenderContext, viewport: BoxRenderable, viewportCulling: boolean, options: RenderableOptions<BoxRenderable>);
13
13
  get viewportCulling(): boolean;
14
14
  set viewportCulling(value: boolean);
15
- protected _getChildren(): Renderable[];
15
+ protected _getVisibleChildren(): number[];
16
16
  }
17
17
  export interface ScrollBoxOptions extends BoxOptions<ScrollBoxRenderable> {
18
18
  rootOptions?: BoxOptions;
@@ -57,6 +57,7 @@ export declare class ScrollBoxRenderable extends BoxRenderable {
57
57
  private _stickyScrollRight;
58
58
  private _stickyStart?;
59
59
  private _hasManualScroll;
60
+ private _isApplyingStickyScroll;
60
61
  private scrollAccel;
61
62
  get stickyScroll(): boolean;
62
63
  set stickyScroll(value: boolean);
@@ -80,6 +81,7 @@ export declare class ScrollBoxRenderable extends BoxRenderable {
80
81
  x: number;
81
82
  y: number;
82
83
  }): void;
84
+ private isAtStickyPosition;
83
85
  add(obj: Renderable | VNode<any, any[]>, index?: number): number;
84
86
  insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number;
85
87
  remove(id: string): void;
package/renderer.d.ts CHANGED
@@ -9,6 +9,7 @@ import { type MouseEventType, type RawMouseEvent, type ScrollInfo } from "./lib/
9
9
  import { Selection } from "./lib/selection";
10
10
  import { EventEmitter } from "events";
11
11
  import { KeyHandler, InternalKeyHandler } from "./lib/KeyHandler";
12
+ import { type TerminalColors, type GetPaletteOptions } from "./lib/terminal-palette";
12
13
  export interface CliRendererConfig {
13
14
  stdin?: NodeJS.ReadStream;
14
15
  stdout?: NodeJS.WriteStream;
@@ -153,6 +154,9 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
153
154
  private _currentFocusedRenderable;
154
155
  private lifecyclePasses;
155
156
  private _openConsoleOnError;
157
+ private _paletteDetector;
158
+ private _cachedPalette;
159
+ private _paletteDetectionPromise;
156
160
  private handleError;
157
161
  private dumpOutputCache;
158
162
  private exitHandler;
@@ -271,4 +275,13 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
271
275
  private finishSelection;
272
276
  private notifySelectablesOfSelectionChange;
273
277
  private walkSelectableRenderables;
278
+ get paletteDetectionStatus(): "idle" | "detecting" | "cached";
279
+ clearPaletteCache(): void;
280
+ /**
281
+ * Detects the terminal's color palette
282
+ *
283
+ * @returns Promise resolving to TerminalColors object containing palette and special colors
284
+ * @throws Error if renderer is suspended
285
+ */
286
+ getPalette(options?: GetPaletteOptions): Promise<TerminalColors>;
274
287
  }
package/testing.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  CliRenderer,
5
5
  TreeSitterClient,
6
6
  resolveRenderLib
7
- } from "./index-n8nbvvhk.js";
7
+ } from "./index-z5bb2h2z.js";
8
8
 
9
9
  // src/testing/mock-keys.ts
10
10
  var KeyCodes = {
package/text-buffer.d.ts CHANGED
@@ -21,10 +21,12 @@ export declare class TextBuffer {
21
21
  private _syntaxStyle?;
22
22
  private _textBytes?;
23
23
  private _memId?;
24
+ private _appendedChunks;
24
25
  constructor(lib: RenderLib, ptr: Pointer);
25
26
  static create(widthMethod: WidthMethod): TextBuffer;
26
27
  private guard;
27
28
  setText(text: string): void;
29
+ append(text: string): void;
28
30
  loadFile(path: string): void;
29
31
  setStyledText(text: StyledText): void;
30
32
  setDefaultFg(fg: RGBA | null): void;
package/zig.d.ts CHANGED
@@ -98,6 +98,8 @@ export interface RenderLib {
98
98
  textBufferReplaceMemBuffer: (buffer: Pointer, memId: number, bytes: Uint8Array, owned?: boolean) => boolean;
99
99
  textBufferClearMemRegistry: (buffer: Pointer) => void;
100
100
  textBufferSetTextFromMem: (buffer: Pointer, memId: number) => void;
101
+ textBufferAppend: (buffer: Pointer, bytes: Uint8Array) => void;
102
+ textBufferAppendFromMemId: (buffer: Pointer, memId: number) => void;
101
103
  textBufferLoadFile: (buffer: Pointer, path: string) => boolean;
102
104
  textBufferSetStyledText: (buffer: Pointer, chunks: Array<{
103
105
  text: string;