Skip to content

Commit b9dad5b

Browse files
authored
Merge pull request #5 from nberlette/refactor/components
refactor(components): use generic type params more consistently
2 parents 30ee8dc + ac71068 commit b9dad5b

33 files changed

+314
-239
lines changed

mod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ export * from "./src/signals/mod.ts";
1212
export * from "./src/layout/mod.ts";
1313
export * from "./src/canvas/mod.ts";
1414
export * from "./src/utils/mod.ts";
15-
export * from "./src/input_reader/mod.ts";
15+
export * from "./src/input/mod.ts";

src/canvas/text.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,19 +141,19 @@ export class TextObject extends Renderable<"text"> {
141141
});
142142
}
143143

144-
draw(): void {
144+
override draw(): void {
145145
this.#updateEffect.resume();
146146
this.rectangle.subscribe(this.#rectangleSubscription);
147147
super.draw();
148148
}
149149

150-
erase(): void {
150+
override erase(): void {
151151
this.#updateEffect.pause();
152152
this.rectangle.unsubscribe(this.#rectangleSubscription);
153153
super.erase();
154154
}
155155

156-
updateMovement(): void {
156+
override updateMovement(): void {
157157
const { objectsUnder, previousRectangle } = this;
158158
const rectangle = this.rectangle.peek();
159159

@@ -204,7 +204,7 @@ export class TextObject extends Renderable<"text"> {
204204
}
205205
}
206206

207-
rerender(): void {
207+
override rerender(): void {
208208
const { canvas, valueChars, omitCells, rerenderCells } = this;
209209

210210
const { frameBuffer, rerenderQueue } = canvas;

src/component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type { Rectangle } from "./types.ts";
88
import { SortedArray } from "./utils/sorted_array.ts";
99
import type { Renderable } from "./canvas/renderable.ts";
1010
import type { View } from "./view.ts";
11-
import type { InputEventRecord } from "./input_reader/mod.ts";
11+
import type { InputEventRecord } from "./input/mod.ts";
1212
import { Computed, Signal, type SignalOfObject } from "./signals/mod.ts";
1313
import { signalify } from "./signals/signalify.ts";
1414

src/components/frame.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,12 @@ export interface FrameOptions extends ComponentOptions {
6464
* });
6565
* ```
6666
*/
67-
export class Frame extends Component {
68-
declare drawnObjects: {
69-
top: TextObject;
70-
bottom: TextObject;
71-
left: BoxObject;
72-
right: BoxObject;
73-
};
74-
67+
export class Frame extends Component<{
68+
top: TextObject;
69+
bottom: TextObject;
70+
left: BoxObject;
71+
right: BoxObject;
72+
}> {
7573
charMap: Signal<FrameUnicodeCharactersType>;
7674

7775
constructor(options: FrameOptions) {

src/components/input.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,11 @@ export interface InputOptions extends Omit<ComponentOptions, "rectangle"> {
9191
* });
9292
* ```
9393
*/
94-
export class Input extends Box {
95-
declare drawnObjects: {
96-
box: BoxObject;
97-
text: TextObject;
98-
cursor: TextObject;
99-
};
94+
export class Input extends Box<{
95+
box: BoxObject;
96+
text: TextObject;
97+
cursor: TextObject;
98+
}> {
10099
declare theme: InputTheme;
101100

102101
text: Signal<string>;

src/components/label.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,7 @@ export interface LabelOptions extends Omit<ComponentOptions, "rectangle"> {
8686
* })
8787
* ```
8888
*/
89-
export class Label extends Component {
90-
declare drawnObjects: { texts: TextObject[] };
91-
89+
export class Label extends Component<{ texts: TextObject[] }> {
9290
#valueLines: Signal<string[]>;
9391

9492
text: Signal<string>;

src/components/slider.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ export interface SliderOptions extends ComponentOptions {
5858
* });
5959
* ```
6060
*/
61-
export class Slider extends Box {
62-
declare drawnObjects: { box: BoxObject; thumb: BoxObject };
61+
export class Slider extends Box<{ box: BoxObject; thumb: BoxObject }> {
6362
declare theme: SliderTheme;
6463

6564
min: Signal<number>;

src/components/table.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,19 @@ export interface TableOptions extends Omit<ComponentOptions, "rectangle"> {
100100
*
101101
* ```
102102
*/
103-
export class Table extends Component {
103+
export class Table extends Component<{
104+
frame: [
105+
top: TextObject,
106+
bottom: TextObject,
107+
spacer: TextObject,
108+
left: BoxObject,
109+
right: BoxObject,
110+
];
111+
112+
header: TextObject;
113+
data: TextObject[];
114+
}> {
104115
declare theme: TableTheme;
105-
declare drawnObjects: {
106-
frame: [
107-
top: TextObject,
108-
bottom: TextObject,
109-
spacer: TextObject,
110-
left: BoxObject,
111-
right: BoxObject,
112-
];
113-
114-
header: TextObject;
115-
data: TextObject[];
116-
};
117116

118117
data: Signal<string[][]>;
119118
headers: Signal<TableHeader<true>[]>;

src/components/text.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ export interface TextOptions extends Omit<ComponentOptions, "rectangle"> {
5757
* })
5858
* ```
5959
*/
60-
export class Text extends Component {
61-
declare drawnObjects: { text: TextObject };
62-
60+
export class Text extends Component<{ text: TextObject }> {
6361
text: Signal<string>;
6462
overwriteRectangle: Signal<boolean>;
6563
multiCodePointSupport: Signal<boolean>;

src/components/textbox.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { DeepPartial } from "../types.ts";
99
import { cropToWidth, insertAt } from "../utils/strings.ts";
1010
import { clamp } from "../utils/numbers.ts";
1111
import { Computed, Effect, Signal, signalify } from "../signals/mod.ts";
12-
import type { KeyPressEvent } from "../input_reader/types.ts";
12+
import type { KeyPressEvent } from "../input/types.ts";
1313

1414
export interface CursorPosition {
1515
x: number;

0 commit comments

Comments
 (0)