@opentui/core 0.0.0-20250908-4906ddad → 0.0.0-20250915-f5db043a

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/Renderable.d.ts CHANGED
@@ -1,13 +1,12 @@
1
1
  import { EventEmitter } from "events";
2
2
  import { OptimizedBuffer } from "./buffer";
3
- import { type KeyHandler } from "./lib/KeyHandler";
4
3
  import { TrackedNode } from "./lib/TrackedNode";
5
4
  import type { ParsedKey } from "./lib/parse.keypress";
5
+ import type { Selection } from "./lib/selection";
6
6
  import { type AlignString, type FlexDirectionString, type JustifyString, type OverflowString, type PositionTypeString, type WrapString } from "./lib/yoga.options";
7
- import type { MouseEvent } from "./renderer";
8
- import type { RenderContext, ViewportBounds } from "./types";
9
7
  import { type VNode } from "./renderables/composition/vnode";
10
- import type { Selection } from "./lib/selection";
8
+ import type { MouseEvent } from "./renderer";
9
+ import type { RenderContext } from "./types";
11
10
  declare const BrandedRenderable: unique symbol;
12
11
  export declare enum LayoutEvents {
13
12
  LAYOUT_CHANGED = "layout-changed",
@@ -25,7 +24,10 @@ export interface Position {
25
24
  bottom?: number | "auto" | `${number}%`;
26
25
  left?: number | "auto" | `${number}%`;
27
26
  }
28
- export interface LayoutOptions {
27
+ export interface BaseRenderableOptions {
28
+ id?: string;
29
+ }
30
+ export interface LayoutOptions extends BaseRenderableOptions {
29
31
  flexGrow?: number;
30
32
  flexShrink?: number;
31
33
  flexDirection?: FlexDirectionString;
@@ -56,8 +58,7 @@ export interface LayoutOptions {
56
58
  paddingLeft?: number | `${number}%`;
57
59
  enableLayout?: boolean;
58
60
  }
59
- export interface RenderableOptions<T extends Renderable = Renderable> extends Partial<LayoutOptions> {
60
- id?: string;
61
+ export interface RenderableOptions<T extends BaseRenderable = BaseRenderable> extends Partial<LayoutOptions> {
61
62
  width?: number | "auto" | `${number}%`;
62
63
  height?: number | "auto" | `${number}%`;
63
64
  zIndex?: number;
@@ -89,12 +90,32 @@ export declare function isDimensionType(value: any): value is number | "auto" |
89
90
  export declare function isFlexBasisType(value: any): value is number | "auto" | undefined;
90
91
  export declare function isSizeType(value: any): value is number | `${number}%` | undefined;
91
92
  export declare function isRenderable(obj: any): obj is Renderable;
92
- export declare abstract class Renderable extends EventEmitter {
93
+ export declare abstract class BaseRenderable extends EventEmitter {
93
94
  [BrandedRenderable]: boolean;
94
95
  private static renderableNumber;
95
- static renderablesByNumber: Map<number, Renderable>;
96
96
  readonly id: string;
97
97
  readonly num: number;
98
+ protected _dirty: boolean;
99
+ parent: BaseRenderable | null;
100
+ protected _visible: boolean;
101
+ constructor(options: BaseRenderableOptions);
102
+ abstract add(obj: BaseRenderable | unknown, index?: number): number;
103
+ abstract remove(id: string): void;
104
+ abstract insertBefore(obj: BaseRenderable | unknown, anchor: BaseRenderable | unknown): void;
105
+ abstract getChildren(): BaseRenderable[];
106
+ abstract getChildrenCount(): number;
107
+ abstract getRenderable(id: string): BaseRenderable | undefined;
108
+ abstract requestRender(): void;
109
+ get isDirty(): boolean;
110
+ protected markClean(): void;
111
+ protected markDirty(): void;
112
+ destroy(): void;
113
+ destroyRecursively(): void;
114
+ get visible(): boolean;
115
+ set visible(value: boolean);
116
+ }
117
+ export declare abstract class Renderable extends BaseRenderable {
118
+ static renderablesByNumber: Map<number, Renderable>;
98
119
  private _isDestroyed;
99
120
  protected _ctx: RenderContext;
100
121
  protected _translateX: number;
@@ -106,14 +127,11 @@ export declare abstract class Renderable extends EventEmitter {
106
127
  protected _widthValue: number;
107
128
  protected _heightValue: number;
108
129
  private _zIndex;
109
- protected _visible: boolean;
110
130
  selectable: boolean;
111
131
  protected buffered: boolean;
112
132
  protected frameBuffer: OptimizedBuffer | null;
113
- private _dirty;
114
- protected focusable: boolean;
133
+ protected _focusable: boolean;
115
134
  protected _focused: boolean;
116
- protected keyHandler: KeyHandler;
117
135
  protected keypressHandler: ((key: ParsedKey) => void) | null;
118
136
  private _live;
119
137
  protected _liveCount: number;
@@ -131,11 +149,15 @@ export declare abstract class Renderable extends EventEmitter {
131
149
  parent: Renderable | null;
132
150
  private childrenPrimarySortDirty;
133
151
  private childrenSortedByPrimaryAxis;
152
+ private _newChildren;
153
+ onLifecyclePass: (() => void) | null;
134
154
  renderBefore?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void;
135
155
  renderAfter?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void;
136
156
  constructor(ctx: RenderContext, options: RenderableOptions<any>);
157
+ get focusable(): boolean;
137
158
  get ctx(): RenderContext;
138
159
  get visible(): boolean;
160
+ get primaryAxis(): "row" | "column";
139
161
  set visible(value: boolean);
140
162
  hasSelection(): boolean;
141
163
  onSelectionChanged(selection: Selection | null): boolean;
@@ -149,9 +171,7 @@ export declare abstract class Renderable extends EventEmitter {
149
171
  set live(value: boolean);
150
172
  protected propagateLiveCount(delta: number): void;
151
173
  handleKeyPress?(key: ParsedKey | string): boolean;
152
- protected get isDirty(): boolean;
153
174
  findDescendantById(id: string): Renderable | undefined;
154
- private markClean;
155
175
  requestRender(): void;
156
176
  get translateX(): number;
157
177
  set translateX(value: number);
@@ -177,8 +197,7 @@ export declare abstract class Renderable extends EventEmitter {
177
197
  set zIndex(value: number);
178
198
  private requestZIndexSort;
179
199
  private ensureZIndexSorted;
180
- getChildrenInViewport(viewport: ViewportBounds, padding?: number, minTriggerSize?: number): Renderable[];
181
- protected getChildrenSortedByPrimaryAxis(): Renderable[];
200
+ getChildrenSortedByPrimaryAxis(): Renderable[];
182
201
  private setupYogaProperties;
183
202
  private setupMarginAndPadding;
184
203
  set position(positionType: PositionTypeString);
@@ -215,13 +234,15 @@ export declare abstract class Renderable extends EventEmitter {
215
234
  protected createFrameBuffer(): void;
216
235
  protected onResize(width: number, height: number): void;
217
236
  private replaceParent;
218
- add(obj: Renderable | VNode<any, any[]>, index?: number): number;
219
- insertBefore(obj: Renderable | VNode<any, any[]>, anchor?: Renderable): number;
237
+ private _forceLayoutUpdateFor;
238
+ add(obj: Renderable | VNode<any, any[]> | unknown, index?: number): number;
239
+ insertBefore(obj: Renderable | VNode<any, any[]> | unknown, anchor?: Renderable | unknown): number;
220
240
  getRenderable(id: string): Renderable | undefined;
221
241
  remove(id: string): void;
222
242
  protected onRemove(): void;
223
243
  getChildren(): Renderable[];
224
244
  getChildrenCount(): number;
245
+ updateLayout(deltaTime: number, renderList?: RenderCommand[]): void;
225
246
  render(buffer: OptimizedBuffer, deltaTime: number): void;
226
247
  protected _getChildren(): Renderable[];
227
248
  protected onUpdate(deltaTime: number): void;
@@ -254,13 +275,32 @@ export declare abstract class Renderable extends EventEmitter {
254
275
  get onSizeChange(): (() => void) | undefined;
255
276
  private applyEventOptions;
256
277
  }
278
+ interface RenderCommandBase {
279
+ action: "render" | "pushScissorRect" | "popScissorRect";
280
+ }
281
+ interface RenderCommandPushScissorRect extends RenderCommandBase {
282
+ action: "pushScissorRect";
283
+ x: number;
284
+ y: number;
285
+ width: number;
286
+ height: number;
287
+ }
288
+ interface RenderCommandPopScissorRect extends RenderCommandBase {
289
+ action: "popScissorRect";
290
+ }
291
+ interface RenderCommandRender extends RenderCommandBase {
292
+ action: "render";
293
+ renderable: Renderable;
294
+ }
295
+ export type RenderCommand = RenderCommandPushScissorRect | RenderCommandPopScissorRect | RenderCommandRender;
257
296
  export declare class RootRenderable extends Renderable {
258
297
  private yogaConfig;
298
+ private renderList;
259
299
  constructor(ctx: RenderContext);
300
+ render(buffer: OptimizedBuffer, deltaTime: number): void;
260
301
  protected propagateLiveCount(delta: number): void;
261
302
  calculateLayout(): void;
262
303
  resize(width: number, height: number): void;
263
- protected onUpdate(): void;
264
304
  protected destroySelf(): void;
265
305
  }
266
306
  export {};
package/buffer.d.ts CHANGED
@@ -13,7 +13,9 @@ export declare class OptimizedBuffer {
13
13
  private _height;
14
14
  respectAlpha: boolean;
15
15
  private _rawBuffers;
16
+ private _destroyed;
16
17
  get ptr(): Pointer;
18
+ private guard;
17
19
  get buffers(): {
18
20
  char: Uint32Array;
19
21
  fg: Float32Array;
@@ -28,11 +30,11 @@ export declare class OptimizedBuffer {
28
30
  respectAlpha?: boolean;
29
31
  id?: string;
30
32
  }): OptimizedBuffer;
31
- private coordsToIndex;
32
33
  get width(): number;
33
34
  get height(): number;
34
35
  setRespectAlpha(respectAlpha: boolean): void;
35
36
  getNativeId(): string;
37
+ getRealCharBytes(addLineBreaks?: boolean): Uint8Array;
36
38
  clear(bg?: RGBA): void;
37
39
  setCell(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
38
40
  setCellWithAlphaBlending(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;