Я использую BoxElement
из blessed для отображения истории чата.
Предложения добавляются с использованием pushLine
. Для наглядности дни разделены линиями (другая строка добавлена с использованием pushLine
). Ширина каждой строки соответствует ширине родительской BoxElement
.
Однако при изменении размера TUI строка больше не подходит.
У меня 2 вопроса:
- Как эта линия может адаптироваться к новой ширине?
- (бонусные баллы) Как я могу центрировать текст в середине этой строки?
Пример проблемы показан ниже :
/**
* Example.ts
*/
import * as blessed from 'blessed';
const screen = blessed.screen({
smartCSR: true,
title: 'Chatr',
dockBorders: true
});
const chatBox = blessed.box({
parent: screen,
title: 'Chatbox',
top: 'top',
left: 'center',
height: '100%',
width: '100%',
border: {
type: 'line'
},
});
screen.append(chatBox);
screen.render();
chatBox.pushLine("This is the first line");
// This is the separator - and will not resize with the terminal
chatBox.pushLine("_".repeat(chatBox.width as number - 2));
chatBox.pushLine("This is a second line");
screen.render();
При запуске кода ts-node ./Example.js
он отображает следующее:
┌────────────────────────────────────────────────────────────────────────────────────────┐
│This is a line │
│________________________________________________________________________________________│
│This is a second line │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└────────────────────────────────────────────────────────────────────────────────────────┘
Изменение размера терминала дает следующий результат:
┌──────────────────────────────────────────────────────────┐
│This is a line │
│__________________________________________________________│
│______________________________ │
│This is a second line │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
└──────────────────────────────────────────────────────────┘