@opentui/core 0.4.2 → 0.4.4

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.4",
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.4",
69
+ "@opentui/core-darwin-arm64": "0.4.4",
70
+ "@opentui/core-linux-x64": "0.4.4",
71
+ "@opentui/core-linux-arm64": "0.4.4",
72
+ "@opentui/core-win32-x64": "0.4.4",
73
+ "@opentui/core-win32-arm64": "0.4.4",
74
+ "@opentui/core-linux-x64-musl": "0.4.4",
75
+ "@opentui/core-linux-arm64-musl": "0.4.4"
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;
@@ -0,0 +1 @@
1
+ export declare function allocateProportionalColumnWidths(widths: number[], targetWidth: number, minWidth: number): number[];
@@ -27,6 +27,7 @@ declare class AsyncExpectation<T> {
27
27
  toBeNull(): Promise<void>;
28
28
  toBeUndefined(): Promise<void>;
29
29
  toContain(expected: unknown): Promise<void>;
30
+ toHaveProperty(property: PropertyKey, expectedValue?: unknown): Promise<void>;
30
31
  toMatchSnapshot(snapshotName?: string): Promise<void>;
31
32
  toMatchInlineSnapshot(snapshot: string): Promise<void>;
32
33
  toThrow(expected?: ThrowMatcher): Promise<void>;
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-7z5n7k9m.js";
5
5
  import {
6
6
  SystemClock,
7
7
  TreeSitterClient
8
- } from "./index-x7n320jr.js";
8
+ } from "./index-za1krqsf.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-za1krqsf.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;
@@ -199,6 +199,51 @@ export type AudioVoiceOptions = {
199
199
  loop?: boolean;
200
200
  groupId?: number;
201
201
  };
202
+ export declare const NativeAudioStreamFormat: {
203
+ readonly Mp3: 1;
204
+ readonly Flac: 2;
205
+ };
206
+ export type NativeAudioStreamFormat = (typeof NativeAudioStreamFormat)[keyof typeof NativeAudioStreamFormat];
207
+ export type AudioStreamCreateOptions = {
208
+ capacityMs: number;
209
+ startupMs: number;
210
+ resumeMs: number;
211
+ volume: number;
212
+ pan: number;
213
+ groupId: number;
214
+ maxProbeBytes: number;
215
+ format: NativeAudioStreamFormat;
216
+ };
217
+ export type NativeAudioStreamStats = {
218
+ bytesReceived: bigint;
219
+ framesDecoded: bigint;
220
+ framesPlayed: bigint;
221
+ state: number;
222
+ sampleRate: number;
223
+ channels: number;
224
+ bufferedFrames: number;
225
+ capacityFrames: number;
226
+ underruns: number;
227
+ errorCode: number;
228
+ readyGeneration: number;
229
+ };
230
+ export declare const NativeAudioStreamState: {
231
+ readonly Initializing: 0;
232
+ readonly Buffering: 1;
233
+ readonly Playing: 2;
234
+ readonly Ended: 3;
235
+ readonly Failed: 4;
236
+ readonly Cancelled: 5;
237
+ readonly Reconnecting: 6;
238
+ };
239
+ export type NativeAudioStreamState = (typeof NativeAudioStreamState)[keyof typeof NativeAudioStreamState];
240
+ export declare const NativeAudioStreamStateNames: readonly ["initializing", "buffering", "playing", "ended", "errored", "disposed", "reconnecting"];
241
+ export declare const NativeAudioStreamCloseReason: {
242
+ readonly PreserveNativeTerminal: 0;
243
+ readonly TransportError: 1;
244
+ readonly Disposed: 2;
245
+ };
246
+ export type NativeAudioStreamCloseReason = (typeof NativeAudioStreamCloseReason)[keyof typeof NativeAudioStreamCloseReason];
202
247
  export type AudioStats = {
203
248
  soundsLoaded: number;
204
249
  voicesActive: number;
@@ -252,5 +297,7 @@ export declare const AudioVoiceOptionsStruct: import("bun-ffi-structs").DefineSt
252
297
  }], readonly ["groupId", "u32", {
253
298
  readonly default: 0;
254
299
  }]], {}>;
300
+ export declare const AudioStreamCreateOptionsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["capacityMs", "u32"], readonly ["startupMs", "u32"], readonly ["resumeMs", "u32"], readonly ["volume", "f32"], readonly ["pan", "f32"], readonly ["groupId", "u32"], readonly ["maxProbeBytes", "u32"], readonly ["format", "u32"]], {}>;
301
+ export declare const AudioStreamStatsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["bytesReceived", "u64"], readonly ["framesDecoded", "u64"], readonly ["framesPlayed", "u64"], readonly ["state", "u32"], readonly ["sampleRate", "u32"], readonly ["channels", "u32"], readonly ["bufferedFrames", "u32"], readonly ["capacityFrames", "u32"], readonly ["underruns", "u32"], readonly ["errorCode", "i32"], readonly ["readyGeneration", "u32"]], {}>;
255
302
  export declare const AudioStatsStruct: import("bun-ffi-structs").DefineStructReturnType<[readonly ["soundsLoaded", "u32"], readonly ["voicesActive", "u32"], readonly ["framesMixed", "u64"], readonly ["lockMisses", "u32"], readonly ["lastPeak", "f32"], readonly ["lastRms", "f32"]], {}>;
256
303
  export {};
package/zig.d.ts CHANGED
@@ -1,10 +1,31 @@
1
1
  import { type FFICallbackInstance, type Pointer } from "./platform/ffi.js";
2
2
  import { type CursorStyle, type CursorStyleOptions, type TargetChannel, type DebugOverlayCorner, type WidthMethod, type TerminalCapabilities, type Highlight, type LineInfo } from "./types.js";
3
- export type { LineInfo, AllocatorStats, BuildOptions, NativeRenderStats };
3
+ export type { LineInfo, AllocatorStats, AudioStreamCreateOptions, BuildOptions, NativeAudioStreamStats, NativeRenderStats, };
4
4
  import { RGBA } from "./lib/RGBA.js";
5
5
  import { OptimizedBuffer } from "./buffer.js";
6
6
  import { TextBuffer } from "./text-buffer.js";
7
- import type { NativeSpanFeedOptions, NativeSpanFeedStats, ReserveInfo, AudioCreateOptions, AudioStartOptions, AudioVoiceOptions, AudioStats, BuildOptions, AllocatorStats, NativeRenderStats } from "./zig-structs.js";
7
+ import type { NativeSpanFeedOptions, NativeSpanFeedStats, ReserveInfo, AudioCreateOptions, AudioStartOptions, AudioVoiceOptions, AudioStreamCreateOptions, NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonType, NativeAudioStreamFormat as NativeAudioStreamFormatType, NativeAudioStreamState as NativeAudioStreamStateType, NativeAudioStreamStats, AudioStats, BuildOptions, AllocatorStats, NativeRenderStats } from "./zig-structs.js";
8
+ export declare const NativeAudioStreamState: {
9
+ readonly Initializing: 0;
10
+ readonly Buffering: 1;
11
+ readonly Playing: 2;
12
+ readonly Ended: 3;
13
+ readonly Failed: 4;
14
+ readonly Cancelled: 5;
15
+ readonly Reconnecting: 6;
16
+ };
17
+ export type NativeAudioStreamState = NativeAudioStreamStateType;
18
+ export declare const NativeAudioStreamCloseReason: {
19
+ readonly PreserveNativeTerminal: 0;
20
+ readonly TransportError: 1;
21
+ readonly Disposed: 2;
22
+ };
23
+ export type NativeAudioStreamCloseReason = NativeAudioStreamCloseReasonType;
24
+ export declare const NativeAudioStreamFormat: {
25
+ readonly Mp3: 1;
26
+ readonly Flac: 2;
27
+ };
28
+ export type NativeAudioStreamFormat = NativeAudioStreamFormatType;
8
29
  export type NativeHandle<T extends string> = Pointer & {
9
30
  readonly __nativeHandle: T;
10
31
  };
@@ -17,6 +38,7 @@ export type EditorViewHandle = NativeHandle<"editor_view">;
17
38
  export type SyntaxStyleHandle = NativeHandle<"syntax_style">;
18
39
  export type EventSinkHandle = NativeHandle<"event_sink">;
19
40
  export type AudioEngineHandle = NativeHandle<"audio_engine">;
41
+ export type NativeRenderableHandle = NativeHandle<"native_renderable">;
20
42
  export declare enum LogLevel {
21
43
  Error = 0,
22
44
  Warn = 1,
@@ -69,7 +91,14 @@ export interface NativeYogaLayout {
69
91
  height: number;
70
92
  }
71
93
  export type NativeYogaMeasureCallback = (node: Pointer | null, width: number, widthMode: number, height: number, heightMode: number) => void;
72
- export type NativeYogaDirtiedCallback = () => void;
94
+ export type NativeYogaDirtiedCallback = (node: Pointer | null) => void;
95
+ export declare const NativeMeasureTargetKind: {
96
+ readonly None: 0;
97
+ readonly TextBufferView: 1;
98
+ readonly EditorView: 2;
99
+ };
100
+ export type NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind];
101
+ export type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandle;
73
102
  export interface AudioEngineLib {
74
103
  createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | null;
75
104
  destroyAudioEngine: (engine: AudioEngineHandle) => void;
@@ -82,6 +111,21 @@ export interface AudioEngineLib {
82
111
  audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => number;
83
112
  audioStartMixer: (engine: AudioEngineHandle) => number;
84
113
  audioStop: (engine: AudioEngineHandle) => number;
114
+ audioCreateStream: (engine: AudioEngineHandle, options: AudioStreamCreateOptions) => {
115
+ status: number;
116
+ streamId: number | null;
117
+ };
118
+ audioWriteStream: (engine: AudioEngineHandle, streamId: number, data: Uint8Array) => number;
119
+ audioEndStream: (engine: AudioEngineHandle, streamId: number) => number;
120
+ audioRestartStream: (engine: AudioEngineHandle, streamId: number) => number;
121
+ audioSetStreamVolume: (engine: AudioEngineHandle, streamId: number, volume: number) => number;
122
+ audioSetStreamPan: (engine: AudioEngineHandle, streamId: number, pan: number) => number;
123
+ audioSetStreamGroup: (engine: AudioEngineHandle, streamId: number, groupId: number) => number;
124
+ audioGetStreamStats: (engine: AudioEngineHandle, streamId: number) => NativeAudioStreamStats | null;
125
+ audioCloseStream: (engine: AudioEngineHandle, streamId: number, reason: NativeAudioStreamCloseReason) => {
126
+ status: number;
127
+ stats: NativeAudioStreamStats | null;
128
+ };
85
129
  audioLoad: (engine: AudioEngineHandle, data: Uint8Array) => {
86
130
  status: number;
87
131
  soundId: number | null;
@@ -237,12 +281,14 @@ export interface RenderLib extends AudioEngineLib {
237
281
  yogaNodeStyleGetBorder: (node: Pointer, edge: number) => number;
238
282
  yogaNodeStyleSetValue: (node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number) => void;
239
283
  yogaNodeStyleGetValue: (node: Pointer, kind: number, edgeOrGutter: number) => number | bigint;
240
- yogaNodeSetMeasureFunc: (node: Pointer, callback: Pointer | null) => void;
284
+ yogaNodeSetMeasureFunc: (node: Pointer, enabled: boolean) => void;
241
285
  yogaNodeUnsetMeasureFunc: (node: Pointer) => void;
242
286
  yogaNodeHasMeasureFunc: (node: Pointer) => boolean;
243
- yogaNodeSetDirtiedFunc: (node: Pointer, callback: Pointer | null) => void;
287
+ yogaNodeSetDirtiedFunc: (node: Pointer, enabled: boolean) => void;
244
288
  yogaNodeUnsetDirtiedFunc: (node: Pointer) => void;
245
289
  yogaStoreMeasureResult: (width: number, height: number) => void;
290
+ yogaSetMeasureCallback: (callback: Pointer | null) => void;
291
+ yogaSetDirtiedCallback: (callback: Pointer | null) => void;
246
292
  createYogaMeasureCallback: (callback: NativeYogaMeasureCallback) => FFICallbackInstance;
247
293
  createYogaDirtiedCallback: (callback: NativeYogaDirtiedCallback) => FFICallbackInstance;
248
294
  createTextBuffer: (widthMethod: WidthMethod) => TextBuffer;
@@ -473,6 +519,10 @@ export interface RenderLib extends AudioEngineLib {
473
519
  info: ReserveInfo | null;
474
520
  };
475
521
  streamCommitReserved: (stream: Pointer, length: number) => number;
522
+ createNativeRenderable: () => NativeRenderableHandle;
523
+ destroyNativeRenderable: (handle: NativeRenderableHandle) => void;
524
+ nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean;
525
+ nativeRenderableSetMeasureTarget: (handle: NativeRenderableHandle, kind: NativeMeasureTargetKind, target: NativeMeasureTargetHandle | 0) => boolean;
476
526
  onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
477
527
  onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;
478
528
  offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void;