@opentui/core 0.1.13 → 0.1.15

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
@@ -3,10 +3,12 @@ import { OptimizedBuffer } from "./buffer";
3
3
  import { type KeyHandler } from "./lib/KeyHandler";
4
4
  import { TrackedNode } from "./lib/TrackedNode";
5
5
  import type { ParsedKey } from "./lib/parse.keypress";
6
- import { type AlignString, type FlexDirectionString, type JustifyString, type PositionTypeString } from "./lib/yoga.options";
6
+ import { type AlignString, type FlexDirectionString, type JustifyString, type OverflowString, type PositionTypeString, type WrapString } from "./lib/yoga.options";
7
7
  import type { MouseEvent } from "./renderer";
8
- import type { RenderContext, SelectionState } from "./types";
8
+ import type { RenderContext, ViewportBounds } from "./types";
9
9
  import { type VNode } from "./renderables/composition/vnode";
10
+ import type { Selection } from "./lib/selection";
11
+ declare const BrandedRenderable: unique symbol;
10
12
  export declare enum LayoutEvents {
11
13
  LAYOUT_CHANGED = "layout-changed",
12
14
  ADDED = "added",
@@ -27,18 +29,21 @@ export interface LayoutOptions {
27
29
  flexGrow?: number;
28
30
  flexShrink?: number;
29
31
  flexDirection?: FlexDirectionString;
32
+ flexWrap?: WrapString;
30
33
  alignItems?: AlignString;
31
34
  justifyContent?: JustifyString;
35
+ alignSelf?: AlignString;
32
36
  flexBasis?: number | "auto" | undefined;
33
37
  position?: PositionTypeString;
38
+ overflow?: OverflowString;
34
39
  top?: number | "auto" | `${number}%`;
35
40
  right?: number | "auto" | `${number}%`;
36
41
  bottom?: number | "auto" | `${number}%`;
37
42
  left?: number | "auto" | `${number}%`;
38
- minWidth?: number;
39
- minHeight?: number;
40
- maxWidth?: number;
41
- maxHeight?: number;
43
+ minWidth?: number | "auto" | `${number}%`;
44
+ minHeight?: number | "auto" | `${number}%`;
45
+ maxWidth?: number | "auto" | `${number}%`;
46
+ maxHeight?: number | "auto" | `${number}%`;
42
47
  margin?: number | "auto" | `${number}%`;
43
48
  marginTop?: number | "auto" | `${number}%`;
44
49
  marginRight?: number | "auto" | `${number}%`;
@@ -72,23 +77,29 @@ export interface RenderableOptions<T extends Renderable = Renderable> extends Pa
72
77
  onMouseOut?: (this: T, event: MouseEvent) => void;
73
78
  onMouseScroll?: (this: T, event: MouseEvent) => void;
74
79
  onKeyDown?: (key: ParsedKey) => void;
80
+ onSizeChange?: (this: T) => void;
75
81
  }
76
82
  export declare function isValidPercentage(value: any): value is `${number}%`;
77
83
  export declare function isMarginType(value: any): value is number | "auto" | `${number}%`;
78
84
  export declare function isPaddingType(value: any): value is number | `${number}%`;
79
85
  export declare function isPositionType(value: any): value is number | "auto" | `${number}%`;
80
- export declare function isPostionTypeType(value: any): value is PositionTypeString;
86
+ export declare function isPositionTypeType(value: any): value is PositionTypeString;
87
+ export declare function isOverflowType(value: any): value is OverflowString;
81
88
  export declare function isDimensionType(value: any): value is number | "auto" | `${number}%`;
82
89
  export declare function isFlexBasisType(value: any): value is number | "auto" | undefined;
83
90
  export declare function isSizeType(value: any): value is number | `${number}%` | undefined;
91
+ export declare function isRenderable(obj: any): obj is Renderable;
84
92
  export declare abstract class Renderable extends EventEmitter {
93
+ [BrandedRenderable]: boolean;
85
94
  private static renderableNumber;
86
95
  static renderablesByNumber: Map<number, Renderable>;
87
96
  readonly id: string;
88
97
  readonly num: number;
89
98
  protected _ctx: RenderContext;
90
- private _x;
91
- private _y;
99
+ protected _translateX: number;
100
+ protected _translateY: number;
101
+ protected _x: number;
102
+ protected _y: number;
92
103
  protected _width: number | "auto" | `${number}%`;
93
104
  protected _height: number | "auto" | `${number}%`;
94
105
  protected _widthValue: number;
@@ -105,17 +116,20 @@ export declare abstract class Renderable extends EventEmitter {
105
116
  protected keypressHandler: ((key: ParsedKey) => void) | null;
106
117
  private _live;
107
118
  protected _liveCount: number;
119
+ private _sizeChangeListener;
108
120
  private _mouseListener;
109
121
  private _mouseListeners;
110
122
  private _keyListeners;
111
123
  protected layoutNode: TrackedNode;
112
124
  protected _positionType: PositionTypeString;
125
+ protected _overflow: OverflowString;
113
126
  protected _position: Position;
114
- private _childHostOverride;
115
127
  private renderableMap;
116
- private renderableArray;
128
+ protected renderableArray: Renderable[];
117
129
  private needsZIndexSort;
118
130
  parent: Renderable | null;
131
+ private childrenPrimarySortDirty;
132
+ private childrenSortedByPrimaryAxis;
119
133
  renderBefore?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void;
120
134
  renderAfter?: (this: Renderable, buffer: OptimizedBuffer, deltaTime: number) => void;
121
135
  constructor(ctx: RenderContext, options: RenderableOptions<any>);
@@ -123,7 +137,7 @@ export declare abstract class Renderable extends EventEmitter {
123
137
  get visible(): boolean;
124
138
  set visible(value: boolean);
125
139
  hasSelection(): boolean;
126
- onSelectionChanged(selection: SelectionState | null): boolean;
140
+ onSelectionChanged(selection: Selection | null): boolean;
127
141
  getSelectedText(): string;
128
142
  shouldStartSelection(x: number, y: number): boolean;
129
143
  focus(): void;
@@ -135,12 +149,13 @@ export declare abstract class Renderable extends EventEmitter {
135
149
  protected propagateLiveCount(delta: number): void;
136
150
  handleKeyPress?(key: ParsedKey | string): boolean;
137
151
  protected get isDirty(): boolean;
138
- get childHost(): Renderable;
139
- set childHost(host: Renderable | null);
140
152
  findDescendantById(id: string): Renderable | undefined;
141
- setChildHostById(id: string): boolean;
142
153
  private markClean;
143
- needsUpdate(): void;
154
+ requestRender(): void;
155
+ get translateX(): number;
156
+ set translateX(value: number);
157
+ get translateY(): number;
158
+ set translateY(value: number);
144
159
  get x(): number;
145
160
  set x(value: number);
146
161
  get top(): number | "auto" | `${number}%` | undefined;
@@ -161,16 +176,22 @@ export declare abstract class Renderable extends EventEmitter {
161
176
  set zIndex(value: number);
162
177
  private requestZIndexSort;
163
178
  private ensureZIndexSorted;
179
+ getChildrenInViewport(viewport: ViewportBounds, padding?: number, minTriggerSize?: number): Renderable[];
180
+ protected getChildrenSortedByPrimaryAxis(): Renderable[];
164
181
  private setupYogaProperties;
165
182
  private setupMarginAndPadding;
166
183
  set position(positionType: PositionTypeString);
184
+ get overflow(): OverflowString;
185
+ set overflow(overflow: OverflowString);
167
186
  setPosition(position: Position): void;
168
187
  private updateYogaPosition;
169
188
  set flexGrow(grow: number);
170
189
  set flexShrink(shrink: number);
171
190
  set flexDirection(direction: FlexDirectionString);
191
+ set flexWrap(wrap: WrapString);
172
192
  set alignItems(alignItems: AlignString);
173
193
  set justifyContent(justifyContent: JustifyString);
194
+ set alignSelf(alignSelf: AlignString);
174
195
  set flexBasis(basis: number | "auto" | undefined);
175
196
  set minWidth(minWidth: number | `${number}%` | undefined);
176
197
  set maxWidth(maxWidth: number | `${number}%` | undefined);
@@ -199,8 +220,16 @@ export declare abstract class Renderable extends EventEmitter {
199
220
  remove(id: string): void;
200
221
  protected onRemove(): void;
201
222
  getChildren(): Renderable[];
223
+ getChildrenCount(): number;
202
224
  render(buffer: OptimizedBuffer, deltaTime: number): void;
203
- protected beforeRender(): void;
225
+ protected _getChildren(): Renderable[];
226
+ protected onUpdate(deltaTime: number): void;
227
+ protected getScissorRect(): {
228
+ x: number;
229
+ y: number;
230
+ width: number;
231
+ height: number;
232
+ };
204
233
  protected renderSelf(buffer: OptimizedBuffer, deltaTime: number): void;
205
234
  destroy(): void;
206
235
  destroyRecursively(): void;
@@ -219,6 +248,8 @@ export declare abstract class Renderable extends EventEmitter {
219
248
  set onMouseScroll(handler: ((event: MouseEvent) => void) | undefined);
220
249
  set onKeyDown(handler: ((key: ParsedKey) => void) | undefined);
221
250
  get onKeyDown(): ((key: ParsedKey) => void) | undefined;
251
+ set onSizeChange(handler: (() => void) | undefined);
252
+ get onSizeChange(): (() => void) | undefined;
222
253
  private applyEventOptions;
223
254
  }
224
255
  export declare class RootRenderable extends Renderable {
@@ -227,6 +258,7 @@ export declare class RootRenderable extends Renderable {
227
258
  protected propagateLiveCount(delta: number): void;
228
259
  calculateLayout(): void;
229
260
  resize(width: number, height: number): void;
230
- protected beforeRender(): void;
261
+ protected onUpdate(): void;
231
262
  protected destroySelf(): void;
232
263
  }
264
+ export {};
@@ -88,7 +88,11 @@ export declare class Timeline {
88
88
  private autoplay;
89
89
  private onComplete?;
90
90
  private onPause?;
91
+ private stateChangeListeners;
91
92
  constructor(options?: TimelineOptions);
93
+ addStateChangeListener(listener: (timeline: Timeline) => void): void;
94
+ removeStateChangeListener(listener: (timeline: Timeline) => void): void;
95
+ private notifyStateChange;
92
96
  add(target: any, properties: AnimationOptions, startTime?: number | string): this;
93
97
  once(target: any, properties: AnimationOptions): this;
94
98
  call(callback: () => void, startTime?: number | string): this;
@@ -101,9 +105,16 @@ export declare class Timeline {
101
105
  }
102
106
  declare class TimelineEngine {
103
107
  private timelines;
108
+ private renderer;
109
+ private frameCallback;
110
+ private isLive;
104
111
  defaults: {
105
112
  frameRate: number;
106
113
  };
114
+ attach(renderer: any): void;
115
+ detach(): void;
116
+ private updateLiveState;
117
+ private onTimelineStateChange;
107
118
  register(timeline: Timeline): void;
108
119
  unregister(timeline: Timeline): void;
109
120
  clear(): void;
package/buffer.d.ts CHANGED
@@ -9,44 +9,33 @@ export declare class OptimizedBuffer {
9
9
  id: string;
10
10
  lib: RenderLib;
11
11
  private bufferPtr;
12
- private buffer;
13
12
  private _width;
14
13
  private _height;
15
14
  respectAlpha: boolean;
16
- private useFFI;
15
+ private _rawBuffers;
17
16
  get ptr(): Pointer;
18
- constructor(lib: RenderLib, ptr: Pointer, buffer: {
17
+ get buffers(): {
19
18
  char: Uint32Array;
20
19
  fg: Float32Array;
21
20
  bg: Float32Array;
22
21
  attributes: Uint8Array;
23
- }, width: number, height: number, options: {
22
+ };
23
+ constructor(lib: RenderLib, ptr: Pointer, width: number, height: number, options: {
24
24
  respectAlpha?: boolean;
25
+ id?: string;
25
26
  });
26
27
  static create(width: number, height: number, widthMethod: WidthMethod, options?: {
27
28
  respectAlpha?: boolean;
29
+ id?: string;
28
30
  }): OptimizedBuffer;
29
- get buffers(): {
30
- char: Uint32Array;
31
- fg: Float32Array;
32
- bg: Float32Array;
33
- attributes: Uint8Array;
34
- };
35
31
  private coordsToIndex;
36
32
  get width(): number;
37
33
  get height(): number;
38
34
  setRespectAlpha(respectAlpha: boolean): void;
39
- clear(bg?: RGBA, clearChar?: string): void;
40
- clearLocal(bg?: RGBA, clearChar?: string): void;
35
+ getNativeId(): string;
36
+ clear(bg?: RGBA): void;
41
37
  setCell(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
42
- get(x: number, y: number): {
43
- char: number;
44
- fg: RGBA;
45
- bg: RGBA;
46
- attributes: number;
47
- } | null;
48
38
  setCellWithAlphaBlending(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
49
- setCellWithAlphaBlendingLocal(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
50
39
  drawText(text: string, x: number, y: number, fg: RGBA, bg?: RGBA, attributes?: number, selection?: {
51
40
  start: number;
52
41
  end: number;
@@ -54,9 +43,7 @@ export declare class OptimizedBuffer {
54
43
  fgColor?: RGBA;
55
44
  } | null): void;
56
45
  fillRect(x: number, y: number, width: number, height: number, bg: RGBA): void;
57
- fillRectLocal(x: number, y: number, width: number, height: number, bg: RGBA): void;
58
46
  drawFrameBuffer(destX: number, destY: number, frameBuffer: OptimizedBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
59
- drawFrameBufferLocal(destX: number, destY: number, frameBuffer: OptimizedBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
60
47
  destroy(): void;
61
48
  drawTextBuffer(textBuffer: TextBuffer, x: number, y: number, clipRect?: {
62
49
  x: number;
@@ -65,14 +52,8 @@ export declare class OptimizedBuffer {
65
52
  height: number;
66
53
  }): void;
67
54
  drawSuperSampleBuffer(x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number): void;
68
- drawSuperSampleBufferFFI(x: number, y: number, pixelDataPtr: Pointer, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number): void;
69
55
  drawPackedBuffer(dataPtr: Pointer, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number): void;
70
- setCellWithAlphaBlendingFFI(x: number, y: number, char: string, fg: RGBA, bg: RGBA, attributes?: number): void;
71
- fillRectFFI(x: number, y: number, width: number, height: number, bg: RGBA): void;
72
56
  resize(width: number, height: number): void;
73
- clearFFI(bg?: RGBA): void;
74
- drawTextFFI(text: string, x: number, y: number, fg?: RGBA, bg?: RGBA, attributes?: number): void;
75
- drawFrameBufferFFI(destX: number, destY: number, frameBuffer: OptimizedBuffer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number): void;
76
57
  drawBox(options: {
77
58
  x: number;
78
59
  y: number;
@@ -87,4 +68,7 @@ export declare class OptimizedBuffer {
87
68
  title?: string;
88
69
  titleAlignment?: "left" | "center" | "right";
89
70
  }): void;
71
+ pushScissorRect(x: number, y: number, width: number, height: number): void;
72
+ popScissorRect(): void;
73
+ clearScissorRects(): void;
90
74
  }
package/console.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { CliRenderer, ColorInput } from ".";
2
1
  import { EventEmitter } from "events";
2
+ import type { CliRenderer, ColorInput } from ".";
3
3
  import { OptimizedBuffer } from "./buffer";
4
4
  import { Capture } from "./lib/output.capture";
5
5
  export declare const capture: Capture;
@@ -45,7 +45,7 @@ export declare class TerminalConsole extends EventEmitter {
45
45
  private _displayLines;
46
46
  private _allLogEntries;
47
47
  private _needsFrameBufferUpdate;
48
- private markNeedsUpdate;
48
+ private markNeedsRerender;
49
49
  private _rgbaInfo;
50
50
  private _rgbaWarn;
51
51
  private _rgbaError;