@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/3d.js +1 -1
- package/{index-r7vqrd61.js → index-9j6zba34.js} +104 -39
- package/{index-r7vqrd61.js.map → index-9j6zba34.js.map} +3 -3
- package/index.js +1 -1
- package/lib/object-pool.d.ts +55 -0
- package/package.json +7 -7
- package/renderer.d.ts +21 -0
- package/testing.js +1 -1
package/index.js
CHANGED
|
@@ -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
|
+
"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.
|
|
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.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;
|