@glowlamp/control-sequences
Version:
Builds ANSI control sequences for terminals
71 lines (55 loc) • 1.89 kB
JavaScript
;
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
exports.moveCursorAt = moveCursorAt;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
var _control_sequence_introducer = _interopRequireDefault(require("./control_sequence_introducer"));
/**
*
* @param {int} x
* @param {int} y
* @returns {CursorPosition}
*/
function moveCursorAt(x, y) {
var _context, _context2;
return (0, _concat["default"])(_context = (0, _concat["default"])(_context2 = "".concat(_control_sequence_introducer["default"])).call(_context2, x, ";")).call(_context, y, "H");
}
function atLeast1(i) {
return i < 1 ? 1 : i;
}
/**
* @class
*/
var MoveCursorAt = /*#__PURE__*/function () {
/**
* @constructor
* @param {int} x
* @param {int} y
*/
function MoveCursorAt(x, y) {
(0, _classCallCheck2["default"])(this, MoveCursorAt);
this.x = x;
this.y = y;
this.sequence = moveCursorAt(atLeast1(this.x), atLeast1(this.y));
}
/**
* To apply adjustment to the this cursor position. Move the cursor to the relative
* @method
* @param {MoveCursorAt} sequence
* @returns {MoveCursorAt}
*/
(0, _createClass2["default"])(MoveCursorAt, [{
key: "merge",
value: function merge(sequence) {
return new MoveCursorAt(this.x + sequence.x, this.y + sequence.y);
}
}]);
return MoveCursorAt;
}();
exports["default"] = MoveCursorAt;