37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.isResizable = exports.TerminalSizeQueue = void 0;
|
|
const stream_1 = require("stream");
|
|
class TerminalSizeQueue extends stream_1.Readable {
|
|
constructor(opts = {}) {
|
|
super({
|
|
...opts,
|
|
// tslint:disable-next-line:no-empty
|
|
read() { },
|
|
});
|
|
}
|
|
handleResizes(writeStream) {
|
|
// Set initial size
|
|
this.resize(getTerminalSize(writeStream));
|
|
// Handle future size updates
|
|
writeStream.on('resize', () => this.resize(getTerminalSize(writeStream)));
|
|
}
|
|
resize(size) {
|
|
this.push(JSON.stringify(size));
|
|
}
|
|
}
|
|
exports.TerminalSizeQueue = TerminalSizeQueue;
|
|
function isResizable(stream) {
|
|
if (stream == null) {
|
|
return false;
|
|
}
|
|
const hasRows = 'rows' in stream;
|
|
const hasColumns = 'columns' in stream;
|
|
const hasOn = typeof stream.on === 'function';
|
|
return hasRows && hasColumns && hasOn;
|
|
}
|
|
exports.isResizable = isResizable;
|
|
function getTerminalSize(writeStream) {
|
|
return { height: writeStream.rows, width: writeStream.columns };
|
|
}
|
|
//# sourceMappingURL=terminal-size-queue.js.map
|