UNPKG

@inst/vscode-bin-darwin

Version:

BINARY ONLY - VSCode binary deployment for macOS

938 lines (936 loc) 37.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var EscapeSequences_1 = require("./EscapeSequences"); var Charsets_1 = require("./Charsets"); var Buffer_1 = require("./Buffer"); var InputHandler = (function () { function InputHandler(_terminal) { this._terminal = _terminal; } InputHandler.prototype.addChar = function (char, code) { if (char >= ' ') { var ch_width = exports.wcwidth(code); if (this._terminal.charset && this._terminal.charset[char]) { char = this._terminal.charset[char]; } var row = this._terminal.buffer.y + this._terminal.buffer.ybase; if (!ch_width && this._terminal.buffer.x) { if (this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 1]) { if (!this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 1][Buffer_1.CHAR_DATA_WIDTH_INDEX]) { if (this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 2]) { this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 2][Buffer_1.CHAR_DATA_CHAR_INDEX] += char; this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 2][3] = char.charCodeAt(0); } } else { this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 1][Buffer_1.CHAR_DATA_CHAR_INDEX] += char; this._terminal.buffer.lines.get(row)[this._terminal.buffer.x - 1][3] = char.charCodeAt(0); } this._terminal.updateRange(this._terminal.buffer.y); } return; } if (this._terminal.buffer.x + ch_width - 1 >= this._terminal.cols) { if (this._terminal.wraparoundMode) { this._terminal.buffer.x = 0; this._terminal.buffer.y++; if (this._terminal.buffer.y > this._terminal.buffer.scrollBottom) { this._terminal.buffer.y--; this._terminal.scroll(true); } else { this._terminal.buffer.lines.get(this._terminal.buffer.y).isWrapped = true; } } else { if (ch_width === 2) return; } } row = this._terminal.buffer.y + this._terminal.buffer.ybase; if (this._terminal.insertMode) { for (var moves = 0; moves < ch_width; ++moves) { var removed = this._terminal.buffer.lines.get(this._terminal.buffer.y + this._terminal.buffer.ybase).pop(); if (removed[Buffer_1.CHAR_DATA_WIDTH_INDEX] === 0 && this._terminal.buffer.lines.get(row)[this._terminal.cols - 2] && this._terminal.buffer.lines.get(row)[this._terminal.cols - 2][Buffer_1.CHAR_DATA_WIDTH_INDEX] === 2) { this._terminal.buffer.lines.get(row)[this._terminal.cols - 2] = [this._terminal.curAttr, ' ', 1, ' '.charCodeAt(0)]; } this._terminal.buffer.lines.get(row).splice(this._terminal.buffer.x, 0, [this._terminal.curAttr, ' ', 1, ' '.charCodeAt(0)]); } } this._terminal.buffer.lines.get(row)[this._terminal.buffer.x] = [this._terminal.curAttr, char, ch_width, char.charCodeAt(0)]; this._terminal.buffer.x++; this._terminal.updateRange(this._terminal.buffer.y); if (ch_width === 2) { this._terminal.buffer.lines.get(row)[this._terminal.buffer.x] = [this._terminal.curAttr, '', 0, undefined]; this._terminal.buffer.x++; } } }; InputHandler.prototype.bell = function () { this._terminal.bell(); }; InputHandler.prototype.lineFeed = function () { if (this._terminal.convertEol) { this._terminal.buffer.x = 0; } this._terminal.buffer.y++; if (this._terminal.buffer.y > this._terminal.buffer.scrollBottom) { this._terminal.buffer.y--; this._terminal.scroll(); } if (this._terminal.buffer.x >= this._terminal.cols) { this._terminal.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 () { this._terminal.buffer.x = this._terminal.buffer.nextStop(); }; 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 row = this._terminal.buffer.y + this._terminal.buffer.ybase; var j = this._terminal.buffer.x; var ch = [this._terminal.eraseAttr(), ' ', 1, 32]; while (param-- && j < this._terminal.cols) { this._terminal.buffer.lines.get(row).splice(j++, 0, ch); this._terminal.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 row = this._terminal.buffer.y + this._terminal.buffer.ybase; var scrollBottomRowsOffset = this._terminal.rows - 1 - this._terminal.buffer.scrollBottom; var scrollBottomAbsolute = this._terminal.rows - 1 + this._terminal.buffer.ybase - scrollBottomRowsOffset + 1; while (param--) { this._terminal.buffer.lines.splice(scrollBottomAbsolute - 1, 1); this._terminal.buffer.lines.splice(row, 0, this._terminal.blankLine(true)); } this._terminal.updateRange(this._terminal.buffer.y); this._terminal.updateRange(this._terminal.buffer.scrollBottom); }; InputHandler.prototype.deleteLines = function (params) { var param = params[0]; if (param < 1) { param = 1; } var row = this._terminal.buffer.y + this._terminal.buffer.ybase; var j; j = this._terminal.rows - 1 - this._terminal.buffer.scrollBottom; j = this._terminal.rows - 1 + this._terminal.buffer.ybase - j; while (param--) { this._terminal.buffer.lines.splice(row, 1); this._terminal.buffer.lines.splice(j, 0, this._terminal.blankLine(true)); } this._terminal.updateRange(this._terminal.buffer.y); this._terminal.updateRange(this._terminal.buffer.scrollBottom); }; InputHandler.prototype.deleteChars = function (params) { var param = params[0]; if (param < 1) { param = 1; } var row = this._terminal.buffer.y + this._terminal.buffer.ybase; var ch = [this._terminal.eraseAttr(), ' ', 1, 32]; while (param--) { this._terminal.buffer.lines.get(row).splice(this._terminal.buffer.x, 1); this._terminal.buffer.lines.get(row).push(ch); } }; InputHandler.prototype.scrollUp = function (params) { var param = params[0] || 1; while (param--) { this._terminal.buffer.lines.splice(this._terminal.buffer.ybase + this._terminal.buffer.scrollTop, 1); this._terminal.buffer.lines.splice(this._terminal.buffer.ybase + this._terminal.buffer.scrollBottom, 0, this._terminal.blankLine()); } this._terminal.updateRange(this._terminal.buffer.scrollTop); this._terminal.updateRange(this._terminal.buffer.scrollBottom); }; InputHandler.prototype.scrollDown = function (params) { var param = params[0] || 1; while (param--) { this._terminal.buffer.lines.splice(this._terminal.buffer.ybase + this._terminal.buffer.scrollBottom, 1); this._terminal.buffer.lines.splice(this._terminal.buffer.ybase + this._terminal.buffer.scrollTop, 0, this._terminal.blankLine()); } this._terminal.updateRange(this._terminal.buffer.scrollTop); this._terminal.updateRange(this._terminal.buffer.scrollBottom); }; InputHandler.prototype.eraseChars = function (params) { var param = params[0]; if (param < 1) { param = 1; } var row = this._terminal.buffer.y + this._terminal.buffer.ybase; var j = this._terminal.buffer.x; var ch = [this._terminal.eraseAttr(), ' ', 1, 32]; while (param-- && j < this._terminal.cols) { this._terminal.buffer.lines.get(row)[j++] = ch; } }; InputHandler.prototype.cursorBackwardTab = function (params) { var param = params[0] || 1; while (param--) { this._terminal.buffer.x = this._terminal.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 line = this._terminal.buffer.lines.get(this._terminal.buffer.ybase + this._terminal.buffer.y); var ch = line[this._terminal.buffer.x - 1] || [this._terminal.defAttr, ' ', 1, 32]; while (param--) { line[this._terminal.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.selectionManager.setBuffer(this._terminal.buffer); this._terminal.viewport.syncScrollArea(); this._terminal.showCursor(); 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.selectionManager.setBuffer(this._terminal.buffer); this._terminal.refresh(0, this._terminal.rows - 1); this._terminal.viewport.syncScrollArea(); this._terminal.showCursor(); 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 === 4) { flags |= 2; } else if (p === 5) { flags |= 4; } else if (p === 7) { flags |= 8; } else if (p === 8) { flags |= 16; } else if (p === 22) { flags &= ~1; } 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; 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 }); //# sourceMappingURL=InputHandler.js.map