"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