@@ -4,10 +4,11 @@ import { FormsModule } from '@angular/forms';
44import { ConfigStoreService } from '../../../services/config-store.service' ;
55import { KittyPerformanceConfig } from '../../../models/kitty-types' ;
66import { NumberInputComponent } from '../../shared/number-input/number-input.component' ;
7+ import { SliderInputComponent } from '../../shared/slider-input/slider-input.component' ;
78
89@Component ( {
910 selector : 'app-performance-form' ,
10- imports : [ CommonModule , FormsModule , NumberInputComponent ] ,
11+ imports : [ CommonModule , FormsModule , NumberInputComponent , SliderInputComponent ] ,
1112 template : `
1213 <div class="space-y-6">
1314 <div>
@@ -25,28 +26,11 @@ import { NumberInputComponent } from '../../shared/number-input/number-input.com
2526 Delay between screen repaints. Lower = higher FPS at the cost of more CPU.
2627 Default 10ms (~100 FPS). Values under 3ms push toward maximum refresh rate.
2728 </p>
28- <div class="flex items-center gap-4">
29- <input
30- type="range"
31- [(ngModel)]="performance.repaint_delay"
32- (ngModelChange)="updatePerformance()"
33- min="1"
34- max="100"
35- step="1"
36- class="flex-1"
37- />
38- <app-number-input
39- class="w-32 flex-shrink-0"
40- [(ngModel)]="performance.repaint_delay"
41- (ngModelChange)="updatePerformance()"
42- [min]="1"
43- [max]="500"
44- />
45- </div>
46- <div class="flex justify-between text-xs text-kitty-text-dim mt-1">
47- <span>1ms (max FPS, high CPU)</span>
48- <span>100ms (smooth, low CPU)</span>
49- </div>
29+ <app-slider-input
30+ [value]="performance.repaint_delay"
31+ (valueChange)="updateNumberPerf('repaint_delay', $event)"
32+ [min]="1" [max]="100" [step]="1"
33+ [labels]="['1ms (max FPS, high CPU)', '100ms (smooth, low CPU)']" />
5034 </div>
5135
5236 <div class="form-group">
@@ -58,24 +42,10 @@ import { NumberInputComponent } from '../../shared/number-input/number-input.com
5842 Milliseconds to wait before processing input. Allows Kitty to batch rapid key events efficiently.
5943 Reduce to 0 for minimum latency in games or fast-typing workflows.
6044 </p>
61- <div class="flex items-center gap-4">
62- <input
63- type="range"
64- [(ngModel)]="performance.input_delay"
65- (ngModelChange)="updatePerformance()"
66- min="0"
67- max="50"
68- step="1"
69- class="flex-1"
70- />
71- <app-number-input
72- class="w-32 flex-shrink-0"
73- [(ngModel)]="performance.input_delay"
74- (ngModelChange)="updatePerformance()"
75- [min]="0"
76- [max]="200"
77- />
78- </div>
45+ <app-slider-input
46+ [value]="performance.input_delay"
47+ (valueChange)="updateNumberPerf('input_delay', $event)"
48+ [min]="0" [max]="50" [step]="1" />
7949 </div>
8050
8151 @if (advancedMode()) {
@@ -124,4 +94,9 @@ export class PerformanceFormComponent {
12494 updatePerformance ( ) : void {
12595 this . configStore . updateSection ( 'performance' , { ...this . performance } ) ;
12696 }
97+
98+ updateNumberPerf ( key : keyof KittyPerformanceConfig , value : number ) : void {
99+ this . performance = { ...this . performance , [ key ] : value } ;
100+ this . updatePerformance ( ) ;
101+ }
127102}
0 commit comments