Skip to content

Commit

Permalink
Add IL vt button
Browse files Browse the repository at this point in the history
Part of #2533
  • Loading branch information
Tyriar committed Dec 19, 2022
1 parent b5e6066 commit 06145c0
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
38 changes: 25 additions & 13 deletions demo/client.ts
Expand Up @@ -1098,26 +1098,38 @@ function addVtButtons(): void {
return `\x1b[${e}`;
}

const vtCUU = (): void => term.write(csi('A'));
const vtCUD = (): void => term.write(csi('B'));
const vtCUF = (): void => term.write(csi('C'));
const vtCUB = (): void => term.write(csi('D'));
function createButton(name: string, description: string, writeCsi: string, paramCount: number = 0): HTMLElement {
const inputs: HTMLInputElement[] = [];
for (let i = 0; i < paramCount; i++) {
const input = document.createElement('input');
input.type = 'number';
input.title = `Input #${i + 1}`;
inputs.push(input);
}

function createButton(name: string, writeCsi: string): HTMLElement {
const element = document.createElement('button');
element.textContent = name;
element.addEventListener('click', () => term.write(csi(writeCsi)));
return element;
element.addEventListener('click', () => term.write(csi(inputs.map(e => e.value).join(';') + writeCsi)));

const desc = document.createElement('span');
desc.textContent = description;

const container = document.createElement('div');
container.classList.add('vt-button');
container.append(element, ...inputs, desc);
return container;
}
const vtFragment = document.createDocumentFragment();
const buttonSpecs: { [key: string]: string } = {
A: 'CUU ↑',
B: 'CUD ↓',
C: 'CUF →',
D: 'CUB ←'
const buttonSpecs: { [key: string]: { label: string, description: string, paramCount: number }} = {
A: { label: 'CUU ↑', description: 'Cursor Up Ps Times', paramCount: 1 },
B: { label: 'CUD ↓', description: 'Cursor Down Ps Times', paramCount: 1 },
C: { label: 'CUF →', description: 'Cursor Forward Ps Times', paramCount: 1 },
D: { label: 'CUB ←', description: 'Cursor Backward Ps Times', paramCount: 1 },
L: { label: 'IL', description: 'Insert Ps Line(s)', paramCount: 1 }
};
for (const s of Object.keys(buttonSpecs)) {
vtFragment.appendChild(createButton(buttonSpecs[s], s));
const spec = buttonSpecs[s];
vtFragment.appendChild(createButton(spec.label, spec.description, s, spec.paramCount));
}

document.querySelector('#vt-container').appendChild(vtFragment);
Expand Down
4 changes: 4 additions & 0 deletions demo/style.css
Expand Up @@ -102,3 +102,7 @@ pre {
image-rendering: pixelated;
border: 1px solid #ccc;
}

.vt-button * {
margin-right: 1em;
}

0 comments on commit 06145c0

Please sign in to comment.