@opentui/core 0.1.12 → 0.1.14

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.
@@ -1,6 +1,11 @@
1
1
  import { EventEmitter } from "events";
2
- export declare class KeyHandler extends EventEmitter {
2
+ import { type ParsedKey } from "./parse.keypress";
3
+ type KeyHandlerEventMap = {
4
+ keypress: [ParsedKey];
5
+ };
6
+ export declare class KeyHandler extends EventEmitter<KeyHandlerEventMap> {
3
7
  constructor();
4
8
  destroy(): void;
5
9
  }
6
10
  export declare function getKeyHandler(): KeyHandler;
11
+ 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.1.12",
7
+ "version": "0.1.14",
8
8
  "description": "OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)",
9
9
  "license": "MIT",
10
10
  "repository": {
@@ -38,11 +38,11 @@
38
38
  "bun-webgpu": "0.1.3",
39
39
  "planck": "^1.4.2",
40
40
  "three": "0.177.0",
41
- "@opentui/core-darwin-x64": "0.1.12",
42
- "@opentui/core-darwin-arm64": "0.1.12",
43
- "@opentui/core-linux-x64": "0.1.12",
44
- "@opentui/core-linux-arm64": "0.1.12",
45
- "@opentui/core-win32-x64": "0.1.12",
46
- "@opentui/core-win32-arm64": "0.1.12"
41
+ "@opentui/core-darwin-x64": "0.1.14",
42
+ "@opentui/core-darwin-arm64": "0.1.14",
43
+ "@opentui/core-linux-x64": "0.1.14",
44
+ "@opentui/core-linux-arm64": "0.1.14",
45
+ "@opentui/core-win32-x64": "0.1.14",
46
+ "@opentui/core-win32-arm64": "0.1.14"
47
47
  }
48
48
  }
@@ -3,7 +3,7 @@ import type { OptimizedBuffer } from "../buffer";
3
3
  import { type BorderCharacters, type BorderSides, type BorderSidesConfig, type BorderStyle } from "../lib";
4
4
  import { type ColorInput, RGBA } from "../lib/RGBA";
5
5
  import type { RenderContext } from "../types";
6
- export interface BoxOptions extends RenderableOptions<BoxRenderable> {
6
+ export interface BoxOptions<TRenderable extends Renderable = BoxRenderable> extends RenderableOptions<TRenderable> {
7
7
  backgroundColor?: string | RGBA;
8
8
  borderStyle?: BorderStyle;
9
9
  border?: boolean | BorderSides[];
@@ -56,6 +56,12 @@ export declare class BoxRenderable extends Renderable {
56
56
  get titleAlignment(): "left" | "center" | "right";
57
57
  set titleAlignment(value: "left" | "center" | "right");
58
58
  protected renderSelf(buffer: OptimizedBuffer): void;
59
+ protected getScissorRect(): {
60
+ x: number;
61
+ y: number;
62
+ width: number;
63
+ height: number;
64
+ };
59
65
  private applyYogaBorders;
60
66
  private applyYogaGap;
61
67
  set gap(gap: number | `${number}%` | undefined);
@@ -24,11 +24,24 @@ export declare class TextRenderable extends Renderable {
24
24
  private textBuffer;
25
25
  private _plainText;
26
26
  private _lineInfo;
27
+ protected _defaultOptions: {
28
+ content: string;
29
+ fg: RGBA;
30
+ bg: RGBA;
31
+ selectionBg: undefined;
32
+ selectionFg: undefined;
33
+ selectable: true;
34
+ attributes: number;
35
+ };
27
36
  constructor(ctx: RenderContext, options: TextOptions);
28
37
  get content(): StyledText;
29
38
  set content(value: StyledText | string);
30
39
  get fg(): RGBA;
31
40
  set fg(value: RGBA | string | undefined);
41
+ get selectionBg(): RGBA | undefined;
42
+ set selectionBg(value: RGBA | string | undefined);
43
+ get selectionFg(): RGBA | undefined;
44
+ set selectionFg(value: RGBA | string | undefined);
32
45
  get bg(): RGBA;
33
46
  set bg(value: RGBA | string | undefined);
34
47
  get attributes(): number;
@@ -1,8 +1,6 @@
1
- import { ASCIIFontRenderable, BoxRenderable, GroupRenderable, InputRenderable, SelectRenderable, TabSelectRenderable, TextRenderable, VRenderable, type ASCIIFontOptions, type BoxOptions, type TextOptions, type VRenderableOptions, type InputRenderableOptions, type SelectRenderableOptions, type TabSelectRenderableOptions, FrameBufferRenderable, type FrameBufferOptions } from "../";
2
- import type { RenderableOptions } from "../../Renderable";
1
+ import { ASCIIFontRenderable, BoxRenderable, InputRenderable, SelectRenderable, TabSelectRenderable, TextRenderable, VRenderable, type ASCIIFontOptions, type BoxOptions, type TextOptions, type VRenderableOptions, type InputRenderableOptions, type SelectRenderableOptions, type TabSelectRenderableOptions, FrameBufferRenderable, type FrameBufferOptions } from "../";
3
2
  import { type VChild, type ProxiedVNode } from "./vnode";
4
3
  export declare function Generic(props?: VRenderableOptions, ...children: VChild[]): ProxiedVNode<typeof VRenderable>;
5
- export declare function Group(props?: RenderableOptions<any>, ...children: VChild[]): ProxiedVNode<typeof GroupRenderable>;
6
4
  export declare function Box(props?: BoxOptions, ...children: VChild[]): ProxiedVNode<typeof BoxRenderable>;
7
5
  export declare function Text(props?: TextOptions & {
8
6
  content?: any;
@@ -28,11 +28,18 @@ export declare function h<P>(type: Construct<P>, props?: P, ...children: VChild[
28
28
  export declare function isVNode(node: any): node is VNode;
29
29
  export declare function ensureRenderable(ctx: RenderContext, node: Renderable | VNode<any, any[]>): Renderable;
30
30
  export declare function wrapWithDelegates<T extends InstanceType<RenderableConstructor>>(instance: T, delegateMap: Record<string, string> | undefined): T;
31
- export declare function instantiate(ctx: RenderContext, node: VChild): Renderable;
31
+ export type InstantiateFn<NodeType extends VNode | Renderable> = Renderable & {
32
+ __node?: NodeType;
33
+ };
34
+ export declare function instantiate<NodeType extends VNode | Renderable>(ctx: RenderContext, node: NodeType): InstantiateFn<NodeType>;
32
35
  export type DelegateMap<T> = Partial<Record<keyof T, string>>;
33
- export declare function delegate<TCtor extends RenderableConstructor<any>, K extends keyof InstanceType<TCtor>>(mapping: Partial<Record<K, string>>, vnode: ProxiedVNode<TCtor>): ProxiedVNode<TCtor>;
34
- export declare function delegate<TCtor extends RenderableConstructor<any>, K extends keyof InstanceType<TCtor>>(mapping: Partial<Record<K, string>>, vnode: VNode<any> & {
35
- type: TCtor;
36
+ export type ValidateShape<Given, AllowedKeys> = {
37
+ [K in keyof Given]: K extends keyof AllowedKeys ? NonNullable<Given[K]> : never;
38
+ };
39
+ type InferNode<T> = T extends InstantiateFn<infer U> ? U : never;
40
+ export declare function delegate<Factory extends InstantiateFn<any>, InnerNode extends InferNode<Factory>, TargetMap extends Record<keyof InnerNode, string>, const Mapping extends Partial<TargetMap>>(mapping: ValidateShape<Mapping, TargetMap>, vnode: Factory): Renderable;
41
+ export declare function delegate<ConstructorType extends RenderableConstructor<any>, TargetMap extends Record<keyof InstanceType<ConstructorType>, string>, const Mapping extends Partial<TargetMap>>(mapping: ValidateShape<Mapping, TargetMap>, vnode: ProxiedVNode<ConstructorType>): ProxiedVNode<ConstructorType>;
42
+ export declare function delegate<ConstructorType extends RenderableConstructor<any>, const Mapping extends DelegateMap<InstanceType<ConstructorType>>>(mapping: ValidateShape<Mapping, string>, vnode: VNode & {
43
+ type: ConstructorType;
36
44
  }): VNode;
37
- export declare function delegate(mapping: Record<string, string>, vnode: VNode<any>): VNode;
38
- export declare function delegate(mapping: Record<string, string>, renderable: Renderable): Renderable;
45
+ export {};
@@ -1,6 +1,5 @@
1
1
  export * from "./Box";
2
2
  export * from "./FrameBuffer";
3
- export * from "./Group";
4
3
  export * from "./Text";
5
4
  export * from "./ASCIIFont";
6
5
  export * from "./Input";
package/renderer.d.ts CHANGED
@@ -133,7 +133,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
133
133
  addToHitGrid(x: number, y: number, width: number, height: number, id: number): void;
134
134
  get widthMethod(): WidthMethod;
135
135
  private writeOut;
136
- needsUpdate(): void;
136
+ requestRender(): void;
137
137
  get useConsole(): boolean;
138
138
  set useConsole(value: boolean);
139
139
  get isRunning(): boolean;
@@ -172,6 +172,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
172
172
  corner?: DebugOverlayCorner;
173
173
  }): void;
174
174
  clearTerminal(): void;
175
+ setTerminalTitle(title: string): void;
175
176
  dumpHitGrid(): void;
176
177
  dumpBuffers(timestamp?: number): void;
177
178
  dumpStdoutBuffer(timestamp?: number): void;
@@ -190,6 +191,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
190
191
  requestLive(): void;
191
192
  dropLive(): void;
192
193
  start(): void;
194
+ auto(): void;
193
195
  private internalStart;
194
196
  pause(): void;
195
197
  private internalPause;
package/types.d.ts CHANGED
@@ -22,7 +22,7 @@ export interface RenderContext {
22
22
  addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
23
23
  width: number;
24
24
  height: number;
25
- needsUpdate: () => void;
25
+ requestRender: () => void;
26
26
  setCursorPosition: (x: number, y: number, visible: boolean) => void;
27
27
  setCursorStyle: (style: CursorStyle, blinking: boolean) => void;
28
28
  setCursorColor: (color: RGBA) => void;
package/zig.d.ts CHANGED
@@ -3,6 +3,12 @@ import { type CursorStyle, type DebugOverlayCorner, type WidthMethod } from "./t
3
3
  import { RGBA } from "./lib/RGBA";
4
4
  import { OptimizedBuffer } from "./buffer";
5
5
  import { TextBuffer } from "./text-buffer";
6
+ export declare enum LogLevel {
7
+ Error = 0,
8
+ Warn = 1,
9
+ Info = 2,
10
+ Debug = 3
11
+ }
6
12
  export interface RenderLib {
7
13
  createRenderer: (width: number, height: number) => Pointer | null;
8
14
  destroyRenderer: (renderer: Pointer, useAlternateScreen: boolean, splitHeight: number) => void;
@@ -14,7 +20,7 @@ export interface RenderLib {
14
20
  render: (renderer: Pointer, force: boolean) => void;
15
21
  getNextBuffer: (renderer: Pointer) => OptimizedBuffer;
16
22
  getCurrentBuffer: (renderer: Pointer) => OptimizedBuffer;
17
- createOptimizedBuffer: (width: number, height: number, widthMethod: WidthMethod, respectAlpha?: boolean) => OptimizedBuffer;
23
+ createOptimizedBuffer: (width: number, height: number, widthMethod: WidthMethod, respectAlpha?: boolean, id?: string) => OptimizedBuffer;
18
24
  destroyOptimizedBuffer: (bufferPtr: Pointer) => void;
19
25
  drawFrameBuffer: (targetBufferPtr: Pointer, destX: number, destY: number, bufferPtr: Pointer, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number) => void;
20
26
  getBufferWidth: (buffer: Pointer) => number;
@@ -26,6 +32,7 @@ export interface RenderLib {
26
32
  bufferGetAttributesPtr: (buffer: Pointer) => Pointer;
27
33
  bufferGetRespectAlpha: (buffer: Pointer) => boolean;
28
34
  bufferSetRespectAlpha: (buffer: Pointer, respectAlpha: boolean) => void;
35
+ bufferGetId: (buffer: Pointer) => string;
29
36
  bufferDrawText: (buffer: Pointer, text: string, x: number, y: number, color: RGBA, bgColor?: RGBA, attributes?: number) => void;
30
37
  bufferSetCellWithAlphaBlending: (buffer: Pointer, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void;
31
38
  bufferFillRect: (buffer: Pointer, x: number, y: number, width: number, height: number, color: RGBA) => void;
@@ -44,6 +51,7 @@ export interface RenderLib {
44
51
  setCursorColor: (renderer: Pointer, color: RGBA) => void;
45
52
  setDebugOverlay: (renderer: Pointer, enabled: boolean, corner: DebugOverlayCorner) => void;
46
53
  clearTerminal: (renderer: Pointer) => void;
54
+ setTerminalTitle: (renderer: Pointer, title: string) => void;
47
55
  addToHitGrid: (renderer: Pointer, x: number, y: number, width: number, height: number, id: number) => void;
48
56
  checkHit: (renderer: Pointer, x: number, y: number) => number;
49
57
  dumpHitGrid: (renderer: Pointer) => void;
@@ -95,6 +103,9 @@ export interface RenderLib {
95
103
  width: number;
96
104
  height: number;
97
105
  }) => void;
106
+ bufferPushScissorRect: (buffer: Pointer, x: number, y: number, width: number, height: number) => void;
107
+ bufferPopScissorRect: (buffer: Pointer) => void;
108
+ bufferClearScissorRects: (buffer: Pointer) => void;
98
109
  getTerminalCapabilities: (renderer: Pointer) => any;
99
110
  processCapabilityResponse: (renderer: Pointer, response: string) => void;
100
111
  }
@@ -1,5 +0,0 @@
1
- import { Renderable, type RenderableOptions } from "../Renderable";
2
- import type { RenderContext } from "../types";
3
- export declare class GroupRenderable extends Renderable {
4
- constructor(ctx: RenderContext, options: RenderableOptions);
5
- }