@cascadetui/core 0.1.5 → 0.1.7
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/Advanced3D.d.ts +161 -0
- package/3d/WGPURenderer.d.ts +13 -1
- package/3d/index.d.ts +1 -0
- package/3d.js +451 -6
- package/3d.js.map +5 -4
- package/Renderable.d.ts +28 -0
- package/{index-jx194wn1.js → index-r7vqrd61.js} +615 -45
- package/{index-jx194wn1.js.map → index-r7vqrd61.js.map} +7 -7
- package/index.js +223 -4
- package/index.js.map +5 -5
- package/lib/parse.mouse.d.ts +2 -2
- package/lib/stdin-buffer.d.ts +2 -1
- package/package.json +7 -7
- package/renderables/Box.d.ts +1 -0
- package/renderables/TextBufferRenderable.d.ts +16 -0
- package/renderables/TextNode.d.ts +8 -0
- package/renderer.d.ts +47 -3
- package/testing.js +1 -1
- package/types.d.ts +13 -0
package/lib/parse.mouse.d.ts
CHANGED
|
@@ -20,8 +20,8 @@ export declare class MouseParser {
|
|
|
20
20
|
private static readonly SCROLL_DIRECTIONS;
|
|
21
21
|
reset(): void;
|
|
22
22
|
private decodeInput;
|
|
23
|
-
parseMouseEvent(data: Buffer): RawMouseEvent | null;
|
|
24
|
-
parseAllMouseEvents(data: Buffer): RawMouseEvent[];
|
|
23
|
+
parseMouseEvent(data: Buffer | string | Uint8Array | ArrayBuffer): RawMouseEvent | null;
|
|
24
|
+
parseAllMouseEvents(data: Buffer | string | Uint8Array | ArrayBuffer): RawMouseEvent[];
|
|
25
25
|
private parseMouseSequenceAt;
|
|
26
26
|
private parseSgrSequence;
|
|
27
27
|
private parseBasicSequence;
|
package/lib/stdin-buffer.d.ts
CHANGED
|
@@ -36,9 +36,10 @@ export declare class StdinBuffer extends EventEmitter<StdinBufferEventMap> {
|
|
|
36
36
|
private pasteMode;
|
|
37
37
|
private pasteBuffer;
|
|
38
38
|
constructor(options?: StdinBufferOptions);
|
|
39
|
-
process(data: string | Buffer): void;
|
|
39
|
+
process(data: string | Buffer | Uint8Array | ArrayBuffer): void;
|
|
40
40
|
flush(): string[];
|
|
41
41
|
clear(): void;
|
|
42
42
|
getBuffer(): string;
|
|
43
43
|
destroy(): void;
|
|
44
|
+
private toBuffer;
|
|
44
45
|
}
|
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.
|
|
7
|
+
"version": "0.1.7",
|
|
8
8
|
"description": "Cascade is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"bun-webgpu": "0.1.5",
|
|
58
58
|
"planck": "^1.4.2",
|
|
59
59
|
"three": "0.177.0",
|
|
60
|
-
"@cascadetui/core-win32-x64": "0.1.
|
|
61
|
-
"@cascadetui/core-win32-arm64": "0.1.
|
|
62
|
-
"@cascadetui/core-darwin-x64": "0.1.
|
|
63
|
-
"@cascadetui/core-darwin-arm64": "0.1.
|
|
64
|
-
"@cascadetui/core-linux-x64": "0.1.
|
|
65
|
-
"@cascadetui/core-linux-arm64": "0.1.
|
|
60
|
+
"@cascadetui/core-win32-x64": "0.1.7",
|
|
61
|
+
"@cascadetui/core-win32-arm64": "0.1.7",
|
|
62
|
+
"@cascadetui/core-darwin-x64": "0.1.7",
|
|
63
|
+
"@cascadetui/core-darwin-arm64": "0.1.7",
|
|
64
|
+
"@cascadetui/core-linux-x64": "0.1.7",
|
|
65
|
+
"@cascadetui/core-linux-arm64": "0.1.7"
|
|
66
66
|
}
|
|
67
67
|
}
|
package/renderables/Box.d.ts
CHANGED
|
@@ -14,6 +14,14 @@ export interface TextBufferOptions extends RenderableOptions<TextBufferRenderabl
|
|
|
14
14
|
selectionFg?: string | RGBA;
|
|
15
15
|
selectable?: boolean;
|
|
16
16
|
attributes?: number;
|
|
17
|
+
bold?: boolean;
|
|
18
|
+
italic?: boolean;
|
|
19
|
+
underline?: boolean;
|
|
20
|
+
dim?: boolean;
|
|
21
|
+
blink?: boolean;
|
|
22
|
+
inverse?: boolean;
|
|
23
|
+
hidden?: boolean;
|
|
24
|
+
strikethrough?: boolean;
|
|
17
25
|
wrapMode?: "none" | "char" | "word";
|
|
18
26
|
tabIndicator?: string | number;
|
|
19
27
|
tabIndicatorColor?: string | RGBA;
|
|
@@ -89,6 +97,9 @@ export declare abstract class TextBufferRenderable extends Renderable implements
|
|
|
89
97
|
protected updateTextInfo(): void;
|
|
90
98
|
private setupMeasureFunc;
|
|
91
99
|
shouldStartSelection(x: number, y: number): boolean;
|
|
100
|
+
selectWord(x: number, y: number): boolean;
|
|
101
|
+
selectLine(x: number, y: number): boolean;
|
|
102
|
+
updateSelectionWordSnap(x: number, y: number): boolean;
|
|
92
103
|
onSelectionChanged(selection: Selection | null): boolean;
|
|
93
104
|
getSelectedText(): string;
|
|
94
105
|
hasSelection(): boolean;
|
|
@@ -96,6 +107,11 @@ export declare abstract class TextBufferRenderable extends Renderable implements
|
|
|
96
107
|
start: number;
|
|
97
108
|
end: number;
|
|
98
109
|
} | null;
|
|
110
|
+
private resolveOffsetAtLocalPoint;
|
|
111
|
+
private getLineRangeAtOffset;
|
|
112
|
+
private getWordRangeAtOffset;
|
|
113
|
+
private readTextRange;
|
|
114
|
+
private resolveGlobalPointFromOffset;
|
|
99
115
|
render(buffer: OptimizedBuffer, deltaTime: number): void;
|
|
100
116
|
protected renderSelf(buffer: OptimizedBuffer): void;
|
|
101
117
|
destroy(): void;
|
|
@@ -8,6 +8,14 @@ export interface TextNodeOptions extends BaseRenderableOptions {
|
|
|
8
8
|
fg?: string | RGBA;
|
|
9
9
|
bg?: string | RGBA;
|
|
10
10
|
attributes?: number;
|
|
11
|
+
bold?: boolean;
|
|
12
|
+
italic?: boolean;
|
|
13
|
+
underline?: boolean;
|
|
14
|
+
dim?: boolean;
|
|
15
|
+
blink?: boolean;
|
|
16
|
+
inverse?: boolean;
|
|
17
|
+
hidden?: boolean;
|
|
18
|
+
strikethrough?: boolean;
|
|
11
19
|
link?: {
|
|
12
20
|
url: string;
|
|
13
21
|
};
|
package/renderer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Renderable, RootRenderable } from "./Renderable";
|
|
2
|
-
import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type ThemeMode, type WidthMethod } from "./types";
|
|
2
|
+
import { DebugOverlayCorner, type CursorStyleOptions, type MousePointerStyle, type RenderContext, type RenderTrace, type ThemeMode, type WidthMethod } from "./types";
|
|
3
3
|
import { RGBA, type ColorInput } from "./lib/RGBA";
|
|
4
4
|
import type { Pointer } from "bun:ffi";
|
|
5
5
|
import { OptimizedBuffer } from "./buffer";
|
|
@@ -37,8 +37,11 @@ export interface CliRendererConfig {
|
|
|
37
37
|
useKittyKeyboard?: KittyKeyboardOptions | null;
|
|
38
38
|
backgroundColor?: ColorInput;
|
|
39
39
|
openConsoleOnError?: boolean;
|
|
40
|
+
logCrashReportsToConsole?: boolean;
|
|
40
41
|
prependInputHandlers?: ((sequence: string) => boolean)[];
|
|
41
42
|
onDestroy?: () => void;
|
|
43
|
+
trace?: boolean;
|
|
44
|
+
traceWriter?: (line: string) => void;
|
|
42
45
|
}
|
|
43
46
|
export type PixelResolution = {
|
|
44
47
|
width: number;
|
|
@@ -81,16 +84,20 @@ export declare class MouseEvent {
|
|
|
81
84
|
readonly scroll?: ScrollInfo;
|
|
82
85
|
readonly target: Renderable | null;
|
|
83
86
|
readonly isDragging?: boolean;
|
|
87
|
+
readonly clickCount: number;
|
|
84
88
|
private _propagationStopped;
|
|
85
89
|
private _defaultPrevented;
|
|
90
|
+
private _visitedRenderableNums;
|
|
86
91
|
get propagationStopped(): boolean;
|
|
87
92
|
get defaultPrevented(): boolean;
|
|
88
93
|
constructor(target: Renderable | null, attributes: RawMouseEvent & {
|
|
89
94
|
source?: Renderable;
|
|
90
95
|
isDragging?: boolean;
|
|
96
|
+
clickCount?: number;
|
|
91
97
|
});
|
|
92
98
|
stopPropagation(): void;
|
|
93
99
|
preventDefault(): void;
|
|
100
|
+
tryVisit(renderable: Renderable): boolean;
|
|
94
101
|
}
|
|
95
102
|
export declare enum MouseButton {
|
|
96
103
|
LEFT = 0,
|
|
@@ -102,8 +109,21 @@ export declare enum MouseButton {
|
|
|
102
109
|
export declare function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>;
|
|
103
110
|
export declare enum CliRenderEvents {
|
|
104
111
|
DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle",
|
|
105
|
-
DESTROY = "destroy"
|
|
112
|
+
DESTROY = "destroy",
|
|
113
|
+
CRASH = "crash"
|
|
106
114
|
}
|
|
115
|
+
export type RuntimeEventRecord = {
|
|
116
|
+
timestamp: string;
|
|
117
|
+
type: string;
|
|
118
|
+
payload: Record<string, unknown>;
|
|
119
|
+
};
|
|
120
|
+
export type CrashReport = {
|
|
121
|
+
timestamp: string;
|
|
122
|
+
source: string;
|
|
123
|
+
message: string;
|
|
124
|
+
stack?: string;
|
|
125
|
+
recentEvents: RuntimeEventRecord[];
|
|
126
|
+
};
|
|
107
127
|
export declare enum RendererControlState {
|
|
108
128
|
IDLE = "idle",
|
|
109
129
|
AUTO_STARTED = "auto_started",
|
|
@@ -134,6 +154,8 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
134
154
|
private memorySnapshotTimer;
|
|
135
155
|
private lastMemorySnapshot;
|
|
136
156
|
readonly root: RootRenderable;
|
|
157
|
+
trace?: RenderTrace;
|
|
158
|
+
layoutVersion: number;
|
|
137
159
|
width: number;
|
|
138
160
|
height: number;
|
|
139
161
|
private _useThread;
|
|
@@ -197,9 +219,12 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
197
219
|
private _hasPointer;
|
|
198
220
|
private _lastPointerModifiers;
|
|
199
221
|
private _currentMousePointerStyle;
|
|
222
|
+
private _lastClick;
|
|
223
|
+
private readonly clickCountThresholdMs;
|
|
200
224
|
private _currentFocusedRenderable;
|
|
201
225
|
private lifecyclePasses;
|
|
202
226
|
private _openConsoleOnError;
|
|
227
|
+
private _logCrashReportsToConsole;
|
|
203
228
|
private _paletteDetector;
|
|
204
229
|
private _cachedPalette;
|
|
205
230
|
private _paletteDetectionPromise;
|
|
@@ -210,7 +235,13 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
210
235
|
private idleResolvers;
|
|
211
236
|
private _debugInputs;
|
|
212
237
|
private _debugModeEnabled;
|
|
213
|
-
private
|
|
238
|
+
private recentRuntimeEvents;
|
|
239
|
+
private crashReports;
|
|
240
|
+
private maxRecentRuntimeEvents;
|
|
241
|
+
private maxCrashReports;
|
|
242
|
+
private handleProcessCrash;
|
|
243
|
+
private uncaughtExceptionHandler;
|
|
244
|
+
private unhandledRejectionHandler;
|
|
214
245
|
private dumpOutputCache;
|
|
215
246
|
private exitHandler;
|
|
216
247
|
private warningHandler;
|
|
@@ -303,6 +334,15 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
303
334
|
}): void;
|
|
304
335
|
setTerminalTitle(title: string): void;
|
|
305
336
|
copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean;
|
|
337
|
+
private normalizeInputChunk;
|
|
338
|
+
private resolveClickCount;
|
|
339
|
+
private normalizeCrashError;
|
|
340
|
+
private recordRuntimeEvent;
|
|
341
|
+
reportCrash(reason: unknown, source?: string, extra?: Record<string, unknown>): CrashReport;
|
|
342
|
+
private formatCrashReportForConsole;
|
|
343
|
+
getCrashReports(): CrashReport[];
|
|
344
|
+
getRecentRuntimeEvents(): RuntimeEventRecord[];
|
|
345
|
+
clearCrashReports(): void;
|
|
306
346
|
copyToSystemClipboard(text: string): boolean;
|
|
307
347
|
readFromSystemClipboard(): string | null;
|
|
308
348
|
copyToClipboard(text: string, target?: ClipboardTarget): boolean;
|
|
@@ -357,6 +397,9 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
357
397
|
get hasSelection(): boolean;
|
|
358
398
|
getSelectionContainer(): Renderable | null;
|
|
359
399
|
clearSelection(): void;
|
|
400
|
+
selectWord(x: number, y: number): void;
|
|
401
|
+
selectLine(x: number, y: number): void;
|
|
402
|
+
updateSelectionWordSnap(x: number, y: number): void;
|
|
360
403
|
/**
|
|
361
404
|
* Start a new selection at the given coordinates.
|
|
362
405
|
* Used by both mouse and keyboard selection.
|
|
@@ -368,6 +411,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
|
|
|
368
411
|
requestSelectionUpdate(): void;
|
|
369
412
|
private isWithinContainer;
|
|
370
413
|
private finishSelection;
|
|
414
|
+
private resolveSelectionMethodTarget;
|
|
371
415
|
private notifySelectablesOfSelectionChange;
|
|
372
416
|
private walkSelectableRenderables;
|
|
373
417
|
get paletteDetectionStatus(): "idle" | "detecting" | "cached";
|
package/testing.js
CHANGED
package/types.d.ts
CHANGED
|
@@ -48,6 +48,17 @@ export interface RendererEvents {
|
|
|
48
48
|
selection: (selection: Selection) => void;
|
|
49
49
|
"debugOverlay:toggle": (enabled: boolean) => void;
|
|
50
50
|
theme_mode: (mode: ThemeMode) => void;
|
|
51
|
+
crash: (report: {
|
|
52
|
+
timestamp: string;
|
|
53
|
+
source: string;
|
|
54
|
+
message: string;
|
|
55
|
+
stack?: string;
|
|
56
|
+
}) => void;
|
|
57
|
+
}
|
|
58
|
+
export interface RenderTrace {
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
now: () => number;
|
|
61
|
+
write: (line: string) => void;
|
|
51
62
|
}
|
|
52
63
|
export interface RenderContext extends EventEmitter {
|
|
53
64
|
addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;
|
|
@@ -56,6 +67,7 @@ export interface RenderContext extends EventEmitter {
|
|
|
56
67
|
clearHitGridScissorRects: () => void;
|
|
57
68
|
width: number;
|
|
58
69
|
height: number;
|
|
70
|
+
layoutVersion: number;
|
|
59
71
|
requestRender: () => void;
|
|
60
72
|
setCursorPosition: (x: number, y: number, visible: boolean) => void;
|
|
61
73
|
setCursorStyle: (options: CursorStyleOptions) => void;
|
|
@@ -80,6 +92,7 @@ export interface RenderContext extends EventEmitter {
|
|
|
80
92
|
updateSelection: (currentRenderable: Renderable | undefined, x: number, y: number, options?: {
|
|
81
93
|
finishDragging?: boolean;
|
|
82
94
|
}) => void;
|
|
95
|
+
trace?: RenderTrace;
|
|
83
96
|
}
|
|
84
97
|
export type Timeout = ReturnType<typeof setTimeout> | undefined;
|
|
85
98
|
export interface ViewportBounds {
|