@cascadetui/core 0.1.7 → 0.1.9

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/index.js CHANGED
@@ -153,7 +153,7 @@ import {
153
153
  white,
154
154
  wrapWithDelegates,
155
155
  yellow
156
- } from "./index-r7vqrd61.js";
156
+ } from "./index-9j6zba34.js";
157
157
  // src/text-buffer-view.ts
158
158
  class TextBufferView {
159
159
  lib;
@@ -0,0 +1,55 @@
1
+ export declare class ObjectPool<T> {
2
+ private pool;
3
+ private createFn;
4
+ private resetFn;
5
+ private maxSize;
6
+ constructor(createFn: () => T, resetFn: (obj: T) => void, maxSize?: number);
7
+ acquire(): T;
8
+ release(obj: T): void;
9
+ clear(): void;
10
+ get size(): number;
11
+ }
12
+ export interface PooledMouseEvent {
13
+ type: string;
14
+ x: number;
15
+ y: number;
16
+ button: number;
17
+ modifiers: {
18
+ ctrl: boolean;
19
+ alt: boolean;
20
+ shift: boolean;
21
+ };
22
+ clickCount?: number;
23
+ isDragging?: boolean;
24
+ }
25
+ export declare class MouseEventPool {
26
+ private pool;
27
+ acquire(): PooledMouseEvent;
28
+ release(event: PooledMouseEvent): void;
29
+ clear(): void;
30
+ }
31
+ export declare class RenderObjectPool {
32
+ private pools;
33
+ constructor();
34
+ acquire<T>(type: string): T;
35
+ release<T>(type: string, obj: T): void;
36
+ clear(): void;
37
+ getStats(): Record<string, number>;
38
+ }
39
+ export declare const GlobalObjectPool: RenderObjectPool;
40
+ export declare const GlobalMouseEventPool: MouseEventPool;
41
+ export declare class PerformanceMonitor {
42
+ private metrics;
43
+ private startTimes;
44
+ start(name: string): void;
45
+ end(name: string): number;
46
+ getAverage(name: string): number;
47
+ getStats(name: string): {
48
+ average: number;
49
+ median: number;
50
+ p95: number;
51
+ count: number;
52
+ } | null;
53
+ clear(): void;
54
+ }
55
+ export declare const GlobalPerformanceMonitor: PerformanceMonitor;
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",
7
+ "version": "0.1.9",
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.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"
60
+ "@cascadetui/core-win32-x64": "0.1.9",
61
+ "@cascadetui/core-win32-arm64": "0.1.9",
62
+ "@cascadetui/core-darwin-x64": "0.1.9",
63
+ "@cascadetui/core-darwin-arm64": "0.1.9",
64
+ "@cascadetui/core-linux-x64": "0.1.9",
65
+ "@cascadetui/core-linux-arm64": "0.1.9"
66
66
  }
67
67
  }
package/renderer.d.ts CHANGED
@@ -42,6 +42,8 @@ export interface CliRendererConfig {
42
42
  onDestroy?: () => void;
43
43
  trace?: boolean;
44
44
  traceWriter?: (line: string) => void;
45
+ enablePerformanceMonitoring?: boolean;
46
+ enableObjectPooling?: boolean;
45
47
  }
46
48
  export type PixelResolution = {
47
49
  width: number;
@@ -172,6 +174,11 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
172
174
  private frameCount;
173
175
  private lastFpsTime;
174
176
  private currentFps;
177
+ private fpsCache;
178
+ private frameDeltas;
179
+ private readonly MAX_DELTA_SAMPLES;
180
+ private lastHitGridCheck;
181
+ private readonly HIT_GRID_CHECK_INTERVAL;
175
182
  private targetFrameTime;
176
183
  private minTargetFrameTime;
177
184
  private immediateRerenderRequested;
@@ -363,6 +370,10 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
363
370
  removePostProcessFn(processFn: (buffer: OptimizedBuffer, deltaTime: number) => void): void;
364
371
  clearPostProcessFns(): void;
365
372
  setFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
373
+ private calculateFPS;
374
+ private calculateDeltaTime;
375
+ private processAnimationCallbacks;
376
+ private shouldCheckHitGridDirty;
366
377
  removeFrameCallback(callback: (deltaTime: number) => Promise<void>): void;
367
378
  clearFrameCallbacks(): void;
368
379
  requestLive(): void;
@@ -396,6 +407,16 @@ export declare class CliRenderer extends EventEmitter implements RenderContext {
396
407
  getSelection(): Selection | null;
397
408
  get hasSelection(): boolean;
398
409
  getSelectionContainer(): Renderable | null;
410
+ /**
411
+ * Vérifie s'il y a une sélection active et retourne son texte
412
+ * @returns Le texte sélectionné ou null s'il n'y a pas de sélection
413
+ */
414
+ getSelectedText(): string | null;
415
+ /**
416
+ * Copie la sélection active dans le presse-papiers si elle existe
417
+ * @returns true si une sélection a été copiée, false sinon
418
+ */
419
+ copySelection(): boolean;
399
420
  clearSelection(): void;
400
421
  selectWord(x: number, y: number): void;
401
422
  selectLine(x: number, y: number): void;
package/testing.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  CliRenderer,
5
5
  TreeSitterClient,
6
6
  resolveRenderLib
7
- } from "./index-r7vqrd61.js";
7
+ } from "./index-9j6zba34.js";
8
8
 
9
9
  // src/testing/test-renderer.ts
10
10
  import { Readable } from "stream";