@opentui/core 0.4.2 → 0.4.3

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/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.4.2",
7
+ "version": "0.4.3",
8
8
  "description": "OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)",
9
9
  "license": "MIT",
10
10
  "repository": {
@@ -55,7 +55,7 @@
55
55
  }
56
56
  },
57
57
  "dependencies": {
58
- "bun-ffi-structs": "0.2.3",
58
+ "bun-ffi-structs": "0.2.4",
59
59
  "diff": "9.0.0",
60
60
  "marked": "17.0.1",
61
61
  "string-width": "7.2.0",
@@ -65,13 +65,13 @@
65
65
  "web-tree-sitter": "0.25.10"
66
66
  },
67
67
  "optionalDependencies": {
68
- "@opentui/core-darwin-x64": "0.4.2",
69
- "@opentui/core-darwin-arm64": "0.4.2",
70
- "@opentui/core-linux-x64": "0.4.2",
71
- "@opentui/core-linux-arm64": "0.4.2",
72
- "@opentui/core-win32-x64": "0.4.2",
73
- "@opentui/core-win32-arm64": "0.4.2",
74
- "@opentui/core-linux-x64-musl": "0.4.2",
75
- "@opentui/core-linux-arm64-musl": "0.4.2"
68
+ "@opentui/core-darwin-x64": "0.4.3",
69
+ "@opentui/core-darwin-arm64": "0.4.3",
70
+ "@opentui/core-linux-x64": "0.4.3",
71
+ "@opentui/core-linux-arm64": "0.4.3",
72
+ "@opentui/core-win32-x64": "0.4.3",
73
+ "@opentui/core-win32-arm64": "0.4.3",
74
+ "@opentui/core-linux-x64-musl": "0.4.3",
75
+ "@opentui/core-linux-arm64-musl": "0.4.3"
76
76
  }
77
77
  }
@@ -68,6 +68,7 @@ export declare abstract class EditBufferRenderable extends Renderable implements
68
68
  private _keyboardSelectionActive;
69
69
  readonly editBuffer: EditBuffer;
70
70
  readonly editorView: EditorView;
71
+ private nativeRenderable;
71
72
  protected _defaultOptions: {
72
73
  textColor: RGBA;
73
74
  backgroundColor: string;
@@ -198,7 +199,7 @@ export declare abstract class EditBufferRenderable extends Renderable implements
198
199
  }): boolean;
199
200
  deleteWordForward(): boolean;
200
201
  deleteWordBackward(): boolean;
201
- private setupMeasureFunc;
202
+ private setupNativeRenderable;
202
203
  render(buffer: OptimizedBuffer, deltaTime: number): void;
203
204
  protected renderSelf(buffer: OptimizedBuffer): void;
204
205
  protected renderCursor(buffer: OptimizedBuffer): void;
@@ -1,4 +1,4 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable.js";
1
+ import { Renderable, type BaseRenderable, type RenderableOptions } from "../Renderable.js";
2
2
  import { OptimizedBuffer } from "../buffer.js";
3
3
  import type { RenderContext, LineInfoProvider } from "../types.js";
4
4
  import { RGBA } from "../lib/RGBA.js";
@@ -44,7 +44,7 @@ export declare class LineNumberRenderable extends Renderable {
44
44
  constructor(ctx: RenderContext, options: LineNumberOptions);
45
45
  private setTarget;
46
46
  add(child: Renderable): number;
47
- remove(id: string): void;
47
+ remove(child: BaseRenderable): void;
48
48
  destroyRecursively(): void;
49
49
  clearTarget(): void;
50
50
  protected renderSelf(buffer: OptimizedBuffer): void;
@@ -1,6 +1,6 @@
1
1
  import { type KeyEvent } from "../lib/index.js";
2
2
  import { type ScrollAcceleration } from "../lib/scroll-acceleration.js";
3
- import type { Renderable, RenderableOptions } from "../Renderable.js";
3
+ import type { BaseRenderable, Renderable, RenderableOptions } from "../Renderable.js";
4
4
  import type { MouseEvent } from "../renderer.js";
5
5
  import type { RenderContext } from "../types.js";
6
6
  import { BoxRenderable, type BoxOptions } from "./Box.js";
@@ -90,8 +90,9 @@ export declare class ScrollBoxRenderable extends BoxRenderable {
90
90
  private isAtStickyReengagePoint;
91
91
  add(obj: Renderable | VNode<any, any[]>, index?: number): number;
92
92
  insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number;
93
- remove(id: string): void;
93
+ remove(child: BaseRenderable): void;
94
94
  getChildren(): Renderable[];
95
+ getRenderable(id: string): Renderable | undefined;
95
96
  protected onMouseEvent(event: MouseEvent): void;
96
97
  handleKeyPress(key: KeyEvent): boolean;
97
98
  private resetScrollAccumulators;
@@ -27,6 +27,7 @@ export interface SelectRenderableOptions extends RenderableOptions<SelectRendera
27
27
  showScrollIndicator?: boolean;
28
28
  wrapSelection?: boolean;
29
29
  showDescription?: boolean;
30
+ showSelectionIndicator?: boolean;
30
31
  font?: keyof typeof fonts;
31
32
  itemSpacing?: number;
32
33
  fastScrollStep?: number;
@@ -54,6 +55,7 @@ export declare class SelectRenderable extends Renderable {
54
55
  private _showScrollIndicator;
55
56
  private _wrapSelection;
56
57
  private _showDescription;
58
+ private _showSelectionIndicator;
57
59
  private _font?;
58
60
  private _itemSpacing;
59
61
  private linesPerItem;
@@ -75,6 +77,7 @@ export declare class SelectRenderable extends Renderable {
75
77
  showScrollIndicator: false;
76
78
  wrapSelection: false;
77
79
  showDescription: true;
80
+ showSelectionIndicator: true;
78
81
  itemSpacing: number;
79
82
  fastScrollStep: number;
80
83
  };
@@ -97,6 +100,8 @@ export declare class SelectRenderable extends Renderable {
97
100
  set showScrollIndicator(show: boolean);
98
101
  get showDescription(): boolean;
99
102
  set showDescription(show: boolean);
103
+ get showSelectionIndicator(): boolean;
104
+ set showSelectionIndicator(show: boolean | null | undefined);
100
105
  get wrapSelection(): boolean;
101
106
  set wrapSelection(wrap: boolean);
102
107
  set backgroundColor(value: ColorInput);
@@ -24,7 +24,7 @@ export declare class TextRenderable extends TextBufferRenderable {
24
24
  set content(value: StyledText | string);
25
25
  private updateTextFromNodes;
26
26
  add(obj: TextNodeRenderable | StyledText | string, index?: number): number;
27
- remove(id: string): void;
27
+ remove(child: BaseRenderable): void;
28
28
  insertBefore(obj: BaseRenderable | any, anchor?: TextNodeRenderable): number;
29
29
  getTextChildren(): BaseRenderable[];
30
30
  clear(): void;
@@ -5,7 +5,7 @@ import { TextBufferView } from "../text-buffer-view.js";
5
5
  import { RGBA } from "../lib/RGBA.js";
6
6
  import { type RenderContext, type LineInfoProvider } from "../types.js";
7
7
  import type { OptimizedBuffer } from "../buffer.js";
8
- import type { LineInfo } from "../zig.js";
8
+ import { type LineInfo } from "../zig.js";
9
9
  import { SyntaxStyle } from "../syntax-style.js";
10
10
  export interface TextBufferOptions extends RenderableOptions<TextBufferRenderable> {
11
11
  fg?: string | RGBA;
@@ -37,6 +37,7 @@ export declare abstract class TextBufferRenderable extends Renderable implements
37
37
  protected textBuffer: TextBuffer;
38
38
  protected textBufferView: TextBufferView;
39
39
  protected _textBufferSyntaxStyle: SyntaxStyle;
40
+ private nativeRenderable;
40
41
  protected _defaultOptions: {
41
42
  fg: RGBA;
42
43
  bg: RGBA;
@@ -88,7 +89,7 @@ export declare abstract class TextBufferRenderable extends Renderable implements
88
89
  protected refreshLocalSelection(): boolean;
89
90
  private updateLocalSelection;
90
91
  protected updateTextInfo(): void;
91
- private setupMeasureFunc;
92
+ private setupNativeRenderable;
92
93
  shouldStartSelection(x: number, y: number): boolean;
93
94
  onSelectionChanged(selection: Selection | null): boolean;
94
95
  getSelectedText(): string;
@@ -27,9 +27,10 @@ export declare class TextNodeRenderable extends BaseRenderable {
27
27
  set children(children: (string | TextNodeRenderable)[]);
28
28
  requestRender(): void;
29
29
  add(obj: TextNodeRenderable | StyledText | string, index?: number): number;
30
+ private prepareChildInsert;
30
31
  replace(obj: TextNodeRenderable | string, index: number): void;
31
32
  insertBefore(child: string | TextNodeRenderable | StyledText, anchorNode: TextNodeRenderable | string | unknown): this;
32
- remove(id: string): this;
33
+ remove(child: BaseRenderable): void;
33
34
  clear(): void;
34
35
  mergeStyles(parentStyle: {
35
36
  fg?: RGBA;
package/testing.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ANSI,
3
3
  CliRenderer
4
- } from "./index-6xr3rbbe.js";
4
+ } from "./index-xt9f071j.js";
5
5
  import {
6
6
  SystemClock,
7
7
  TreeSitterClient
8
- } from "./index-x7n320jr.js";
8
+ } from "./index-d5xqskty.js";
9
9
 
10
10
  // src/testing/mock-keys.ts
11
11
  import { Buffer as Buffer2 } from "node:buffer";
package/yoga.d.ts CHANGED
@@ -218,8 +218,6 @@ export declare class Config {
218
218
  export declare class Node {
219
219
  readonly ptr: Pointer;
220
220
  private freed;
221
- private measureCallback;
222
- private dirtiedCallback;
223
221
  private constructor();
224
222
  static create(config?: Config): Node;
225
223
  static createForOpenTUI(): Node;
@@ -339,8 +337,7 @@ export declare class Node {
339
337
  private setValue;
340
338
  private getValue;
341
339
  private collectSubtree;
342
- private closeMeasureCallback;
343
- private closeDirtiedCallback;
340
+ private unregisterCallbacks;
344
341
  private markFreed;
345
342
  }
346
343
  declare const Yoga: {
package/yoga.js CHANGED
@@ -92,7 +92,7 @@ import {
92
92
  WRAP_WRAP_REVERSE,
93
93
  Wrap,
94
94
  yoga_default
95
- } from "./index-x7n320jr.js";
95
+ } from "./index-d5xqskty.js";
96
96
  export {
97
97
  yoga_default as default,
98
98
  Wrap,
package/zig-structs.d.ts CHANGED
@@ -13,11 +13,11 @@ export declare const StyledChunkStruct: import("bun-ffi-structs").DefineStructRe
13
13
  readonly lengthOf: "text";
14
14
  }], readonly ["fg", "pointer", {
15
15
  readonly optional: true;
16
- readonly packTransform: (rgba?: RGBA) => Pointer | null;
16
+ readonly packTransform: (rgba?: RGBA) => Uint16Array<ArrayBufferLike> | null;
17
17
  readonly unpackTransform: (ptr?: Pointer) => RGBA | undefined;
18
18
  }], readonly ["bg", "pointer", {
19
19
  readonly optional: true;
20
- readonly packTransform: (rgba?: RGBA) => Pointer | null;
20
+ readonly packTransform: (rgba?: RGBA) => Uint16Array<ArrayBufferLike> | null;
21
21
  readonly unpackTransform: (ptr?: Pointer) => RGBA | undefined;
22
22
  }], readonly ["attributes", "u32", {
23
23
  readonly default: 0;
@@ -71,7 +71,7 @@ export declare const CursorStyleOptionsStruct: import("bun-ffi-structs").DefineS
71
71
  readonly default: 255;
72
72
  }], readonly ["color", "pointer", {
73
73
  readonly optional: true;
74
- readonly packTransform: (rgba?: RGBA) => Pointer | null;
74
+ readonly packTransform: (rgba?: RGBA) => Uint16Array<ArrayBufferLike> | null;
75
75
  readonly unpackTransform: (ptr?: Pointer) => RGBA | undefined;
76
76
  }], readonly ["cursor", "u8", {
77
77
  readonly default: 255;
package/zig.d.ts CHANGED
@@ -17,6 +17,7 @@ export type EditorViewHandle = NativeHandle<"editor_view">;
17
17
  export type SyntaxStyleHandle = NativeHandle<"syntax_style">;
18
18
  export type EventSinkHandle = NativeHandle<"event_sink">;
19
19
  export type AudioEngineHandle = NativeHandle<"audio_engine">;
20
+ export type NativeRenderableHandle = NativeHandle<"native_renderable">;
20
21
  export declare enum LogLevel {
21
22
  Error = 0,
22
23
  Warn = 1,
@@ -69,7 +70,14 @@ export interface NativeYogaLayout {
69
70
  height: number;
70
71
  }
71
72
  export type NativeYogaMeasureCallback = (node: Pointer | null, width: number, widthMode: number, height: number, heightMode: number) => void;
72
- export type NativeYogaDirtiedCallback = () => void;
73
+ export type NativeYogaDirtiedCallback = (node: Pointer | null) => void;
74
+ export declare const NativeMeasureTargetKind: {
75
+ readonly None: 0;
76
+ readonly TextBufferView: 1;
77
+ readonly EditorView: 2;
78
+ };
79
+ export type NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind];
80
+ export type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandle;
73
81
  export interface AudioEngineLib {
74
82
  createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | null;
75
83
  destroyAudioEngine: (engine: AudioEngineHandle) => void;
@@ -237,12 +245,14 @@ export interface RenderLib extends AudioEngineLib {
237
245
  yogaNodeStyleGetBorder: (node: Pointer, edge: number) => number;
238
246
  yogaNodeStyleSetValue: (node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number) => void;
239
247
  yogaNodeStyleGetValue: (node: Pointer, kind: number, edgeOrGutter: number) => number | bigint;
240
- yogaNodeSetMeasureFunc: (node: Pointer, callback: Pointer | null) => void;
248
+ yogaNodeSetMeasureFunc: (node: Pointer, enabled: boolean) => void;
241
249
  yogaNodeUnsetMeasureFunc: (node: Pointer) => void;
242
250
  yogaNodeHasMeasureFunc: (node: Pointer) => boolean;
243
- yogaNodeSetDirtiedFunc: (node: Pointer, callback: Pointer | null) => void;
251
+ yogaNodeSetDirtiedFunc: (node: Pointer, enabled: boolean) => void;
244
252
  yogaNodeUnsetDirtiedFunc: (node: Pointer) => void;
245
253
  yogaStoreMeasureResult: (width: number, height: number) => void;
254
+ yogaSetMeasureCallback: (callback: Pointer | null) => void;
255
+ yogaSetDirtiedCallback: (callback: Pointer | null) => void;
246
256
  createYogaMeasureCallback: (callback: NativeYogaMeasureCallback) => FFICallbackInstance;
247
257
  createYogaDirtiedCallback: (callback: NativeYogaDirtiedCallback) => FFICallbackInstance;
248
258
  createTextBuffer: (widthMethod: WidthMethod) => TextBuffer;
@@ -473,6 +483,10 @@ export interface RenderLib extends AudioEngineLib {
473
483
  info: ReserveInfo | null;
474
484
  };
475
485
  streamCommitReserved: (stream: Pointer, length: number) => number;
486
+ createNativeRenderable: () => NativeRenderableHandle;
487
+ destroyNativeRenderable: (handle: NativeRenderableHandle) => void;
488
+ nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean;
489
+ nativeRenderableSetMeasureTarget: (handle: NativeRenderableHandle, kind: NativeMeasureTargetKind, target: NativeMeasureTargetHandle | 0) => boolean;
476
490
  onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
477
491
  onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
478
492
  offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;