79 lines
3.0 KiB
JavaScript
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
|