2019-06-04 12:16:20 -04:00

79 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var SelectionModel = (function () {
function SelectionModel(_terminal) {
this._terminal = _terminal;
this.clearSelection();
}
SelectionModel.prototype.clearSelection = function () {
this.selectionStart = null;
this.selectionEnd = null;
this.isSelectAllActive = false;
this.selectionStartLength = 0;
};
Object.defineProperty(SelectionModel.prototype, "finalSelectionStart", {
get: function () {
if (this.isSelectAllActive) {
return [0, 0];
}
if (!this.selectionEnd || !this.selectionStart) {
return this.selectionStart;
}
return this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SelectionModel.prototype, "finalSelectionEnd", {
get: function () {
if (this.isSelectAllActive) {
return [this._terminal.cols, this._terminal.buffer.ybase + this._terminal.rows - 1];
}
if (!this.selectionStart) {
return null;
}
if (!this.selectionEnd || this.areSelectionValuesReversed()) {
var startPlusLength = this.selectionStart[0] + this.selectionStartLength;
if (startPlusLength > this._terminal.cols) {
return [startPlusLength % this._terminal.cols, this.selectionStart[1] + Math.floor(startPlusLength / this._terminal.cols)];
}
return [startPlusLength, this.selectionStart[1]];
}
if (this.selectionStartLength) {
if (this.selectionEnd[1] === this.selectionStart[1]) {
return [Math.max(this.selectionStart[0] + this.selectionStartLength, this.selectionEnd[0]), this.selectionEnd[1]];
}
}
return this.selectionEnd;
},
enumerable: true,
configurable: true
});
SelectionModel.prototype.areSelectionValuesReversed = function () {
var start = this.selectionStart;
var end = this.selectionEnd;
if (!start || !end) {
return false;
}
return start[1] > end[1] || (start[1] === end[1] && start[0] > end[0]);
};
SelectionModel.prototype.onTrim = function (amount) {
if (this.selectionStart) {
this.selectionStart[1] -= amount;
}
if (this.selectionEnd) {
this.selectionEnd[1] -= amount;
}
if (this.selectionEnd && this.selectionEnd[1] < 0) {
this.clearSelection();
return true;
}
if (this.selectionStart && this.selectionStart[1] < 0) {
this.selectionStart[1] = 0;
}
return false;
};
return SelectionModel;
}());
exports.SelectionModel = SelectionModel;
//# sourceMappingURL=SelectionModel.js.map