1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import { ElemType } from "../screenbuilder.ts";
import { Screen } from "../screen.ts";
import type { Input, Element, Text } from "../elements.ts";
import * as client from "../client.ts"
export default {
elements: [
{
type: ElemType.TextElem,
id: 'home',
data: ["Loading home posts...\n", function (this: Text, text: string) {
const msgInput: Input = this.screen.elements.get("msg-input") as Input;
const inputValueHeight = msgInput.value.split("\n").length + 1;
const termHeight = process.stdout.rows;
const termWidth = process.stdout.columns;
let splitText = this.text.split("\n");
splitText = splitText.map(t => t.replace(new RegExp(`([^]){${termWidth}}`, "g"),"$1\n"));
splitText = splitText.join("\n").split("\n")
splitText = splitText.slice(-(termHeight - inputValueHeight - 1));
return splitText.join("\n")
}]
},
{
type: ElemType.HR,
id: 'hr',
data: []
},
{
type: ElemType.InputElem,
id: 'msg-input',
data: [false, false, true]
},
{
type: ElemType.ButtonElem,
id: 'done-btn',
data: ["Send", async function (this: Screen) {
const msgInput: Input = this.elements.get('msg-input') as Input
client.sendHome(msgInput.value);
msgInput.value = ""
this.render()
}]
}
],
focus: "msg-input",
name: 'home',
onload (screen: Screen) {
client.setScreen(screen)
client.loadHome(screen)
}
}
|