@cascadetui/core 0.1.4 → 0.1.6

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.
@@ -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;
@@ -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.4",
7
+ "version": "0.1.6",
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.4",
61
- "@cascadetui/core-win32-arm64": "0.1.4",
62
- "@cascadetui/core-darwin-x64": "0.1.4",
63
- "@cascadetui/core-darwin-arm64": "0.1.4",
64
- "@cascadetui/core-linux-x64": "0.1.4",
65
- "@cascadetui/core-linux-arm64": "0.1.4"
60
+ "@cascadetui/core-win32-x64": "0.1.6",
61
+ "@cascadetui/core-win32-arm64": "0.1.6",
62
+ "@cascadetui/core-darwin-x64": "0.1.6",
63
+ "@cascadetui/core-darwin-arm64": "0.1.6",
64
+ "@cascadetui/core-linux-x64": "0.1.6",
65
+ "@cascadetui/core-linux-arm64": "0.1.6"
66
66
  }
67
67
  }
@@ -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
@@ -37,6 +37,7 @@ 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;
42
43
  }
@@ -81,16 +82,20 @@ export declare class MouseEvent {
81
82
  readonly scroll?: ScrollInfo;
82
83
  readonly target: Renderable | null;
83
84
  readonly isDragging?: boolean;
85
+ readonly clickCount: number;
84
86
  private _propagationStopped;
85
87
  private _defaultPrevented;
88
+ private _visitedRenderableNums;
86
89
  get propagationStopped(): boolean;
87
90
  get defaultPrevented(): boolean;
88
91
  constructor(target: Renderable | null, attributes: RawMouseEvent & {
89
92
  source?: Renderable;
90
93
  isDragging?: boolean;
94
+ clickCount?: number;
91
95
  });
92
96
  stopPropagation(): void;
93
97
  preventDefault(): void;
98
+ tryVisit(renderable: Renderable): boolean;
94
99
  }
95
100
  export declare enum MouseButton {
96
101
  LEFT = 0,
@@ -102,8 +107,21 @@ export declare enum MouseButton {
102
107
  export declare function createCliRenderer(config?: CliRendererConfig): Promise<CliRenderer>;
103
108
  export declare enum CliRenderEvents {
104
109
  DEBUG_OVERLAY_TOGGLE = "debugOverlay:toggle",
105
- DESTROY = "destroy"
110
+ DESTROY = "destroy",
111
+ CRASH = "crash"
106
112
  }
113
+ export type RuntimeEventRecord = {
114
+ timestamp: string;
115
+ type: string;
116
+ payload: Record<string, unknown>;
117
+ };
118
+ export type CrashReport = {
119
+ timestamp: string;
120
+ source: string;
121
+ message: string;
122
+ stack?: string;
123
+ recentEvents: RuntimeEventRecord[];
124
+ };
107
125
  export declare enum RendererControlState {
108
126
  IDLE = "idle",
109
127
  AUTO_STARTED = "auto_started",
@@ -197,9 +215,12 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
197
215
  private _hasPointer;
198
216
  private _lastPointerModifiers;
199
217
  private _currentMousePointerStyle;
218
+ private _lastClick;
219
+ private readonly clickCountThresholdMs;
200
220
  private _currentFocusedRenderable;
201
221
  private lifecyclePasses;
202
222
  private _openConsoleOnError;
223
+ private _logCrashReportsToConsole;
203
224
  private _paletteDetector;
204
225
  private _cachedPalette;
205
226
  private _paletteDetectionPromise;
@@ -210,7 +231,13 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
210
231
  private idleResolvers;
211
232
  private _debugInputs;
212
233
  private _debugModeEnabled;
213
- private handleError;
234
+ private recentRuntimeEvents;
235
+ private crashReports;
236
+ private maxRecentRuntimeEvents;
237
+ private maxCrashReports;
238
+ private handleProcessCrash;
239
+ private uncaughtExceptionHandler;
240
+ private unhandledRejectionHandler;
214
241
  private dumpOutputCache;
215
242
  private exitHandler;
216
243
  private warningHandler;
@@ -303,6 +330,15 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
303
330
  }): void;
304
331
  setTerminalTitle(title: string): void;
305
332
  copyToClipboardOSC52(text: string, target?: ClipboardTarget): boolean;
333
+ private normalizeInputChunk;
334
+ private resolveClickCount;
335
+ private normalizeCrashError;
336
+ private recordRuntimeEvent;
337
+ reportCrash(reason: unknown, source?: string, extra?: Record<string, unknown>): CrashReport;
338
+ private formatCrashReportForConsole;
339
+ getCrashReports(): CrashReport[];
340
+ getRecentRuntimeEvents(): RuntimeEventRecord[];
341
+ clearCrashReports(): void;
306
342
  copyToSystemClipboard(text: string): boolean;
307
343
  readFromSystemClipboard(): string | null;
308
344
  copyToClipboard(text: string, target?: ClipboardTarget): boolean;
@@ -357,6 +393,9 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
357
393
  get hasSelection(): boolean;
358
394
  getSelectionContainer(): Renderable | null;
359
395
  clearSelection(): void;
396
+ selectWord(x: number, y: number): void;
397
+ selectLine(x: number, y: number): void;
398
+ updateSelectionWordSnap(x: number, y: number): void;
360
399
  /**
361
400
  * Start a new selection at the given coordinates.
362
401
  * Used by both mouse and keyboard selection.
@@ -368,6 +407,7 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
368
407
  requestSelectionUpdate(): void;
369
408
  private isWithinContainer;
370
409
  private finishSelection;
410
+ private resolveSelectionMethodTarget;
371
411
  private notifySelectablesOfSelectionChange;
372
412
  private walkSelectableRenderables;
373
413
  get paletteDetectionStatus(): "idle" | "detecting" | "cached";
package/testing.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  CliRenderer,
5
5
  TreeSitterClient,
6
6
  resolveRenderLib
7
- } from "./index-jx194wn1.js";
7
+ } from "./index-rj3f00a6.js";
8
8
 
9
9
  // src/testing/test-renderer.ts
10
10
  import { Readable } from "stream";
package/types.d.ts CHANGED
@@ -48,6 +48,12 @@ 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;
51
57
  }
52
58
  export interface RenderContext extends EventEmitter {
53
59
  addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => void;