@opentui/core 0.0.0-20250923-da12fb15 → 0.0.0-20250924-9d06e8e4
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/3d.js +1 -1
- package/Renderable.d.ts +7 -7
- package/animation/Timeline.d.ts +2 -1
- package/{index-ce0mn4wa.js → index-bq6h36ne.js} +319 -34
- package/index-bq6h36ne.js.map +39 -0
- package/index.js +18 -2
- package/index.js.map +8 -8
- package/lib/KeyHandler.d.ts +51 -12
- package/lib/env.d.ts +41 -0
- package/lib/index.d.ts +1 -0
- package/lib/parse.keypress.d.ts +2 -2
- package/package.json +7 -7
- package/renderables/Input.d.ts +2 -2
- package/renderables/ScrollBar.d.ts +2 -2
- package/renderables/ScrollBox.d.ts +2 -2
- package/renderables/Select.d.ts +2 -2
- package/renderables/TabSelect.d.ts +2 -2
- package/renderer.d.ts +2 -1
- package/testing.js +1 -1
- package/types.d.ts +2 -1
- package/index-ce0mn4wa.js.map +0 -38
- /package/{singleton.d.ts → lib/singleton.d.ts} +0 -0
package/lib/KeyHandler.d.ts
CHANGED
|
@@ -1,18 +1,57 @@
|
|
|
1
1
|
import { EventEmitter } from "events";
|
|
2
|
-
import { type ParsedKey } from "./parse.keypress";
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import { type KeyEventType, type ParsedKey } from "./parse.keypress";
|
|
3
|
+
export declare class KeyEvent implements ParsedKey {
|
|
4
|
+
name: string;
|
|
5
|
+
ctrl: boolean;
|
|
6
|
+
meta: boolean;
|
|
7
|
+
shift: boolean;
|
|
8
|
+
option: boolean;
|
|
9
|
+
sequence: string;
|
|
10
|
+
number: boolean;
|
|
11
|
+
raw: string;
|
|
12
|
+
eventType: KeyEventType;
|
|
13
|
+
code?: string;
|
|
14
|
+
super?: boolean;
|
|
15
|
+
hyper?: boolean;
|
|
16
|
+
capsLock?: boolean;
|
|
17
|
+
numLock?: boolean;
|
|
18
|
+
baseCode?: number;
|
|
19
|
+
private _defaultPrevented;
|
|
20
|
+
constructor(key: ParsedKey);
|
|
21
|
+
get defaultPrevented(): boolean;
|
|
22
|
+
preventDefault(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare class PasteEvent {
|
|
25
|
+
text: string;
|
|
26
|
+
private _defaultPrevented;
|
|
27
|
+
constructor(text: string);
|
|
28
|
+
get defaultPrevented(): boolean;
|
|
29
|
+
preventDefault(): void;
|
|
30
|
+
}
|
|
31
|
+
export type KeyHandlerEventMap = {
|
|
32
|
+
keypress: [KeyEvent];
|
|
33
|
+
keyrepeat: [KeyEvent];
|
|
34
|
+
keyrelease: [KeyEvent];
|
|
35
|
+
paste: [PasteEvent];
|
|
9
36
|
};
|
|
10
37
|
export declare class KeyHandler extends EventEmitter<KeyHandlerEventMap> {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
38
|
+
protected stdin: NodeJS.ReadStream;
|
|
39
|
+
protected useKittyKeyboard: boolean;
|
|
40
|
+
protected listener: (key: Buffer) => void;
|
|
41
|
+
protected pasteMode: boolean;
|
|
42
|
+
protected pasteBuffer: string[];
|
|
16
43
|
constructor(stdin?: NodeJS.ReadStream, useKittyKeyboard?: boolean);
|
|
17
44
|
destroy(): void;
|
|
18
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* This class is used internally by the renderer to ensure global handlers
|
|
48
|
+
* can preventDefault before renderable handlers process events.
|
|
49
|
+
*/
|
|
50
|
+
export declare class InternalKeyHandler extends KeyHandler {
|
|
51
|
+
private renderableHandlers;
|
|
52
|
+
constructor(stdin?: NodeJS.ReadStream, useKittyKeyboard?: boolean);
|
|
53
|
+
emit<K extends keyof KeyHandlerEventMap>(event: K, ...args: KeyHandlerEventMap[K]): boolean;
|
|
54
|
+
private emitWithPriority;
|
|
55
|
+
onInternal<K extends keyof KeyHandlerEventMap>(event: K, handler: (...args: KeyHandlerEventMap[K]) => void): void;
|
|
56
|
+
offInternal<K extends keyof KeyHandlerEventMap>(event: K, handler: (...args: KeyHandlerEventMap[K]) => void): void;
|
|
57
|
+
}
|
package/lib/env.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable registry
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { registerEnvVar, env } from "./lib/env.ts";
|
|
7
|
+
*
|
|
8
|
+
* // Register environment variables
|
|
9
|
+
* registerEnvVar({
|
|
10
|
+
* name: "DEBUG",
|
|
11
|
+
* description: "Enable debug logging",
|
|
12
|
+
* type: "boolean",
|
|
13
|
+
* default: false
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* registerEnvVar({
|
|
17
|
+
* name: "PORT",
|
|
18
|
+
* description: "Server port number",
|
|
19
|
+
* type: "number",
|
|
20
|
+
* default: 3000
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // Access environment variables
|
|
24
|
+
* if (env.DEBUG) {
|
|
25
|
+
* console.log("Debug mode enabled");
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* const port = env.PORT; // number
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export interface EnvVarConfig {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
default?: string | boolean | number;
|
|
35
|
+
type?: "string" | "boolean" | "number";
|
|
36
|
+
}
|
|
37
|
+
export declare const envRegistry: Record<string, EnvVarConfig>;
|
|
38
|
+
export declare function registerEnvVar(config: EnvVarConfig): void;
|
|
39
|
+
export declare function generateEnvMarkdown(): string;
|
|
40
|
+
export declare function generateEnvColored(): string;
|
|
41
|
+
export declare const env: Record<string, string | number | boolean>;
|
package/lib/index.d.ts
CHANGED
package/lib/parse.keypress.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
export declare const nonAlphanumericKeys: string[];
|
|
3
3
|
export type KeyEventType = "press" | "repeat" | "release";
|
|
4
|
-
export
|
|
4
|
+
export interface ParsedKey {
|
|
5
5
|
name: string;
|
|
6
6
|
ctrl: boolean;
|
|
7
7
|
meta: boolean;
|
|
@@ -17,7 +17,7 @@ export type ParsedKey = {
|
|
|
17
17
|
capsLock?: boolean;
|
|
18
18
|
numLock?: boolean;
|
|
19
19
|
baseCode?: number;
|
|
20
|
-
}
|
|
20
|
+
}
|
|
21
21
|
export type ParseKeypressOptions = {
|
|
22
22
|
useKittyKeyboard?: boolean;
|
|
23
23
|
};
|
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.0.0-
|
|
7
|
+
"version": "0.0.0-20250924-9d06e8e4",
|
|
8
8
|
"description": "OpenTUI is a TypeScript library for building terminal user interfaces (TUIs)",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
"bun-webgpu": "0.1.3",
|
|
41
41
|
"planck": "^1.4.2",
|
|
42
42
|
"three": "0.177.0",
|
|
43
|
-
"@opentui/core-darwin-x64": "0.0.0-
|
|
44
|
-
"@opentui/core-darwin-arm64": "0.0.0-
|
|
45
|
-
"@opentui/core-linux-x64": "0.0.0-
|
|
46
|
-
"@opentui/core-linux-arm64": "0.0.0-
|
|
47
|
-
"@opentui/core-win32-x64": "0.0.0-
|
|
48
|
-
"@opentui/core-win32-arm64": "0.0.0-
|
|
43
|
+
"@opentui/core-darwin-x64": "0.0.0-20250924-9d06e8e4",
|
|
44
|
+
"@opentui/core-darwin-arm64": "0.0.0-20250924-9d06e8e4",
|
|
45
|
+
"@opentui/core-linux-x64": "0.0.0-20250924-9d06e8e4",
|
|
46
|
+
"@opentui/core-linux-arm64": "0.0.0-20250924-9d06e8e4",
|
|
47
|
+
"@opentui/core-win32-x64": "0.0.0-20250924-9d06e8e4",
|
|
48
|
+
"@opentui/core-win32-arm64": "0.0.0-20250924-9d06e8e4"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/renderables/Input.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OptimizedBuffer } from "../buffer";
|
|
2
|
-
import type {
|
|
2
|
+
import type { KeyEvent } from "../lib/KeyHandler";
|
|
3
3
|
import { type ColorInput } from "../lib/RGBA";
|
|
4
4
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
5
5
|
import type { RenderContext } from "../types";
|
|
@@ -56,7 +56,7 @@ export declare class InputRenderable extends Renderable {
|
|
|
56
56
|
set cursorPosition(position: number);
|
|
57
57
|
insertText(text: string): void;
|
|
58
58
|
deleteCharacter(direction: "backward" | "forward"): void;
|
|
59
|
-
handleKeyPress(key:
|
|
59
|
+
handleKeyPress(key: KeyEvent | string): boolean;
|
|
60
60
|
set maxLength(maxLength: number);
|
|
61
61
|
set backgroundColor(value: ColorInput);
|
|
62
62
|
set textColor(value: ColorInput);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { OptimizedBuffer } from "../buffer";
|
|
2
2
|
import { RGBA, type ColorInput } from "../lib";
|
|
3
|
-
import type {
|
|
3
|
+
import type { KeyEvent } from "../lib/KeyHandler";
|
|
4
4
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
5
5
|
import type { RenderContext } from "../types";
|
|
6
6
|
import { SliderRenderable, type SliderOptions } from "./Slider";
|
|
@@ -42,7 +42,7 @@ export declare class ScrollBarRenderable extends Renderable {
|
|
|
42
42
|
private updateSliderFromScrollState;
|
|
43
43
|
scrollBy(delta: number, unit?: ScrollUnit): void;
|
|
44
44
|
private recalculateVisibility;
|
|
45
|
-
handleKeyPress(key:
|
|
45
|
+
handleKeyPress(key: KeyEvent | string): boolean;
|
|
46
46
|
}
|
|
47
47
|
export interface ArrowOptions extends RenderableOptions<ArrowRenderable> {
|
|
48
48
|
direction: "up" | "down" | "left" | "right";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type KeyEvent } from "../lib";
|
|
2
2
|
import type { Renderable, RenderableOptions } from "../Renderable";
|
|
3
3
|
import type { MouseEvent } from "../renderer";
|
|
4
4
|
import type { RenderContext } from "../types";
|
|
@@ -77,7 +77,7 @@ export declare class ScrollBoxRenderable extends BoxRenderable {
|
|
|
77
77
|
remove(id: string): void;
|
|
78
78
|
getChildren(): Renderable[];
|
|
79
79
|
protected onMouseEvent(event: MouseEvent): void;
|
|
80
|
-
handleKeyPress(key:
|
|
80
|
+
handleKeyPress(key: KeyEvent | string): boolean;
|
|
81
81
|
startAutoScroll(mouseX: number, mouseY: number): void;
|
|
82
82
|
updateAutoScroll(mouseX: number, mouseY: number): void;
|
|
83
83
|
stopAutoScroll(): void;
|
package/renderables/Select.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OptimizedBuffer } from "../buffer";
|
|
2
2
|
import { fonts } from "../lib/ascii.font";
|
|
3
|
-
import type {
|
|
3
|
+
import type { KeyEvent } from "../lib/KeyHandler";
|
|
4
4
|
import { type ColorInput } from "../lib/RGBA";
|
|
5
5
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
6
6
|
import type { RenderContext } from "../types";
|
|
@@ -81,7 +81,7 @@ export declare class SelectRenderable extends Renderable {
|
|
|
81
81
|
setSelectedIndex(index: number): void;
|
|
82
82
|
private updateScrollOffset;
|
|
83
83
|
protected onResize(width: number, height: number): void;
|
|
84
|
-
handleKeyPress(key:
|
|
84
|
+
handleKeyPress(key: KeyEvent | string): boolean;
|
|
85
85
|
get showScrollIndicator(): boolean;
|
|
86
86
|
set showScrollIndicator(show: boolean);
|
|
87
87
|
get showDescription(): boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Renderable, type RenderableOptions } from "../Renderable";
|
|
2
2
|
import { OptimizedBuffer } from "../buffer";
|
|
3
3
|
import { type ColorInput } from "../lib/RGBA";
|
|
4
|
-
import type {
|
|
4
|
+
import type { KeyEvent } from "../lib/KeyHandler";
|
|
5
5
|
import type { RenderContext } from "../types";
|
|
6
6
|
export interface TabSelectOption {
|
|
7
7
|
name: string;
|
|
@@ -63,7 +63,7 @@ export declare class TabSelectRenderable extends Renderable {
|
|
|
63
63
|
protected onResize(width: number, height: number): void;
|
|
64
64
|
setTabWidth(tabWidth: number): void;
|
|
65
65
|
getTabWidth(): number;
|
|
66
|
-
handleKeyPress(key:
|
|
66
|
+
handleKeyPress(key: KeyEvent | string): boolean;
|
|
67
67
|
get options(): TabSelectOption[];
|
|
68
68
|
set options(options: TabSelectOption[]);
|
|
69
69
|
set backgroundColor(color: ColorInput);
|
package/renderer.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { TerminalConsole, type ConsoleOptions } from "./console";
|
|
|
8
8
|
import { type MouseEventType, type RawMouseEvent, type ScrollInfo } from "./lib/parse.mouse";
|
|
9
9
|
import { Selection } from "./lib/selection";
|
|
10
10
|
import { EventEmitter } from "events";
|
|
11
|
-
import { KeyHandler } from "./lib/KeyHandler";
|
|
11
|
+
import { KeyHandler, InternalKeyHandler } from "./lib/KeyHandler";
|
|
12
12
|
export interface CliRendererConfig {
|
|
13
13
|
stdin?: NodeJS.ReadStream;
|
|
14
14
|
stdout?: NodeJS.WriteStream;
|
|
@@ -160,6 +160,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
160
160
|
get resolution(): PixelResolution | null;
|
|
161
161
|
get console(): TerminalConsole;
|
|
162
162
|
get keyInput(): KeyHandler;
|
|
163
|
+
get _internalKeyInput(): InternalKeyHandler;
|
|
163
164
|
get terminalWidth(): number;
|
|
164
165
|
get terminalHeight(): number;
|
|
165
166
|
get useThread(): boolean;
|
package/testing.js
CHANGED
package/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { RGBA } from "./lib/RGBA";
|
|
|
2
2
|
import type { EventEmitter } from "events";
|
|
3
3
|
import type { Selection } from "./lib/selection";
|
|
4
4
|
import type { Renderable } from "./Renderable";
|
|
5
|
-
import type { KeyHandler } from "./lib";
|
|
5
|
+
import type { InternalKeyHandler, KeyHandler } from "./lib/KeyHandler";
|
|
6
6
|
export declare const TextAttributes: {
|
|
7
7
|
NONE: number;
|
|
8
8
|
BOLD: number;
|
|
@@ -54,6 +54,7 @@ export interface RenderContext extends EventEmitter {
|
|
|
54
54
|
unregisterLifecyclePass: (renderable: Renderable) => void;
|
|
55
55
|
getLifecyclePasses: () => Set<Renderable>;
|
|
56
56
|
keyInput: KeyHandler;
|
|
57
|
+
_internalKeyInput: InternalKeyHandler;
|
|
57
58
|
}
|
|
58
59
|
export type Timeout = ReturnType<typeof setTimeout> | undefined;
|
|
59
60
|
export interface ViewportBounds {
|