diff --git a/Gopkg.lock b/Gopkg.lock index e2f49da..9024464 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -138,6 +138,32 @@ revision = "bb7a9ca6e4fbc2129e3db588a34bc970ffe811a9" version = "v2.5.1" +[[projects]] + branch = "master" + name = "github.com/gobwas/httphead" + packages = ["."] + revision = "2c6c146eadee0b69f856f87e3e9f1d0cd6aad2f5" + +[[projects]] + branch = "master" + name = "github.com/gobwas/pool" + packages = [ + ".", + "internal/pmath", + "pbufio", + "pbytes" + ] + revision = "fa3125c39d7eca32e1387bb69b1b38dcb31b1e0b" + +[[projects]] + branch = "master" + name = "github.com/gobwas/ws" + packages = [ + ".", + "wsutil" + ] + revision = "b93773f50025fc1c14bbd7e97a3b170aae9a0977" + [[projects]] name = "github.com/gogo/protobuf" packages = ["proto"] @@ -236,6 +262,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "fe9c254e0c7e739370b6380ed53816426b8245a1610db2cfc612aec63aa01701" + inputs-digest = "d650099fe870caa619261ca2780130300821767813a6fb79199aaae1cc6e69f1" solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index 34fb13e..4d440f8 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -1,5 +1,9 @@ required = ["github.com/docker/distribution"] +[[override]] + branch = "master" + name = "github.com/gobwas/pool" + [[constraint]] branch = "master" name = "github.com/cuigh/auxo" diff --git a/assets/swirl/js/swirl.js b/assets/swirl/js/swirl.js index 48481d2..7675998 100644 --- a/assets/swirl/js/swirl.js +++ b/assets/swirl/js/swirl.js @@ -2837,45 +2837,64 @@ var Swirl; })(Swirl || (Swirl = {})); var Swirl; (function (Swirl) { - var Service; - (function (Service) { - class LogsPage { + var Container; + (function (Container) { + class ExecPage { constructor() { - this.refreshInterval = 3000; - this.$line = $("#txt-line"); - this.$timestamps = $("#cb-timestamps"); - this.$refresh = $("#cb-refresh"); - this.$stdout = $("#txt-stdout"); - this.$stderr = $("#txt-stderr"); - this.$refresh.change(e => { - let elem = (e.target); - if (elem.checked) { - this.refreshData(); - } - else if (this.timer > 0) { - window.clearTimeout(this.timer); - this.timer = 0; - } - }); - this.refreshData(); + this.$cmd = $("#txt-cmd"); + this.$connect = $("#btn-connect"); + this.$disconnect = $("#btn-disconnect"); + this.$connect.click(this.connect.bind(this)); + this.$disconnect.click(this.disconnect.bind(this)); + Terminal.applyAddon(fit); } - refreshData() { - let args = { - line: this.$line.val(), - timestamps: this.$timestamps.prop("checked"), + connect(e) { + this.$connect.hide(); + this.$disconnect.show(); + let url = location.host + location.pathname.substring(0, location.pathname.lastIndexOf("/")) + "/connect?cmd=" + encodeURIComponent(this.$cmd.val()); + let ws = new WebSocket("ws://" + url); + ws.onopen = () => { + this.term = new Terminal(); + this.term.on('data', (data) => { + if (ws.readyState == WebSocket.OPEN) { + ws.send(data); + } + }); + this.term.open(document.getElementById('terminal-container')); + this.term.focus(); + let width = Math.floor(($('#terminal-container').width() - 20) / 8.39); + let height = 30; + this.term.resize(width, height); + this.term.setOption('cursorBlink', true); + this.term.fit(); + window.onresize = () => { + this.term.fit(); + }; + ws.onmessage = (e) => { + this.term.write(e.data); + }; + ws.onerror = function (error) { + console.log("error: " + error); + }; + ws.onclose = () => { + console.log("close"); + }; }; - $ajax.get('fetch_logs', args).json((r) => { - this.$stdout.val(r.stdout); - this.$stderr.val(r.stderr); - this.$stdout.get(0).scrollTop = this.$stdout.get(0).scrollHeight; - this.$stderr.get(0).scrollTop = this.$stderr.get(0).scrollHeight; - }); - if (this.$refresh.prop("checked")) { - this.timer = setTimeout(this.refreshData.bind(this), this.refreshInterval); + this.ws = ws; + } + disconnect(e) { + if (this.ws && this.ws.readyState != WebSocket.CLOSED) { + this.ws.close(); } + if (this.term) { + this.term.destroy(); + this.term = null; + } + this.$connect.show(); + this.$disconnect.hide(); } } - Service.LogsPage = LogsPage; - })(Service = Swirl.Service || (Swirl.Service = {})); + Container.ExecPage = ExecPage; + })(Container = Swirl.Container || (Swirl.Container = {})); })(Swirl || (Swirl = {})); //# sourceMappingURL=swirl.js.map \ No newline at end of file diff --git a/assets/swirl/js/swirl.js.map b/assets/swirl/js/swirl.js.map index 4faf7e1..9f6fde8 100644 --- a/assets/swirl/js/swirl.js.map +++ b/assets/swirl/js/swirl.js.map @@ -1 +1 @@ -{"version":3,"file":"swirl.js","sourceRoot":"","sources":["../ts/core/bulma.ts","../ts/core/ajax.ts","../ts/core/validator.ts","../ts/core/form.ts","../ts/core/dispatcher.ts","../ts/core/table.ts","../ts/core/core.ts","../ts/core/chart.ts","../ts/index.ts","../ts/chart/list.ts","../ts/config/list.ts","../ts/config/new.ts","../ts/container/list.ts","../ts/image/list.ts","../ts/network/detail.ts","../ts/network/list.ts","../ts/network/new.ts","../ts/node/edit.ts","../ts/node/list.ts","../ts/perm/edit.ts","../ts/registry/list.ts","../ts/role/edit.ts","../ts/role/list.ts","../ts/role/new.ts","../ts/secret/list.ts","../ts/secret/new.ts","../ts/service/edit.ts","../ts/service/list.ts","../ts/service/stats.ts","../ts/service/template/list.ts","../ts/setting/index.ts","../ts/stack/edit.ts","../ts/stack/list.ts","../ts/task/logs.ts","../ts/user/list.ts","../ts/volume/list.ts","../ts/volume/new.ts","../ts/service/logs.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"swirl.js","sourceRoot":"","sources":["../ts/core/bulma.ts","../ts/core/ajax.ts","../ts/core/validator.ts","../ts/core/form.ts","../ts/core/dispatcher.ts","../ts/core/table.ts","../ts/core/core.ts","../ts/core/chart.ts","../ts/index.ts","../ts/chart/list.ts","../ts/config/list.ts","../ts/config/new.ts","../ts/container/list.ts","../ts/image/list.ts","../ts/network/detail.ts","../ts/network/list.ts","../ts/network/new.ts","../ts/node/edit.ts","../ts/node/list.ts","../ts/perm/edit.ts","../ts/registry/list.ts","../ts/role/edit.ts","../ts/role/list.ts","../ts/role/new.ts","../ts/secret/list.ts","../ts/secret/new.ts","../ts/service/edit.ts","../ts/service/list.ts","../ts/service/stats.ts","../ts/service/template/list.ts","../ts/setting/index.ts","../ts/stack/edit.ts","../ts/stack/list.ts","../ts/task/logs.ts","../ts/user/list.ts","../ts/volume/list.ts","../ts/volume/new.ts","../ts/container/exec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/assets/swirl/ts/container/exec.ts b/assets/swirl/ts/container/exec.ts new file mode 100644 index 0000000..5a7c673 --- /dev/null +++ b/assets/swirl/ts/container/exec.ts @@ -0,0 +1,70 @@ +/// +namespace Swirl.Container { + export class ExecPage { + private $cmd: JQuery; + private $connect: JQuery; + private $disconnect: JQuery; + private ws: WebSocket; + private term: Terminal; + + constructor() { + this.$cmd = $("#txt-cmd"); + this.$connect = $("#btn-connect"); + this.$disconnect = $("#btn-disconnect"); + + this.$connect.click(this.connect.bind(this)); + this.$disconnect.click(this.disconnect.bind(this)); + + Terminal.applyAddon(fit); + } + + private connect(e: JQueryEventObject) { + this.$connect.hide(); + this.$disconnect.show(); + + let url = location.host + location.pathname.substring(0, location.pathname.lastIndexOf("/")) + "/connect?cmd=" + encodeURIComponent(this.$cmd.val()); + let ws = new WebSocket("ws://" + url); + ws.onopen = () => { + this.term = new Terminal(); + this.term.on('data', (data: any) => { + if (ws.readyState == WebSocket.OPEN) { + ws.send(data); + } + }); + this.term.open(document.getElementById('terminal-container')); + this.term.focus(); + let width = Math.floor(($('#terminal-container').width() - 20) / 8.39); + let height = 30; + this.term.resize(width, height); + this.term.setOption('cursorBlink', true); + this.term.fit(); + + window.onresize = () => { + this.term.fit(); + }; + ws.onmessage = (e) => { + this.term.write(e.data); + }; + ws.onerror = function (error) { + console.log("error: " + error); + }; + ws.onclose = () => { + console.log("close"); + }; + }; + this.ws = ws; + } + + private disconnect(e: JQueryEventObject) { + if (this.ws && this.ws.readyState != WebSocket.CLOSED) { + this.ws.close(); + } + if (this.term) { + this.term.destroy(); + this.term = null; + } + this.$connect.show(); + this.$disconnect.hide(); + } + } +} \ No newline at end of file diff --git a/assets/xterm/fit/fit.js b/assets/xterm/fit/fit.js new file mode 100644 index 0000000..1da4941 --- /dev/null +++ b/assets/xterm/fit/fit.js @@ -0,0 +1,53 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.fit = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i rows) { + this._rowContainer.removeChild(this._rowElements.pop()); + } + this._rowElements[this._rowElements.length - 1].addEventListener('focus', this._bottomBoundaryFocusListener); + this._refreshRowsDimensions(); + }; + AccessibilityManager.prototype._createAccessibilityTreeNode = function () { + var element = document.createElement('div'); + element.setAttribute('role', 'listitem'); + element.tabIndex = -1; + this._refreshRowDimensions(element); + return element; + }; + AccessibilityManager.prototype._onTab = function (spaceCount) { + for (var i = 0; i < spaceCount; i++) { + this._onChar(' '); + } + }; + AccessibilityManager.prototype._onChar = function (char) { + var _this = this; + if (this._liveRegionLineCount < MAX_ROWS_TO_READ + 1) { + if (this._charsToConsume.length > 0) { + var shiftedChar = this._charsToConsume.shift(); + if (shiftedChar !== char) { + this._announceCharacter(char); + } + } + else { + this._announceCharacter(char); + } + if (char === '\n') { + this._liveRegionLineCount++; + if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) { + this._liveRegion.textContent += Strings.tooMuchOutput; + } + } + if (Browser_1.isMac) { + if (this._liveRegion.textContent && this._liveRegion.textContent.length > 0 && !this._liveRegion.parentNode) { + setTimeout(function () { + _this._accessibilityTreeRoot.appendChild(_this._liveRegion); + }, 0); + } + } + } + }; + AccessibilityManager.prototype._clearLiveRegion = function () { + this._liveRegion.textContent = ''; + this._liveRegionLineCount = 0; + if (Browser_1.isMac) { + if (this._liveRegion.parentNode) { + this._accessibilityTreeRoot.removeChild(this._liveRegion); + } + } + }; + AccessibilityManager.prototype._onKey = function (keyChar) { + this._clearLiveRegion(); + this._charsToConsume.push(keyChar); + }; + AccessibilityManager.prototype._refreshRows = function (start, end) { + this._renderRowsDebouncer.refresh(start, end); + }; + AccessibilityManager.prototype._renderRows = function (start, end) { + var buffer = this._terminal.buffer; + var setSize = buffer.lines.length.toString(); + for (var i = start; i <= end; i++) { + var lineData = buffer.translateBufferLineToString(buffer.ydisp + i, true); + var posInSet = (buffer.ydisp + i + 1).toString(); + var element = this._rowElements[i]; + element.textContent = lineData.length === 0 ? Strings.blankLine : lineData; + element.setAttribute('aria-posinset', posInSet); + element.setAttribute('aria-setsize', setSize); + } + }; + AccessibilityManager.prototype._refreshRowsDimensions = function () { + if (!this._terminal.renderer.dimensions.actualCellHeight) { + return; + } + for (var i = 0; i < this._terminal.rows; i++) { + this._refreshRowDimensions(this._rowElements[i]); + } + }; + AccessibilityManager.prototype._refreshRowDimensions = function (element) { + element.style.height = this._terminal.renderer.dimensions.actualCellHeight + "px"; + }; + AccessibilityManager.prototype._announceCharacter = function (char) { + if (char === ' ') { + this._liveRegion.innerHTML += ' '; + } + else { + this._liveRegion.textContent += char; + } + }; + return AccessibilityManager; +}()); +exports.AccessibilityManager = AccessibilityManager; + + + +},{"./Strings":15,"./shared/utils/Browser":34,"./utils/Dom":38,"./utils/RenderDebouncer":40}],2:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var CircularList_1 = require("./utils/CircularList"); +var EventEmitter_1 = require("./EventEmitter"); +exports.CHAR_DATA_ATTR_INDEX = 0; +exports.CHAR_DATA_CHAR_INDEX = 1; +exports.CHAR_DATA_WIDTH_INDEX = 2; +exports.CHAR_DATA_CODE_INDEX = 3; +exports.MAX_BUFFER_SIZE = 4294967295; +var Buffer = (function () { + function Buffer(_terminal, _hasScrollback) { + this._terminal = _terminal; + this._hasScrollback = _hasScrollback; + this.markers = []; + this.clear(); + } + Object.defineProperty(Buffer.prototype, "hasScrollback", { + get: function () { + return this._hasScrollback && this.lines.maxLength > this._terminal.rows; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Buffer.prototype, "isCursorInViewport", { + get: function () { + var absoluteY = this.ybase + this.y; + var relativeY = absoluteY - this.ydisp; + return (relativeY >= 0 && relativeY < this._terminal.rows); + }, + enumerable: true, + configurable: true + }); + Buffer.prototype._getCorrectBufferLength = function (rows) { + if (!this._hasScrollback) { + return rows; + } + var correctBufferLength = rows + this._terminal.options.scrollback; + return correctBufferLength > exports.MAX_BUFFER_SIZE ? exports.MAX_BUFFER_SIZE : correctBufferLength; + }; + Buffer.prototype.fillViewportRows = function () { + if (this.lines.length === 0) { + var i = this._terminal.rows; + while (i--) { + this.lines.push(this._terminal.blankLine()); + } + } + }; + Buffer.prototype.clear = function () { + this.ydisp = 0; + this.ybase = 0; + this.y = 0; + this.x = 0; + this.lines = new CircularList_1.CircularList(this._getCorrectBufferLength(this._terminal.rows)); + this.scrollTop = 0; + this.scrollBottom = this._terminal.rows - 1; + this.setupTabStops(); + }; + Buffer.prototype.resize = function (newCols, newRows) { + var newMaxLength = this._getCorrectBufferLength(newRows); + if (newMaxLength > this.lines.maxLength) { + this.lines.maxLength = newMaxLength; + } + if (this.lines.length > 0) { + if (this._terminal.cols < newCols) { + var ch = [this._terminal.defAttr, ' ', 1, 32]; + for (var i = 0; i < this.lines.length; i++) { + while (this.lines.get(i).length < newCols) { + this.lines.get(i).push(ch); + } + } + } + var addToY = 0; + if (this._terminal.rows < newRows) { + for (var y = this._terminal.rows; y < newRows; y++) { + if (this.lines.length < newRows + this.ybase) { + if (this.ybase > 0 && this.lines.length <= this.ybase + this.y + addToY + 1) { + this.ybase--; + addToY++; + if (this.ydisp > 0) { + this.ydisp--; + } + } + else { + this.lines.push(this._terminal.blankLine(undefined, undefined, newCols)); + } + } + } + } + else { + for (var y = this._terminal.rows; y > newRows; y--) { + if (this.lines.length > newRows + this.ybase) { + if (this.lines.length > this.ybase + this.y + 1) { + this.lines.pop(); + } + else { + this.ybase++; + this.ydisp++; + } + } + } + } + if (newMaxLength < this.lines.maxLength) { + var amountToTrim = this.lines.length - newMaxLength; + if (amountToTrim > 0) { + this.lines.trimStart(amountToTrim); + this.ybase = Math.max(this.ybase - amountToTrim, 0); + this.ydisp = Math.max(this.ydisp - amountToTrim, 0); + } + this.lines.maxLength = newMaxLength; + } + this.x = Math.min(this.x, newCols - 1); + this.y = Math.min(this.y, newRows - 1); + if (addToY) { + this.y += addToY; + } + this.savedY = Math.min(this.savedY, newRows - 1); + this.savedX = Math.min(this.savedX, newCols - 1); + this.scrollTop = 0; + } + this.scrollBottom = newRows - 1; + }; + Buffer.prototype.translateBufferLineToString = function (lineIndex, trimRight, startCol, endCol) { + if (startCol === void 0) { startCol = 0; } + if (endCol === void 0) { endCol = null; } + var lineString = ''; + var line = this.lines.get(lineIndex); + if (!line) { + return ''; + } + var startIndex = startCol; + if (endCol === null) { + endCol = line.length; + } + var endIndex = endCol; + for (var i = 0; i < line.length; i++) { + var char = line[i]; + lineString += char[exports.CHAR_DATA_CHAR_INDEX]; + if (char[exports.CHAR_DATA_WIDTH_INDEX] === 0) { + if (startCol >= i) { + startIndex--; + } + if (endCol >= i) { + endIndex--; + } + } + else { + if (char[exports.CHAR_DATA_CHAR_INDEX].length > 1) { + if (startCol > i) { + startIndex += char[exports.CHAR_DATA_CHAR_INDEX].length - 1; + } + if (endCol > i) { + endIndex += char[exports.CHAR_DATA_CHAR_INDEX].length - 1; + } + } + } + } + if (trimRight) { + var rightWhitespaceIndex = lineString.search(/\s+$/); + if (rightWhitespaceIndex !== -1) { + endIndex = Math.min(endIndex, rightWhitespaceIndex); + } + if (endIndex <= startIndex) { + return ''; + } + } + return lineString.substring(startIndex, endIndex); + }; + Buffer.prototype.setupTabStops = function (i) { + if (i != null) { + if (!this.tabs[i]) { + i = this.prevStop(i); + } + } + else { + this.tabs = {}; + i = 0; + } + for (; i < this._terminal.cols; i += this._terminal.options.tabStopWidth) { + this.tabs[i] = true; + } + }; + Buffer.prototype.prevStop = function (x) { + if (x == null) { + x = this.x; + } + while (!this.tabs[--x] && x > 0) + ; + return x >= this._terminal.cols ? this._terminal.cols - 1 : x < 0 ? 0 : x; + }; + Buffer.prototype.nextStop = function (x) { + if (x == null) { + x = this.x; + } + while (!this.tabs[++x] && x < this._terminal.cols) + ; + return x >= this._terminal.cols ? this._terminal.cols - 1 : x < 0 ? 0 : x; + }; + Buffer.prototype.addMarker = function (y) { + var _this = this; + var marker = new Marker(y); + this.markers.push(marker); + marker.disposables.push(this.lines.addDisposableListener('trim', function (amount) { + marker.line -= amount; + if (marker.line < 0) { + marker.dispose(); + } + })); + marker.on('dispose', function () { return _this._removeMarker(marker); }); + return marker; + }; + Buffer.prototype._removeMarker = function (marker) { + this.markers.splice(this.markers.indexOf(marker), 1); + }; + return Buffer; +}()); +exports.Buffer = Buffer; +var Marker = (function (_super) { + __extends(Marker, _super); + function Marker(line) { + var _this = _super.call(this) || this; + _this.line = line; + _this._id = Marker.NEXT_ID++; + _this.isDisposed = false; + _this.disposables = []; + return _this; + } + Object.defineProperty(Marker.prototype, "id", { + get: function () { return this._id; }, + enumerable: true, + configurable: true + }); + Marker.prototype.dispose = function () { + if (this.isDisposed) { + return; + } + this.isDisposed = true; + this.disposables.forEach(function (d) { return d.dispose(); }); + this.disposables.length = 0; + this.emit('dispose'); + }; + Marker.NEXT_ID = 1; + return Marker; +}(EventEmitter_1.EventEmitter)); +exports.Marker = Marker; + + + +},{"./EventEmitter":8,"./utils/CircularList":36}],3:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var Buffer_1 = require("./Buffer"); +var EventEmitter_1 = require("./EventEmitter"); +var BufferSet = (function (_super) { + __extends(BufferSet, _super); + function BufferSet(_terminal) { + var _this = _super.call(this) || this; + _this._terminal = _terminal; + _this._normal = new Buffer_1.Buffer(_this._terminal, true); + _this._normal.fillViewportRows(); + _this._alt = new Buffer_1.Buffer(_this._terminal, false); + _this._activeBuffer = _this._normal; + _this.setupTabStops(); + return _this; + } + Object.defineProperty(BufferSet.prototype, "alt", { + get: function () { + return this._alt; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BufferSet.prototype, "active", { + get: function () { + return this._activeBuffer; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BufferSet.prototype, "normal", { + get: function () { + return this._normal; + }, + enumerable: true, + configurable: true + }); + BufferSet.prototype.activateNormalBuffer = function () { + if (this._activeBuffer === this._normal) { + return; + } + this._alt.clear(); + this._activeBuffer = this._normal; + this.emit('activate', { + activeBuffer: this._normal, + inactiveBuffer: this._alt + }); + }; + BufferSet.prototype.activateAltBuffer = function () { + if (this._activeBuffer === this._alt) { + return; + } + this._alt.fillViewportRows(); + this._activeBuffer = this._alt; + this.emit('activate', { + activeBuffer: this._alt, + inactiveBuffer: this._normal + }); + }; + BufferSet.prototype.resize = function (newCols, newRows) { + this._normal.resize(newCols, newRows); + this._alt.resize(newCols, newRows); + }; + BufferSet.prototype.setupTabStops = function (i) { + this._normal.setupTabStops(i); + this._alt.setupTabStops(i); + }; + return BufferSet; +}(EventEmitter_1.EventEmitter)); +exports.BufferSet = BufferSet; + + + +},{"./Buffer":2,"./EventEmitter":8}],4:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.wcwidth = (function (opts) { + var COMBINING_BMP = [ + [0x0300, 0x036F], [0x0483, 0x0486], [0x0488, 0x0489], + [0x0591, 0x05BD], [0x05BF, 0x05BF], [0x05C1, 0x05C2], + [0x05C4, 0x05C5], [0x05C7, 0x05C7], [0x0600, 0x0603], + [0x0610, 0x0615], [0x064B, 0x065E], [0x0670, 0x0670], + [0x06D6, 0x06E4], [0x06E7, 0x06E8], [0x06EA, 0x06ED], + [0x070F, 0x070F], [0x0711, 0x0711], [0x0730, 0x074A], + [0x07A6, 0x07B0], [0x07EB, 0x07F3], [0x0901, 0x0902], + [0x093C, 0x093C], [0x0941, 0x0948], [0x094D, 0x094D], + [0x0951, 0x0954], [0x0962, 0x0963], [0x0981, 0x0981], + [0x09BC, 0x09BC], [0x09C1, 0x09C4], [0x09CD, 0x09CD], + [0x09E2, 0x09E3], [0x0A01, 0x0A02], [0x0A3C, 0x0A3C], + [0x0A41, 0x0A42], [0x0A47, 0x0A48], [0x0A4B, 0x0A4D], + [0x0A70, 0x0A71], [0x0A81, 0x0A82], [0x0ABC, 0x0ABC], + [0x0AC1, 0x0AC5], [0x0AC7, 0x0AC8], [0x0ACD, 0x0ACD], + [0x0AE2, 0x0AE3], [0x0B01, 0x0B01], [0x0B3C, 0x0B3C], + [0x0B3F, 0x0B3F], [0x0B41, 0x0B43], [0x0B4D, 0x0B4D], + [0x0B56, 0x0B56], [0x0B82, 0x0B82], [0x0BC0, 0x0BC0], + [0x0BCD, 0x0BCD], [0x0C3E, 0x0C40], [0x0C46, 0x0C48], + [0x0C4A, 0x0C4D], [0x0C55, 0x0C56], [0x0CBC, 0x0CBC], + [0x0CBF, 0x0CBF], [0x0CC6, 0x0CC6], [0x0CCC, 0x0CCD], + [0x0CE2, 0x0CE3], [0x0D41, 0x0D43], [0x0D4D, 0x0D4D], + [0x0DCA, 0x0DCA], [0x0DD2, 0x0DD4], [0x0DD6, 0x0DD6], + [0x0E31, 0x0E31], [0x0E34, 0x0E3A], [0x0E47, 0x0E4E], + [0x0EB1, 0x0EB1], [0x0EB4, 0x0EB9], [0x0EBB, 0x0EBC], + [0x0EC8, 0x0ECD], [0x0F18, 0x0F19], [0x0F35, 0x0F35], + [0x0F37, 0x0F37], [0x0F39, 0x0F39], [0x0F71, 0x0F7E], + [0x0F80, 0x0F84], [0x0F86, 0x0F87], [0x0F90, 0x0F97], + [0x0F99, 0x0FBC], [0x0FC6, 0x0FC6], [0x102D, 0x1030], + [0x1032, 0x1032], [0x1036, 0x1037], [0x1039, 0x1039], + [0x1058, 0x1059], [0x1160, 0x11FF], [0x135F, 0x135F], + [0x1712, 0x1714], [0x1732, 0x1734], [0x1752, 0x1753], + [0x1772, 0x1773], [0x17B4, 0x17B5], [0x17B7, 0x17BD], + [0x17C6, 0x17C6], [0x17C9, 0x17D3], [0x17DD, 0x17DD], + [0x180B, 0x180D], [0x18A9, 0x18A9], [0x1920, 0x1922], + [0x1927, 0x1928], [0x1932, 0x1932], [0x1939, 0x193B], + [0x1A17, 0x1A18], [0x1B00, 0x1B03], [0x1B34, 0x1B34], + [0x1B36, 0x1B3A], [0x1B3C, 0x1B3C], [0x1B42, 0x1B42], + [0x1B6B, 0x1B73], [0x1DC0, 0x1DCA], [0x1DFE, 0x1DFF], + [0x200B, 0x200F], [0x202A, 0x202E], [0x2060, 0x2063], + [0x206A, 0x206F], [0x20D0, 0x20EF], [0x302A, 0x302F], + [0x3099, 0x309A], [0xA806, 0xA806], [0xA80B, 0xA80B], + [0xA825, 0xA826], [0xFB1E, 0xFB1E], [0xFE00, 0xFE0F], + [0xFE20, 0xFE23], [0xFEFF, 0xFEFF], [0xFFF9, 0xFFFB] + ]; + var COMBINING_HIGH = [ + [0x10A01, 0x10A03], [0x10A05, 0x10A06], [0x10A0C, 0x10A0F], + [0x10A38, 0x10A3A], [0x10A3F, 0x10A3F], [0x1D167, 0x1D169], + [0x1D173, 0x1D182], [0x1D185, 0x1D18B], [0x1D1AA, 0x1D1AD], + [0x1D242, 0x1D244], [0xE0001, 0xE0001], [0xE0020, 0xE007F], + [0xE0100, 0xE01EF] + ]; + function bisearch(ucs, data) { + var min = 0; + var max = data.length - 1; + var mid; + if (ucs < data[0][0] || ucs > data[max][1]) { + return false; + } + while (max >= min) { + mid = (min + max) >> 1; + if (ucs > data[mid][1]) { + min = mid + 1; + } + else if (ucs < data[mid][0]) { + max = mid - 1; + } + else { + return true; + } + } + return false; + } + function wcwidthBMP(ucs) { + if (ucs === 0) { + return opts.nul; + } + if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0)) { + return opts.control; + } + if (bisearch(ucs, COMBINING_BMP)) { + return 0; + } + if (isWideBMP(ucs)) { + return 2; + } + return 1; + } + function isWideBMP(ucs) { + return (ucs >= 0x1100 && (ucs <= 0x115f || + ucs === 0x2329 || + ucs === 0x232a || + (ucs >= 0x2e80 && ucs <= 0xa4cf && ucs !== 0x303f) || + (ucs >= 0xac00 && ucs <= 0xd7a3) || + (ucs >= 0xf900 && ucs <= 0xfaff) || + (ucs >= 0xfe10 && ucs <= 0xfe19) || + (ucs >= 0xfe30 && ucs <= 0xfe6f) || + (ucs >= 0xff00 && ucs <= 0xff60) || + (ucs >= 0xffe0 && ucs <= 0xffe6))); + } + function wcwidthHigh(ucs) { + if (bisearch(ucs, COMBINING_HIGH)) { + return 0; + } + if ((ucs >= 0x20000 && ucs <= 0x2fffd) || (ucs >= 0x30000 && ucs <= 0x3fffd)) { + return 2; + } + return 1; + } + var control = opts.control | 0; + var table = null; + function init_table() { + var CODEPOINTS = 65536; + var BITWIDTH = 2; + var ITEMSIZE = 32; + var CONTAINERSIZE = CODEPOINTS * BITWIDTH / ITEMSIZE; + var CODEPOINTS_PER_ITEM = ITEMSIZE / BITWIDTH; + table = (typeof Uint32Array === 'undefined') + ? new Array(CONTAINERSIZE) + : new Uint32Array(CONTAINERSIZE); + for (var i = 0; i < CONTAINERSIZE; ++i) { + var num = 0; + var pos = CODEPOINTS_PER_ITEM; + while (pos--) { + num = (num << 2) | wcwidthBMP(CODEPOINTS_PER_ITEM * i + pos); + } + table[i] = num; + } + return table; + } + return function (num) { + num = num | 0; + if (num < 32) { + return control | 0; + } + if (num < 127) { + return 1; + } + var t = table || init_table(); + if (num < 65536) { + return t[num >> 4] >> ((num & 15) << 1) & 3; + } + return wcwidthHigh(num); + }; +})({ nul: 0, control: 0 }); + + + +},{}],5:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CHARSETS = {}; +exports.DEFAULT_CHARSET = exports.CHARSETS['B']; +exports.CHARSETS['0'] = { + '`': '\u25c6', + 'a': '\u2592', + 'b': '\u0009', + 'c': '\u000c', + 'd': '\u000d', + 'e': '\u000a', + 'f': '\u00b0', + 'g': '\u00b1', + 'h': '\u2424', + 'i': '\u000b', + 'j': '\u2518', + 'k': '\u2510', + 'l': '\u250c', + 'm': '\u2514', + 'n': '\u253c', + 'o': '\u23ba', + 'p': '\u23bb', + 'q': '\u2500', + 'r': '\u23bc', + 's': '\u23bd', + 't': '\u251c', + 'u': '\u2524', + 'v': '\u2534', + 'w': '\u252c', + 'x': '\u2502', + 'y': '\u2264', + 'z': '\u2265', + '{': '\u03c0', + '|': '\u2260', + '}': '\u00a3', + '~': '\u00b7' +}; +exports.CHARSETS['A'] = { + '#': '£' +}; +exports.CHARSETS['B'] = null; +exports.CHARSETS['4'] = { + '#': '£', + '@': '¾', + '[': 'ij', + '\\': '½', + ']': '|', + '{': '¨', + '|': 'f', + '}': '¼', + '~': '´' +}; +exports.CHARSETS['C'] = + exports.CHARSETS['5'] = { + '[': 'Ä', + '\\': 'Ö', + ']': 'Å', + '^': 'Ü', + '`': 'é', + '{': 'ä', + '|': 'ö', + '}': 'å', + '~': 'ü' + }; +exports.CHARSETS['R'] = { + '#': '£', + '@': 'à', + '[': '°', + '\\': 'ç', + ']': '§', + '{': 'é', + '|': 'ù', + '}': 'è', + '~': '¨' +}; +exports.CHARSETS['Q'] = { + '@': 'à', + '[': 'â', + '\\': 'ç', + ']': 'ê', + '^': 'î', + '`': 'ô', + '{': 'é', + '|': 'ù', + '}': 'è', + '~': 'û' +}; +exports.CHARSETS['K'] = { + '@': '§', + '[': 'Ä', + '\\': 'Ö', + ']': 'Ü', + '{': 'ä', + '|': 'ö', + '}': 'ü', + '~': 'ß' +}; +exports.CHARSETS['Y'] = { + '#': '£', + '@': '§', + '[': '°', + '\\': 'ç', + ']': 'é', + '`': 'ù', + '{': 'à', + '|': 'ò', + '}': 'è', + '~': 'ì' +}; +exports.CHARSETS['E'] = + exports.CHARSETS['6'] = { + '@': 'Ä', + '[': 'Æ', + '\\': 'Ø', + ']': 'Å', + '^': 'Ü', + '`': 'ä', + '{': 'æ', + '|': 'ø', + '}': 'å', + '~': 'ü' + }; +exports.CHARSETS['Z'] = { + '#': '£', + '@': '§', + '[': '¡', + '\\': 'Ñ', + ']': '¿', + '{': '°', + '|': 'ñ', + '}': 'ç' +}; +exports.CHARSETS['H'] = + exports.CHARSETS['7'] = { + '@': 'É', + '[': 'Ä', + '\\': 'Ö', + ']': 'Å', + '^': 'Ü', + '`': 'é', + '{': 'ä', + '|': 'ö', + '}': 'å', + '~': 'ü' + }; +exports.CHARSETS['='] = { + '#': 'ù', + '@': 'à', + '[': 'é', + '\\': 'ç', + ']': 'ê', + '^': 'î', + '_': 'è', + '`': 'ô', + '{': 'ä', + '|': 'ö', + '}': 'ü', + '~': 'û' +}; + + + +},{}],6:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var CompositionHelper = (function () { + function CompositionHelper(_textarea, _compositionView, _terminal) { + this._textarea = _textarea; + this._compositionView = _compositionView; + this._terminal = _terminal; + this._isComposing = false; + this._isSendingComposition = false; + this._compositionPosition = { start: null, end: null }; + } + CompositionHelper.prototype.compositionstart = function () { + this._isComposing = true; + this._compositionPosition.start = this._textarea.value.length; + this._compositionView.textContent = ''; + this._compositionView.classList.add('active'); + }; + CompositionHelper.prototype.compositionupdate = function (ev) { + var _this = this; + this._compositionView.textContent = ev.data; + this.updateCompositionElements(); + setTimeout(function () { + _this._compositionPosition.end = _this._textarea.value.length; + }, 0); + }; + CompositionHelper.prototype.compositionend = function () { + this._finalizeComposition(true); + }; + CompositionHelper.prototype.keydown = function (ev) { + if (this._isComposing || this._isSendingComposition) { + if (ev.keyCode === 229) { + return false; + } + else if (ev.keyCode === 16 || ev.keyCode === 17 || ev.keyCode === 18) { + return false; + } + this._finalizeComposition(false); + } + if (ev.keyCode === 229) { + this._handleAnyTextareaChanges(); + return false; + } + return true; + }; + CompositionHelper.prototype._finalizeComposition = function (waitForPropogation) { + var _this = this; + this._compositionView.classList.remove('active'); + this._isComposing = false; + this._clearTextareaPosition(); + if (!waitForPropogation) { + this._isSendingComposition = false; + var input = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end); + this._terminal.handler(input); + } + else { + var currentCompositionPosition_1 = { + start: this._compositionPosition.start, + end: this._compositionPosition.end + }; + this._isSendingComposition = true; + setTimeout(function () { + if (_this._isSendingComposition) { + _this._isSendingComposition = false; + var input = void 0; + if (_this._isComposing) { + input = _this._textarea.value.substring(currentCompositionPosition_1.start, currentCompositionPosition_1.end); + } + else { + input = _this._textarea.value.substring(currentCompositionPosition_1.start); + } + _this._terminal.handler(input); + } + }, 0); + } + }; + CompositionHelper.prototype._handleAnyTextareaChanges = function () { + var _this = this; + var oldValue = this._textarea.value; + setTimeout(function () { + if (!_this._isComposing) { + var newValue = _this._textarea.value; + var diff = newValue.replace(oldValue, ''); + if (diff.length > 0) { + _this._terminal.handler(diff); + } + } + }, 0); + }; + CompositionHelper.prototype.updateCompositionElements = function (dontRecurse) { + var _this = this; + if (!this._isComposing) { + return; + } + if (this._terminal.buffer.isCursorInViewport) { + var cellHeight = Math.ceil(this._terminal.charMeasure.height * this._terminal.options.lineHeight); + var cursorTop = this._terminal.buffer.y * cellHeight; + var cursorLeft = this._terminal.buffer.x * this._terminal.charMeasure.width; + this._compositionView.style.left = cursorLeft + 'px'; + this._compositionView.style.top = cursorTop + 'px'; + this._compositionView.style.height = cellHeight + 'px'; + this._compositionView.style.lineHeight = cellHeight + 'px'; + var compositionViewBounds = this._compositionView.getBoundingClientRect(); + this._textarea.style.left = cursorLeft + 'px'; + this._textarea.style.top = cursorTop + 'px'; + this._textarea.style.width = compositionViewBounds.width + 'px'; + this._textarea.style.height = compositionViewBounds.height + 'px'; + this._textarea.style.lineHeight = compositionViewBounds.height + 'px'; + } + if (!dontRecurse) { + setTimeout(function () { return _this.updateCompositionElements(true); }, 0); + } + }; + CompositionHelper.prototype._clearTextareaPosition = function () { + this._textarea.style.left = ''; + this._textarea.style.top = ''; + }; + return CompositionHelper; +}()); +exports.CompositionHelper = CompositionHelper; + + + +},{}],7:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var C0; +(function (C0) { + C0.NUL = '\x00'; + C0.SOH = '\x01'; + C0.STX = '\x02'; + C0.ETX = '\x03'; + C0.EOT = '\x04'; + C0.ENQ = '\x05'; + C0.ACK = '\x06'; + C0.BEL = '\x07'; + C0.BS = '\x08'; + C0.HT = '\x09'; + C0.LF = '\x0a'; + C0.VT = '\x0b'; + C0.FF = '\x0c'; + C0.CR = '\x0d'; + C0.SO = '\x0e'; + C0.SI = '\x0f'; + C0.DLE = '\x10'; + C0.DC1 = '\x11'; + C0.DC2 = '\x12'; + C0.DC3 = '\x13'; + C0.DC4 = '\x14'; + C0.NAK = '\x15'; + C0.SYN = '\x16'; + C0.ETB = '\x17'; + C0.CAN = '\x18'; + C0.EM = '\x19'; + C0.SUB = '\x1a'; + C0.ESC = '\x1b'; + C0.FS = '\x1c'; + C0.GS = '\x1d'; + C0.RS = '\x1e'; + C0.US = '\x1f'; + C0.SP = '\x20'; + C0.DEL = '\x7f'; +})(C0 = exports.C0 || (exports.C0 = {})); + + + +},{}],8:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var EventEmitter = (function () { + function EventEmitter() { + this._events = this._events || {}; + } + EventEmitter.prototype.on = function (type, listener) { + this._events[type] = this._events[type] || []; + this._events[type].push(listener); + }; + EventEmitter.prototype.addDisposableListener = function (type, handler) { + var _this = this; + this.on(type, handler); + return { + dispose: function () { + if (!handler) { + return; + } + _this.off(type, handler); + handler = null; + } + }; + }; + EventEmitter.prototype.off = function (type, listener) { + if (!this._events[type]) { + return; + } + var obj = this._events[type]; + var i = obj.length; + while (i--) { + if (obj[i] === listener) { + obj.splice(i, 1); + return; + } + } + }; + EventEmitter.prototype.removeAllListeners = function (type) { + if (this._events[type]) { + delete this._events[type]; + } + }; + EventEmitter.prototype.emit = function (type) { + var args = []; + for (var _i = 1; _i < arguments.length; _i++) { + args[_i - 1] = arguments[_i]; + } + if (!this._events[type]) { + return; + } + var obj = this._events[type]; + for (var i = 0; i < obj.length; i++) { + obj[i].apply(this, args); + } + }; + EventEmitter.prototype.listeners = function (type) { + return this._events[type] || []; + }; + EventEmitter.prototype.dispose = function () { + this._events = {}; + }; + return EventEmitter; +}()); +exports.EventEmitter = EventEmitter; + + + +},{}],9:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var EscapeSequences_1 = require("./EscapeSequences"); +var Charsets_1 = require("./Charsets"); +var Buffer_1 = require("./Buffer"); +var CharWidth_1 = require("./CharWidth"); +var InputHandler = (function () { + function InputHandler(_terminal) { + this._terminal = _terminal; + } + InputHandler.prototype.addChar = function (char, code) { + if (char >= ' ') { + var buffer = this._terminal.buffer; + var chWidth = CharWidth_1.wcwidth(code); + if (this._terminal.charset && this._terminal.charset[char]) { + char = this._terminal.charset[char]; + } + if (this._terminal.options.screenReaderMode) { + this._terminal.emit('a11y.char', char); + } + var row = buffer.y + buffer.ybase; + if (!chWidth && buffer.x) { + if (buffer.lines.get(row)[buffer.x - 1]) { + if (!buffer.lines.get(row)[buffer.x - 1][Buffer_1.CHAR_DATA_WIDTH_INDEX]) { + if (buffer.lines.get(row)[buffer.x - 2]) { + buffer.lines.get(row)[buffer.x - 2][Buffer_1.CHAR_DATA_CHAR_INDEX] += char; + buffer.lines.get(row)[buffer.x - 2][3] = char.charCodeAt(0); + } + } + else { + buffer.lines.get(row)[buffer.x - 1][Buffer_1.CHAR_DATA_CHAR_INDEX] += char; + buffer.lines.get(row)[buffer.x - 1][3] = char.charCodeAt(0); + } + this._terminal.updateRange(buffer.y); + } + return; + } + if (buffer.x + chWidth - 1 >= this._terminal.cols) { + if (this._terminal.wraparoundMode) { + buffer.x = 0; + buffer.y++; + if (buffer.y > buffer.scrollBottom) { + buffer.y--; + this._terminal.scroll(true); + } + else { + buffer.lines.get(buffer.y).isWrapped = true; + } + } + else { + if (chWidth === 2) { + return; + } + } + } + row = buffer.y + buffer.ybase; + if (this._terminal.insertMode) { + for (var moves = 0; moves < chWidth; ++moves) { + var removed = buffer.lines.get(buffer.y + buffer.ybase).pop(); + if (removed[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0 + && buffer.lines.get(row)[this._terminal.cols - 2] + && buffer.lines.get(row)[this._terminal.cols - 2][Buffer_1.CHAR_DATA_WIDTH_INDEX] === 2) { + buffer.lines.get(row)[this._terminal.cols - 2] = [this._terminal.curAttr, ' ', 1, ' '.charCodeAt(0)]; + } + buffer.lines.get(row).splice(buffer.x, 0, [this._terminal.curAttr, ' ', 1, ' '.charCodeAt(0)]); + } + } + buffer.lines.get(row)[buffer.x] = [this._terminal.curAttr, char, chWidth, char.charCodeAt(0)]; + buffer.x++; + this._terminal.updateRange(buffer.y); + if (chWidth === 2) { + buffer.lines.get(row)[buffer.x] = [this._terminal.curAttr, '', 0, undefined]; + buffer.x++; + } + } + }; + InputHandler.prototype.bell = function () { + this._terminal.bell(); + }; + InputHandler.prototype.lineFeed = function () { + var buffer = this._terminal.buffer; + if (this._terminal.convertEol) { + buffer.x = 0; + } + buffer.y++; + if (buffer.y > buffer.scrollBottom) { + buffer.y--; + this._terminal.scroll(); + } + if (buffer.x >= this._terminal.cols) { + buffer.x--; + } + this._terminal.emit('linefeed'); + }; + InputHandler.prototype.carriageReturn = function () { + this._terminal.buffer.x = 0; + }; + InputHandler.prototype.backspace = function () { + if (this._terminal.buffer.x > 0) { + this._terminal.buffer.x--; + } + }; + InputHandler.prototype.tab = function () { + var originalX = this._terminal.buffer.x; + this._terminal.buffer.x = this._terminal.buffer.nextStop(); + if (this._terminal.options.screenReaderMode) { + this._terminal.emit('a11y.tab', this._terminal.buffer.x - originalX); + } + }; + InputHandler.prototype.shiftOut = function () { + this._terminal.setgLevel(1); + }; + InputHandler.prototype.shiftIn = function () { + this._terminal.setgLevel(0); + }; + InputHandler.prototype.insertChars = function (params) { + var param = params[0]; + if (param < 1) + param = 1; + var buffer = this._terminal.buffer; + var row = buffer.y + buffer.ybase; + var j = buffer.x; + var ch = [this._terminal.eraseAttr(), ' ', 1, 32]; + while (param-- && j < this._terminal.cols) { + buffer.lines.get(row).splice(j++, 0, ch); + buffer.lines.get(row).pop(); + } + }; + InputHandler.prototype.cursorUp = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.y -= param; + if (this._terminal.buffer.y < 0) { + this._terminal.buffer.y = 0; + } + }; + InputHandler.prototype.cursorDown = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.y += param; + if (this._terminal.buffer.y >= this._terminal.rows) { + this._terminal.buffer.y = this._terminal.rows - 1; + } + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x--; + } + }; + InputHandler.prototype.cursorForward = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.x += param; + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x = this._terminal.cols - 1; + } + }; + InputHandler.prototype.cursorBackward = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x--; + } + this._terminal.buffer.x -= param; + if (this._terminal.buffer.x < 0) { + this._terminal.buffer.x = 0; + } + }; + InputHandler.prototype.cursorNextLine = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.y += param; + if (this._terminal.buffer.y >= this._terminal.rows) { + this._terminal.buffer.y = this._terminal.rows - 1; + } + this._terminal.buffer.x = 0; + }; + InputHandler.prototype.cursorPrecedingLine = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.y -= param; + if (this._terminal.buffer.y < 0) { + this._terminal.buffer.y = 0; + } + this._terminal.buffer.x = 0; + }; + InputHandler.prototype.cursorCharAbsolute = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.x = param - 1; + }; + InputHandler.prototype.cursorPosition = function (params) { + var col; + var row = params[0] - 1; + if (params.length >= 2) { + col = params[1] - 1; + } + else { + col = 0; + } + if (row < 0) { + row = 0; + } + else if (row >= this._terminal.rows) { + row = this._terminal.rows - 1; + } + if (col < 0) { + col = 0; + } + else if (col >= this._terminal.cols) { + col = this._terminal.cols - 1; + } + this._terminal.buffer.x = col; + this._terminal.buffer.y = row; + }; + InputHandler.prototype.cursorForwardTab = function (params) { + var param = params[0] || 1; + while (param--) { + this._terminal.buffer.x = this._terminal.buffer.nextStop(); + } + }; + InputHandler.prototype.eraseInDisplay = function (params) { + var j; + switch (params[0]) { + case 0: + this._terminal.eraseRight(this._terminal.buffer.x, this._terminal.buffer.y); + j = this._terminal.buffer.y + 1; + for (; j < this._terminal.rows; j++) { + this._terminal.eraseLine(j); + } + break; + case 1: + this._terminal.eraseLeft(this._terminal.buffer.x, this._terminal.buffer.y); + j = this._terminal.buffer.y; + while (j--) { + this._terminal.eraseLine(j); + } + break; + case 2: + j = this._terminal.rows; + while (j--) + this._terminal.eraseLine(j); + break; + case 3: + var scrollBackSize = this._terminal.buffer.lines.length - this._terminal.rows; + if (scrollBackSize > 0) { + this._terminal.buffer.lines.trimStart(scrollBackSize); + this._terminal.buffer.ybase = Math.max(this._terminal.buffer.ybase - scrollBackSize, 0); + this._terminal.buffer.ydisp = Math.max(this._terminal.buffer.ydisp - scrollBackSize, 0); + this._terminal.emit('scroll', 0); + } + break; + } + }; + InputHandler.prototype.eraseInLine = function (params) { + switch (params[0]) { + case 0: + this._terminal.eraseRight(this._terminal.buffer.x, this._terminal.buffer.y); + break; + case 1: + this._terminal.eraseLeft(this._terminal.buffer.x, this._terminal.buffer.y); + break; + case 2: + this._terminal.eraseLine(this._terminal.buffer.y); + break; + } + }; + InputHandler.prototype.insertLines = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + var buffer = this._terminal.buffer; + var row = buffer.y + buffer.ybase; + var scrollBottomRowsOffset = this._terminal.rows - 1 - buffer.scrollBottom; + var scrollBottomAbsolute = this._terminal.rows - 1 + buffer.ybase - scrollBottomRowsOffset + 1; + while (param--) { + buffer.lines.splice(scrollBottomAbsolute - 1, 1); + buffer.lines.splice(row, 0, this._terminal.blankLine(true)); + } + this._terminal.updateRange(buffer.y); + this._terminal.updateRange(buffer.scrollBottom); + }; + InputHandler.prototype.deleteLines = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + var buffer = this._terminal.buffer; + var row = buffer.y + buffer.ybase; + var j; + j = this._terminal.rows - 1 - buffer.scrollBottom; + j = this._terminal.rows - 1 + buffer.ybase - j; + while (param--) { + buffer.lines.splice(row, 1); + buffer.lines.splice(j, 0, this._terminal.blankLine(true)); + } + this._terminal.updateRange(buffer.y); + this._terminal.updateRange(buffer.scrollBottom); + }; + InputHandler.prototype.deleteChars = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + var buffer = this._terminal.buffer; + var row = buffer.y + buffer.ybase; + var ch = [this._terminal.eraseAttr(), ' ', 1, 32]; + while (param--) { + buffer.lines.get(row).splice(buffer.x, 1); + buffer.lines.get(row).push(ch); + } + this._terminal.updateRange(buffer.y); + }; + InputHandler.prototype.scrollUp = function (params) { + var param = params[0] || 1; + var buffer = this._terminal.buffer; + while (param--) { + buffer.lines.splice(buffer.ybase + buffer.scrollTop, 1); + buffer.lines.splice(buffer.ybase + buffer.scrollBottom, 0, this._terminal.blankLine()); + } + this._terminal.updateRange(buffer.scrollTop); + this._terminal.updateRange(buffer.scrollBottom); + }; + InputHandler.prototype.scrollDown = function (params) { + var param = params[0] || 1; + var buffer = this._terminal.buffer; + while (param--) { + buffer.lines.splice(buffer.ybase + buffer.scrollBottom, 1); + buffer.lines.splice(buffer.ybase + buffer.scrollTop, 0, this._terminal.blankLine()); + } + this._terminal.updateRange(buffer.scrollTop); + this._terminal.updateRange(buffer.scrollBottom); + }; + InputHandler.prototype.eraseChars = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + var buffer = this._terminal.buffer; + var row = buffer.y + buffer.ybase; + var j = buffer.x; + var ch = [this._terminal.eraseAttr(), ' ', 1, 32]; + while (param-- && j < this._terminal.cols) { + buffer.lines.get(row)[j++] = ch; + } + }; + InputHandler.prototype.cursorBackwardTab = function (params) { + var param = params[0] || 1; + var buffer = this._terminal.buffer; + while (param--) { + buffer.x = buffer.prevStop(); + } + }; + InputHandler.prototype.charPosAbsolute = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.x = param - 1; + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x = this._terminal.cols - 1; + } + }; + InputHandler.prototype.HPositionRelative = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.x += param; + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x = this._terminal.cols - 1; + } + }; + InputHandler.prototype.repeatPrecedingCharacter = function (params) { + var param = params[0] || 1; + var buffer = this._terminal.buffer; + var line = buffer.lines.get(buffer.ybase + buffer.y); + var ch = line[buffer.x - 1] || [this._terminal.defAttr, ' ', 1, 32]; + while (param--) { + line[buffer.x++] = ch; + } + }; + InputHandler.prototype.sendDeviceAttributes = function (params) { + if (params[0] > 0) { + return; + } + if (!this._terminal.prefix) { + if (this._terminal.is('xterm') || this._terminal.is('rxvt-unicode') || this._terminal.is('screen')) { + this._terminal.send(EscapeSequences_1.C0.ESC + '[?1;2c'); + } + else if (this._terminal.is('linux')) { + this._terminal.send(EscapeSequences_1.C0.ESC + '[?6c'); + } + } + else if (this._terminal.prefix === '>') { + if (this._terminal.is('xterm')) { + this._terminal.send(EscapeSequences_1.C0.ESC + '[>0;276;0c'); + } + else if (this._terminal.is('rxvt-unicode')) { + this._terminal.send(EscapeSequences_1.C0.ESC + '[>85;95;0c'); + } + else if (this._terminal.is('linux')) { + this._terminal.send(params[0] + 'c'); + } + else if (this._terminal.is('screen')) { + this._terminal.send(EscapeSequences_1.C0.ESC + '[>83;40003;0c'); + } + } + }; + InputHandler.prototype.linePosAbsolute = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.y = param - 1; + if (this._terminal.buffer.y >= this._terminal.rows) { + this._terminal.buffer.y = this._terminal.rows - 1; + } + }; + InputHandler.prototype.VPositionRelative = function (params) { + var param = params[0]; + if (param < 1) { + param = 1; + } + this._terminal.buffer.y += param; + if (this._terminal.buffer.y >= this._terminal.rows) { + this._terminal.buffer.y = this._terminal.rows - 1; + } + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x--; + } + }; + InputHandler.prototype.HVPosition = function (params) { + if (params[0] < 1) + params[0] = 1; + if (params[1] < 1) + params[1] = 1; + this._terminal.buffer.y = params[0] - 1; + if (this._terminal.buffer.y >= this._terminal.rows) { + this._terminal.buffer.y = this._terminal.rows - 1; + } + this._terminal.buffer.x = params[1] - 1; + if (this._terminal.buffer.x >= this._terminal.cols) { + this._terminal.buffer.x = this._terminal.cols - 1; + } + }; + InputHandler.prototype.tabClear = function (params) { + var param = params[0]; + if (param <= 0) { + delete this._terminal.buffer.tabs[this._terminal.buffer.x]; + } + else if (param === 3) { + this._terminal.buffer.tabs = {}; + } + }; + InputHandler.prototype.setMode = function (params) { + if (params.length > 1) { + for (var i = 0; i < params.length; i++) { + this.setMode([params[i]]); + } + return; + } + if (!this._terminal.prefix) { + switch (params[0]) { + case 4: + this._terminal.insertMode = true; + break; + case 20: + break; + } + } + else if (this._terminal.prefix === '?') { + switch (params[0]) { + case 1: + this._terminal.applicationCursor = true; + break; + case 2: + this._terminal.setgCharset(0, Charsets_1.DEFAULT_CHARSET); + this._terminal.setgCharset(1, Charsets_1.DEFAULT_CHARSET); + this._terminal.setgCharset(2, Charsets_1.DEFAULT_CHARSET); + this._terminal.setgCharset(3, Charsets_1.DEFAULT_CHARSET); + break; + case 3: + this._terminal.savedCols = this._terminal.cols; + this._terminal.resize(132, this._terminal.rows); + break; + case 6: + this._terminal.originMode = true; + break; + case 7: + this._terminal.wraparoundMode = true; + break; + case 12: + break; + case 66: + this._terminal.log('Serial port requested application keypad.'); + this._terminal.applicationKeypad = true; + this._terminal.viewport.syncScrollArea(); + break; + case 9: + case 1000: + case 1002: + case 1003: + this._terminal.x10Mouse = params[0] === 9; + this._terminal.vt200Mouse = params[0] === 1000; + this._terminal.normalMouse = params[0] > 1000; + this._terminal.mouseEvents = true; + this._terminal.element.classList.add('enable-mouse-events'); + this._terminal.selectionManager.disable(); + this._terminal.log('Binding to mouse events.'); + break; + case 1004: + this._terminal.sendFocus = true; + break; + case 1005: + this._terminal.utfMouse = true; + break; + case 1006: + this._terminal.sgrMouse = true; + break; + case 1015: + this._terminal.urxvtMouse = true; + break; + case 25: + this._terminal.cursorHidden = false; + break; + case 1049: + case 47: + case 1047: + this._terminal.buffers.activateAltBuffer(); + this._terminal.viewport.syncScrollArea(); + this._terminal.showCursor(); + break; + case 2004: + this._terminal.bracketedPasteMode = true; + break; + } + } + }; + InputHandler.prototype.resetMode = function (params) { + if (params.length > 1) { + for (var i = 0; i < params.length; i++) { + this.resetMode([params[i]]); + } + return; + } + if (!this._terminal.prefix) { + switch (params[0]) { + case 4: + this._terminal.insertMode = false; + break; + case 20: + break; + } + } + else if (this._terminal.prefix === '?') { + switch (params[0]) { + case 1: + this._terminal.applicationCursor = false; + break; + case 3: + if (this._terminal.cols === 132 && this._terminal.savedCols) { + this._terminal.resize(this._terminal.savedCols, this._terminal.rows); + } + delete this._terminal.savedCols; + break; + case 6: + this._terminal.originMode = false; + break; + case 7: + this._terminal.wraparoundMode = false; + break; + case 12: + break; + case 66: + this._terminal.log('Switching back to normal keypad.'); + this._terminal.applicationKeypad = false; + this._terminal.viewport.syncScrollArea(); + break; + case 9: + case 1000: + case 1002: + case 1003: + this._terminal.x10Mouse = false; + this._terminal.vt200Mouse = false; + this._terminal.normalMouse = false; + this._terminal.mouseEvents = false; + this._terminal.element.classList.remove('enable-mouse-events'); + this._terminal.selectionManager.enable(); + break; + case 1004: + this._terminal.sendFocus = false; + break; + case 1005: + this._terminal.utfMouse = false; + break; + case 1006: + this._terminal.sgrMouse = false; + break; + case 1015: + this._terminal.urxvtMouse = false; + break; + case 25: + this._terminal.cursorHidden = true; + break; + case 1049: + case 47: + case 1047: + this._terminal.buffers.activateNormalBuffer(); + this._terminal.refresh(0, this._terminal.rows - 1); + this._terminal.viewport.syncScrollArea(); + this._terminal.showCursor(); + break; + case 2004: + this._terminal.bracketedPasteMode = false; + break; + } + } + }; + InputHandler.prototype.charAttributes = function (params) { + if (params.length === 1 && params[0] === 0) { + this._terminal.curAttr = this._terminal.defAttr; + return; + } + var l = params.length; + var flags = this._terminal.curAttr >> 18; + var fg = (this._terminal.curAttr >> 9) & 0x1ff; + var bg = this._terminal.curAttr & 0x1ff; + var p; + for (var i = 0; i < l; i++) { + p = params[i]; + if (p >= 30 && p <= 37) { + fg = p - 30; + } + else if (p >= 40 && p <= 47) { + bg = p - 40; + } + else if (p >= 90 && p <= 97) { + p += 8; + fg = p - 90; + } + else if (p >= 100 && p <= 107) { + p += 8; + bg = p - 100; + } + else if (p === 0) { + flags = this._terminal.defAttr >> 18; + fg = (this._terminal.defAttr >> 9) & 0x1ff; + bg = this._terminal.defAttr & 0x1ff; + } + else if (p === 1) { + flags |= 1; + } + else if (p === 3) { + flags |= 64; + } + else if (p === 4) { + flags |= 2; + } + else if (p === 5) { + flags |= 4; + } + else if (p === 7) { + flags |= 8; + } + else if (p === 8) { + flags |= 16; + } + else if (p === 2) { + flags |= 32; + } + else if (p === 22) { + flags &= ~1; + flags &= ~32; + } + else if (p === 24) { + flags &= ~2; + } + else if (p === 25) { + flags &= ~4; + } + else if (p === 27) { + flags &= ~8; + } + else if (p === 28) { + flags &= ~16; + } + else if (p === 39) { + fg = (this._terminal.defAttr >> 9) & 0x1ff; + } + else if (p === 49) { + bg = this._terminal.defAttr & 0x1ff; + } + else if (p === 38) { + if (params[i + 1] === 2) { + i += 2; + fg = this._terminal.matchColor(params[i] & 0xff, params[i + 1] & 0xff, params[i + 2] & 0xff); + if (fg === -1) + fg = 0x1ff; + i += 2; + } + else if (params[i + 1] === 5) { + i += 2; + p = params[i] & 0xff; + fg = p; + } + } + else if (p === 48) { + if (params[i + 1] === 2) { + i += 2; + bg = this._terminal.matchColor(params[i] & 0xff, params[i + 1] & 0xff, params[i + 2] & 0xff); + if (bg === -1) + bg = 0x1ff; + i += 2; + } + else if (params[i + 1] === 5) { + i += 2; + p = params[i] & 0xff; + bg = p; + } + } + else if (p === 100) { + fg = (this._terminal.defAttr >> 9) & 0x1ff; + bg = this._terminal.defAttr & 0x1ff; + } + else { + this._terminal.error('Unknown SGR attribute: %d.', p); + } + } + this._terminal.curAttr = (flags << 18) | (fg << 9) | bg; + }; + InputHandler.prototype.deviceStatus = function (params) { + if (!this._terminal.prefix) { + switch (params[0]) { + case 5: + this._terminal.send(EscapeSequences_1.C0.ESC + '[0n'); + break; + case 6: + this._terminal.send(EscapeSequences_1.C0.ESC + '[' + + (this._terminal.buffer.y + 1) + + ';' + + (this._terminal.buffer.x + 1) + + 'R'); + break; + } + } + else if (this._terminal.prefix === '?') { + switch (params[0]) { + case 6: + this._terminal.send(EscapeSequences_1.C0.ESC + '[?' + + (this._terminal.buffer.y + 1) + + ';' + + (this._terminal.buffer.x + 1) + + 'R'); + break; + case 15: + break; + case 25: + break; + case 26: + break; + case 53: + break; + } + } + }; + InputHandler.prototype.softReset = function (params) { + this._terminal.cursorHidden = false; + this._terminal.insertMode = false; + this._terminal.originMode = false; + this._terminal.wraparoundMode = true; + this._terminal.applicationKeypad = false; + this._terminal.viewport.syncScrollArea(); + this._terminal.applicationCursor = false; + this._terminal.buffer.scrollTop = 0; + this._terminal.buffer.scrollBottom = this._terminal.rows - 1; + this._terminal.curAttr = this._terminal.defAttr; + this._terminal.buffer.x = this._terminal.buffer.y = 0; + this._terminal.charset = null; + this._terminal.glevel = 0; + this._terminal.charsets = [null]; + }; + InputHandler.prototype.setCursorStyle = function (params) { + var param = params[0] < 1 ? 1 : params[0]; + switch (param) { + case 1: + case 2: + this._terminal.setOption('cursorStyle', 'block'); + break; + case 3: + case 4: + this._terminal.setOption('cursorStyle', 'underline'); + break; + case 5: + case 6: + this._terminal.setOption('cursorStyle', 'bar'); + break; + } + var isBlinking = param % 2 === 1; + this._terminal.setOption('cursorBlink', isBlinking); + }; + InputHandler.prototype.setScrollRegion = function (params) { + if (this._terminal.prefix) + return; + this._terminal.buffer.scrollTop = (params[0] || 1) - 1; + this._terminal.buffer.scrollBottom = (params[1] && params[1] <= this._terminal.rows ? params[1] : this._terminal.rows) - 1; + this._terminal.buffer.x = 0; + this._terminal.buffer.y = 0; + }; + InputHandler.prototype.saveCursor = function (params) { + this._terminal.buffer.savedX = this._terminal.buffer.x; + this._terminal.buffer.savedY = this._terminal.buffer.y; + }; + InputHandler.prototype.restoreCursor = function (params) { + this._terminal.buffer.x = this._terminal.buffer.savedX || 0; + this._terminal.buffer.y = this._terminal.buffer.savedY || 0; + }; + return InputHandler; +}()); +exports.InputHandler = InputHandler; + + + +},{"./Buffer":2,"./CharWidth":4,"./Charsets":5,"./EscapeSequences":7}],10:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var MouseZoneManager_1 = require("./input/MouseZoneManager"); +var EventEmitter_1 = require("./EventEmitter"); +var Linkifier = (function (_super) { + __extends(Linkifier, _super); + function Linkifier(_terminal) { + var _this = _super.call(this) || this; + _this._terminal = _terminal; + _this._linkMatchers = []; + _this._nextLinkMatcherId = 0; + _this._rowsToLinkify = { + start: null, + end: null + }; + return _this; + } + Linkifier.prototype.attachToDom = function (mouseZoneManager) { + this._mouseZoneManager = mouseZoneManager; + }; + Linkifier.prototype.linkifyRows = function (start, end) { + var _this = this; + if (!this._mouseZoneManager) { + return; + } + if (this._rowsToLinkify.start === null) { + this._rowsToLinkify.start = start; + this._rowsToLinkify.end = end; + } + else { + this._rowsToLinkify.start = Math.min(this._rowsToLinkify.start, start); + this._rowsToLinkify.end = Math.max(this._rowsToLinkify.end, end); + } + this._mouseZoneManager.clearAll(start, end); + if (this._rowsTimeoutId) { + clearTimeout(this._rowsTimeoutId); + } + this._rowsTimeoutId = setTimeout(function () { return _this._linkifyRows(); }, Linkifier.TIME_BEFORE_LINKIFY); + }; + Linkifier.prototype._linkifyRows = function () { + this._rowsTimeoutId = null; + for (var i = this._rowsToLinkify.start; i <= this._rowsToLinkify.end; i++) { + this._linkifyRow(i); + } + this._rowsToLinkify.start = null; + this._rowsToLinkify.end = null; + }; + Linkifier.prototype.registerLinkMatcher = function (regex, handler, options) { + if (options === void 0) { options = {}; } + if (!handler) { + throw new Error('handler must be defined'); + } + var matcher = { + id: this._nextLinkMatcherId++, + regex: regex, + handler: handler, + matchIndex: options.matchIndex, + validationCallback: options.validationCallback, + hoverTooltipCallback: options.tooltipCallback, + hoverLeaveCallback: options.leaveCallback, + willLinkActivate: options.willLinkActivate, + priority: options.priority || 0 + }; + this._addLinkMatcherToList(matcher); + return matcher.id; + }; + Linkifier.prototype._addLinkMatcherToList = function (matcher) { + if (this._linkMatchers.length === 0) { + this._linkMatchers.push(matcher); + return; + } + for (var i = this._linkMatchers.length - 1; i >= 0; i--) { + if (matcher.priority <= this._linkMatchers[i].priority) { + this._linkMatchers.splice(i + 1, 0, matcher); + return; + } + } + this._linkMatchers.splice(0, 0, matcher); + }; + Linkifier.prototype.deregisterLinkMatcher = function (matcherId) { + for (var i = 0; i < this._linkMatchers.length; i++) { + if (this._linkMatchers[i].id === matcherId) { + this._linkMatchers.splice(i, 1); + return true; + } + } + return false; + }; + Linkifier.prototype._linkifyRow = function (rowIndex) { + var absoluteRowIndex = this._terminal.buffer.ydisp + rowIndex; + if (absoluteRowIndex >= this._terminal.buffer.lines.length) { + return; + } + if (this._terminal.buffer.lines.get(absoluteRowIndex).isWrapped) { + if (rowIndex !== 0) { + return; + } + do { + rowIndex--; + absoluteRowIndex--; + } while (this._terminal.buffer.lines.get(absoluteRowIndex).isWrapped); + } + var text = this._terminal.buffer.translateBufferLineToString(absoluteRowIndex, false); + var currentIndex = absoluteRowIndex + 1; + while (currentIndex < this._terminal.buffer.lines.length && + this._terminal.buffer.lines.get(currentIndex).isWrapped) { + text += this._terminal.buffer.translateBufferLineToString(currentIndex++, false); + } + for (var i = 0; i < this._linkMatchers.length; i++) { + this._doLinkifyRow(rowIndex, text, this._linkMatchers[i]); + } + }; + Linkifier.prototype._doLinkifyRow = function (rowIndex, text, matcher, offset) { + var _this = this; + if (offset === void 0) { offset = 0; } + var match = text.match(matcher.regex); + if (!match || match.length === 0) { + return; + } + var uri = match[typeof matcher.matchIndex !== 'number' ? 0 : matcher.matchIndex]; + var index = text.indexOf(uri); + if (matcher.validationCallback) { + matcher.validationCallback(uri, function (isValid) { + if (_this._rowsTimeoutId) { + return; + } + if (isValid) { + _this._addLink(offset + index, rowIndex, uri, matcher); + } + }); + } + else { + this._addLink(offset + index, rowIndex, uri, matcher); + } + var remainingStartIndex = index + uri.length; + var remainingText = text.substr(remainingStartIndex); + if (remainingText.length > 0) { + this._doLinkifyRow(rowIndex, remainingText, matcher, offset + remainingStartIndex); + } + }; + Linkifier.prototype._addLink = function (x, y, uri, matcher) { + var _this = this; + var x1 = x % this._terminal.cols; + var y1 = y + Math.floor(x / this._terminal.cols); + var x2 = (x1 + uri.length) % this._terminal.cols; + var y2 = y1 + Math.floor((x1 + uri.length) / this._terminal.cols); + if (x2 === 0) { + x2 = this._terminal.cols; + y2--; + } + this._mouseZoneManager.add(new MouseZoneManager_1.MouseZone(x1 + 1, y1 + 1, x2 + 1, y2 + 1, function (e) { + if (matcher.handler) { + return matcher.handler(e, uri); + } + window.open(uri, '_blank'); + }, function (e) { + _this.emit("linkhover", _this._createLinkHoverEvent(x1, y1, x2, y2)); + _this._terminal.element.classList.add('xterm-cursor-pointer'); + }, function (e) { + _this.emit("linktooltip", _this._createLinkHoverEvent(x1, y1, x2, y2)); + if (matcher.hoverTooltipCallback) { + matcher.hoverTooltipCallback(e, uri); + } + }, function () { + _this.emit("linkleave", _this._createLinkHoverEvent(x1, y1, x2, y2)); + _this._terminal.element.classList.remove('xterm-cursor-pointer'); + if (matcher.hoverLeaveCallback) { + matcher.hoverLeaveCallback(); + } + }, function (e) { + if (matcher.willLinkActivate) { + return matcher.willLinkActivate(e, uri); + } + return true; + })); + }; + Linkifier.prototype._createLinkHoverEvent = function (x1, y1, x2, y2) { + return { x1: x1, y1: y1, x2: x2, y2: y2, cols: this._terminal.cols }; + }; + Linkifier.TIME_BEFORE_LINKIFY = 200; + return Linkifier; +}(EventEmitter_1.EventEmitter)); +exports.Linkifier = Linkifier; + + + +},{"./EventEmitter":8,"./input/MouseZoneManager":20}],11:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var EscapeSequences_1 = require("./EscapeSequences"); +var Charsets_1 = require("./Charsets"); +var normalStateHandler = {}; +normalStateHandler[EscapeSequences_1.C0.BEL] = function (parser, handler) { return handler.bell(); }; +normalStateHandler[EscapeSequences_1.C0.LF] = function (parser, handler) { return handler.lineFeed(); }; +normalStateHandler[EscapeSequences_1.C0.VT] = normalStateHandler[EscapeSequences_1.C0.LF]; +normalStateHandler[EscapeSequences_1.C0.FF] = normalStateHandler[EscapeSequences_1.C0.LF]; +normalStateHandler[EscapeSequences_1.C0.CR] = function (parser, handler) { return handler.carriageReturn(); }; +normalStateHandler[EscapeSequences_1.C0.BS] = function (parser, handler) { return handler.backspace(); }; +normalStateHandler[EscapeSequences_1.C0.HT] = function (parser, handler) { return handler.tab(); }; +normalStateHandler[EscapeSequences_1.C0.SO] = function (parser, handler) { return handler.shiftOut(); }; +normalStateHandler[EscapeSequences_1.C0.SI] = function (parser, handler) { return handler.shiftIn(); }; +normalStateHandler[EscapeSequences_1.C0.ESC] = function (parser, handler) { return parser.setState(1); }; +var escapedStateHandler = {}; +escapedStateHandler['['] = function (parser, terminal) { + terminal.params = []; + terminal.currentParam = 0; + parser.setState(2); +}; +escapedStateHandler[']'] = function (parser, terminal) { + terminal.params = []; + terminal.currentParam = 0; + parser.setState(4); +}; +escapedStateHandler['P'] = function (parser, terminal) { + terminal.params = []; + terminal.currentParam = 0; + parser.setState(6); +}; +escapedStateHandler['_'] = function (parser, terminal) { + parser.setState(7); +}; +escapedStateHandler['^'] = function (parser, terminal) { + parser.setState(7); +}; +escapedStateHandler['c'] = function (parser, terminal) { + terminal.reset(); +}; +escapedStateHandler['E'] = function (parser, terminal) { + terminal.buffer.x = 0; + terminal.index(); + parser.setState(0); +}; +escapedStateHandler['D'] = function (parser, terminal) { + terminal.index(); + parser.setState(0); +}; +escapedStateHandler['M'] = function (parser, terminal) { + terminal.reverseIndex(); + parser.setState(0); +}; +escapedStateHandler['%'] = function (parser, terminal) { + terminal.setgLevel(0); + terminal.setgCharset(0, Charsets_1.DEFAULT_CHARSET); + parser.setState(0); + parser.skipNextChar(); +}; +escapedStateHandler[EscapeSequences_1.C0.CAN] = function (parser) { return parser.setState(0); }; +var csiParamStateHandler = {}; +csiParamStateHandler['?'] = function (parser) { return parser.setPrefix('?'); }; +csiParamStateHandler['>'] = function (parser) { return parser.setPrefix('>'); }; +csiParamStateHandler['!'] = function (parser) { return parser.setPrefix('!'); }; +csiParamStateHandler['0'] = function (parser) { return parser.setParam(parser.getParam() * 10); }; +csiParamStateHandler['1'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 1); }; +csiParamStateHandler['2'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 2); }; +csiParamStateHandler['3'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 3); }; +csiParamStateHandler['4'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 4); }; +csiParamStateHandler['5'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 5); }; +csiParamStateHandler['6'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 6); }; +csiParamStateHandler['7'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 7); }; +csiParamStateHandler['8'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 8); }; +csiParamStateHandler['9'] = function (parser) { return parser.setParam(parser.getParam() * 10 + 9); }; +csiParamStateHandler['$'] = function (parser) { return parser.setPostfix('$'); }; +csiParamStateHandler['"'] = function (parser) { return parser.setPostfix('"'); }; +csiParamStateHandler[' '] = function (parser) { return parser.setPostfix(' '); }; +csiParamStateHandler['\''] = function (parser) { return parser.setPostfix('\''); }; +csiParamStateHandler[';'] = function (parser) { return parser.finalizeParam(); }; +csiParamStateHandler[EscapeSequences_1.C0.CAN] = function (parser) { return parser.setState(0); }; +var csiStateHandler = {}; +csiStateHandler['@'] = function (handler, params, prefix) { return handler.insertChars(params); }; +csiStateHandler['A'] = function (handler, params, prefix) { return handler.cursorUp(params); }; +csiStateHandler['B'] = function (handler, params, prefix) { return handler.cursorDown(params); }; +csiStateHandler['C'] = function (handler, params, prefix) { return handler.cursorForward(params); }; +csiStateHandler['D'] = function (handler, params, prefix) { return handler.cursorBackward(params); }; +csiStateHandler['E'] = function (handler, params, prefix) { return handler.cursorNextLine(params); }; +csiStateHandler['F'] = function (handler, params, prefix) { return handler.cursorPrecedingLine(params); }; +csiStateHandler['G'] = function (handler, params, prefix) { return handler.cursorCharAbsolute(params); }; +csiStateHandler['H'] = function (handler, params, prefix) { return handler.cursorPosition(params); }; +csiStateHandler['I'] = function (handler, params, prefix) { return handler.cursorForwardTab(params); }; +csiStateHandler['J'] = function (handler, params, prefix) { return handler.eraseInDisplay(params); }; +csiStateHandler['K'] = function (handler, params, prefix) { return handler.eraseInLine(params); }; +csiStateHandler['L'] = function (handler, params, prefix) { return handler.insertLines(params); }; +csiStateHandler['M'] = function (handler, params, prefix) { return handler.deleteLines(params); }; +csiStateHandler['P'] = function (handler, params, prefix) { return handler.deleteChars(params); }; +csiStateHandler['S'] = function (handler, params, prefix) { return handler.scrollUp(params); }; +csiStateHandler['T'] = function (handler, params, prefix) { + if (params.length < 2 && !prefix) { + handler.scrollDown(params); + } +}; +csiStateHandler['X'] = function (handler, params, prefix) { return handler.eraseChars(params); }; +csiStateHandler['Z'] = function (handler, params, prefix) { return handler.cursorBackwardTab(params); }; +csiStateHandler['`'] = function (handler, params, prefix) { return handler.charPosAbsolute(params); }; +csiStateHandler['a'] = function (handler, params, prefix) { return handler.HPositionRelative(params); }; +csiStateHandler['b'] = function (handler, params, prefix) { return handler.repeatPrecedingCharacter(params); }; +csiStateHandler['c'] = function (handler, params, prefix) { return handler.sendDeviceAttributes(params); }; +csiStateHandler['d'] = function (handler, params, prefix) { return handler.linePosAbsolute(params); }; +csiStateHandler['e'] = function (handler, params, prefix) { return handler.VPositionRelative(params); }; +csiStateHandler['f'] = function (handler, params, prefix) { return handler.HVPosition(params); }; +csiStateHandler['g'] = function (handler, params, prefix) { return handler.tabClear(params); }; +csiStateHandler['h'] = function (handler, params, prefix) { return handler.setMode(params); }; +csiStateHandler['l'] = function (handler, params, prefix) { return handler.resetMode(params); }; +csiStateHandler['m'] = function (handler, params, prefix) { return handler.charAttributes(params); }; +csiStateHandler['n'] = function (handler, params, prefix) { return handler.deviceStatus(params); }; +csiStateHandler['p'] = function (handler, params, prefix) { + switch (prefix) { + case '!': + handler.softReset(params); + break; + } +}; +csiStateHandler['q'] = function (handler, params, prefix, postfix) { + if (postfix === ' ') { + handler.setCursorStyle(params); + } +}; +csiStateHandler['r'] = function (handler, params) { return handler.setScrollRegion(params); }; +csiStateHandler['s'] = function (handler, params) { return handler.saveCursor(params); }; +csiStateHandler['u'] = function (handler, params) { return handler.restoreCursor(params); }; +csiStateHandler[EscapeSequences_1.C0.CAN] = function (handler, params, prefix, postfix, parser) { return parser.setState(0); }; +var Parser = (function () { + function Parser(_inputHandler, _terminal) { + this._inputHandler = _inputHandler; + this._terminal = _terminal; + this._state = 0; + } + Parser.prototype.parse = function (data) { + var l = data.length; + var cs; + var ch; + var code; + var low; + var cursorStartX = this._terminal.buffer.x; + var cursorStartY = this._terminal.buffer.y; + if (this._terminal.debug) { + this._terminal.log('data: ' + data); + } + this._position = 0; + if (this._terminal.surrogate_high) { + data = this._terminal.surrogate_high + data; + this._terminal.surrogate_high = ''; + } + for (; this._position < l; this._position++) { + ch = data[this._position]; + code = data.charCodeAt(this._position); + if (0xD800 <= code && code <= 0xDBFF) { + low = data.charCodeAt(this._position + 1); + if (isNaN(low)) { + this._terminal.surrogate_high = ch; + continue; + } + code = ((code - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000; + ch += data.charAt(this._position + 1); + } + if (0xDC00 <= code && code <= 0xDFFF) { + continue; + } + switch (this._state) { + case 0: + if (ch in normalStateHandler) { + normalStateHandler[ch](this, this._inputHandler); + } + else { + this._inputHandler.addChar(ch, code); + } + break; + case 1: + if (ch in escapedStateHandler) { + escapedStateHandler[ch](this, this._terminal); + break; + } + switch (ch) { + case '(': + case ')': + case '*': + case '+': + case '-': + case '.': + switch (ch) { + case '(': + this._terminal.gcharset = 0; + break; + case ')': + this._terminal.gcharset = 1; + break; + case '*': + this._terminal.gcharset = 2; + break; + case '+': + this._terminal.gcharset = 3; + break; + case '-': + this._terminal.gcharset = 1; + break; + case '.': + this._terminal.gcharset = 2; + break; + } + this._state = 5; + break; + case '/': + this._terminal.gcharset = 3; + this._state = 5; + this._position--; + break; + case 'N': + this._state = 0; + break; + case 'O': + this._state = 0; + break; + case 'n': + this._terminal.setgLevel(2); + this._state = 0; + break; + case 'o': + this._terminal.setgLevel(3); + this._state = 0; + break; + case '|': + this._terminal.setgLevel(3); + this._state = 0; + break; + case '}': + this._terminal.setgLevel(2); + this._state = 0; + break; + case '~': + this._terminal.setgLevel(1); + this._state = 0; + break; + case '7': + this._inputHandler.saveCursor(); + this._state = 0; + break; + case '8': + this._inputHandler.restoreCursor(); + this._state = 0; + break; + case '#': + this._state = 0; + this._position++; + break; + case 'H': + this._terminal.tabSet(); + this._state = 0; + break; + case '=': + this._terminal.log('Serial port requested application keypad.'); + this._terminal.applicationKeypad = true; + if (this._terminal.viewport) { + this._terminal.viewport.syncScrollArea(); + } + this._state = 0; + break; + case '>': + this._terminal.log('Switching back to normal keypad.'); + this._terminal.applicationKeypad = false; + if (this._terminal.viewport) { + this._terminal.viewport.syncScrollArea(); + } + this._state = 0; + break; + default: + this._state = 0; + this._terminal.error('Unknown ESC control: %s.', ch); + break; + } + break; + case 5: + if (ch in Charsets_1.CHARSETS) { + cs = Charsets_1.CHARSETS[ch]; + if (ch === '/') { + this.skipNextChar(); + } + } + else { + cs = Charsets_1.DEFAULT_CHARSET; + } + this._terminal.setgCharset(this._terminal.gcharset, cs); + this._terminal.gcharset = null; + this._state = 0; + break; + case 4: + if (ch === EscapeSequences_1.C0.ESC || ch === EscapeSequences_1.C0.BEL) { + if (ch === EscapeSequences_1.C0.ESC) + this._position++; + this._terminal.params.push(this._terminal.currentParam); + switch (this._terminal.params[0]) { + case 0: + case 1: + case 2: + if (this._terminal.params[1]) { + this._terminal.title = this._terminal.params[1]; + this._terminal.handleTitle(this._terminal.title); + } + break; + case 3: + break; + case 4: + case 5: + break; + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + break; + case 46: + break; + case 50: + break; + case 51: + break; + case 52: + break; + case 104: + case 105: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + break; + } + this._terminal.params = []; + this._terminal.currentParam = 0; + this._state = 0; + } + else { + if (!this._terminal.params.length) { + if (ch >= '0' && ch <= '9') { + this._terminal.currentParam = + this._terminal.currentParam * 10 + ch.charCodeAt(0) - 48; + } + else if (ch === ';') { + this._terminal.params.push(this._terminal.currentParam); + this._terminal.currentParam = ''; + } + } + else { + this._terminal.currentParam += ch; + } + } + break; + case 2: + if (ch in csiParamStateHandler) { + csiParamStateHandler[ch](this); + break; + } + this.finalizeParam(); + this._state = 3; + case 3: + if (ch in csiStateHandler) { + if (this._terminal.debug) { + this._terminal.log("CSI " + (this._terminal.prefix ? this._terminal.prefix : '') + " " + (this._terminal.params ? this._terminal.params.join(';') : '') + " " + (this._terminal.postfix ? this._terminal.postfix : '') + " " + ch); + } + csiStateHandler[ch](this._inputHandler, this._terminal.params, this._terminal.prefix, this._terminal.postfix, this); + } + else { + this._terminal.error('Unknown CSI code: %s.', ch); + } + this._state = 0; + this._terminal.prefix = ''; + this._terminal.postfix = ''; + break; + case 6: + if (ch === EscapeSequences_1.C0.ESC || ch === EscapeSequences_1.C0.BEL) { + if (ch === EscapeSequences_1.C0.ESC) + this._position++; + var pt = void 0; + var valid = void 0; + switch (this._terminal.prefix) { + case '': + break; + case '$q': + pt = this._terminal.currentParam; + valid = false; + switch (pt) { + case '"q': + pt = '0"q'; + break; + case '"p': + pt = '61"p'; + break; + case 'r': + pt = '' + + (this._terminal.buffer.scrollTop + 1) + + ';' + + (this._terminal.buffer.scrollBottom + 1) + + 'r'; + break; + case 'm': + pt = '0m'; + break; + default: + this._terminal.error('Unknown DCS Pt: %s.', pt); + pt = ''; + break; + } + this._terminal.send(EscapeSequences_1.C0.ESC + 'P' + +valid + '$r' + pt + EscapeSequences_1.C0.ESC + '\\'); + break; + case '+p': + break; + case '+q': + pt = this._terminal.currentParam; + valid = false; + this._terminal.send(EscapeSequences_1.C0.ESC + 'P' + +valid + '+r' + pt + EscapeSequences_1.C0.ESC + '\\'); + break; + default: + this._terminal.error('Unknown DCS prefix: %s.', this._terminal.prefix); + break; + } + this._terminal.currentParam = 0; + this._terminal.prefix = ''; + this._state = 0; + } + else if (!this._terminal.currentParam) { + if (!this._terminal.prefix && ch !== '$' && ch !== '+') { + this._terminal.currentParam = ch; + } + else if (this._terminal.prefix.length === 2) { + this._terminal.currentParam = ch; + } + else { + this._terminal.prefix += ch; + } + } + else { + this._terminal.currentParam += ch; + } + break; + case 7: + if (ch === EscapeSequences_1.C0.ESC || ch === EscapeSequences_1.C0.BEL) { + if (ch === EscapeSequences_1.C0.ESC) + this._position++; + this._state = 0; + } + break; + } + } + if (this._terminal.buffer.x !== cursorStartX || this._terminal.buffer.y !== cursorStartY) { + this._terminal.emit('cursormove'); + } + return this._state; + }; + Parser.prototype.setState = function (state) { + this._state = state; + }; + Parser.prototype.setPrefix = function (prefix) { + this._terminal.prefix = prefix; + }; + Parser.prototype.setPostfix = function (postfix) { + this._terminal.postfix = postfix; + }; + Parser.prototype.setParam = function (param) { + this._terminal.currentParam = param; + }; + Parser.prototype.getParam = function () { + return this._terminal.currentParam; + }; + Parser.prototype.finalizeParam = function () { + this._terminal.params.push(this._terminal.currentParam); + this._terminal.currentParam = 0; + }; + Parser.prototype.skipNextChar = function () { + this._position++; + }; + return Parser; +}()); +exports.Parser = Parser; + + + +},{"./Charsets":5,"./EscapeSequences":7}],12:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var MouseHelper_1 = require("./utils/MouseHelper"); +var Browser = require("./shared/utils/Browser"); +var EventEmitter_1 = require("./EventEmitter"); +var SelectionModel_1 = require("./SelectionModel"); +var Buffer_1 = require("./Buffer"); +var AltClickHandler_1 = require("./handlers/AltClickHandler"); +var DRAG_SCROLL_MAX_THRESHOLD = 50; +var DRAG_SCROLL_MAX_SPEED = 15; +var DRAG_SCROLL_INTERVAL = 50; +var ALT_CLICK_MOVE_CURSOR_TIME = 500; +var WORD_SEPARATORS = ' ()[]{}\'"'; +var NON_BREAKING_SPACE_CHAR = String.fromCharCode(160); +var ALL_NON_BREAKING_SPACE_REGEX = new RegExp(NON_BREAKING_SPACE_CHAR, 'g'); +var SelectionManager = (function (_super) { + __extends(SelectionManager, _super); + function SelectionManager(_terminal, _charMeasure) { + var _this = _super.call(this) || this; + _this._terminal = _terminal; + _this._charMeasure = _charMeasure; + _this._enabled = true; + _this._initListeners(); + _this.enable(); + _this._model = new SelectionModel_1.SelectionModel(_terminal); + _this._activeSelectionMode = 0; + return _this; + } + Object.defineProperty(SelectionManager.prototype, "_buffer", { + get: function () { + return this._terminal.buffers.active; + }, + enumerable: true, + configurable: true + }); + SelectionManager.prototype._initListeners = function () { + var _this = this; + this._mouseMoveListener = function (event) { return _this._onMouseMove(event); }; + this._mouseUpListener = function (event) { return _this._onMouseUp(event); }; + this._trimListener = function (amount) { return _this._onTrim(amount); }; + this.initBuffersListeners(); + }; + SelectionManager.prototype.initBuffersListeners = function () { + var _this = this; + this._terminal.buffer.lines.on('trim', this._trimListener); + this._terminal.buffers.on('activate', function (e) { return _this._onBufferActivate(e); }); + }; + SelectionManager.prototype.disable = function () { + this.clearSelection(); + this._enabled = false; + }; + SelectionManager.prototype.enable = function () { + this._enabled = true; + }; + Object.defineProperty(SelectionManager.prototype, "selectionStart", { + get: function () { return this._model.finalSelectionStart; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SelectionManager.prototype, "selectionEnd", { + get: function () { return this._model.finalSelectionEnd; }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SelectionManager.prototype, "hasSelection", { + get: function () { + var start = this._model.finalSelectionStart; + var end = this._model.finalSelectionEnd; + if (!start || !end) { + return false; + } + return start[0] !== end[0] || start[1] !== end[1]; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(SelectionManager.prototype, "selectionText", { + get: function () { + var start = this._model.finalSelectionStart; + var end = this._model.finalSelectionEnd; + if (!start || !end) { + return ''; + } + var startRowEndCol = start[1] === end[1] ? end[0] : null; + var result = []; + result.push(this._buffer.translateBufferLineToString(start[1], true, start[0], startRowEndCol)); + for (var i = start[1] + 1; i <= end[1] - 1; i++) { + var bufferLine = this._buffer.lines.get(i); + var lineText = this._buffer.translateBufferLineToString(i, true); + if (bufferLine.isWrapped) { + result[result.length - 1] += lineText; + } + else { + result.push(lineText); + } + } + if (start[1] !== end[1]) { + var bufferLine = this._buffer.lines.get(end[1]); + var lineText = this._buffer.translateBufferLineToString(end[1], true, 0, end[0]); + if (bufferLine.isWrapped) { + result[result.length - 1] += lineText; + } + else { + result.push(lineText); + } + } + var formattedResult = result.map(function (line) { + return line.replace(ALL_NON_BREAKING_SPACE_REGEX, ' '); + }).join(Browser.isMSWindows ? '\r\n' : '\n'); + return formattedResult; + }, + enumerable: true, + configurable: true + }); + SelectionManager.prototype.clearSelection = function () { + this._model.clearSelection(); + this._removeMouseDownListeners(); + this.refresh(); + }; + SelectionManager.prototype.refresh = function (isNewSelection) { + var _this = this; + if (!this._refreshAnimationFrame) { + this._refreshAnimationFrame = window.requestAnimationFrame(function () { return _this._refresh(); }); + } + if (Browser.isLinux && isNewSelection) { + var selectionText = this.selectionText; + if (selectionText.length) { + this.emit('newselection', this.selectionText); + } + } + }; + SelectionManager.prototype._refresh = function () { + this._refreshAnimationFrame = null; + this.emit('refresh', { start: this._model.finalSelectionStart, end: this._model.finalSelectionEnd }); + }; + SelectionManager.prototype.isClickInSelection = function (event) { + var coords = this._getMouseBufferCoords(event); + var start = this._model.finalSelectionStart; + var end = this._model.finalSelectionEnd; + if (!start || !end) { + return false; + } + return (coords[1] > start[1] && coords[1] < end[1]) || + (start[1] === end[1] && coords[1] === start[1] && coords[0] > start[0] && coords[0] < end[0]) || + (start[1] < end[1] && coords[1] === end[1] && coords[0] < end[0]); + }; + SelectionManager.prototype.selectWordAtCursor = function (event) { + var coords = this._getMouseBufferCoords(event); + if (coords) { + this._selectWordAt(coords, false); + this._model.selectionEnd = null; + this.refresh(true); + } + }; + SelectionManager.prototype.selectAll = function () { + this._model.isSelectAllActive = true; + this.refresh(); + this._terminal.emit('selection'); + }; + SelectionManager.prototype.selectLines = function (start, end) { + this._model.clearSelection(); + start = Math.max(start, 0); + end = Math.min(end, this._terminal.buffer.lines.length - 1); + this._model.selectionStart = [0, start]; + this._model.selectionEnd = [this._terminal.cols, end]; + this.refresh(); + this._terminal.emit('selection'); + }; + SelectionManager.prototype._onTrim = function (amount) { + var needsRefresh = this._model.onTrim(amount); + if (needsRefresh) { + this.refresh(); + } + }; + SelectionManager.prototype._getMouseBufferCoords = function (event) { + var coords = this._terminal.mouseHelper.getCoords(event, this._terminal.screenElement, this._charMeasure, this._terminal.options.lineHeight, this._terminal.cols, this._terminal.rows, true); + if (!coords) { + return null; + } + coords[0]--; + coords[1]--; + coords[1] += this._terminal.buffer.ydisp; + return coords; + }; + SelectionManager.prototype._getMouseEventScrollAmount = function (event) { + var offset = MouseHelper_1.MouseHelper.getCoordsRelativeToElement(event, this._terminal.screenElement)[1]; + var terminalHeight = this._terminal.rows * Math.ceil(this._charMeasure.height * this._terminal.options.lineHeight); + if (offset >= 0 && offset <= terminalHeight) { + return 0; + } + if (offset > terminalHeight) { + offset -= terminalHeight; + } + offset = Math.min(Math.max(offset, -DRAG_SCROLL_MAX_THRESHOLD), DRAG_SCROLL_MAX_THRESHOLD); + offset /= DRAG_SCROLL_MAX_THRESHOLD; + return (offset / Math.abs(offset)) + Math.round(offset * (DRAG_SCROLL_MAX_SPEED - 1)); + }; + SelectionManager.prototype.shouldForceSelection = function (event) { + return Browser.isMac ? event.altKey : event.shiftKey; + }; + SelectionManager.prototype.onMouseDown = function (event) { + this._mouseDownTimeStamp = event.timeStamp; + if (event.button === 2 && this.hasSelection) { + return; + } + if (event.button !== 0) { + return; + } + if (!this._enabled) { + if (!this.shouldForceSelection(event)) { + return; + } + event.stopPropagation(); + } + event.preventDefault(); + this._dragScrollAmount = 0; + if (this._enabled && event.shiftKey) { + this._onIncrementalClick(event); + } + else { + if (event.detail === 1) { + this._onSingleClick(event); + } + else if (event.detail === 2) { + this._onDoubleClick(event); + } + else if (event.detail === 3) { + this._onTripleClick(event); + } + } + this._addMouseDownListeners(); + this.refresh(true); + }; + SelectionManager.prototype._addMouseDownListeners = function () { + var _this = this; + this._terminal.element.ownerDocument.addEventListener('mousemove', this._mouseMoveListener); + this._terminal.element.ownerDocument.addEventListener('mouseup', this._mouseUpListener); + this._dragScrollIntervalTimer = setInterval(function () { return _this._dragScroll(); }, DRAG_SCROLL_INTERVAL); + }; + SelectionManager.prototype._removeMouseDownListeners = function () { + this._terminal.element.ownerDocument.removeEventListener('mousemove', this._mouseMoveListener); + this._terminal.element.ownerDocument.removeEventListener('mouseup', this._mouseUpListener); + clearInterval(this._dragScrollIntervalTimer); + this._dragScrollIntervalTimer = null; + }; + SelectionManager.prototype._onIncrementalClick = function (event) { + if (this._model.selectionStart) { + this._model.selectionEnd = this._getMouseBufferCoords(event); + } + }; + SelectionManager.prototype._onSingleClick = function (event) { + this._model.selectionStartLength = 0; + this._model.isSelectAllActive = false; + this._activeSelectionMode = 0; + this._model.selectionStart = this._getMouseBufferCoords(event); + if (!this._model.selectionStart) { + return; + } + this._model.selectionEnd = null; + var line = this._buffer.lines.get(this._model.selectionStart[1]); + if (!line) { + return; + } + if (line.length >= this._model.selectionStart[0]) { + return; + } + var char = line[this._model.selectionStart[0]]; + if (char[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0) { + this._model.selectionStart[0]++; + } + }; + SelectionManager.prototype._onDoubleClick = function (event) { + var coords = this._getMouseBufferCoords(event); + if (coords) { + this._activeSelectionMode = 1; + this._selectWordAt(coords, true); + } + }; + SelectionManager.prototype._onTripleClick = function (event) { + var coords = this._getMouseBufferCoords(event); + if (coords) { + this._activeSelectionMode = 2; + this._selectLineAt(coords[1]); + } + }; + SelectionManager.prototype._onMouseMove = function (event) { + event.stopImmediatePropagation(); + var previousSelectionEnd = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null; + this._model.selectionEnd = this._getMouseBufferCoords(event); + if (!this._model.selectionEnd) { + this.refresh(true); + return; + } + if (this._activeSelectionMode === 2) { + if (this._model.selectionEnd[1] < this._model.selectionStart[1]) { + this._model.selectionEnd[0] = 0; + } + else { + this._model.selectionEnd[0] = this._terminal.cols; + } + } + else if (this._activeSelectionMode === 1) { + this._selectToWordAt(this._model.selectionEnd); + } + this._dragScrollAmount = this._getMouseEventScrollAmount(event); + if (this._dragScrollAmount > 0) { + this._model.selectionEnd[0] = this._terminal.cols; + } + else if (this._dragScrollAmount < 0) { + this._model.selectionEnd[0] = 0; + } + if (this._model.selectionEnd[1] < this._buffer.lines.length) { + var char = this._buffer.lines.get(this._model.selectionEnd[1])[this._model.selectionEnd[0]]; + if (char && char[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0) { + this._model.selectionEnd[0]++; + } + } + if (!previousSelectionEnd || + previousSelectionEnd[0] !== this._model.selectionEnd[0] || + previousSelectionEnd[1] !== this._model.selectionEnd[1]) { + this.refresh(true); + } + }; + SelectionManager.prototype._dragScroll = function () { + if (this._dragScrollAmount) { + this._terminal.scrollLines(this._dragScrollAmount, false); + if (this._dragScrollAmount > 0) { + this._model.selectionEnd = [this._terminal.cols - 1, Math.min(this._terminal.buffer.ydisp + this._terminal.rows, this._terminal.buffer.lines.length - 1)]; + } + else { + this._model.selectionEnd = [0, this._terminal.buffer.ydisp]; + } + this.refresh(); + } + }; + SelectionManager.prototype._onMouseUp = function (event) { + var timeElapsed = event.timeStamp - this._mouseDownTimeStamp; + this._removeMouseDownListeners(); + if (this.selectionText.length <= 1 && timeElapsed < ALT_CLICK_MOVE_CURSOR_TIME) { + (new AltClickHandler_1.AltClickHandler(event, this._terminal)).move(); + } + else if (this.hasSelection) { + this._terminal.emit('selection'); + } + }; + SelectionManager.prototype._onBufferActivate = function (e) { + this.clearSelection(); + e.inactiveBuffer.lines.off('trim', this._trimListener); + e.activeBuffer.lines.on('trim', this._trimListener); + }; + SelectionManager.prototype._convertViewportColToCharacterIndex = function (bufferLine, coords) { + var charIndex = coords[0]; + for (var i = 0; coords[0] >= i; i++) { + var char = bufferLine[i]; + if (char[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0) { + charIndex--; + } + else if (char[Buffer_1.CHAR_DATA_CHAR_INDEX].length > 1 && coords[0] !== i) { + charIndex += char[Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + } + } + return charIndex; + }; + SelectionManager.prototype.setSelection = function (col, row, length) { + this._model.clearSelection(); + this._removeMouseDownListeners(); + this._model.selectionStart = [col, row]; + this._model.selectionStartLength = length; + this.refresh(); + }; + SelectionManager.prototype._getWordAt = function (coords, allowWhitespaceOnlySelection) { + if (coords[0] >= this._terminal.cols) { + return null; + } + var bufferLine = this._buffer.lines.get(coords[1]); + if (!bufferLine) { + return null; + } + var line = this._buffer.translateBufferLineToString(coords[1], false); + var startIndex = this._convertViewportColToCharacterIndex(bufferLine, coords); + var endIndex = startIndex; + var charOffset = coords[0] - startIndex; + var leftWideCharCount = 0; + var rightWideCharCount = 0; + var leftLongCharOffset = 0; + var rightLongCharOffset = 0; + if (line.charAt(startIndex) === ' ') { + while (startIndex > 0 && line.charAt(startIndex - 1) === ' ') { + startIndex--; + } + while (endIndex < line.length && line.charAt(endIndex + 1) === ' ') { + endIndex++; + } + } + else { + var startCol = coords[0]; + var endCol = coords[0]; + if (bufferLine[startCol][Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0) { + leftWideCharCount++; + startCol--; + } + if (bufferLine[endCol][Buffer_1.CHAR_DATA_WIDTH_INDEX] === 2) { + rightWideCharCount++; + endCol++; + } + if (bufferLine[endCol][Buffer_1.CHAR_DATA_CHAR_INDEX].length > 1) { + rightLongCharOffset += bufferLine[endCol][Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + endIndex += bufferLine[endCol][Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + } + while (startCol > 0 && startIndex > 0 && !this._isCharWordSeparator(bufferLine[startCol - 1])) { + var char = bufferLine[startCol - 1]; + if (char[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0) { + leftWideCharCount++; + startCol--; + } + else if (char[Buffer_1.CHAR_DATA_CHAR_INDEX].length > 1) { + leftLongCharOffset += char[Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + startIndex -= char[Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + } + startIndex--; + startCol--; + } + while (endCol < bufferLine.length && endIndex + 1 < line.length && !this._isCharWordSeparator(bufferLine[endCol + 1])) { + var char = bufferLine[endCol + 1]; + if (char[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 2) { + rightWideCharCount++; + endCol++; + } + else if (char[Buffer_1.CHAR_DATA_CHAR_INDEX].length > 1) { + rightLongCharOffset += char[Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + endIndex += char[Buffer_1.CHAR_DATA_CHAR_INDEX].length - 1; + } + endIndex++; + endCol++; + } + } + endIndex++; + var start = startIndex + + charOffset + - leftWideCharCount + + leftLongCharOffset; + var length = Math.min(this._terminal.cols, endIndex + - startIndex + + leftWideCharCount + + rightWideCharCount + - leftLongCharOffset + - rightLongCharOffset); + if (!allowWhitespaceOnlySelection && line.slice(startIndex, endIndex).trim() === '') { + return null; + } + return { start: start, length: length }; + }; + SelectionManager.prototype._selectWordAt = function (coords, allowWhitespaceOnlySelection) { + var wordPosition = this._getWordAt(coords, allowWhitespaceOnlySelection); + if (wordPosition) { + this._model.selectionStart = [wordPosition.start, coords[1]]; + this._model.selectionStartLength = wordPosition.length; + } + }; + SelectionManager.prototype._selectToWordAt = function (coords) { + var wordPosition = this._getWordAt(coords, true); + if (wordPosition) { + this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? wordPosition.start : (wordPosition.start + wordPosition.length), coords[1]]; + } + }; + SelectionManager.prototype._isCharWordSeparator = function (charData) { + if (charData[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0) { + return false; + } + return WORD_SEPARATORS.indexOf(charData[Buffer_1.CHAR_DATA_CHAR_INDEX]) >= 0; + }; + SelectionManager.prototype._selectLineAt = function (line) { + this._model.selectionStart = [0, line]; + this._model.selectionStartLength = this._terminal.cols; + }; + return SelectionManager; +}(EventEmitter_1.EventEmitter)); +exports.SelectionManager = SelectionManager; + + + +},{"./Buffer":2,"./EventEmitter":8,"./SelectionModel":13,"./handlers/AltClickHandler":18,"./shared/utils/Browser":34,"./utils/MouseHelper":39}],13:[function(require,module,exports){ +"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()) { + return [this.selectionStart[0] + this.selectionStartLength, 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; + + + +},{}],14:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_BELL_SOUND = 'data:audio/wav;base64,UklGRigBAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQQBAADpAFgCwAMlBZoG/wdmCcoKRAypDQ8PbRDBEQQTOxRtFYcWlBePGIUZXhoiG88bcBz7HHIdzh0WHlMeZx51HmkeUx4WHs8dah0AHXwc3hs9G4saxRnyGBIYGBcQFv8U4RPAEoYRQBACD70NWwwHC6gJOwjWBloF7gOBAhABkf8b/qv8R/ve+Xf4Ife79W/0JfPZ8Z/wde9N7ijtE+wU6xvqM+lb6H7nw+YX5mrlxuQz5Mzje+Ma49fioeKD4nXiYeJy4pHitOL04j/jn+MN5IPkFOWs5U3mDefM55/ogOl36m7rdOyE7abuyu8D8Unyj/Pg9D/2qfcb+Yn6/vuK/Qj/lAAlAg=='; +var SoundManager = (function () { + function SoundManager(_terminal) { + this._terminal = _terminal; + } + SoundManager.prototype.playBellSound = function () { + var audioContextCtor = window.AudioContext || window.webkitAudioContext; + if (!this._audioContext && audioContextCtor) { + this._audioContext = new audioContextCtor(); + } + if (this._audioContext) { + var bellAudioSource_1 = this._audioContext.createBufferSource(); + var context_1 = this._audioContext; + this._audioContext.decodeAudioData(this._base64ToArrayBuffer(this._removeMimeType(this._terminal.options.bellSound)), function (buffer) { + bellAudioSource_1.buffer = buffer; + bellAudioSource_1.connect(context_1.destination); + bellAudioSource_1.start(0); + }); + } + else { + console.warn('Sorry, but the Web Audio API is not supported by your browser. Please, consider upgrading to the latest version'); + } + }; + SoundManager.prototype._base64ToArrayBuffer = function (base64) { + var binaryString = window.atob(base64); + var len = binaryString.length; + var bytes = new Uint8Array(len); + for (var i = 0; i < len; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + return bytes.buffer; + }; + SoundManager.prototype._removeMimeType = function (dataURI) { + var splitUri = dataURI.split(','); + return splitUri[1]; + }; + return SoundManager; +}()); +exports.SoundManager = SoundManager; + + + +},{}],15:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.blankLine = 'Blank line'; +exports.promptLabel = 'Terminal input'; +exports.tooMuchOutput = 'Too much output to announce, navigate to rows manually to read'; + + + +},{}],16:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var BufferSet_1 = require("./BufferSet"); +var Buffer_1 = require("./Buffer"); +var CompositionHelper_1 = require("./CompositionHelper"); +var EventEmitter_1 = require("./EventEmitter"); +var Viewport_1 = require("./Viewport"); +var Clipboard_1 = require("./handlers/Clipboard"); +var EscapeSequences_1 = require("./EscapeSequences"); +var InputHandler_1 = require("./InputHandler"); +var Parser_1 = require("./Parser"); +var Renderer_1 = require("./renderer/Renderer"); +var Linkifier_1 = require("./Linkifier"); +var SelectionManager_1 = require("./SelectionManager"); +var CharMeasure_1 = require("./utils/CharMeasure"); +var Browser = require("./shared/utils/Browser"); +var Dom = require("./utils/Dom"); +var Strings = require("./Strings"); +var MouseHelper_1 = require("./utils/MouseHelper"); +var Clone_1 = require("./utils/Clone"); +var SoundManager_1 = require("./SoundManager"); +var ColorManager_1 = require("./renderer/ColorManager"); +var MouseZoneManager_1 = require("./input/MouseZoneManager"); +var AccessibilityManager_1 = require("./AccessibilityManager"); +var ScreenDprMonitor_1 = require("./utils/ScreenDprMonitor"); +var CharAtlas_1 = require("./renderer/atlas/CharAtlas"); +var KEYCODE_KEY_MAPPINGS = { + 48: ['0', ')'], + 49: ['1', '!'], + 50: ['2', '@'], + 51: ['3', '#'], + 52: ['4', '$'], + 53: ['5', '%'], + 54: ['6', '^'], + 55: ['7', '&'], + 56: ['8', '*'], + 57: ['9', '('], + 186: [';', ':'], + 187: ['=', '+'], + 188: [',', '<'], + 189: ['-', '_'], + 190: ['.', '>'], + 191: ['/', '?'], + 192: ['`', '~'], + 219: ['[', '{'], + 220: ['\\', '|'], + 221: [']', '}'], + 222: ['\'', '"'] +}; +var document = (typeof window !== 'undefined') ? window.document : null; +var WRITE_BUFFER_PAUSE_THRESHOLD = 5; +var WRITE_BATCH_SIZE = 300; +var DEFAULT_OPTIONS = { + cols: 80, + rows: 24, + convertEol: false, + termName: 'xterm', + cursorBlink: false, + cursorStyle: 'block', + bellSound: SoundManager_1.DEFAULT_BELL_SOUND, + bellStyle: 'none', + drawBoldTextInBrightColors: true, + enableBold: true, + fontFamily: 'courier-new, courier, monospace', + fontSize: 15, + fontWeight: 'normal', + fontWeightBold: 'bold', + lineHeight: 1.0, + letterSpacing: 0, + scrollback: 1000, + screenKeys: false, + screenReaderMode: false, + debug: false, + macOptionIsMeta: false, + cancelEvents: false, + disableStdin: false, + useFlowControl: false, + allowTransparency: false, + tabStopWidth: 8, + theme: null, + rightClickSelectsWord: Browser.isMac +}; +var Terminal = (function (_super) { + __extends(Terminal, _super); + function Terminal(options) { + if (options === void 0) { options = {}; } + var _this = _super.call(this) || this; + _this.browser = Browser; + _this.options = Clone_1.clone(options); + _this._setup(); + return _this; + } + Terminal.prototype.dispose = function () { + _super.prototype.dispose.call(this); + this._disposables.forEach(function (d) { return d.dispose(); }); + this._disposables.length = 0; + CharAtlas_1.removeTerminalFromCache(this); + this.handler = function () { }; + this.write = function () { }; + if (this.element && this.element.parentNode) { + this.element.parentNode.removeChild(this.element); + } + }; + Terminal.prototype.destroy = function () { + this.dispose(); + }; + Terminal.prototype._setup = function () { + var _this = this; + this._disposables = []; + Object.keys(DEFAULT_OPTIONS).forEach(function (key) { + if (_this.options[key] == null) { + _this.options[key] = DEFAULT_OPTIONS[key]; + } + _this[key] = _this.options[key]; + }); + this._parent = document ? document.body : null; + this.cols = this.options.cols; + this.rows = this.options.rows; + if (this.options.handler) { + this.on('data', this.options.handler); + } + this.cursorState = 0; + this.cursorHidden = false; + this._sendDataQueue = ''; + this._customKeyEventHandler = null; + this.applicationKeypad = false; + this.applicationCursor = false; + this.originMode = false; + this.insertMode = false; + this.wraparoundMode = true; + this.bracketedPasteMode = false; + this.charset = null; + this.gcharset = null; + this.glevel = 0; + this.charsets = [null]; + this.defAttr = (0 << 18) | (257 << 9) | (256 << 0); + this.curAttr = (0 << 18) | (257 << 9) | (256 << 0); + this.params = []; + this.currentParam = 0; + this.prefix = ''; + this.postfix = ''; + this.writeBuffer = []; + this._writeInProgress = false; + this._xoffSentToCatchUp = false; + this._userScrolling = false; + this._inputHandler = new InputHandler_1.InputHandler(this); + this._parser = new Parser_1.Parser(this._inputHandler, this); + this.renderer = this.renderer || null; + this.selectionManager = this.selectionManager || null; + this.linkifier = this.linkifier || new Linkifier_1.Linkifier(this); + this._mouseZoneManager = this._mouseZoneManager || null; + this.soundManager = this.soundManager || new SoundManager_1.SoundManager(this); + this.buffers = new BufferSet_1.BufferSet(this); + if (this.selectionManager) { + this.selectionManager.clearSelection(); + this.selectionManager.initBuffersListeners(); + } + }; + Object.defineProperty(Terminal.prototype, "buffer", { + get: function () { + return this.buffers.active; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Terminal, "strings", { + get: function () { + return Strings; + }, + enumerable: true, + configurable: true + }); + Terminal.prototype.eraseAttr = function () { + return (this.defAttr & ~0x1ff) | (this.curAttr & 0x1ff); + }; + Terminal.prototype.focus = function () { + if (this.textarea) { + this.textarea.focus(); + } + }; + Object.defineProperty(Terminal.prototype, "isFocused", { + get: function () { + return document.activeElement === this.textarea; + }, + enumerable: true, + configurable: true + }); + Terminal.prototype.getOption = function (key) { + if (!(key in DEFAULT_OPTIONS)) { + throw new Error('No option with key "' + key + '"'); + } + if (typeof this.options[key] !== 'undefined') { + return this.options[key]; + } + return this[key]; + }; + Terminal.prototype.setOption = function (key, value) { + if (!(key in DEFAULT_OPTIONS)) { + throw new Error('No option with key "' + key + '"'); + } + switch (key) { + case 'bellStyle': + if (!value) { + value = 'none'; + } + break; + case 'cursorStyle': + if (!value) { + value = 'block'; + } + break; + case 'fontWeight': + if (!value) { + value = 'normal'; + } + break; + case 'fontWeightBold': + if (!value) { + value = 'bold'; + } + break; + case 'lineHeight': + if (value < 1) { + console.warn(key + " cannot be less than 1, value: " + value); + return; + } + case 'tabStopWidth': + if (value < 1) { + console.warn(key + " cannot be less than 1, value: " + value); + return; + } + break; + case 'theme': + if (this.renderer) { + this._setTheme(value); + return; + } + break; + case 'scrollback': + value = Math.min(value, Buffer_1.MAX_BUFFER_SIZE); + if (value < 0) { + console.warn(key + " cannot be less than 0, value: " + value); + return; + } + if (this.options[key] !== value) { + var newBufferLength = this.rows + value; + if (this.buffer.lines.length > newBufferLength) { + var amountToTrim = this.buffer.lines.length - newBufferLength; + var needsRefresh = (this.buffer.ydisp - amountToTrim < 0); + this.buffer.lines.trimStart(amountToTrim); + this.buffer.ybase = Math.max(this.buffer.ybase - amountToTrim, 0); + this.buffer.ydisp = Math.max(this.buffer.ydisp - amountToTrim, 0); + if (needsRefresh) { + this.refresh(0, this.rows - 1); + } + } + } + break; + } + this[key] = value; + this.options[key] = value; + switch (key) { + case 'fontFamily': + case 'fontSize': + if (this.renderer) { + this.renderer.clear(); + this.charMeasure.measure(this.options); + } + break; + case 'enableBold': + case 'letterSpacing': + case 'lineHeight': + case 'fontWeight': + case 'fontWeightBold': + if (this.renderer) { + this.renderer.clear(); + this.renderer.onResize(this.cols, this.rows); + this.refresh(0, this.rows - 1); + } + case 'scrollback': + this.buffers.resize(this.cols, this.rows); + if (this.viewport) { + this.viewport.syncScrollArea(); + } + break; + case 'screenReaderMode': + if (value) { + if (!this._accessibilityManager) { + this._accessibilityManager = new AccessibilityManager_1.AccessibilityManager(this); + } + } + else { + if (this._accessibilityManager) { + this._accessibilityManager.dispose(); + this._accessibilityManager = null; + } + } + break; + case 'tabStopWidth': + this.buffers.setupTabStops(); + break; + } + if (this.renderer) { + this.renderer.onOptionsChanged(); + } + }; + Terminal.prototype._onTextAreaFocus = function () { + if (this.sendFocus) { + this.send(EscapeSequences_1.C0.ESC + '[I'); + } + this.element.classList.add('focus'); + this.showCursor(); + this.emit('focus'); + }; + Terminal.prototype.blur = function () { + return this.textarea.blur(); + }; + Terminal.prototype._onTextAreaBlur = function () { + this.textarea.value = ''; + this.refresh(this.buffer.y, this.buffer.y); + if (this.sendFocus) { + this.send(EscapeSequences_1.C0.ESC + '[O'); + } + this.element.classList.remove('focus'); + this.emit('blur'); + }; + Terminal.prototype._initGlobal = function () { + var _this = this; + this._bindKeys(); + on(this.element, 'copy', function (event) { + if (!_this.hasSelection()) { + return; + } + Clipboard_1.copyHandler(event, _this, _this.selectionManager); + }); + var pasteHandlerWrapper = function (event) { return Clipboard_1.pasteHandler(event, _this); }; + on(this.textarea, 'paste', pasteHandlerWrapper); + on(this.element, 'paste', pasteHandlerWrapper); + if (Browser.isFirefox) { + on(this.element, 'mousedown', function (event) { + if (event.button === 2) { + Clipboard_1.rightClickHandler(event, _this.textarea, _this.selectionManager, _this.options.rightClickSelectsWord); + } + }); + } + else { + on(this.element, 'contextmenu', function (event) { + Clipboard_1.rightClickHandler(event, _this.textarea, _this.selectionManager, _this.options.rightClickSelectsWord); + }); + } + if (Browser.isLinux) { + on(this.element, 'auxclick', function (event) { + if (event.button === 1) { + Clipboard_1.moveTextAreaUnderMouseCursor(event, _this.textarea); + } + }); + } + }; + Terminal.prototype._bindKeys = function () { + var _this = this; + var self = this; + on(this.element, 'keydown', function (ev) { + if (document.activeElement !== this) { + return; + } + self._keyDown(ev); + }, true); + on(this.element, 'keypress', function (ev) { + if (document.activeElement !== this) { + return; + } + self._keyPress(ev); + }, true); + on(this.element, 'keyup', function (ev) { + if (!wasMondifierKeyOnlyEvent(ev)) { + _this.focus(); + } + }, true); + on(this.textarea, 'keydown', function (ev) { return _this._keyDown(ev); }, true); + on(this.textarea, 'keypress', function (ev) { return _this._keyPress(ev); }, true); + on(this.textarea, 'compositionstart', function () { return _this._compositionHelper.compositionstart(); }); + on(this.textarea, 'compositionupdate', function (e) { return _this._compositionHelper.compositionupdate(e); }); + on(this.textarea, 'compositionend', function () { return _this._compositionHelper.compositionend(); }); + this.on('refresh', function () { return _this._compositionHelper.updateCompositionElements(); }); + this.on('refresh', function (data) { return _this._queueLinkification(data.start, data.end); }); + }; + Terminal.prototype.open = function (parent) { + var _this = this; + this._parent = parent || this._parent; + if (!this._parent) { + throw new Error('Terminal requires a parent element.'); + } + this._context = this._parent.ownerDocument.defaultView; + this._document = this._parent.ownerDocument; + this._screenDprMonitor = new ScreenDprMonitor_1.ScreenDprMonitor(); + this._screenDprMonitor.setListener(function () { return _this.emit('dprchange', window.devicePixelRatio); }); + this.element = this._document.createElement('div'); + this.element.dir = 'ltr'; + this.element.classList.add('terminal'); + this.element.classList.add('xterm'); + this.element.setAttribute('tabindex', '0'); + this._parent.appendChild(this.element); + var fragment = document.createDocumentFragment(); + this._viewportElement = document.createElement('div'); + this._viewportElement.classList.add('xterm-viewport'); + fragment.appendChild(this._viewportElement); + this._viewportScrollArea = document.createElement('div'); + this._viewportScrollArea.classList.add('xterm-scroll-area'); + this._viewportElement.appendChild(this._viewportScrollArea); + this.screenElement = document.createElement('div'); + this.screenElement.classList.add('xterm-screen'); + this._helperContainer = document.createElement('div'); + this._helperContainer.classList.add('xterm-helpers'); + this.screenElement.appendChild(this._helperContainer); + fragment.appendChild(this.screenElement); + this._mouseZoneManager = new MouseZoneManager_1.MouseZoneManager(this); + this.on('scroll', function () { return _this._mouseZoneManager.clearAll(); }); + this.linkifier.attachToDom(this._mouseZoneManager); + this.textarea = document.createElement('textarea'); + this.textarea.classList.add('xterm-helper-textarea'); + this.textarea.setAttribute('aria-label', Strings.promptLabel); + this.textarea.setAttribute('aria-multiline', 'false'); + this.textarea.setAttribute('autocorrect', 'off'); + this.textarea.setAttribute('autocapitalize', 'off'); + this.textarea.setAttribute('spellcheck', 'false'); + this.textarea.tabIndex = 0; + this.textarea.addEventListener('focus', function () { return _this._onTextAreaFocus(); }); + this.textarea.addEventListener('blur', function () { return _this._onTextAreaBlur(); }); + this._helperContainer.appendChild(this.textarea); + this._compositionView = document.createElement('div'); + this._compositionView.classList.add('composition-view'); + this._compositionHelper = new CompositionHelper_1.CompositionHelper(this.textarea, this._compositionView, this); + this._helperContainer.appendChild(this._compositionView); + this.charMeasure = new CharMeasure_1.CharMeasure(document, this._helperContainer); + this.element.appendChild(fragment); + this.renderer = new Renderer_1.Renderer(this, this.options.theme); + this.options.theme = null; + this.viewport = new Viewport_1.Viewport(this, this._viewportElement, this._viewportScrollArea, this.charMeasure); + this.viewport.onThemeChanged(this.renderer.colorManager.colors); + this.on('cursormove', function () { return _this.renderer.onCursorMove(); }); + this.on('resize', function () { return _this.renderer.onResize(_this.cols, _this.rows); }); + this.on('blur', function () { return _this.renderer.onBlur(); }); + this.on('focus', function () { return _this.renderer.onFocus(); }); + this.on('dprchange', function () { return _this.renderer.onWindowResize(window.devicePixelRatio); }); + this._disposables.push(Dom.addDisposableListener(window, 'resize', function () { return _this.renderer.onWindowResize(window.devicePixelRatio); })); + this.charMeasure.on('charsizechanged', function () { return _this.renderer.onResize(_this.cols, _this.rows); }); + this.renderer.on('resize', function (dimensions) { return _this.viewport.syncScrollArea(); }); + this.selectionManager = new SelectionManager_1.SelectionManager(this, this.charMeasure); + this.element.addEventListener('mousedown', function (e) { return _this.selectionManager.onMouseDown(e); }); + this.selectionManager.on('refresh', function (data) { return _this.renderer.onSelectionChanged(data.start, data.end); }); + this.selectionManager.on('newselection', function (text) { + _this.textarea.value = text; + _this.textarea.focus(); + _this.textarea.select(); + }); + this.on('scroll', function () { + _this.viewport.syncScrollArea(); + _this.selectionManager.refresh(); + }); + this._viewportElement.addEventListener('scroll', function () { return _this.selectionManager.refresh(); }); + this.mouseHelper = new MouseHelper_1.MouseHelper(this.renderer); + if (this.options.screenReaderMode) { + this._accessibilityManager = new AccessibilityManager_1.AccessibilityManager(this); + } + this.charMeasure.measure(this.options); + this.refresh(0, this.rows - 1); + this._initGlobal(); + this.bindMouse(); + }; + Terminal.prototype._setTheme = function (theme) { + var colors = this.renderer.setTheme(theme); + if (this.viewport) { + this.viewport.onThemeChanged(colors); + } + }; + Terminal.applyAddon = function (addon) { + addon.apply(Terminal); + }; + Terminal.prototype.bindMouse = function () { + var _this = this; + var el = this.element; + var self = this; + var pressed = 32; + function sendButton(ev) { + var button; + var pos; + button = getButton(ev); + pos = self.mouseHelper.getRawByteCoords(ev, self.screenElement, self.charMeasure, self.options.lineHeight, self.cols, self.rows); + if (!pos) + return; + sendEvent(button, pos); + switch (ev.overrideType || ev.type) { + case 'mousedown': + pressed = button; + break; + case 'mouseup': + pressed = 32; + break; + case 'wheel': + break; + } + } + function sendMove(ev) { + var button = pressed; + var pos = self.mouseHelper.getRawByteCoords(ev, self.screenElement, self.charMeasure, self.options.lineHeight, self.cols, self.rows); + if (!pos) + return; + button += 32; + sendEvent(button, pos); + } + function encode(data, ch) { + if (!self.utfMouse) { + if (ch === 255) { + data.push(0); + return; + } + if (ch > 127) + ch = 127; + data.push(ch); + } + else { + if (ch === 2047) { + data.push(0); + return; + } + if (ch < 127) { + data.push(ch); + } + else { + if (ch > 2047) + ch = 2047; + data.push(0xC0 | (ch >> 6)); + data.push(0x80 | (ch & 0x3F)); + } + } + } + function sendEvent(button, pos) { + if (self._vt300Mouse) { + button &= 3; + pos.x -= 32; + pos.y -= 32; + var data_1 = EscapeSequences_1.C0.ESC + '[24'; + if (button === 0) + data_1 += '1'; + else if (button === 1) + data_1 += '3'; + else if (button === 2) + data_1 += '5'; + else if (button === 3) + return; + else + data_1 += '0'; + data_1 += '~[' + pos.x + ',' + pos.y + ']\r'; + self.send(data_1); + return; + } + if (self._decLocator) { + button &= 3; + pos.x -= 32; + pos.y -= 32; + if (button === 0) + button = 2; + else if (button === 1) + button = 4; + else if (button === 2) + button = 6; + else if (button === 3) + button = 3; + self.send(EscapeSequences_1.C0.ESC + '[' + + button + + ';' + + (button === 3 ? 4 : 0) + + ';' + + pos.y + + ';' + + pos.x + + ';' + + pos.page || 0 + + '&w'); + return; + } + if (self.urxvtMouse) { + pos.x -= 32; + pos.y -= 32; + pos.x++; + pos.y++; + self.send(EscapeSequences_1.C0.ESC + '[' + button + ';' + pos.x + ';' + pos.y + 'M'); + return; + } + if (self.sgrMouse) { + pos.x -= 32; + pos.y -= 32; + self.send(EscapeSequences_1.C0.ESC + '[<' + + (((button & 3) === 3 ? button & ~3 : button) - 32) + + ';' + + pos.x + + ';' + + pos.y + + ((button & 3) === 3 ? 'm' : 'M')); + return; + } + var data = []; + encode(data, button); + encode(data, pos.x); + encode(data, pos.y); + self.send(EscapeSequences_1.C0.ESC + '[M' + String.fromCharCode.apply(String, data)); + } + function getButton(ev) { + var button; + var shift; + var meta; + var ctrl; + var mod; + switch (ev.overrideType || ev.type) { + case 'mousedown': + button = ev.button != null + ? +ev.button + : ev.which != null + ? ev.which - 1 + : null; + if (Browser.isMSIE) { + button = button === 1 ? 0 : button === 4 ? 1 : button; + } + break; + case 'mouseup': + button = 3; + break; + case 'DOMMouseScroll': + button = ev.detail < 0 + ? 64 + : 65; + break; + case 'wheel': + button = ev.wheelDeltaY > 0 + ? 64 + : 65; + break; + } + shift = ev.shiftKey ? 4 : 0; + meta = ev.metaKey ? 8 : 0; + ctrl = ev.ctrlKey ? 16 : 0; + mod = shift | meta | ctrl; + if (self.vt200Mouse) { + mod &= ctrl; + } + else if (!self.normalMouse) { + mod = 0; + } + button = (32 + (mod << 2)) + button; + return button; + } + on(el, 'mousedown', function (ev) { + ev.preventDefault(); + _this.focus(); + if (!_this.mouseEvents || _this.selectionManager.shouldForceSelection(ev)) { + return; + } + sendButton(ev); + if (_this.vt200Mouse) { + ev.overrideType = 'mouseup'; + sendButton(ev); + return _this.cancel(ev); + } + if (_this.normalMouse) + on(_this._document, 'mousemove', sendMove); + if (!_this.x10Mouse) { + var handler_1 = function (ev) { + sendButton(ev); + if (_this.normalMouse) + off(_this._document, 'mousemove', sendMove); + off(_this._document, 'mouseup', handler_1); + return _this.cancel(ev); + }; + on(_this._document, 'mouseup', handler_1); + } + return _this.cancel(ev); + }); + on(el, 'wheel', function (ev) { + if (!_this.mouseEvents) { + if (!_this.buffer.hasScrollback) { + var amount = _this.viewport.getLinesScrolled(ev); + if (amount === 0) { + return; + } + var sequence = EscapeSequences_1.C0.ESC + (_this.applicationCursor ? 'O' : '[') + (ev.deltaY < 0 ? 'A' : 'B'); + var data = ''; + for (var i = 0; i < Math.abs(amount); i++) { + data += sequence; + } + _this.send(data); + } + return; + } + if (_this.x10Mouse || _this._vt300Mouse || _this._decLocator) + return; + sendButton(ev); + ev.preventDefault(); + }); + on(el, 'wheel', function (ev) { + if (_this.mouseEvents) + return; + _this.viewport.onWheel(ev); + return _this.cancel(ev); + }); + on(el, 'touchstart', function (ev) { + if (_this.mouseEvents) + return; + _this.viewport.onTouchStart(ev); + return _this.cancel(ev); + }); + on(el, 'touchmove', function (ev) { + if (_this.mouseEvents) + return; + _this.viewport.onTouchMove(ev); + return _this.cancel(ev); + }); + }; + Terminal.prototype.refresh = function (start, end) { + if (this.renderer) { + this.renderer.refreshRows(start, end); + } + }; + Terminal.prototype._queueLinkification = function (start, end) { + if (this.linkifier) { + this.linkifier.linkifyRows(start, end); + } + }; + Terminal.prototype.showCursor = function () { + if (!this.cursorState) { + this.cursorState = 1; + this.refresh(this.buffer.y, this.buffer.y); + } + }; + Terminal.prototype.scroll = function (isWrapped) { + var newLine = this.blankLine(undefined, isWrapped); + var topRow = this.buffer.ybase + this.buffer.scrollTop; + var bottomRow = this.buffer.ybase + this.buffer.scrollBottom; + if (this.buffer.scrollTop === 0) { + var willBufferBeTrimmed = this.buffer.lines.length === this.buffer.lines.maxLength; + if (bottomRow === this.buffer.lines.length - 1) { + this.buffer.lines.push(newLine); + } + else { + this.buffer.lines.splice(bottomRow + 1, 0, newLine); + } + if (!willBufferBeTrimmed) { + this.buffer.ybase++; + if (!this._userScrolling) { + this.buffer.ydisp++; + } + } + else { + if (this._userScrolling) { + this.buffer.ydisp = Math.max(this.buffer.ydisp - 1, 0); + } + } + } + else { + var scrollRegionHeight = bottomRow - topRow + 1; + this.buffer.lines.shiftElements(topRow + 1, scrollRegionHeight - 1, -1); + this.buffer.lines.set(bottomRow, newLine); + } + if (!this._userScrolling) { + this.buffer.ydisp = this.buffer.ybase; + } + this.updateRange(this.buffer.scrollTop); + this.updateRange(this.buffer.scrollBottom); + this.emit('scroll', this.buffer.ydisp); + }; + Terminal.prototype.scrollLines = function (disp, suppressScrollEvent) { + if (disp < 0) { + if (this.buffer.ydisp === 0) { + return; + } + this._userScrolling = true; + } + else if (disp + this.buffer.ydisp >= this.buffer.ybase) { + this._userScrolling = false; + } + var oldYdisp = this.buffer.ydisp; + this.buffer.ydisp = Math.max(Math.min(this.buffer.ydisp + disp, this.buffer.ybase), 0); + if (oldYdisp === this.buffer.ydisp) { + return; + } + if (!suppressScrollEvent) { + this.emit('scroll', this.buffer.ydisp); + } + this.refresh(0, this.rows - 1); + }; + Terminal.prototype.scrollPages = function (pageCount) { + this.scrollLines(pageCount * (this.rows - 1)); + }; + Terminal.prototype.scrollToTop = function () { + this.scrollLines(-this.buffer.ydisp); + }; + Terminal.prototype.scrollToBottom = function () { + this.scrollLines(this.buffer.ybase - this.buffer.ydisp); + }; + Terminal.prototype.scrollToLine = function (line) { + var scrollAmount = line - this.buffer.ydisp; + if (scrollAmount !== 0) { + this.scrollLines(scrollAmount); + } + }; + Terminal.prototype.write = function (data) { + var _this = this; + if (!data) { + return; + } + this.writeBuffer.push(data); + if (this.options.useFlowControl && !this._xoffSentToCatchUp && this.writeBuffer.length >= WRITE_BUFFER_PAUSE_THRESHOLD) { + this.send(EscapeSequences_1.C0.DC3); + this._xoffSentToCatchUp = true; + } + if (!this._writeInProgress && this.writeBuffer.length > 0) { + this._writeInProgress = true; + setTimeout(function () { + _this._innerWrite(); + }); + } + }; + Terminal.prototype._innerWrite = function () { + var _this = this; + var writeBatch = this.writeBuffer.splice(0, WRITE_BATCH_SIZE); + while (writeBatch.length > 0) { + var data = writeBatch.shift(); + if (this._xoffSentToCatchUp && writeBatch.length === 0 && this.writeBuffer.length === 0) { + this.send(EscapeSequences_1.C0.DC1); + this._xoffSentToCatchUp = false; + } + this._refreshStart = this.buffer.y; + this._refreshEnd = this.buffer.y; + var state = this._parser.parse(data); + this._parser.setState(state); + this.updateRange(this.buffer.y); + this.refresh(this._refreshStart, this._refreshEnd); + } + if (this.writeBuffer.length > 0) { + setTimeout(function () { return _this._innerWrite(); }, 0); + } + else { + this._writeInProgress = false; + } + }; + Terminal.prototype.writeln = function (data) { + this.write(data + '\r\n'); + }; + Terminal.prototype.attachCustomKeyEventHandler = function (customKeyEventHandler) { + this._customKeyEventHandler = customKeyEventHandler; + }; + Terminal.prototype.registerLinkMatcher = function (regex, handler, options) { + var matcherId = this.linkifier.registerLinkMatcher(regex, handler, options); + this.refresh(0, this.rows - 1); + return matcherId; + }; + Terminal.prototype.deregisterLinkMatcher = function (matcherId) { + if (this.linkifier.deregisterLinkMatcher(matcherId)) { + this.refresh(0, this.rows - 1); + } + }; + Object.defineProperty(Terminal.prototype, "markers", { + get: function () { + return this.buffer.markers; + }, + enumerable: true, + configurable: true + }); + Terminal.prototype.addMarker = function (cursorYOffset) { + if (this.buffer !== this.buffers.normal) { + return; + } + return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + cursorYOffset); + }; + Terminal.prototype.hasSelection = function () { + return this.selectionManager ? this.selectionManager.hasSelection : false; + }; + Terminal.prototype.getSelection = function () { + return this.selectionManager ? this.selectionManager.selectionText : ''; + }; + Terminal.prototype.clearSelection = function () { + if (this.selectionManager) { + this.selectionManager.clearSelection(); + } + }; + Terminal.prototype.selectAll = function () { + if (this.selectionManager) { + this.selectionManager.selectAll(); + } + }; + Terminal.prototype.selectLines = function (start, end) { + if (this.selectionManager) { + this.selectionManager.selectLines(start, end); + } + }; + Terminal.prototype._keyDown = function (ev) { + if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) { + return false; + } + if (!this._compositionHelper.keydown(ev)) { + if (this.buffer.ybase !== this.buffer.ydisp) { + this.scrollToBottom(); + } + return false; + } + var result = this._evaluateKeyEscapeSequence(ev); + if (result.scrollLines) { + this.scrollLines(result.scrollLines); + return this.cancel(ev, true); + } + if (this._isThirdLevelShift(this.browser, ev)) { + return true; + } + if (result.cancel) { + this.cancel(ev, true); + } + if (!result.key) { + return true; + } + this.emit('keydown', ev); + this.emit('key', result.key, ev); + this.showCursor(); + this.handler(result.key); + return this.cancel(ev, true); + }; + Terminal.prototype._isThirdLevelShift = function (browser, ev) { + var thirdLevelKey = (browser.isMac && !this.options.macOptionIsMeta && ev.altKey && !ev.ctrlKey && !ev.metaKey) || + (browser.isMSWindows && ev.altKey && ev.ctrlKey && !ev.metaKey); + if (ev.type === 'keypress') { + return thirdLevelKey; + } + return thirdLevelKey && (!ev.keyCode || ev.keyCode > 47); + }; + Terminal.prototype._evaluateKeyEscapeSequence = function (ev) { + var result = { + cancel: false, + key: undefined, + scrollLines: undefined + }; + var modifiers = (ev.shiftKey ? 1 : 0) | (ev.altKey ? 2 : 0) | (ev.ctrlKey ? 4 : 0) | (ev.metaKey ? 8 : 0); + switch (ev.keyCode) { + case 0: + if (ev.key === 'UIKeyInputUpArrow') { + if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OA'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[A'; + } + } + else if (ev.key === 'UIKeyInputLeftArrow') { + if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OD'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[D'; + } + } + else if (ev.key === 'UIKeyInputRightArrow') { + if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OC'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[C'; + } + } + else if (ev.key === 'UIKeyInputDownArrow') { + if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OB'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[B'; + } + } + break; + case 8: + if (ev.shiftKey) { + result.key = EscapeSequences_1.C0.BS; + break; + } + else if (ev.altKey) { + result.key = EscapeSequences_1.C0.ESC + EscapeSequences_1.C0.DEL; + break; + } + result.key = EscapeSequences_1.C0.DEL; + break; + case 9: + if (ev.shiftKey) { + result.key = EscapeSequences_1.C0.ESC + '[Z'; + break; + } + result.key = EscapeSequences_1.C0.HT; + result.cancel = true; + break; + case 13: + result.key = EscapeSequences_1.C0.CR; + result.cancel = true; + break; + case 27: + result.key = EscapeSequences_1.C0.ESC; + result.cancel = true; + break; + case 37: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'D'; + if (result.key === EscapeSequences_1.C0.ESC + '[1;3D') { + result.key = (this.browser.isMac) ? EscapeSequences_1.C0.ESC + 'b' : EscapeSequences_1.C0.ESC + '[1;5D'; + } + } + else if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OD'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[D'; + } + break; + case 39: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'C'; + if (result.key === EscapeSequences_1.C0.ESC + '[1;3C') { + result.key = (this.browser.isMac) ? EscapeSequences_1.C0.ESC + 'f' : EscapeSequences_1.C0.ESC + '[1;5C'; + } + } + else if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OC'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[C'; + } + break; + case 38: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'A'; + if (result.key === EscapeSequences_1.C0.ESC + '[1;3A') { + result.key = EscapeSequences_1.C0.ESC + '[1;5A'; + } + } + else if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OA'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[A'; + } + break; + case 40: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'B'; + if (result.key === EscapeSequences_1.C0.ESC + '[1;3B') { + result.key = EscapeSequences_1.C0.ESC + '[1;5B'; + } + } + else if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OB'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[B'; + } + break; + case 45: + if (!ev.shiftKey && !ev.ctrlKey) { + result.key = EscapeSequences_1.C0.ESC + '[2~'; + } + break; + case 46: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[3;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[3~'; + } + break; + case 36: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'H'; + } + else if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OH'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[H'; + } + break; + case 35: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'F'; + } + else if (this.applicationCursor) { + result.key = EscapeSequences_1.C0.ESC + 'OF'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[F'; + } + break; + case 33: + if (ev.shiftKey) { + result.scrollLines = -(this.rows - 1); + } + else { + result.key = EscapeSequences_1.C0.ESC + '[5~'; + } + break; + case 34: + if (ev.shiftKey) { + result.scrollLines = this.rows - 1; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[6~'; + } + break; + case 112: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'P'; + } + else { + result.key = EscapeSequences_1.C0.ESC + 'OP'; + } + break; + case 113: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'Q'; + } + else { + result.key = EscapeSequences_1.C0.ESC + 'OQ'; + } + break; + case 114: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'R'; + } + else { + result.key = EscapeSequences_1.C0.ESC + 'OR'; + } + break; + case 115: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[1;' + (modifiers + 1) + 'S'; + } + else { + result.key = EscapeSequences_1.C0.ESC + 'OS'; + } + break; + case 116: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[15;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[15~'; + } + break; + case 117: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[17;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[17~'; + } + break; + case 118: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[18;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[18~'; + } + break; + case 119: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[19;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[19~'; + } + break; + case 120: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[20;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[20~'; + } + break; + case 121: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[21;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[21~'; + } + break; + case 122: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[23;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[23~'; + } + break; + case 123: + if (modifiers) { + result.key = EscapeSequences_1.C0.ESC + '[24;' + (modifiers + 1) + '~'; + } + else { + result.key = EscapeSequences_1.C0.ESC + '[24~'; + } + break; + default: + if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) { + if (ev.keyCode >= 65 && ev.keyCode <= 90) { + result.key = String.fromCharCode(ev.keyCode - 64); + } + else if (ev.keyCode === 32) { + result.key = String.fromCharCode(0); + } + else if (ev.keyCode >= 51 && ev.keyCode <= 55) { + result.key = String.fromCharCode(ev.keyCode - 51 + 27); + } + else if (ev.keyCode === 56) { + result.key = String.fromCharCode(127); + } + else if (ev.keyCode === 219) { + result.key = String.fromCharCode(27); + } + else if (ev.keyCode === 220) { + result.key = String.fromCharCode(28); + } + else if (ev.keyCode === 221) { + result.key = String.fromCharCode(29); + } + } + else if ((!this.browser.isMac || this.options.macOptionIsMeta) && ev.altKey && !ev.metaKey) { + var keyMapping = KEYCODE_KEY_MAPPINGS[ev.keyCode]; + var key = keyMapping && keyMapping[!ev.shiftKey ? 0 : 1]; + if (key) { + result.key = EscapeSequences_1.C0.ESC + key; + } + else if (ev.keyCode >= 65 && ev.keyCode <= 90) { + var keyCode = ev.ctrlKey ? ev.keyCode - 64 : ev.keyCode + 32; + result.key = EscapeSequences_1.C0.ESC + String.fromCharCode(keyCode); + } + } + else if (this.browser.isMac && !ev.altKey && !ev.ctrlKey && ev.metaKey) { + if (ev.keyCode === 65) { + this.selectAll(); + } + } + break; + } + return result; + }; + Terminal.prototype.setgLevel = function (g) { + this.glevel = g; + this.charset = this.charsets[g]; + }; + Terminal.prototype.setgCharset = function (g, charset) { + this.charsets[g] = charset; + if (this.glevel === g) { + this.charset = charset; + } + }; + Terminal.prototype._keyPress = function (ev) { + var key; + if (this._customKeyEventHandler && this._customKeyEventHandler(ev) === false) { + return false; + } + this.cancel(ev); + if (ev.charCode) { + key = ev.charCode; + } + else if (ev.which == null) { + key = ev.keyCode; + } + else if (ev.which !== 0 && ev.charCode !== 0) { + key = ev.which; + } + else { + return false; + } + if (!key || ((ev.altKey || ev.ctrlKey || ev.metaKey) && !this._isThirdLevelShift(this.browser, ev))) { + return false; + } + key = String.fromCharCode(key); + this.emit('keypress', key, ev); + this.emit('key', key, ev); + this.showCursor(); + this.handler(key); + return true; + }; + Terminal.prototype.send = function (data) { + var _this = this; + if (!this._sendDataQueue) { + setTimeout(function () { + _this.handler(_this._sendDataQueue); + _this._sendDataQueue = ''; + }, 1); + } + this._sendDataQueue += data; + }; + Terminal.prototype.bell = function () { + var _this = this; + this.emit('bell'); + if (this._soundBell()) { + this.soundManager.playBellSound(); + } + if (this._visualBell()) { + this.element.classList.add('visual-bell-active'); + clearTimeout(this._visualBellTimer); + this._visualBellTimer = window.setTimeout(function () { + _this.element.classList.remove('visual-bell-active'); + }, 200); + } + }; + Terminal.prototype.log = function (text, data) { + if (!this.options.debug) + return; + if (!this._context.console || !this._context.console.log) + return; + this._context.console.log(text, data); + }; + Terminal.prototype.error = function (text, data) { + if (!this.options.debug) + return; + if (!this._context.console || !this._context.console.error) + return; + this._context.console.error(text, data); + }; + Terminal.prototype.resize = function (x, y) { + if (isNaN(x) || isNaN(y)) { + return; + } + if (x === this.cols && y === this.rows) { + if (this.charMeasure && (!this.charMeasure.width || !this.charMeasure.height)) { + this.charMeasure.measure(this.options); + } + return; + } + if (x < 1) + x = 1; + if (y < 1) + y = 1; + this.buffers.resize(x, y); + this.cols = x; + this.rows = y; + this.buffers.setupTabStops(this.cols); + if (this.charMeasure) { + this.charMeasure.measure(this.options); + } + this.refresh(0, this.rows - 1); + this.emit('resize', { cols: x, rows: y }); + }; + Terminal.prototype.updateRange = function (y) { + if (y < this._refreshStart) + this._refreshStart = y; + if (y > this._refreshEnd) + this._refreshEnd = y; + }; + Terminal.prototype.maxRange = function () { + this._refreshStart = 0; + this._refreshEnd = this.rows - 1; + }; + Terminal.prototype.eraseRight = function (x, y) { + var line = this.buffer.lines.get(this.buffer.ybase + y); + if (!line) { + return; + } + var ch = [this.eraseAttr(), ' ', 1, 32]; + for (; x < this.cols; x++) { + line[x] = ch; + } + this.updateRange(y); + }; + Terminal.prototype.eraseLeft = function (x, y) { + var line = this.buffer.lines.get(this.buffer.ybase + y); + if (!line) { + return; + } + var ch = [this.eraseAttr(), ' ', 1, 32]; + x++; + while (x--) { + line[x] = ch; + } + this.updateRange(y); + }; + Terminal.prototype.clear = function () { + if (this.buffer.ybase === 0 && this.buffer.y === 0) { + return; + } + this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)); + this.buffer.lines.length = 1; + this.buffer.ydisp = 0; + this.buffer.ybase = 0; + this.buffer.y = 0; + for (var i = 1; i < this.rows; i++) { + this.buffer.lines.push(this.blankLine()); + } + this.refresh(0, this.rows - 1); + this.emit('scroll', this.buffer.ydisp); + }; + Terminal.prototype.eraseLine = function (y) { + this.eraseRight(0, y); + }; + Terminal.prototype.blankLine = function (cur, isWrapped, cols) { + var attr = cur ? this.eraseAttr() : this.defAttr; + var ch = [attr, ' ', 1, 32]; + var line = []; + if (isWrapped) { + line.isWrapped = isWrapped; + } + cols = cols || this.cols; + for (var i = 0; i < cols; i++) { + line[i] = ch; + } + return line; + }; + Terminal.prototype.ch = function (cur) { + if (cur) { + return [this.eraseAttr(), ' ', 1, 32]; + } + return [this.defAttr, ' ', 1, 32]; + }; + Terminal.prototype.is = function (term) { + return (this.options.termName + '').indexOf(term) === 0; + }; + Terminal.prototype.handler = function (data) { + if (this.options.disableStdin) { + return; + } + if (this.selectionManager && this.selectionManager.hasSelection) { + this.selectionManager.clearSelection(); + } + if (this.buffer.ybase !== this.buffer.ydisp) { + this.scrollToBottom(); + } + this.emit('data', data); + }; + Terminal.prototype.handleTitle = function (title) { + this.emit('title', title); + }; + Terminal.prototype.index = function () { + this.buffer.y++; + if (this.buffer.y > this.buffer.scrollBottom) { + this.buffer.y--; + this.scroll(); + } + if (this.buffer.x >= this.cols) { + this.buffer.x--; + } + }; + Terminal.prototype.reverseIndex = function () { + if (this.buffer.y === this.buffer.scrollTop) { + var scrollRegionHeight = this.buffer.scrollBottom - this.buffer.scrollTop; + this.buffer.lines.shiftElements(this.buffer.y + this.buffer.ybase, scrollRegionHeight, 1); + this.buffer.lines.set(this.buffer.y + this.buffer.ybase, this.blankLine(true)); + this.updateRange(this.buffer.scrollTop); + this.updateRange(this.buffer.scrollBottom); + } + else { + this.buffer.y--; + } + }; + Terminal.prototype.reset = function () { + this.options.rows = this.rows; + this.options.cols = this.cols; + var customKeyEventHandler = this._customKeyEventHandler; + var inputHandler = this._inputHandler; + this._setup(); + this._customKeyEventHandler = customKeyEventHandler; + this._inputHandler = inputHandler; + this.refresh(0, this.rows - 1); + if (this.viewport) { + this.viewport.syncScrollArea(); + } + }; + Terminal.prototype.tabSet = function () { + this.buffer.tabs[this.buffer.x] = true; + }; + Terminal.prototype.cancel = function (ev, force) { + if (!this.options.cancelEvents && !force) { + return; + } + ev.preventDefault(); + ev.stopPropagation(); + return false; + }; + Terminal.prototype.matchColor = function (r1, g1, b1) { + return matchColor_(r1, g1, b1); + }; + Terminal.prototype._visualBell = function () { + return false; + }; + Terminal.prototype._soundBell = function () { + return this.options.bellStyle === 'sound'; + }; + return Terminal; +}(EventEmitter_1.EventEmitter)); +exports.Terminal = Terminal; +function globalOn(el, type, handler, capture) { + if (!Array.isArray(el)) { + el = [el]; + } + el.forEach(function (element) { + element.addEventListener(type, handler, capture || false); + }); +} +var on = globalOn; +function off(el, type, handler, capture) { + if (capture === void 0) { capture = false; } + el.removeEventListener(type, handler, capture); +} +function wasMondifierKeyOnlyEvent(ev) { + return ev.keyCode === 16 || + ev.keyCode === 17 || + ev.keyCode === 18; +} +var matchColorCache = {}; +function matchColorDistance(r1, g1, b1, r2, g2, b2) { + return Math.pow(30 * (r1 - r2), 2) + + Math.pow(59 * (g1 - g2), 2) + + Math.pow(11 * (b1 - b2), 2); +} +function matchColor_(r1, g1, b1) { + var hash = (r1 << 16) | (g1 << 8) | b1; + if (matchColorCache[hash] != null) { + return matchColorCache[hash]; + } + var ldiff = Infinity; + var li = -1; + var i = 0; + var c; + var r2; + var g2; + var b2; + var diff; + for (; i < ColorManager_1.DEFAULT_ANSI_COLORS.length; i++) { + c = ColorManager_1.DEFAULT_ANSI_COLORS[i].rgba; + r2 = c >>> 24; + g2 = c >>> 16 & 0xFF; + b2 = c >>> 8 & 0xFF; + diff = matchColorDistance(r1, g1, b1, r2, g2, b2); + if (diff === 0) { + li = i; + break; + } + if (diff < ldiff) { + ldiff = diff; + li = i; + } + } + return matchColorCache[hash] = li; +} + + + +},{"./AccessibilityManager":1,"./Buffer":2,"./BufferSet":3,"./CompositionHelper":6,"./EscapeSequences":7,"./EventEmitter":8,"./InputHandler":9,"./Linkifier":10,"./Parser":11,"./SelectionManager":12,"./SoundManager":14,"./Strings":15,"./Viewport":17,"./handlers/Clipboard":19,"./input/MouseZoneManager":20,"./renderer/ColorManager":22,"./renderer/Renderer":26,"./renderer/atlas/CharAtlas":29,"./shared/utils/Browser":34,"./utils/CharMeasure":35,"./utils/Clone":37,"./utils/Dom":38,"./utils/MouseHelper":39,"./utils/ScreenDprMonitor":41}],17:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var FALLBACK_SCROLL_BAR_WIDTH = 15; +var Viewport = (function () { + function Viewport(_terminal, _viewportElement, _scrollArea, _charMeasure) { + var _this = this; + this._terminal = _terminal; + this._viewportElement = _viewportElement; + this._scrollArea = _scrollArea; + this._charMeasure = _charMeasure; + this.scrollBarWidth = 0; + this._currentRowHeight = 0; + this._lastRecordedBufferLength = 0; + this._lastRecordedViewportHeight = 0; + this._lastRecordedBufferHeight = 0; + this._wheelPartialScroll = 0; + this.scrollBarWidth = (this._viewportElement.offsetWidth - this._scrollArea.offsetWidth) || FALLBACK_SCROLL_BAR_WIDTH; + this._viewportElement.addEventListener('scroll', this._onScroll.bind(this)); + setTimeout(function () { return _this.syncScrollArea(); }, 0); + } + Viewport.prototype.onThemeChanged = function (colors) { + this._viewportElement.style.backgroundColor = colors.background.css; + }; + Viewport.prototype._refresh = function () { + if (this._charMeasure.height > 0) { + this._currentRowHeight = this._terminal.renderer.dimensions.scaledCellHeight / window.devicePixelRatio; + this._lastRecordedViewportHeight = this._viewportElement.offsetHeight; + var newBufferHeight = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._terminal.renderer.dimensions.canvasHeight); + if (this._lastRecordedBufferHeight !== newBufferHeight) { + this._lastRecordedBufferHeight = newBufferHeight; + this._scrollArea.style.height = this._lastRecordedBufferHeight + 'px'; + } + } + }; + Viewport.prototype.syncScrollArea = function () { + if (this._lastRecordedBufferLength !== this._terminal.buffer.lines.length) { + this._lastRecordedBufferLength = this._terminal.buffer.lines.length; + this._refresh(); + } + else if (this._lastRecordedViewportHeight !== this._terminal.renderer.dimensions.canvasHeight) { + this._refresh(); + } + else { + if (this._terminal.renderer.dimensions.scaledCellHeight / window.devicePixelRatio !== this._currentRowHeight) { + this._refresh(); + } + } + var scrollTop = this._terminal.buffer.ydisp * this._currentRowHeight; + if (this._viewportElement.scrollTop !== scrollTop) { + this._viewportElement.scrollTop = scrollTop; + } + }; + Viewport.prototype._onScroll = function (ev) { + if (!this._viewportElement.offsetParent) { + return; + } + var newRow = Math.round(this._viewportElement.scrollTop / this._currentRowHeight); + var diff = newRow - this._terminal.buffer.ydisp; + this._terminal.scrollLines(diff, true); + }; + Viewport.prototype.onWheel = function (ev) { + var amount = this._getPixelsScrolled(ev); + if (amount === 0) { + return; + } + this._viewportElement.scrollTop += amount; + ev.preventDefault(); + }; + Viewport.prototype._getPixelsScrolled = function (ev) { + if (ev.deltaY === 0) { + return 0; + } + var amount = ev.deltaY; + if (ev.deltaMode === WheelEvent.DOM_DELTA_LINE) { + amount *= this._currentRowHeight; + } + else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) { + amount *= this._currentRowHeight * this._terminal.rows; + } + return amount; + }; + Viewport.prototype.getLinesScrolled = function (ev) { + if (ev.deltaY === 0) { + return 0; + } + var amount = ev.deltaY; + if (ev.deltaMode === WheelEvent.DOM_DELTA_PIXEL) { + amount /= this._currentRowHeight + 0.0; + this._wheelPartialScroll += amount; + amount = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1); + this._wheelPartialScroll %= 1; + } + else if (ev.deltaMode === WheelEvent.DOM_DELTA_PAGE) { + amount *= this._terminal.rows; + } + return amount; + }; + Viewport.prototype.onTouchStart = function (ev) { + this._lastTouchY = ev.touches[0].pageY; + }; + Viewport.prototype.onTouchMove = function (ev) { + var deltaY = this._lastTouchY - ev.touches[0].pageY; + this._lastTouchY = ev.touches[0].pageY; + if (deltaY === 0) { + return; + } + this._viewportElement.scrollTop += deltaY; + ev.preventDefault(); + }; + return Viewport; +}()); +exports.Viewport = Viewport; + + + +},{}],18:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var EscapeSequences_1 = require("../EscapeSequences"); +var AltClickHandler = (function () { + function AltClickHandler(_mouseEvent, _terminal) { + this._mouseEvent = _mouseEvent; + this._terminal = _terminal; + this._lines = this._terminal.buffer.lines; + this._startCol = this._terminal.buffer.x; + this._startRow = this._terminal.buffer.y; + var coordinates = this._terminal.mouseHelper.getCoords(this._mouseEvent, this._terminal.element, this._terminal.charMeasure, this._terminal.options.lineHeight, this._terminal.cols, this._terminal.rows, false); + if (coordinates) { + _a = coordinates.map(function (coordinate) { + return coordinate - 1; + }), this._endCol = _a[0], this._endRow = _a[1]; + } + var _a; + } + AltClickHandler.prototype.move = function () { + if (this._mouseEvent.altKey && this._endCol !== undefined && this._endRow !== undefined) { + this._terminal.send(this._arrowSequences()); + } + }; + AltClickHandler.prototype._arrowSequences = function () { + if (!this._terminal.buffer.hasScrollback) { + return this._resetStartingRow() + this._moveToRequestedRow() + this._moveToRequestedCol(); + } + return this._moveHorizontallyOnly(); + }; + AltClickHandler.prototype._resetStartingRow = function () { + if (this._moveToRequestedRow().length === 0) { + return ''; + } + return repeat(this._bufferLine(this._startCol, this._startRow, this._startCol, this._startRow - this._wrappedRowsForRow(this._startRow), false).length, this._sequence("D")); + }; + AltClickHandler.prototype._moveToRequestedRow = function () { + var startRow = this._startRow - this._wrappedRowsForRow(this._startRow); + var endRow = this._endRow - this._wrappedRowsForRow(this._endRow); + var rowsToMove = Math.abs(startRow - endRow) - this._wrappedRowsCount(); + return repeat(rowsToMove, this._sequence(this._verticalDirection())); + }; + AltClickHandler.prototype._moveToRequestedCol = function () { + var startRow; + if (this._moveToRequestedRow().length > 0) { + startRow = this._endRow - this._wrappedRowsForRow(this._endRow); + } + else { + startRow = this._startRow; + } + var endRow = this._endRow; + var direction = this._horizontalDirection(); + return repeat(this._bufferLine(this._startCol, startRow, this._endCol, endRow, direction === "C").length, this._sequence(direction)); + }; + AltClickHandler.prototype._moveHorizontallyOnly = function () { + var direction = this._horizontalDirection(); + return repeat(Math.abs(this._startCol - this._endCol), this._sequence(direction)); + }; + AltClickHandler.prototype._wrappedRowsCount = function () { + var wrappedRows = 0; + var startRow = this._startRow - this._wrappedRowsForRow(this._startRow); + var endRow = this._endRow - this._wrappedRowsForRow(this._endRow); + for (var i = 0; i < Math.abs(startRow - endRow); i++) { + var direction = this._verticalDirection() === "A" ? -1 : 1; + if (this._lines.get(startRow + (direction * i)).isWrapped) { + wrappedRows++; + } + } + return wrappedRows; + }; + AltClickHandler.prototype._wrappedRowsForRow = function (currentRow) { + var rowCount = 0; + var lineWraps = this._lines.get(currentRow).isWrapped; + while (lineWraps && currentRow >= 0 && currentRow < this._terminal.rows) { + rowCount++; + currentRow--; + lineWraps = this._lines.get(currentRow).isWrapped; + } + return rowCount; + }; + AltClickHandler.prototype._horizontalDirection = function () { + var startRow; + if (this._moveToRequestedRow().length > 0) { + startRow = this._endRow - this._wrappedRowsForRow(this._endRow); + } + else { + startRow = this._startRow; + } + if ((this._startCol < this._endCol && + startRow <= this._endRow) || + (this._startCol >= this._endCol && + startRow < this._endRow)) { + return "C"; + } + return "D"; + }; + AltClickHandler.prototype._verticalDirection = function () { + if (this._startRow > this._endRow) { + return "A"; + } + return "B"; + }; + AltClickHandler.prototype._bufferLine = function (startCol, startRow, endCol, endRow, forward) { + var currentCol = startCol; + var currentRow = startRow; + var bufferStr = ''; + while (currentCol !== endCol || currentRow !== endRow) { + currentCol += forward ? 1 : -1; + if (forward && currentCol > this._terminal.cols - 1) { + bufferStr += this._terminal.buffer.translateBufferLineToString(currentRow, false, startCol, currentCol); + currentCol = 0; + startCol = 0; + currentRow++; + } + else if (!forward && currentCol < 0) { + bufferStr += this._terminal.buffer.translateBufferLineToString(currentRow, false, 0, startCol + 1); + currentCol = this._terminal.cols - 1; + startCol = currentCol; + currentRow--; + } + } + return bufferStr + this._terminal.buffer.translateBufferLineToString(currentRow, false, startCol, currentCol); + }; + AltClickHandler.prototype._sequence = function (direction) { + var mod = this._terminal.applicationCursor ? 'O' : '['; + return EscapeSequences_1.C0.ESC + mod + direction; + }; + return AltClickHandler; +}()); +exports.AltClickHandler = AltClickHandler; +function repeat(count, str) { + count = Math.floor(count); + var rpt = ''; + for (var i = 0; i < count; i++) { + rpt += str; + } + return rpt; +} + + + +},{"../EscapeSequences":7}],19:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function prepareTextForTerminal(text) { + return text.replace(/\r?\n/g, '\r'); +} +exports.prepareTextForTerminal = prepareTextForTerminal; +function bracketTextForPaste(text, bracketedPasteMode) { + if (bracketedPasteMode) { + return '\x1b[200~' + text + '\x1b[201~'; + } + return text; +} +exports.bracketTextForPaste = bracketTextForPaste; +function copyHandler(ev, term, selectionManager) { + if (term.browser.isMSIE) { + window.clipboardData.setData('Text', selectionManager.selectionText); + } + else { + ev.clipboardData.setData('text/plain', selectionManager.selectionText); + } + ev.preventDefault(); +} +exports.copyHandler = copyHandler; +function pasteHandler(ev, term) { + ev.stopPropagation(); + var text; + var dispatchPaste = function (text) { + text = prepareTextForTerminal(text); + text = bracketTextForPaste(text, term.bracketedPasteMode); + term.handler(text); + term.textarea.value = ''; + term.emit('paste', text); + term.cancel(ev); + }; + if (term.browser.isMSIE) { + if (window.clipboardData) { + text = window.clipboardData.getData('Text'); + dispatchPaste(text); + } + } + else { + if (ev.clipboardData) { + text = ev.clipboardData.getData('text/plain'); + dispatchPaste(text); + } + } +} +exports.pasteHandler = pasteHandler; +function moveTextAreaUnderMouseCursor(ev, textarea) { + textarea.style.position = 'fixed'; + textarea.style.width = '20px'; + textarea.style.height = '20px'; + textarea.style.left = (ev.clientX - 10) + 'px'; + textarea.style.top = (ev.clientY - 10) + 'px'; + textarea.style.zIndex = '1000'; + textarea.focus(); + setTimeout(function () { + textarea.style.position = null; + textarea.style.width = null; + textarea.style.height = null; + textarea.style.left = null; + textarea.style.top = null; + textarea.style.zIndex = null; + }, 200); +} +exports.moveTextAreaUnderMouseCursor = moveTextAreaUnderMouseCursor; +function rightClickHandler(ev, textarea, selectionManager, shouldSelectWord) { + moveTextAreaUnderMouseCursor(ev, textarea); + if (shouldSelectWord && !selectionManager.isClickInSelection(ev)) { + selectionManager.selectWordAtCursor(ev); + } + textarea.value = selectionManager.selectionText; + textarea.select(); +} +exports.rightClickHandler = rightClickHandler; + + + +},{}],20:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var HOVER_DURATION = 500; +var MouseZoneManager = (function () { + function MouseZoneManager(_terminal) { + var _this = this; + this._terminal = _terminal; + this._zones = []; + this._areZonesActive = false; + this._tooltipTimeout = null; + this._currentZone = null; + this._lastHoverCoords = [null, null]; + this._terminal.element.addEventListener('mousedown', function (e) { return _this._onMouseDown(e); }); + this._mouseMoveListener = function (e) { return _this._onMouseMove(e); }; + this._clickListener = function (e) { return _this._onClick(e); }; + } + MouseZoneManager.prototype.add = function (zone) { + this._zones.push(zone); + if (this._zones.length === 1) { + this._activate(); + } + }; + MouseZoneManager.prototype.clearAll = function (start, end) { + if (this._zones.length === 0) { + return; + } + if (!end) { + start = 0; + end = this._terminal.rows - 1; + } + for (var i = 0; i < this._zones.length; i++) { + var zone = this._zones[i]; + if ((zone.y1 > start && zone.y1 <= end + 1) || + (zone.y2 > start && zone.y2 <= end + 1) || + (zone.y1 < start && zone.y2 > end + 1)) { + if (this._currentZone && this._currentZone === zone) { + this._currentZone.leaveCallback(); + this._currentZone = null; + } + this._zones.splice(i--, 1); + } + } + if (this._zones.length === 0) { + this._deactivate(); + } + }; + MouseZoneManager.prototype._activate = function () { + if (!this._areZonesActive) { + this._areZonesActive = true; + this._terminal.element.addEventListener('mousemove', this._mouseMoveListener); + this._terminal.element.addEventListener('click', this._clickListener); + } + }; + MouseZoneManager.prototype._deactivate = function () { + if (this._areZonesActive) { + this._areZonesActive = false; + this._terminal.element.removeEventListener('mousemove', this._mouseMoveListener); + this._terminal.element.removeEventListener('click', this._clickListener); + } + }; + MouseZoneManager.prototype._onMouseMove = function (e) { + if (this._lastHoverCoords[0] !== e.pageX || this._lastHoverCoords[1] !== e.pageY) { + this._onHover(e); + this._lastHoverCoords = [e.pageX, e.pageY]; + } + }; + MouseZoneManager.prototype._onHover = function (e) { + var _this = this; + var zone = this._findZoneEventAt(e); + if (zone === this._currentZone) { + return; + } + if (this._currentZone) { + this._currentZone.leaveCallback(); + this._currentZone = null; + if (this._tooltipTimeout) { + clearTimeout(this._tooltipTimeout); + } + } + if (!zone) { + return; + } + this._currentZone = zone; + if (zone.hoverCallback) { + zone.hoverCallback(e); + } + this._tooltipTimeout = setTimeout(function () { return _this._onTooltip(e); }, HOVER_DURATION); + }; + MouseZoneManager.prototype._onTooltip = function (e) { + this._tooltipTimeout = null; + var zone = this._findZoneEventAt(e); + if (zone && zone.tooltipCallback) { + zone.tooltipCallback(e); + } + }; + MouseZoneManager.prototype._onMouseDown = function (e) { + if (!this._areZonesActive) { + return; + } + var zone = this._findZoneEventAt(e); + if (zone) { + if (zone.willLinkActivate(e)) { + e.preventDefault(); + e.stopImmediatePropagation(); + } + } + }; + MouseZoneManager.prototype._onClick = function (e) { + var zone = this._findZoneEventAt(e); + if (zone) { + zone.clickCallback(e); + e.preventDefault(); + e.stopImmediatePropagation(); + } + }; + MouseZoneManager.prototype._findZoneEventAt = function (e) { + var coords = this._terminal.mouseHelper.getCoords(e, this._terminal.screenElement, this._terminal.charMeasure, this._terminal.options.lineHeight, this._terminal.cols, this._terminal.rows); + if (!coords) { + return null; + } + var x = coords[0]; + var y = coords[1]; + for (var i = 0; i < this._zones.length; i++) { + var zone = this._zones[i]; + if (zone.y1 === zone.y2) { + if (y === zone.y1 && x >= zone.x1 && x < zone.x2) { + return zone; + } + } + else { + if ((y === zone.y1 && x >= zone.x1) || + (y === zone.y2 && x < zone.x2) || + (y > zone.y1 && y < zone.y2)) { + return zone; + } + } + } + return null; + }; + return MouseZoneManager; +}()); +exports.MouseZoneManager = MouseZoneManager; +var MouseZone = (function () { + function MouseZone(x1, y1, x2, y2, clickCallback, hoverCallback, tooltipCallback, leaveCallback, willLinkActivate) { + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + this.clickCallback = clickCallback; + this.hoverCallback = hoverCallback; + this.tooltipCallback = tooltipCallback; + this.leaveCallback = leaveCallback; + this.willLinkActivate = willLinkActivate; + } + return MouseZone; +}()); +exports.MouseZone = MouseZone; + + + +},{}],21:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var Types_1 = require("./atlas/Types"); +var Types_2 = require("../shared/atlas/Types"); +var CharAtlas_1 = require("./atlas/CharAtlas"); +var Buffer_1 = require("../Buffer"); +var BaseRenderLayer = (function () { + function BaseRenderLayer(_container, id, zIndex, _alpha, _colors) { + this._container = _container; + this._alpha = _alpha; + this._colors = _colors; + this._scaledCharWidth = 0; + this._scaledCharHeight = 0; + this._scaledCellWidth = 0; + this._scaledCellHeight = 0; + this._scaledCharLeft = 0; + this._scaledCharTop = 0; + this._canvas = document.createElement('canvas'); + this._canvas.classList.add("xterm-" + id + "-layer"); + this._canvas.style.zIndex = zIndex.toString(); + this._initCanvas(); + this._container.appendChild(this._canvas); + } + BaseRenderLayer.prototype._initCanvas = function () { + this._ctx = this._canvas.getContext('2d', { alpha: this._alpha }); + if (!this._alpha) { + this.clearAll(); + } + }; + BaseRenderLayer.prototype.onOptionsChanged = function (terminal) { }; + BaseRenderLayer.prototype.onBlur = function (terminal) { }; + BaseRenderLayer.prototype.onFocus = function (terminal) { }; + BaseRenderLayer.prototype.onCursorMove = function (terminal) { }; + BaseRenderLayer.prototype.onGridChanged = function (terminal, startRow, endRow) { }; + BaseRenderLayer.prototype.onSelectionChanged = function (terminal, start, end) { }; + BaseRenderLayer.prototype.onThemeChanged = function (terminal, colorSet) { + this._refreshCharAtlas(terminal, colorSet); + }; + BaseRenderLayer.prototype.setTransparency = function (terminal, alpha) { + if (alpha === this._alpha) { + return; + } + var oldCanvas = this._canvas; + this._alpha = alpha; + this._canvas = this._canvas.cloneNode(); + this._initCanvas(); + this._container.replaceChild(this._canvas, oldCanvas); + this._refreshCharAtlas(terminal, this._colors); + this.onGridChanged(terminal, 0, terminal.rows - 1); + }; + BaseRenderLayer.prototype._refreshCharAtlas = function (terminal, colorSet) { + var _this = this; + if (this._scaledCharWidth <= 0 && this._scaledCharHeight <= 0) { + return; + } + this._charAtlas = null; + var result = CharAtlas_1.acquireCharAtlas(terminal, colorSet, this._scaledCharWidth, this._scaledCharHeight); + if (result instanceof HTMLCanvasElement) { + this._charAtlas = result; + } + else { + result.then(function (bitmap) { return _this._charAtlas = bitmap; }); + } + }; + BaseRenderLayer.prototype.resize = function (terminal, dim) { + this._scaledCellWidth = dim.scaledCellWidth; + this._scaledCellHeight = dim.scaledCellHeight; + this._scaledCharWidth = dim.scaledCharWidth; + this._scaledCharHeight = dim.scaledCharHeight; + this._scaledCharLeft = dim.scaledCharLeft; + this._scaledCharTop = dim.scaledCharTop; + this._canvas.width = dim.scaledCanvasWidth; + this._canvas.height = dim.scaledCanvasHeight; + this._canvas.style.width = dim.canvasWidth + "px"; + this._canvas.style.height = dim.canvasHeight + "px"; + if (!this._alpha) { + this.clearAll(); + } + this._refreshCharAtlas(terminal, this._colors); + }; + BaseRenderLayer.prototype.fillCells = function (x, y, width, height) { + this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight); + }; + BaseRenderLayer.prototype.fillBottomLineAtCells = function (x, y, width) { + if (width === void 0) { width = 1; } + this._ctx.fillRect(x * this._scaledCellWidth, (y + 1) * this._scaledCellHeight - window.devicePixelRatio - 1, width * this._scaledCellWidth, window.devicePixelRatio); + }; + BaseRenderLayer.prototype.fillLeftLineAtCell = function (x, y) { + this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, window.devicePixelRatio, this._scaledCellHeight); + }; + BaseRenderLayer.prototype.strokeRectAtCell = function (x, y, width, height) { + this._ctx.lineWidth = window.devicePixelRatio; + this._ctx.strokeRect(x * this._scaledCellWidth + window.devicePixelRatio / 2, y * this._scaledCellHeight + (window.devicePixelRatio / 2), width * this._scaledCellWidth - window.devicePixelRatio, (height * this._scaledCellHeight) - window.devicePixelRatio); + }; + BaseRenderLayer.prototype.clearAll = function () { + if (this._alpha) { + this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height); + } + else { + this._ctx.fillStyle = this._colors.background.css; + this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height); + } + }; + BaseRenderLayer.prototype.clearCells = function (x, y, width, height) { + if (this._alpha) { + this._ctx.clearRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight); + } + else { + this._ctx.fillStyle = this._colors.background.css; + this._ctx.fillRect(x * this._scaledCellWidth, y * this._scaledCellHeight, width * this._scaledCellWidth, height * this._scaledCellHeight); + } + }; + BaseRenderLayer.prototype.fillCharTrueColor = function (terminal, charData, x, y) { + this._ctx.font = this._getFont(terminal, false, false); + this._ctx.textBaseline = 'top'; + this._clipRow(terminal, y); + this._ctx.fillText(charData[Buffer_1.CHAR_DATA_CHAR_INDEX], x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop); + }; + BaseRenderLayer.prototype.drawChar = function (terminal, char, code, width, x, y, fg, bg, bold, dim, italic) { + var isAscii = code < 256; + var isBasicColor = fg < 16; + var isDefaultColor = fg >= 256; + var isDefaultBackground = bg >= 256; + var drawInBrightColor = (terminal.options.drawBoldTextInBrightColors && bold && fg < 8); + if (this._charAtlas && isAscii && (isBasicColor || isDefaultColor) && isDefaultBackground && !italic) { + this._ctx.save(); + var colorIndex = void 0; + if (isDefaultColor) { + colorIndex = (bold && terminal.options.enableBold ? 1 : 0); + } + else { + colorIndex = 2 + fg + (bold && terminal.options.enableBold ? 16 : 0) + (drawInBrightColor ? 8 : 0); + } + var charAtlasCellWidth = this._scaledCharWidth + Types_2.CHAR_ATLAS_CELL_SPACING; + var charAtlasCellHeight = this._scaledCharHeight + Types_2.CHAR_ATLAS_CELL_SPACING; + if (dim) { + this._ctx.globalAlpha = Types_1.DIM_OPACITY; + } + this._ctx.drawImage(this._charAtlas, code * charAtlasCellWidth, colorIndex * charAtlasCellHeight, charAtlasCellWidth, this._scaledCharHeight, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop, charAtlasCellWidth, this._scaledCharHeight); + this._ctx.restore(); + } + else { + this._drawUncachedChar(terminal, char, width, fg + (drawInBrightColor ? 8 : 0), x, y, bold && terminal.options.enableBold, dim, italic); + } + }; + BaseRenderLayer.prototype._drawUncachedChar = function (terminal, char, width, fg, x, y, bold, dim, italic) { + this._ctx.save(); + this._ctx.font = this._getFont(terminal, bold, italic); + this._ctx.textBaseline = 'top'; + if (fg === Types_1.INVERTED_DEFAULT_COLOR) { + this._ctx.fillStyle = this._colors.background.css; + } + else if (fg < 256) { + this._ctx.fillStyle = this._colors.ansi[fg].css; + } + else { + this._ctx.fillStyle = this._colors.foreground.css; + } + this._clipRow(terminal, y); + if (dim) { + this._ctx.globalAlpha = Types_1.DIM_OPACITY; + } + this._ctx.fillText(char, x * this._scaledCellWidth + this._scaledCharLeft, y * this._scaledCellHeight + this._scaledCharTop); + this._ctx.restore(); + }; + BaseRenderLayer.prototype._clipRow = function (terminal, y) { + this._ctx.beginPath(); + this._ctx.rect(0, y * this._scaledCellHeight, terminal.cols * this._scaledCellWidth, this._scaledCellHeight); + this._ctx.clip(); + }; + BaseRenderLayer.prototype._getFont = function (terminal, isBold, isItalic) { + var fontWeight = isBold ? terminal.options.fontWeightBold : terminal.options.fontWeight; + var fontStyle = isItalic ? 'italic' : ''; + return fontStyle + " " + fontWeight + " " + terminal.options.fontSize * window.devicePixelRatio + "px " + terminal.options.fontFamily; + }; + return BaseRenderLayer; +}()); +exports.BaseRenderLayer = BaseRenderLayer; + + + +},{"../Buffer":2,"../shared/atlas/Types":33,"./atlas/CharAtlas":29,"./atlas/Types":31}],22:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var DEFAULT_FOREGROUND = fromHex('#ffffff'); +var DEFAULT_BACKGROUND = fromHex('#000000'); +var DEFAULT_CURSOR = fromHex('#ffffff'); +var DEFAULT_CURSOR_ACCENT = fromHex('#000000'); +var DEFAULT_SELECTION = { + css: 'rgba(255, 255, 255, 0.3)', + rgba: 0xFFFFFF77 +}; +exports.DEFAULT_ANSI_COLORS = (function () { + var colors = [ + fromHex('#2e3436'), + fromHex('#cc0000'), + fromHex('#4e9a06'), + fromHex('#c4a000'), + fromHex('#3465a4'), + fromHex('#75507b'), + fromHex('#06989a'), + fromHex('#d3d7cf'), + fromHex('#555753'), + fromHex('#ef2929'), + fromHex('#8ae234'), + fromHex('#fce94f'), + fromHex('#729fcf'), + fromHex('#ad7fa8'), + fromHex('#34e2e2'), + fromHex('#eeeeec') + ]; + var v = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff]; + for (var i = 0; i < 216; i++) { + var r = v[(i / 36) % 6 | 0]; + var g = v[(i / 6) % 6 | 0]; + var b = v[i % 6]; + colors.push({ + css: "#" + toPaddedHex(r) + toPaddedHex(g) + toPaddedHex(b), + rgba: ((r << 24) | (g << 16) | (b << 8) | 0xFF) >>> 0 + }); + } + for (var i = 0; i < 24; i++) { + var c = 8 + i * 10; + var ch = toPaddedHex(c); + colors.push({ + css: "#" + ch + ch + ch, + rgba: ((c << 24) | (c << 16) | (c << 8) | 0xFF) >>> 0 + }); + } + return colors; +})(); +function fromHex(css) { + return { + css: css, + rgba: parseInt(css.slice(1), 16) << 8 | 0xFF + }; +} +function toPaddedHex(c) { + var s = c.toString(16); + return s.length < 2 ? '0' + s : s; +} +var ColorManager = (function () { + function ColorManager(document, allowTransparency) { + this.allowTransparency = allowTransparency; + var canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + this._ctx = canvas.getContext('2d'); + this._ctx.globalCompositeOperation = 'copy'; + this._litmusColor = this._ctx.createLinearGradient(0, 0, 1, 1); + this.colors = { + foreground: DEFAULT_FOREGROUND, + background: DEFAULT_BACKGROUND, + cursor: DEFAULT_CURSOR, + cursorAccent: DEFAULT_CURSOR_ACCENT, + selection: DEFAULT_SELECTION, + ansi: exports.DEFAULT_ANSI_COLORS.slice() + }; + } + ColorManager.prototype.setTheme = function (theme) { + this.colors.foreground = this._parseColor(theme.foreground, DEFAULT_FOREGROUND); + this.colors.background = this._parseColor(theme.background, DEFAULT_BACKGROUND); + this.colors.cursor = this._parseColor(theme.cursor, DEFAULT_CURSOR, true); + this.colors.cursorAccent = this._parseColor(theme.cursorAccent, DEFAULT_CURSOR_ACCENT, true); + this.colors.selection = this._parseColor(theme.selection, DEFAULT_SELECTION, true); + this.colors.ansi[0] = this._parseColor(theme.black, exports.DEFAULT_ANSI_COLORS[0]); + this.colors.ansi[1] = this._parseColor(theme.red, exports.DEFAULT_ANSI_COLORS[1]); + this.colors.ansi[2] = this._parseColor(theme.green, exports.DEFAULT_ANSI_COLORS[2]); + this.colors.ansi[3] = this._parseColor(theme.yellow, exports.DEFAULT_ANSI_COLORS[3]); + this.colors.ansi[4] = this._parseColor(theme.blue, exports.DEFAULT_ANSI_COLORS[4]); + this.colors.ansi[5] = this._parseColor(theme.magenta, exports.DEFAULT_ANSI_COLORS[5]); + this.colors.ansi[6] = this._parseColor(theme.cyan, exports.DEFAULT_ANSI_COLORS[6]); + this.colors.ansi[7] = this._parseColor(theme.white, exports.DEFAULT_ANSI_COLORS[7]); + this.colors.ansi[8] = this._parseColor(theme.brightBlack, exports.DEFAULT_ANSI_COLORS[8]); + this.colors.ansi[9] = this._parseColor(theme.brightRed, exports.DEFAULT_ANSI_COLORS[9]); + this.colors.ansi[10] = this._parseColor(theme.brightGreen, exports.DEFAULT_ANSI_COLORS[10]); + this.colors.ansi[11] = this._parseColor(theme.brightYellow, exports.DEFAULT_ANSI_COLORS[11]); + this.colors.ansi[12] = this._parseColor(theme.brightBlue, exports.DEFAULT_ANSI_COLORS[12]); + this.colors.ansi[13] = this._parseColor(theme.brightMagenta, exports.DEFAULT_ANSI_COLORS[13]); + this.colors.ansi[14] = this._parseColor(theme.brightCyan, exports.DEFAULT_ANSI_COLORS[14]); + this.colors.ansi[15] = this._parseColor(theme.brightWhite, exports.DEFAULT_ANSI_COLORS[15]); + }; + ColorManager.prototype._parseColor = function (css, fallback, allowTransparency) { + if (allowTransparency === void 0) { allowTransparency = this.allowTransparency; } + if (!css) { + return fallback; + } + this._ctx.fillStyle = this._litmusColor; + this._ctx.fillStyle = css; + if (typeof this._ctx.fillStyle !== 'string') { + console.warn("Color: " + css + " is invalid using fallback " + fallback.css); + return fallback; + } + this._ctx.fillRect(0, 0, 1, 1); + var data = this._ctx.getImageData(0, 0, 1, 1).data; + if (!allowTransparency && data[3] !== 0xFF) { + console.warn("Color: " + css + " is using transparency, but allowTransparency is false. " + + ("Using fallback " + fallback.css + ".")); + return fallback; + } + return { + css: css, + rgba: (data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3]) >>> 0 + }; + }; + return ColorManager; +}()); +exports.ColorManager = ColorManager; + + + +},{}],23:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var Buffer_1 = require("../Buffer"); +var BaseRenderLayer_1 = require("./BaseRenderLayer"); +var BLINK_INTERVAL = 600; +var CursorRenderLayer = (function (_super) { + __extends(CursorRenderLayer, _super); + function CursorRenderLayer(container, zIndex, colors) { + var _this = _super.call(this, container, 'cursor', zIndex, true, colors) || this; + _this._state = { + x: null, + y: null, + isFocused: null, + style: null, + width: null + }; + _this._cursorRenderers = { + 'bar': _this._renderBarCursor.bind(_this), + 'block': _this._renderBlockCursor.bind(_this), + 'underline': _this._renderUnderlineCursor.bind(_this) + }; + return _this; + } + CursorRenderLayer.prototype.resize = function (terminal, dim) { + _super.prototype.resize.call(this, terminal, dim); + this._state = { + x: null, + y: null, + isFocused: null, + style: null, + width: null + }; + }; + CursorRenderLayer.prototype.reset = function (terminal) { + this._clearCursor(); + if (this._cursorBlinkStateManager) { + this._cursorBlinkStateManager.dispose(); + this._cursorBlinkStateManager = null; + this.onOptionsChanged(terminal); + } + }; + CursorRenderLayer.prototype.onBlur = function (terminal) { + if (this._cursorBlinkStateManager) { + this._cursorBlinkStateManager.pause(); + } + terminal.refresh(terminal.buffer.y, terminal.buffer.y); + }; + CursorRenderLayer.prototype.onFocus = function (terminal) { + if (this._cursorBlinkStateManager) { + this._cursorBlinkStateManager.resume(terminal); + } + else { + terminal.refresh(terminal.buffer.y, terminal.buffer.y); + } + }; + CursorRenderLayer.prototype.onOptionsChanged = function (terminal) { + var _this = this; + if (terminal.options.cursorBlink) { + if (!this._cursorBlinkStateManager) { + this._cursorBlinkStateManager = new CursorBlinkStateManager(terminal, function () { + _this._render(terminal, true); + }); + } + } + else { + if (this._cursorBlinkStateManager) { + this._cursorBlinkStateManager.dispose(); + this._cursorBlinkStateManager = null; + } + terminal.refresh(terminal.buffer.y, terminal.buffer.y); + } + }; + CursorRenderLayer.prototype.onCursorMove = function (terminal) { + if (this._cursorBlinkStateManager) { + this._cursorBlinkStateManager.restartBlinkAnimation(terminal); + } + }; + CursorRenderLayer.prototype.onGridChanged = function (terminal, startRow, endRow) { + if (!this._cursorBlinkStateManager || this._cursorBlinkStateManager.isPaused) { + this._render(terminal, false); + } + else { + this._cursorBlinkStateManager.restartBlinkAnimation(terminal); + } + }; + CursorRenderLayer.prototype._render = function (terminal, triggeredByAnimationFrame) { + if (!terminal.cursorState || terminal.cursorHidden) { + this._clearCursor(); + return; + } + var cursorY = terminal.buffer.ybase + terminal.buffer.y; + var viewportRelativeCursorY = cursorY - terminal.buffer.ydisp; + if (viewportRelativeCursorY < 0 || viewportRelativeCursorY >= terminal.rows) { + this._clearCursor(); + return; + } + var charData = terminal.buffer.lines.get(cursorY)[terminal.buffer.x]; + if (!charData) { + return; + } + if (!terminal.isFocused) { + this._clearCursor(); + this._ctx.save(); + this._ctx.fillStyle = this._colors.cursor.css; + this._renderBlurCursor(terminal, terminal.buffer.x, viewportRelativeCursorY, charData); + this._ctx.restore(); + this._state.x = terminal.buffer.x; + this._state.y = viewportRelativeCursorY; + this._state.isFocused = false; + this._state.style = terminal.options.cursorStyle; + this._state.width = charData[Buffer_1.CHAR_DATA_WIDTH_INDEX]; + return; + } + if (this._cursorBlinkStateManager && !this._cursorBlinkStateManager.isCursorVisible) { + this._clearCursor(); + return; + } + if (this._state) { + if (this._state.x === terminal.buffer.x && + this._state.y === viewportRelativeCursorY && + this._state.isFocused === terminal.isFocused && + this._state.style === terminal.options.cursorStyle && + this._state.width === charData[Buffer_1.CHAR_DATA_WIDTH_INDEX]) { + return; + } + this._clearCursor(); + } + this._ctx.save(); + this._cursorRenderers[terminal.options.cursorStyle || 'block'](terminal, terminal.buffer.x, viewportRelativeCursorY, charData); + this._ctx.restore(); + this._state.x = terminal.buffer.x; + this._state.y = viewportRelativeCursorY; + this._state.isFocused = false; + this._state.style = terminal.options.cursorStyle; + this._state.width = charData[Buffer_1.CHAR_DATA_WIDTH_INDEX]; + }; + CursorRenderLayer.prototype._clearCursor = function () { + if (this._state) { + this.clearCells(this._state.x, this._state.y, this._state.width, 1); + this._state = { + x: null, + y: null, + isFocused: null, + style: null, + width: null + }; + } + }; + CursorRenderLayer.prototype._renderBarCursor = function (terminal, x, y, charData) { + this._ctx.save(); + this._ctx.fillStyle = this._colors.cursor.css; + this.fillLeftLineAtCell(x, y); + this._ctx.restore(); + }; + CursorRenderLayer.prototype._renderBlockCursor = function (terminal, x, y, charData) { + this._ctx.save(); + this._ctx.fillStyle = this._colors.cursor.css; + this.fillCells(x, y, charData[Buffer_1.CHAR_DATA_WIDTH_INDEX], 1); + this._ctx.fillStyle = this._colors.cursorAccent.css; + this.fillCharTrueColor(terminal, charData, x, y); + this._ctx.restore(); + }; + CursorRenderLayer.prototype._renderUnderlineCursor = function (terminal, x, y, charData) { + this._ctx.save(); + this._ctx.fillStyle = this._colors.cursor.css; + this.fillBottomLineAtCells(x, y); + this._ctx.restore(); + }; + CursorRenderLayer.prototype._renderBlurCursor = function (terminal, x, y, charData) { + this._ctx.save(); + this._ctx.strokeStyle = this._colors.cursor.css; + this.strokeRectAtCell(x, y, charData[Buffer_1.CHAR_DATA_WIDTH_INDEX], 1); + this._ctx.restore(); + }; + return CursorRenderLayer; +}(BaseRenderLayer_1.BaseRenderLayer)); +exports.CursorRenderLayer = CursorRenderLayer; +var CursorBlinkStateManager = (function () { + function CursorBlinkStateManager(terminal, _renderCallback) { + this._renderCallback = _renderCallback; + this.isCursorVisible = true; + if (terminal.isFocused) { + this._restartInterval(); + } + } + Object.defineProperty(CursorBlinkStateManager.prototype, "isPaused", { + get: function () { return !(this._blinkStartTimeout || this._blinkInterval); }, + enumerable: true, + configurable: true + }); + CursorBlinkStateManager.prototype.dispose = function () { + if (this._blinkInterval) { + window.clearInterval(this._blinkInterval); + this._blinkInterval = null; + } + if (this._blinkStartTimeout) { + window.clearTimeout(this._blinkStartTimeout); + this._blinkStartTimeout = null; + } + if (this._animationFrame) { + window.cancelAnimationFrame(this._animationFrame); + this._animationFrame = null; + } + }; + CursorBlinkStateManager.prototype.restartBlinkAnimation = function (terminal) { + var _this = this; + if (this.isPaused) { + return; + } + this._animationTimeRestarted = Date.now(); + this.isCursorVisible = true; + if (!this._animationFrame) { + this._animationFrame = window.requestAnimationFrame(function () { + _this._renderCallback(); + _this._animationFrame = null; + }); + } + }; + CursorBlinkStateManager.prototype._restartInterval = function (timeToStart) { + var _this = this; + if (timeToStart === void 0) { timeToStart = BLINK_INTERVAL; } + if (this._blinkInterval) { + window.clearInterval(this._blinkInterval); + } + this._blinkStartTimeout = setTimeout(function () { + if (_this._animationTimeRestarted) { + var time = BLINK_INTERVAL - (Date.now() - _this._animationTimeRestarted); + _this._animationTimeRestarted = null; + if (time > 0) { + _this._restartInterval(time); + return; + } + } + _this.isCursorVisible = false; + _this._animationFrame = window.requestAnimationFrame(function () { + _this._renderCallback(); + _this._animationFrame = null; + }); + _this._blinkInterval = setInterval(function () { + if (_this._animationTimeRestarted) { + var time = BLINK_INTERVAL - (Date.now() - _this._animationTimeRestarted); + _this._animationTimeRestarted = null; + _this._restartInterval(time); + return; + } + _this.isCursorVisible = !_this.isCursorVisible; + _this._animationFrame = window.requestAnimationFrame(function () { + _this._renderCallback(); + _this._animationFrame = null; + }); + }, BLINK_INTERVAL); + }, timeToStart); + }; + CursorBlinkStateManager.prototype.pause = function () { + this.isCursorVisible = true; + if (this._blinkInterval) { + window.clearInterval(this._blinkInterval); + this._blinkInterval = null; + } + if (this._blinkStartTimeout) { + window.clearTimeout(this._blinkStartTimeout); + this._blinkStartTimeout = null; + } + if (this._animationFrame) { + window.cancelAnimationFrame(this._animationFrame); + this._animationFrame = null; + } + }; + CursorBlinkStateManager.prototype.resume = function (terminal) { + this._animationTimeRestarted = null; + this._restartInterval(); + this.restartBlinkAnimation(terminal); + }; + return CursorBlinkStateManager; +}()); + + + +},{"../Buffer":2,"./BaseRenderLayer":21}],24:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var GridCache = (function () { + function GridCache() { + this.cache = []; + } + GridCache.prototype.resize = function (width, height) { + for (var x = 0; x < width; x++) { + if (this.cache.length <= x) { + this.cache.push([]); + } + for (var y = this.cache[x].length; y < height; y++) { + this.cache[x].push(null); + } + this.cache[x].length = height; + } + this.cache.length = width; + }; + GridCache.prototype.clear = function () { + for (var x = 0; x < this.cache.length; x++) { + for (var y = 0; y < this.cache[x].length; y++) { + this.cache[x][y] = null; + } + } + }; + return GridCache; +}()); +exports.GridCache = GridCache; + + + +},{}],25:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var BaseRenderLayer_1 = require("./BaseRenderLayer"); +var LinkRenderLayer = (function (_super) { + __extends(LinkRenderLayer, _super); + function LinkRenderLayer(container, zIndex, colors, terminal) { + var _this = _super.call(this, container, 'link', zIndex, true, colors) || this; + _this._state = null; + terminal.linkifier.on("linkhover", function (e) { return _this._onLinkHover(e); }); + terminal.linkifier.on("linkleave", function (e) { return _this._onLinkLeave(e); }); + return _this; + } + LinkRenderLayer.prototype.resize = function (terminal, dim) { + _super.prototype.resize.call(this, terminal, dim); + this._state = null; + }; + LinkRenderLayer.prototype.reset = function (terminal) { + this._clearCurrentLink(); + }; + LinkRenderLayer.prototype._clearCurrentLink = function () { + if (this._state) { + this.clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1); + var middleRowCount = this._state.y2 - this._state.y1 - 1; + if (middleRowCount > 0) { + this.clearCells(0, this._state.y1 + 1, this._state.cols, middleRowCount); + } + this.clearCells(0, this._state.y2, this._state.x2, 1); + this._state = null; + } + }; + LinkRenderLayer.prototype._onLinkHover = function (e) { + this._ctx.fillStyle = this._colors.foreground.css; + if (e.y1 === e.y2) { + this.fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1); + } + else { + this.fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1); + for (var y = e.y1 + 1; y < e.y2; y++) { + this.fillBottomLineAtCells(0, y, e.cols); + } + this.fillBottomLineAtCells(0, e.y2, e.x2); + } + this._state = e; + }; + LinkRenderLayer.prototype._onLinkLeave = function (e) { + this._clearCurrentLink(); + }; + return LinkRenderLayer; +}(BaseRenderLayer_1.BaseRenderLayer)); +exports.LinkRenderLayer = LinkRenderLayer; + + + +},{"./BaseRenderLayer":21}],26:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var TextRenderLayer_1 = require("./TextRenderLayer"); +var SelectionRenderLayer_1 = require("./SelectionRenderLayer"); +var CursorRenderLayer_1 = require("./CursorRenderLayer"); +var ColorManager_1 = require("./ColorManager"); +var LinkRenderLayer_1 = require("./LinkRenderLayer"); +var EventEmitter_1 = require("../EventEmitter"); +var RenderDebouncer_1 = require("../utils/RenderDebouncer"); +var ScreenDprMonitor_1 = require("../utils/ScreenDprMonitor"); +var Renderer = (function (_super) { + __extends(Renderer, _super); + function Renderer(_terminal, theme) { + var _this = _super.call(this) || this; + _this._terminal = _terminal; + _this._isPaused = false; + _this._needsFullRefresh = false; + var allowTransparency = _this._terminal.options.allowTransparency; + _this.colorManager = new ColorManager_1.ColorManager(document, allowTransparency); + if (theme) { + _this.colorManager.setTheme(theme); + } + _this._renderLayers = [ + new TextRenderLayer_1.TextRenderLayer(_this._terminal.screenElement, 0, _this.colorManager.colors, allowTransparency), + new SelectionRenderLayer_1.SelectionRenderLayer(_this._terminal.screenElement, 1, _this.colorManager.colors), + new LinkRenderLayer_1.LinkRenderLayer(_this._terminal.screenElement, 2, _this.colorManager.colors, _this._terminal), + new CursorRenderLayer_1.CursorRenderLayer(_this._terminal.screenElement, 3, _this.colorManager.colors) + ]; + _this.dimensions = { + scaledCharWidth: null, + scaledCharHeight: null, + scaledCellWidth: null, + scaledCellHeight: null, + scaledCharLeft: null, + scaledCharTop: null, + scaledCanvasWidth: null, + scaledCanvasHeight: null, + canvasWidth: null, + canvasHeight: null, + actualCellWidth: null, + actualCellHeight: null + }; + _this._devicePixelRatio = window.devicePixelRatio; + _this._updateDimensions(); + _this.onOptionsChanged(); + _this._renderDebouncer = new RenderDebouncer_1.RenderDebouncer(_this._terminal, _this._renderRows.bind(_this)); + _this._screenDprMonitor = new ScreenDprMonitor_1.ScreenDprMonitor(); + _this._screenDprMonitor.setListener(function () { return _this.onWindowResize(window.devicePixelRatio); }); + if ('IntersectionObserver' in window) { + var observer = new IntersectionObserver(function (e) { return _this.onIntersectionChange(e[0]); }, { threshold: 0 }); + observer.observe(_this._terminal.element); + } + return _this; + } + Renderer.prototype.onIntersectionChange = function (entry) { + this._isPaused = entry.intersectionRatio === 0; + if (!this._isPaused && this._needsFullRefresh) { + this._terminal.refresh(0, this._terminal.rows - 1); + } + }; + Renderer.prototype.onWindowResize = function (devicePixelRatio) { + if (this._devicePixelRatio !== devicePixelRatio) { + this._devicePixelRatio = devicePixelRatio; + this.onResize(this._terminal.cols, this._terminal.rows); + } + }; + Renderer.prototype.setTheme = function (theme) { + var _this = this; + this.colorManager.setTheme(theme); + this._renderLayers.forEach(function (l) { + l.onThemeChanged(_this._terminal, _this.colorManager.colors); + l.reset(_this._terminal); + }); + if (this._isPaused) { + this._needsFullRefresh = true; + } + else { + this._terminal.refresh(0, this._terminal.rows - 1); + } + return this.colorManager.colors; + }; + Renderer.prototype.onResize = function (cols, rows) { + var _this = this; + this._updateDimensions(); + this._renderLayers.forEach(function (l) { return l.resize(_this._terminal, _this.dimensions); }); + if (this._isPaused) { + this._needsFullRefresh = true; + } + else { + this._terminal.refresh(0, this._terminal.rows - 1); + } + this._terminal.screenElement.style.width = this.dimensions.canvasWidth + "px"; + this._terminal.screenElement.style.height = this.dimensions.canvasHeight + "px"; + this.emit('resize', { + width: this.dimensions.canvasWidth, + height: this.dimensions.canvasHeight + }); + }; + Renderer.prototype.onCharSizeChanged = function () { + this.onResize(this._terminal.cols, this._terminal.rows); + }; + Renderer.prototype.onBlur = function () { + var _this = this; + this._runOperation(function (l) { return l.onBlur(_this._terminal); }); + }; + Renderer.prototype.onFocus = function () { + var _this = this; + this._runOperation(function (l) { return l.onFocus(_this._terminal); }); + }; + Renderer.prototype.onSelectionChanged = function (start, end) { + var _this = this; + this._runOperation(function (l) { return l.onSelectionChanged(_this._terminal, start, end); }); + }; + Renderer.prototype.onCursorMove = function () { + var _this = this; + this._runOperation(function (l) { return l.onCursorMove(_this._terminal); }); + }; + Renderer.prototype.onOptionsChanged = function () { + var _this = this; + this._runOperation(function (l) { return l.onOptionsChanged(_this._terminal); }); + }; + Renderer.prototype.clear = function () { + var _this = this; + this._runOperation(function (l) { return l.reset(_this._terminal); }); + }; + Renderer.prototype._runOperation = function (operation) { + if (this._isPaused) { + this._needsFullRefresh = true; + } + else { + this._renderLayers.forEach(function (l) { return operation(l); }); + } + }; + Renderer.prototype.refreshRows = function (start, end) { + if (this._isPaused) { + this._needsFullRefresh = true; + return; + } + this._renderDebouncer.refresh(start, end); + }; + Renderer.prototype._renderRows = function (start, end) { + var _this = this; + this._renderLayers.forEach(function (l) { return l.onGridChanged(_this._terminal, start, end); }); + this._terminal.emit('refresh', { start: start, end: end }); + }; + Renderer.prototype._updateDimensions = function () { + if (!this._terminal.charMeasure.width || !this._terminal.charMeasure.height) { + return; + } + this.dimensions.scaledCharWidth = Math.floor(this._terminal.charMeasure.width * window.devicePixelRatio); + this.dimensions.scaledCharHeight = Math.ceil(this._terminal.charMeasure.height * window.devicePixelRatio); + this.dimensions.scaledCellHeight = Math.floor(this.dimensions.scaledCharHeight * this._terminal.options.lineHeight); + this.dimensions.scaledCharTop = this._terminal.options.lineHeight === 1 ? 0 : Math.round((this.dimensions.scaledCellHeight - this.dimensions.scaledCharHeight) / 2); + this.dimensions.scaledCellWidth = this.dimensions.scaledCharWidth + Math.round(this._terminal.options.letterSpacing); + this.dimensions.scaledCharLeft = Math.floor(this._terminal.options.letterSpacing / 2); + this.dimensions.scaledCanvasHeight = this._terminal.rows * this.dimensions.scaledCellHeight; + this.dimensions.scaledCanvasWidth = this._terminal.cols * this.dimensions.scaledCellWidth; + this.dimensions.canvasHeight = Math.round(this.dimensions.scaledCanvasHeight / window.devicePixelRatio); + this.dimensions.canvasWidth = Math.round(this.dimensions.scaledCanvasWidth / window.devicePixelRatio); + this.dimensions.actualCellHeight = this.dimensions.canvasHeight / this._terminal.rows; + this.dimensions.actualCellWidth = this.dimensions.canvasWidth / this._terminal.cols; + }; + return Renderer; +}(EventEmitter_1.EventEmitter)); +exports.Renderer = Renderer; + + + +},{"../EventEmitter":8,"../utils/RenderDebouncer":40,"../utils/ScreenDprMonitor":41,"./ColorManager":22,"./CursorRenderLayer":23,"./LinkRenderLayer":25,"./SelectionRenderLayer":27,"./TextRenderLayer":28}],27:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var BaseRenderLayer_1 = require("./BaseRenderLayer"); +var SelectionRenderLayer = (function (_super) { + __extends(SelectionRenderLayer, _super); + function SelectionRenderLayer(container, zIndex, colors) { + var _this = _super.call(this, container, 'selection', zIndex, true, colors) || this; + _this._state = { + start: null, + end: null + }; + return _this; + } + SelectionRenderLayer.prototype.resize = function (terminal, dim) { + _super.prototype.resize.call(this, terminal, dim); + this._state = { + start: null, + end: null + }; + }; + SelectionRenderLayer.prototype.reset = function (terminal) { + if (this._state.start && this._state.end) { + this._state = { + start: null, + end: null + }; + this.clearAll(); + } + }; + SelectionRenderLayer.prototype.onSelectionChanged = function (terminal, start, end) { + if (this._state.start === start || this._state.end === end) { + return; + } + this.clearAll(); + if (!start || !end) { + return; + } + var viewportStartRow = start[1] - terminal.buffer.ydisp; + var viewportEndRow = end[1] - terminal.buffer.ydisp; + var viewportCappedStartRow = Math.max(viewportStartRow, 0); + var viewportCappedEndRow = Math.min(viewportEndRow, terminal.rows - 1); + if (viewportCappedStartRow >= terminal.rows || viewportCappedEndRow < 0) { + return; + } + var startCol = viewportStartRow === viewportCappedStartRow ? start[0] : 0; + var startRowEndCol = viewportCappedStartRow === viewportCappedEndRow ? end[0] : terminal.cols; + this._ctx.fillStyle = this._colors.selection.css; + this.fillCells(startCol, viewportCappedStartRow, startRowEndCol - startCol, 1); + var middleRowsCount = Math.max(viewportCappedEndRow - viewportCappedStartRow - 1, 0); + this.fillCells(0, viewportCappedStartRow + 1, terminal.cols, middleRowsCount); + if (viewportCappedStartRow !== viewportCappedEndRow) { + var endCol = viewportEndRow === viewportCappedEndRow ? end[0] : terminal.cols; + this.fillCells(0, viewportCappedEndRow, endCol, 1); + } + this._state.start = [start[0], start[1]]; + this._state.end = [end[0], end[1]]; + }; + return SelectionRenderLayer; +}(BaseRenderLayer_1.BaseRenderLayer)); +exports.SelectionRenderLayer = SelectionRenderLayer; + + + +},{"./BaseRenderLayer":21}],28:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var Buffer_1 = require("../Buffer"); +var Types_1 = require("./atlas/Types"); +var GridCache_1 = require("./GridCache"); +var BaseRenderLayer_1 = require("./BaseRenderLayer"); +var TextRenderLayer = (function (_super) { + __extends(TextRenderLayer, _super); + function TextRenderLayer(container, zIndex, colors, alpha) { + var _this = _super.call(this, container, 'text', zIndex, alpha, colors) || this; + _this._characterOverlapCache = {}; + _this._state = new GridCache_1.GridCache(); + return _this; + } + TextRenderLayer.prototype.resize = function (terminal, dim) { + _super.prototype.resize.call(this, terminal, dim); + var terminalFont = this._getFont(terminal, false, false); + if (this._characterWidth !== dim.scaledCharWidth || this._characterFont !== terminalFont) { + this._characterWidth = dim.scaledCharWidth; + this._characterFont = terminalFont; + this._characterOverlapCache = {}; + } + this._state.clear(); + this._state.resize(terminal.cols, terminal.rows); + }; + TextRenderLayer.prototype.reset = function (terminal) { + this._state.clear(); + this.clearAll(); + }; + TextRenderLayer.prototype._forEachCell = function (terminal, firstRow, lastRow, callback) { + for (var y = firstRow; y <= lastRow; y++) { + var row = y + terminal.buffer.ydisp; + var line = terminal.buffer.lines.get(row); + for (var x = 0; x < terminal.cols; x++) { + var charData = line[x]; + var code = charData[Buffer_1.CHAR_DATA_CODE_INDEX]; + var char = charData[Buffer_1.CHAR_DATA_CHAR_INDEX]; + var attr = charData[Buffer_1.CHAR_DATA_ATTR_INDEX]; + var width = charData[Buffer_1.CHAR_DATA_WIDTH_INDEX]; + if (width === 0) { + continue; + } + if (this._isOverlapping(charData)) { + if (x < line.length - 1 && line[x + 1][Buffer_1.CHAR_DATA_CODE_INDEX] === 32) { + width = 2; + } + } + var flags = attr >> 18; + var bg = attr & 0x1ff; + var fg = (attr >> 9) & 0x1ff; + if (flags & 8) { + var temp = bg; + bg = fg; + fg = temp; + if (fg === 256) { + fg = Types_1.INVERTED_DEFAULT_COLOR; + } + if (bg === 257) { + bg = Types_1.INVERTED_DEFAULT_COLOR; + } + } + callback(code, char, width, x, y, fg, bg, flags); + } + } + }; + TextRenderLayer.prototype._drawBackground = function (terminal, firstRow, lastRow) { + var _this = this; + var ctx = this._ctx; + var cols = terminal.cols; + var startX = 0; + var startY = 0; + var prevFillStyle = null; + ctx.save(); + this._forEachCell(terminal, firstRow, lastRow, function (code, char, width, x, y, fg, bg, flags) { + var nextFillStyle = null; + if (bg === Types_1.INVERTED_DEFAULT_COLOR) { + nextFillStyle = _this._colors.foreground.css; + } + else if (bg < 256) { + nextFillStyle = _this._colors.ansi[bg].css; + } + if (prevFillStyle === null) { + startX = x; + startY = y; + } + if (y !== startY) { + ctx.fillStyle = prevFillStyle; + _this.fillCells(startX, startY, cols - startX, 1); + startX = x; + startY = y; + } + else if (prevFillStyle !== nextFillStyle) { + ctx.fillStyle = prevFillStyle; + _this.fillCells(startX, startY, x - startX, 1); + startX = x; + startY = y; + } + prevFillStyle = nextFillStyle; + }); + if (prevFillStyle !== null) { + ctx.fillStyle = prevFillStyle; + this.fillCells(startX, startY, cols - startX, 1); + } + ctx.restore(); + }; + TextRenderLayer.prototype._drawForeground = function (terminal, firstRow, lastRow) { + var _this = this; + this._forEachCell(terminal, firstRow, lastRow, function (code, char, width, x, y, fg, bg, flags) { + if (flags & 16) { + return; + } + if (flags & 2) { + _this._ctx.save(); + if (fg === Types_1.INVERTED_DEFAULT_COLOR) { + _this._ctx.fillStyle = _this._colors.background.css; + } + else if (fg < 256) { + _this._ctx.fillStyle = _this._colors.ansi[fg].css; + } + else { + _this._ctx.fillStyle = _this._colors.foreground.css; + } + _this.fillBottomLineAtCells(x, y); + _this._ctx.restore(); + } + _this.drawChar(terminal, char, code, width, x, y, fg, bg, !!(flags & 1), !!(flags & 32), !!(flags & 64)); + }); + }; + TextRenderLayer.prototype.onGridChanged = function (terminal, firstRow, lastRow) { + if (this._state.cache.length === 0) { + return; + } + this.clearCells(0, firstRow, terminal.cols, lastRow - firstRow + 1); + this._drawBackground(terminal, firstRow, lastRow); + this._drawForeground(terminal, firstRow, lastRow); + }; + TextRenderLayer.prototype.onOptionsChanged = function (terminal) { + this.setTransparency(terminal, terminal.options.allowTransparency); + }; + TextRenderLayer.prototype._isOverlapping = function (charData) { + if (charData[Buffer_1.CHAR_DATA_WIDTH_INDEX] !== 1) { + return false; + } + var code = charData[Buffer_1.CHAR_DATA_CODE_INDEX]; + if (code < 256) { + return false; + } + var char = charData[Buffer_1.CHAR_DATA_CHAR_INDEX]; + if (this._characterOverlapCache.hasOwnProperty(char)) { + return this._characterOverlapCache[char]; + } + this._ctx.save(); + this._ctx.font = this._characterFont; + var overlaps = Math.floor(this._ctx.measureText(char).width) > this._characterWidth; + this._ctx.restore(); + this._characterOverlapCache[char] = overlaps; + return overlaps; + }; + return TextRenderLayer; +}(BaseRenderLayer_1.BaseRenderLayer)); +exports.TextRenderLayer = TextRenderLayer; + + + +},{"../Buffer":2,"./BaseRenderLayer":21,"./GridCache":24,"./atlas/Types":31}],29:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var CharAtlasGenerator_1 = require("../../shared/atlas/CharAtlasGenerator"); +var CharAtlasUtils_1 = require("./CharAtlasUtils"); +var charAtlasCache = []; +function acquireCharAtlas(terminal, colors, scaledCharWidth, scaledCharHeight) { + var newConfig = CharAtlasUtils_1.generateConfig(scaledCharWidth, scaledCharHeight, terminal, colors); + for (var i = 0; i < charAtlasCache.length; i++) { + var entry = charAtlasCache[i]; + var ownedByIndex = entry.ownedBy.indexOf(terminal); + if (ownedByIndex >= 0) { + if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) { + return entry.bitmap; + } + else { + if (entry.ownedBy.length === 1) { + charAtlasCache.splice(i, 1); + } + else { + entry.ownedBy.splice(ownedByIndex, 1); + } + break; + } + } + } + for (var i = 0; i < charAtlasCache.length; i++) { + var entry = charAtlasCache[i]; + if (CharAtlasUtils_1.configEquals(entry.config, newConfig)) { + entry.ownedBy.push(terminal); + return entry.bitmap; + } + } + var canvasFactory = function (width, height) { + var canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + return canvas; + }; + var newEntry = { + bitmap: CharAtlasGenerator_1.generateCharAtlas(window, canvasFactory, newConfig), + config: newConfig, + ownedBy: [terminal] + }; + charAtlasCache.push(newEntry); + return newEntry.bitmap; +} +exports.acquireCharAtlas = acquireCharAtlas; +function removeTerminalFromCache(terminal) { + for (var i = 0; i < charAtlasCache.length; i++) { + var index = charAtlasCache[i].ownedBy.indexOf(terminal); + if (index !== -1) { + if (charAtlasCache[i].ownedBy.length === 1) { + charAtlasCache.splice(i, 1); + } + else { + charAtlasCache[i].ownedBy.splice(index, 1); + } + break; + } + } +} +exports.removeTerminalFromCache = removeTerminalFromCache; + + + +},{"../../shared/atlas/CharAtlasGenerator":32,"./CharAtlasUtils":30}],30:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function generateConfig(scaledCharWidth, scaledCharHeight, terminal, colors) { + var clonedColors = { + foreground: colors.foreground, + background: colors.background, + cursor: null, + cursorAccent: null, + selection: null, + ansi: colors.ansi.slice(0, 16) + }; + return { + devicePixelRatio: window.devicePixelRatio, + scaledCharWidth: scaledCharWidth, + scaledCharHeight: scaledCharHeight, + fontFamily: terminal.options.fontFamily, + fontSize: terminal.options.fontSize, + fontWeight: terminal.options.fontWeight, + fontWeightBold: terminal.options.fontWeightBold, + allowTransparency: terminal.options.allowTransparency, + colors: clonedColors + }; +} +exports.generateConfig = generateConfig; +function configEquals(a, b) { + for (var i = 0; i < a.colors.ansi.length; i++) { + if (a.colors.ansi[i].rgba !== b.colors.ansi[i].rgba) { + return false; + } + } + return a.devicePixelRatio === b.devicePixelRatio && + a.fontFamily === b.fontFamily && + a.fontSize === b.fontSize && + a.fontWeight === b.fontWeight && + a.fontWeightBold === b.fontWeightBold && + a.allowTransparency === b.allowTransparency && + a.scaledCharWidth === b.scaledCharWidth && + a.scaledCharHeight === b.scaledCharHeight && + a.colors.foreground === b.colors.foreground && + a.colors.background === b.colors.background; +} +exports.configEquals = configEquals; + + + +},{}],31:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.INVERTED_DEFAULT_COLOR = -1; +exports.DIM_OPACITY = 0.5; + + + +},{}],32:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var Types_1 = require("./Types"); +var Browser_1 = require("../utils/Browser"); +function generateCharAtlas(context, canvasFactory, config) { + var cellWidth = config.scaledCharWidth + Types_1.CHAR_ATLAS_CELL_SPACING; + var cellHeight = config.scaledCharHeight + Types_1.CHAR_ATLAS_CELL_SPACING; + var canvas = canvasFactory(255 * cellWidth, (2 + 16 + 16) * cellHeight); + var ctx = canvas.getContext('2d', { alpha: config.allowTransparency }); + ctx.fillStyle = config.colors.background.css; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.save(); + ctx.fillStyle = config.colors.foreground.css; + ctx.font = getFont(config.fontWeight, config); + ctx.textBaseline = 'top'; + for (var i = 0; i < 256; i++) { + ctx.save(); + ctx.beginPath(); + ctx.rect(i * cellWidth, 0, cellWidth, cellHeight); + ctx.clip(); + ctx.fillText(String.fromCharCode(i), i * cellWidth, 0); + ctx.restore(); + } + ctx.save(); + ctx.font = getFont(config.fontWeightBold, config); + for (var i = 0; i < 256; i++) { + ctx.save(); + ctx.beginPath(); + ctx.rect(i * cellWidth, cellHeight, cellWidth, cellHeight); + ctx.clip(); + ctx.fillText(String.fromCharCode(i), i * cellWidth, cellHeight); + ctx.restore(); + } + ctx.restore(); + ctx.font = getFont(config.fontWeight, config); + for (var colorIndex = 0; colorIndex < 16; colorIndex++) { + var y = (colorIndex + 2) * cellHeight; + for (var i = 0; i < 256; i++) { + ctx.save(); + ctx.beginPath(); + ctx.rect(i * cellWidth, y, cellWidth, cellHeight); + ctx.clip(); + ctx.fillStyle = config.colors.ansi[colorIndex].css; + ctx.fillText(String.fromCharCode(i), i * cellWidth, y); + ctx.restore(); + } + } + ctx.font = getFont(config.fontWeightBold, config); + for (var colorIndex = 0; colorIndex < 16; colorIndex++) { + var y = (colorIndex + 2 + 16) * cellHeight; + for (var i = 0; i < 256; i++) { + ctx.save(); + ctx.beginPath(); + ctx.rect(i * cellWidth, y, cellWidth, cellHeight); + ctx.clip(); + ctx.fillStyle = config.colors.ansi[colorIndex].css; + ctx.fillText(String.fromCharCode(i), i * cellWidth, y); + ctx.restore(); + } + } + ctx.restore(); + if (!('createImageBitmap' in context) || Browser_1.isFirefox) { + if (canvas instanceof HTMLCanvasElement) { + return canvas; + } + else { + return new Promise(function (r) { return r(canvas.transferToImageBitmap()); }); + } + } + var charAtlasImageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + var r = config.colors.background.rgba >>> 24; + var g = config.colors.background.rgba >>> 16 & 0xFF; + var b = config.colors.background.rgba >>> 8 & 0xFF; + clearColor(charAtlasImageData, r, g, b); + return context.createImageBitmap(charAtlasImageData); +} +exports.generateCharAtlas = generateCharAtlas; +function clearColor(imageData, r, g, b) { + for (var offset = 0; offset < imageData.data.length; offset += 4) { + if (imageData.data[offset] === r && + imageData.data[offset + 1] === g && + imageData.data[offset + 2] === b) { + imageData.data[offset + 3] = 0; + } + } +} +function getFont(fontWeight, config) { + return fontWeight + " " + config.fontSize * config.devicePixelRatio + "px " + config.fontFamily; +} + + + +},{"../utils/Browser":34,"./Types":33}],33:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CHAR_ATLAS_CELL_SPACING = 1; + + + +},{}],34:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var isNode = (typeof navigator === 'undefined') ? true : false; +var userAgent = (isNode) ? 'node' : navigator.userAgent; +var platform = (isNode) ? 'node' : navigator.platform; +exports.isFirefox = !!~userAgent.indexOf('Firefox'); +exports.isMSIE = !!~userAgent.indexOf('MSIE') || !!~userAgent.indexOf('Trident'); +exports.isMac = contains(['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'], platform); +exports.isIpad = platform === 'iPad'; +exports.isIphone = platform === 'iPhone'; +exports.isMSWindows = contains(['Windows', 'Win16', 'Win32', 'WinCE'], platform); +exports.isLinux = platform.indexOf('Linux') >= 0; +function contains(arr, el) { + return arr.indexOf(el) >= 0; +} + + + +},{}],35:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var EventEmitter_1 = require("../EventEmitter"); +var CharMeasure = (function (_super) { + __extends(CharMeasure, _super); + function CharMeasure(document, parentElement) { + var _this = _super.call(this) || this; + _this._document = document; + _this._parentElement = parentElement; + _this._measureElement = _this._document.createElement('span'); + _this._measureElement.classList.add('xterm-char-measure-element'); + _this._measureElement.textContent = 'W'; + _this._measureElement.setAttribute('aria-hidden', 'true'); + _this._parentElement.appendChild(_this._measureElement); + return _this; + } + Object.defineProperty(CharMeasure.prototype, "width", { + get: function () { + return this._width; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CharMeasure.prototype, "height", { + get: function () { + return this._height; + }, + enumerable: true, + configurable: true + }); + CharMeasure.prototype.measure = function (options) { + this._measureElement.style.fontFamily = options.fontFamily; + this._measureElement.style.fontSize = options.fontSize + "px"; + var geometry = this._measureElement.getBoundingClientRect(); + if (geometry.width === 0 || geometry.height === 0) { + return; + } + if (this._width !== geometry.width || this._height !== geometry.height) { + this._width = geometry.width; + this._height = Math.ceil(geometry.height); + this.emit('charsizechanged'); + } + }; + return CharMeasure; +}(EventEmitter_1.EventEmitter)); +exports.CharMeasure = CharMeasure; + + + +},{"../EventEmitter":8}],36:[function(require,module,exports){ +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +var EventEmitter_1 = require("../EventEmitter"); +var CircularList = (function (_super) { + __extends(CircularList, _super); + function CircularList(_maxLength) { + var _this = _super.call(this) || this; + _this._maxLength = _maxLength; + _this._array = new Array(_this._maxLength); + _this._startIndex = 0; + _this._length = 0; + return _this; + } + Object.defineProperty(CircularList.prototype, "maxLength", { + get: function () { + return this._maxLength; + }, + set: function (newMaxLength) { + if (this._maxLength === newMaxLength) { + return; + } + var newArray = new Array(newMaxLength); + for (var i = 0; i < Math.min(newMaxLength, this.length); i++) { + newArray[i] = this._array[this._getCyclicIndex(i)]; + } + this._array = newArray; + this._maxLength = newMaxLength; + this._startIndex = 0; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(CircularList.prototype, "length", { + get: function () { + return this._length; + }, + set: function (newLength) { + if (newLength > this._length) { + for (var i = this._length; i < newLength; i++) { + this._array[i] = undefined; + } + } + this._length = newLength; + }, + enumerable: true, + configurable: true + }); + CircularList.prototype.get = function (index) { + return this._array[this._getCyclicIndex(index)]; + }; + CircularList.prototype.set = function (index, value) { + this._array[this._getCyclicIndex(index)] = value; + }; + CircularList.prototype.push = function (value) { + this._array[this._getCyclicIndex(this._length)] = value; + if (this._length === this._maxLength) { + this._startIndex++; + if (this._startIndex === this._maxLength) { + this._startIndex = 0; + } + this.emit('trim', 1); + } + else { + this._length++; + } + }; + CircularList.prototype.pop = function () { + return this._array[this._getCyclicIndex(this._length-- - 1)]; + }; + CircularList.prototype.splice = function (start, deleteCount) { + var items = []; + for (var _i = 2; _i < arguments.length; _i++) { + items[_i - 2] = arguments[_i]; + } + if (deleteCount) { + for (var i = start; i < this._length - deleteCount; i++) { + this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + deleteCount)]; + } + this._length -= deleteCount; + } + if (items && items.length) { + for (var i = this._length - 1; i >= start; i--) { + this._array[this._getCyclicIndex(i + items.length)] = this._array[this._getCyclicIndex(i)]; + } + for (var i = 0; i < items.length; i++) { + this._array[this._getCyclicIndex(start + i)] = items[i]; + } + if (this._length + items.length > this.maxLength) { + var countToTrim = (this._length + items.length) - this.maxLength; + this._startIndex += countToTrim; + this._length = this.maxLength; + this.emit('trim', countToTrim); + } + else { + this._length += items.length; + } + } + }; + CircularList.prototype.trimStart = function (count) { + if (count > this._length) { + count = this._length; + } + this._startIndex += count; + this._length -= count; + this.emit('trim', count); + }; + CircularList.prototype.shiftElements = function (start, count, offset) { + if (count <= 0) { + return; + } + if (start < 0 || start >= this._length) { + throw new Error('start argument out of range'); + } + if (start + offset < 0) { + throw new Error('Cannot shift elements in list beyond index 0'); + } + if (offset > 0) { + for (var i = count - 1; i >= 0; i--) { + this.set(start + i + offset, this.get(start + i)); + } + var expandListBy = (start + count + offset) - this._length; + if (expandListBy > 0) { + this._length += expandListBy; + while (this._length > this.maxLength) { + this._length--; + this._startIndex++; + this.emit('trim', 1); + } + } + } + else { + for (var i = 0; i < count; i++) { + this.set(start + i + offset, this.get(start + i)); + } + } + }; + CircularList.prototype._getCyclicIndex = function (index) { + return (this._startIndex + index) % this.maxLength; + }; + return CircularList; +}(EventEmitter_1.EventEmitter)); +exports.CircularList = CircularList; + + + +},{"../EventEmitter":8}],37:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.clone = function (val, depth) { + if (depth === void 0) { depth = 5; } + if (typeof val !== 'object') { + return val; + } + if (val === null) { + return null; + } + var clonedObject = Array.isArray(val) ? [] : {}; + for (var key in val) { + clonedObject[key] = depth <= 1 ? val[key] : exports.clone(val[key], depth - 1); + } + return clonedObject; +}; + + + +},{}],38:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +function addDisposableListener(node, type, handler, useCapture) { + node.addEventListener(type, handler, useCapture); + return { + dispose: function () { + if (!handler) { + return; + } + node.removeEventListener(type, handler, useCapture); + node = null; + handler = null; + } + }; +} +exports.addDisposableListener = addDisposableListener; + + + +},{}],39:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var MouseHelper = (function () { + function MouseHelper(_renderer) { + this._renderer = _renderer; + } + MouseHelper.getCoordsRelativeToElement = function (event, element) { + if (event.pageX == null) { + return null; + } + var originalElement = element; + var x = event.pageX; + var y = event.pageY; + while (element) { + x -= element.offsetLeft; + y -= element.offsetTop; + element = element.offsetParent; + } + element = originalElement; + while (element && element !== element.ownerDocument.body) { + x += element.scrollLeft; + y += element.scrollTop; + element = element.parentElement; + } + return [x, y]; + }; + MouseHelper.prototype.getCoords = function (event, element, charMeasure, lineHeight, colCount, rowCount, isSelection) { + if (!charMeasure.width || !charMeasure.height) { + return null; + } + var coords = MouseHelper.getCoordsRelativeToElement(event, element); + if (!coords) { + return null; + } + coords[0] = Math.ceil((coords[0] + (isSelection ? this._renderer.dimensions.actualCellWidth / 2 : 0)) / this._renderer.dimensions.actualCellWidth); + coords[1] = Math.ceil(coords[1] / this._renderer.dimensions.actualCellHeight); + coords[0] = Math.min(Math.max(coords[0], 1), colCount + (isSelection ? 1 : 0)); + coords[1] = Math.min(Math.max(coords[1], 1), rowCount); + return coords; + }; + MouseHelper.prototype.getRawByteCoords = function (event, element, charMeasure, lineHeight, colCount, rowCount) { + var coords = this.getCoords(event, element, charMeasure, lineHeight, colCount, rowCount); + var x = coords[0]; + var y = coords[1]; + x += 32; + y += 32; + return { x: x, y: y }; + }; + return MouseHelper; +}()); +exports.MouseHelper = MouseHelper; + + + +},{}],40:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var RenderDebouncer = (function () { + function RenderDebouncer(_terminal, _callback) { + this._terminal = _terminal; + this._callback = _callback; + this._animationFrame = null; + } + RenderDebouncer.prototype.dispose = function () { + if (this._animationFrame) { + window.cancelAnimationFrame(this._animationFrame); + this._animationFrame = null; + } + }; + RenderDebouncer.prototype.refresh = function (rowStart, rowEnd) { + var _this = this; + rowStart = rowStart || 0; + rowEnd = rowEnd || this._terminal.rows - 1; + this._rowStart = this._rowStart !== undefined ? Math.min(this._rowStart, rowStart) : rowStart; + this._rowEnd = this._rowEnd !== undefined ? Math.max(this._rowEnd, rowEnd) : rowEnd; + if (this._animationFrame) { + return; + } + this._animationFrame = window.requestAnimationFrame(function () { return _this._innerRefresh(); }); + }; + RenderDebouncer.prototype._innerRefresh = function () { + this._rowStart = Math.max(this._rowStart, 0); + this._rowEnd = Math.min(this._rowEnd, this._terminal.rows - 1); + this._callback(this._rowStart, this._rowEnd); + this._rowStart = null; + this._rowEnd = null; + this._animationFrame = null; + }; + return RenderDebouncer; +}()); +exports.RenderDebouncer = RenderDebouncer; + + + +},{}],41:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var ScreenDprMonitor = (function () { + function ScreenDprMonitor() { + } + ScreenDprMonitor.prototype.setListener = function (listener) { + var _this = this; + if (this._listener) { + this.clearListener(); + } + this._listener = listener; + this._outerListener = function () { + _this._listener(window.devicePixelRatio, _this._currentDevicePixelRatio); + _this._updateDpr(); + }; + this._updateDpr(); + }; + ScreenDprMonitor.prototype._updateDpr = function () { + if (this._resolutionMediaMatchList) { + this._resolutionMediaMatchList.removeListener(this._outerListener); + } + this._currentDevicePixelRatio = window.devicePixelRatio; + this._resolutionMediaMatchList = window.matchMedia("screen and (resolution: " + window.devicePixelRatio + "dppx)"); + this._resolutionMediaMatchList.addListener(this._outerListener); + }; + ScreenDprMonitor.prototype.clearListener = function () { + if (!this._listener) { + return; + } + this._resolutionMediaMatchList.removeListener(this._outerListener); + this._listener = null; + this._outerListener = null; + }; + return ScreenDprMonitor; +}()); +exports.ScreenDprMonitor = ScreenDprMonitor; + + + +},{}],42:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var Terminal_1 = require("./Terminal"); +module.exports = Terminal_1.Terminal; + + + +},{"./Terminal":16}]},{},[42])(42) +}); +//# sourceMappingURL=xterm.js.map diff --git a/biz/docker/container.go b/biz/docker/container.go index c57e200..59d9731 100644 --- a/biz/docker/container.go +++ b/biz/docker/container.go @@ -4,8 +4,8 @@ import ( "bytes" "context" "io" - "strconv" + "strings" "github.com/cuigh/swirl/misc" "github.com/cuigh/swirl/model" @@ -111,3 +111,45 @@ func ContainerLogs(id string, line int, timestamps bool) (stdout, stderr *bytes. } return } + +// ContainerExecCreate creates an exec instance. +func ContainerExecCreate(id string, cmd string) (resp types.IDResponse, err error) { + err = mgr.Do(func(ctx context.Context, cli *client.Client) (err error) { + opts := types.ExecConfig{ + AttachStdin: true, + AttachStdout: true, + AttachStderr: true, + Tty: true, + //User: "root", + Cmd: strings.Split(cmd, " "), + } + //cli.DialSession() + resp, err = cli.ContainerExecCreate(ctx, id, opts) + return + }) + return +} + +// ContainerExecAttach attaches a connection to an exec process in the server. +func ContainerExecAttach(id string) (resp types.HijackedResponse, err error) { + err = mgr.Do(func(ctx context.Context, cli *client.Client) (err error) { + opts := types.ExecStartCheck{ + Detach: false, + Tty: true, + } + resp, err = cli.ContainerExecAttach(ctx, id, opts) + return err + }) + return +} + +// ContainerExecStart starts an exec instance. +func ContainerExecStart(id string) error { + return mgr.Do(func(ctx context.Context, cli *client.Client) (err error) { + opts := types.ExecStartCheck{ + Detach: false, + Tty: true, + } + return cli.ContainerExecStart(ctx, id, opts) + }) +} diff --git a/config/i18n/en.yml b/config/i18n/en.yml index f47a723..2d000dc 100644 --- a/config/i18n/en.yml +++ b/config/i18n/en.yml @@ -27,6 +27,8 @@ button.next: Next button.import: Import button.export: Export button.more: More +button.connect: Connect +button.disconnect: Disconnect # field field.name: Name @@ -92,6 +94,7 @@ menu.edit: Edit menu.log: Logs menu.perm: Permission menu.stats: Stats +menu.exec: Exec # login page login.title: Sign in to Swirl diff --git a/config/i18n/zh.yml b/config/i18n/zh.yml index b5dc51a..96a8d7b 100644 --- a/config/i18n/zh.yml +++ b/config/i18n/zh.yml @@ -27,6 +27,8 @@ button.next: 后一页 button.import: 导入 button.export: 导出 button.more: 更多 +button.connect: 连接 +button.disconnect: 断开 # field field.name: 名称 @@ -92,6 +94,7 @@ menu.edit: 编辑 menu.log: 日志 menu.perm: 权限 menu.stats: 状态 +menu.exec: 执行 # login page login.title: 登录到 Swirl diff --git a/controller/container.go b/controller/container.go index 68a79c0..f6f52d4 100644 --- a/controller/container.go +++ b/controller/container.go @@ -1,14 +1,18 @@ package controller import ( + "io" "strings" "github.com/cuigh/auxo/data" + "github.com/cuigh/auxo/log" "github.com/cuigh/auxo/net/web" "github.com/cuigh/auxo/util/cast" "github.com/cuigh/swirl/biz/docker" "github.com/cuigh/swirl/misc" "github.com/cuigh/swirl/model" + "github.com/gobwas/ws" + "github.com/gobwas/ws/wsutil" ) // ContainerController is a controller of docker container @@ -19,6 +23,8 @@ type ContainerController struct { Logs web.HandlerFunc `path:"/:id/logs" name:"container.logs" authorize:"!" desc:"container logs page"` FetchLogs web.HandlerFunc `path:"/:id/fetch_logs" name:"container.fetch_logs" authorize:"?" desc:"fetch container logs"` Delete web.HandlerFunc `path:"/delete" method:"post" name:"container.delete" authorize:"!" desc:"delete container"` + Exec web.HandlerFunc `path:"/:id/exec" name:"container.exec" authorize:"!" desc:"run a command in a running container"` + Connect web.HandlerFunc `path:"/:id/connect" name:"container.connect" authorize:"!" desc:"connect to a running container"` } // Container creates an instance of ContainerController @@ -28,8 +34,10 @@ func Container() (c *ContainerController) { Detail: containerDetail, Raw: containerRaw, Logs: containerLogs, - Delete: containerDelete, FetchLogs: containerFetchLogs, + Delete: containerDelete, + Exec: containerExec, + Connect: containerConnect, } } @@ -118,3 +126,103 @@ func containerDelete(ctx web.Context) error { } return ajaxSuccess(ctx, nil) } + +func containerExec(ctx web.Context) error { + id := ctx.P("id") + container, _, err := docker.ContainerInspectRaw(id) + if err != nil { + return err + } + + m := newModel(ctx).Set("Container", container) + return ctx.Render("container/exec", m) +} + +func containerConnect(ctx web.Context) error { + id := ctx.P("id") + _, _, err := docker.ContainerInspectRaw(id) + if err != nil { + return err + } + + conn, _, _, err := ws.UpgradeHTTP(ctx.Request(), ctx.Response(), nil) + if err != nil { + return err + } + + cmd := ctx.Q("cmd") + idResp, err := docker.ContainerExecCreate(id, cmd) + if err != nil { + return err + } + + resp, err := docker.ContainerExecAttach(idResp.ID) + if err != nil { + return err + } + + err = docker.ContainerExecStart(idResp.ID) + if err != nil { + return err + } + + var ( + closed = false + logger = log.Get("exec") + disposer = func() { + if !closed { + closed = true + conn.Close() + resp.Close() + } + } + ) + + // input + go func() { + defer disposer() + + for { + msg, op, err := wsutil.ReadClientData(conn) + if err != nil { + if !closed { + logger.Error("Failed to read data from client: ", err) + } + break + } + + if op == ws.OpClose { + break + } + + _, err = resp.Conn.Write(msg) + if err != nil { + logger.Error("Failed to write data to container: ", err) + break + } + } + }() + + // output + go func() { + defer disposer() + + buf := make([]byte, 1024) + for { + n, err := resp.Reader.Read(buf) + if err == io.EOF { + break + } else if err != nil { + logger.Error("Failed to read data from container: ", err) + break + } + + err = wsutil.WriteServerMessage(conn, ws.OpText, buf[:n]) + if err != nil { + logger.Error("Failed to write data to client: ", err) + break + } + } + }() + return nil +} diff --git a/views/container/detail.jet b/views/container/detail.jet index 097021e..8a9a359 100644 --- a/views/container/detail.jet +++ b/views/container/detail.jet @@ -37,6 +37,7 @@ {{ i18n("menu.detail") }} {{ i18n("menu.raw") }} {{ i18n("menu.log") }} + {{ i18n("menu.exec") }} diff --git a/views/container/exec.jet b/views/container/exec.jet new file mode 100644 index 0000000..4214dee --- /dev/null +++ b/views/container/exec.jet @@ -0,0 +1,71 @@ +{{ extends "../_layouts/default" }} + +{{ block style() }} + +{{ end }} + +{{ block script() }} + + + +{{ end }} + +{{ block body() }} +
+
+
+

{{ i18n("container.title") }}

+

{{ i18n("container.description") }}

+
+
+
+ + + +
+
+
+

+ {{ .Container.ContainerJSONBase.Name }} +

+
+
+
+ + + +
+
+
+

+ Command +

+

+ +

+

+ + +

+
+
+
+
+{{ end }} \ No newline at end of file diff --git a/views/container/logs.jet b/views/container/logs.jet index bd53316..9ff0a60 100644 --- a/views/container/logs.jet +++ b/views/container/logs.jet @@ -40,6 +40,7 @@ {{ i18n("menu.detail") }} {{ i18n("menu.raw") }} {{ i18n("menu.log") }} + {{ i18n("menu.exec") }} diff --git a/views/container/raw.jet b/views/container/raw.jet index 4e48a62..e40d72a 100644 --- a/views/container/raw.jet +++ b/views/container/raw.jet @@ -42,6 +42,7 @@ {{ i18n("menu.detail") }} {{ i18n("menu.raw") }} {{ i18n("menu.log") }} + {{ i18n("menu.exec") }}