You've already forked HeurAMS-Legacy
16481 lines
887 KiB
JavaScript
16481 lines
887 KiB
JavaScript
(() => {
|
||
var e = {
|
||
56: (e, t, i) => {
|
||
"use strict";
|
||
e.exports = function(e) {
|
||
var t = i.nc;
|
||
t && e.setAttribute("nonce", t)
|
||
}
|
||
},
|
||
72: e => {
|
||
"use strict";
|
||
var t = [];
|
||
|
||
function i(e) {
|
||
for (var i = -1, s = 0; s < t.length; s++)
|
||
if (t[s].identifier === e) {
|
||
i = s;
|
||
break
|
||
} return i
|
||
}
|
||
|
||
function s(e, s) {
|
||
for (var n = {}, o = [], a = 0; a < e.length; a++) {
|
||
var h = e[a],
|
||
c = s.base ? h[0] + s.base : h[0],
|
||
l = n[c] || 0,
|
||
d = "".concat(c, " ").concat(l);
|
||
n[c] = l + 1;
|
||
var _ = i(d),
|
||
u = {
|
||
css: h[1],
|
||
media: h[2],
|
||
sourceMap: h[3],
|
||
supports: h[4],
|
||
layer: h[5]
|
||
};
|
||
if (-1 !== _) t[_].references++, t[_].updater(u);
|
||
else {
|
||
var f = r(u, s);
|
||
s.byIndex = a, t.splice(a, 0, {
|
||
identifier: d,
|
||
updater: f,
|
||
references: 1
|
||
})
|
||
}
|
||
o.push(d)
|
||
}
|
||
return o
|
||
}
|
||
|
||
function r(e, t) {
|
||
var i = t.domAPI(t);
|
||
return i.update(e),
|
||
function(t) {
|
||
if (t) {
|
||
if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) return;
|
||
i.update(e = t)
|
||
} else i.remove()
|
||
}
|
||
}
|
||
e.exports = function(e, r) {
|
||
var n = s(e = e || [], r = r || {});
|
||
return function(e) {
|
||
e = e || [];
|
||
for (var o = 0; o < n.length; o++) {
|
||
var a = i(n[o]);
|
||
t[a].references--
|
||
}
|
||
for (var h = s(e, r), c = 0; c < n.length; c++) {
|
||
var l = i(n[c]);
|
||
0 === t[l].references && (t[l].updater(), t.splice(l, 1))
|
||
}
|
||
n = h
|
||
}
|
||
}
|
||
},
|
||
100: (e, t, i) => {
|
||
"use strict";
|
||
i.d(t, {
|
||
A: () => a
|
||
});
|
||
var s = i(601),
|
||
r = i.n(s),
|
||
n = i(314),
|
||
o = i.n(n)()(r());
|
||
o.push([e.id, "h1{color:#fff;background-color:#000}body{margin:0;padding:0}.textual-terminal{width:100vw;height:100vh}", ""]);
|
||
const a = o
|
||
},
|
||
113: e => {
|
||
"use strict";
|
||
e.exports = function(e, t) {
|
||
if (t.styleSheet) t.styleSheet.cssText = e;
|
||
else {
|
||
for (; t.firstChild;) t.removeChild(t.firstChild);
|
||
t.appendChild(document.createTextNode(e))
|
||
}
|
||
}
|
||
},
|
||
180: e => {
|
||
var t;
|
||
self, t = () => (() => {
|
||
"use strict";
|
||
var e = {
|
||
965: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.GlyphRenderer = void 0;
|
||
const s = i(374),
|
||
r = i(509),
|
||
n = i(855),
|
||
o = i(859),
|
||
a = i(381),
|
||
h = 11,
|
||
c = h * Float32Array.BYTES_PER_ELEMENT;
|
||
let l, d = 0,
|
||
_ = 0,
|
||
u = 0;
|
||
class f extends o.Disposable {
|
||
constructor(e, t, i, n) {
|
||
super(), this._terminal = e, this._gl = t, this._dimensions = i, this._optionsService = n, this._activeBuffer = 0, this._vertices = {
|
||
count: 0,
|
||
attributes: new Float32Array(0),
|
||
attributesBuffers: [new Float32Array(0), new Float32Array(0)]
|
||
};
|
||
const h = this._gl;
|
||
void 0 === r.TextureAtlas.maxAtlasPages && (r.TextureAtlas.maxAtlasPages = Math.min(32, (0, s.throwIfFalsy)(h.getParameter(h.MAX_TEXTURE_IMAGE_UNITS))), r.TextureAtlas.maxTextureSize = (0, s.throwIfFalsy)(h.getParameter(h.MAX_TEXTURE_SIZE))), this._program = (0, s.throwIfFalsy)((0, a.createProgram)(h, "#version 300 es\nlayout (location = 0) in vec2 a_unitquad;\nlayout (location = 1) in vec2 a_cellpos;\nlayout (location = 2) in vec2 a_offset;\nlayout (location = 3) in vec2 a_size;\nlayout (location = 4) in float a_texpage;\nlayout (location = 5) in vec2 a_texcoord;\nlayout (location = 6) in vec2 a_texsize;\n\nuniform mat4 u_projection;\nuniform vec2 u_resolution;\n\nout vec2 v_texcoord;\nflat out int v_texpage;\n\nvoid main() {\n vec2 zeroToOne = (a_offset / u_resolution) + a_cellpos + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_texpage = int(a_texpage);\n v_texcoord = a_texcoord + a_unitquad * a_texsize;\n}", function(e) {
|
||
let t = "";
|
||
for (let i = 1; i < e; i++) t += ` else if (v_texpage == ${i}) { outColor = texture(u_texture[${i}], v_texcoord); }`;
|
||
return `#version 300 es\nprecision lowp float;\n\nin vec2 v_texcoord;\nflat in int v_texpage;\n\nuniform sampler2D u_texture[${e}];\n\nout vec4 outColor;\n\nvoid main() {\n if (v_texpage == 0) {\n outColor = texture(u_texture[0], v_texcoord);\n } ${t}\n}`
|
||
}(r.TextureAtlas.maxAtlasPages))), this.register((0, o.toDisposable)((() => h.deleteProgram(this._program)))), this._projectionLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_projection")), this._resolutionLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_resolution")), this._textureLocation = (0, s.throwIfFalsy)(h.getUniformLocation(this._program, "u_texture")), this._vertexArrayObject = h.createVertexArray(), h.bindVertexArray(this._vertexArrayObject);
|
||
const l = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]),
|
||
d = h.createBuffer();
|
||
this.register((0, o.toDisposable)((() => h.deleteBuffer(d)))), h.bindBuffer(h.ARRAY_BUFFER, d), h.bufferData(h.ARRAY_BUFFER, l, h.STATIC_DRAW), h.enableVertexAttribArray(0), h.vertexAttribPointer(0, 2, this._gl.FLOAT, !1, 0, 0);
|
||
const _ = new Uint8Array([0, 1, 2, 3]),
|
||
u = h.createBuffer();
|
||
this.register((0, o.toDisposable)((() => h.deleteBuffer(u)))), h.bindBuffer(h.ELEMENT_ARRAY_BUFFER, u), h.bufferData(h.ELEMENT_ARRAY_BUFFER, _, h.STATIC_DRAW), this._attributesBuffer = (0, s.throwIfFalsy)(h.createBuffer()), this.register((0, o.toDisposable)((() => h.deleteBuffer(this._attributesBuffer)))), h.bindBuffer(h.ARRAY_BUFFER, this._attributesBuffer), h.enableVertexAttribArray(2), h.vertexAttribPointer(2, 2, h.FLOAT, !1, c, 0), h.vertexAttribDivisor(2, 1), h.enableVertexAttribArray(3), h.vertexAttribPointer(3, 2, h.FLOAT, !1, c, 2 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(3, 1), h.enableVertexAttribArray(4), h.vertexAttribPointer(4, 1, h.FLOAT, !1, c, 4 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(4, 1), h.enableVertexAttribArray(5), h.vertexAttribPointer(5, 2, h.FLOAT, !1, c, 5 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(5, 1), h.enableVertexAttribArray(6), h.vertexAttribPointer(6, 2, h.FLOAT, !1, c, 7 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(6, 1), h.enableVertexAttribArray(1), h.vertexAttribPointer(1, 2, h.FLOAT, !1, c, 9 * Float32Array.BYTES_PER_ELEMENT), h.vertexAttribDivisor(1, 1), h.useProgram(this._program);
|
||
const f = new Int32Array(r.TextureAtlas.maxAtlasPages);
|
||
for (let e = 0; e < r.TextureAtlas.maxAtlasPages; e++) f[e] = e;
|
||
h.uniform1iv(this._textureLocation, f), h.uniformMatrix4fv(this._projectionLocation, !1, a.PROJECTION_MATRIX), this._atlasTextures = [];
|
||
for (let e = 0; e < r.TextureAtlas.maxAtlasPages; e++) {
|
||
const t = new a.GLTexture((0, s.throwIfFalsy)(h.createTexture()));
|
||
this.register((0, o.toDisposable)((() => h.deleteTexture(t.texture)))), h.activeTexture(h.TEXTURE0 + e), h.bindTexture(h.TEXTURE_2D, t.texture), h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_S, h.CLAMP_TO_EDGE), h.texParameteri(h.TEXTURE_2D, h.TEXTURE_WRAP_T, h.CLAMP_TO_EDGE), h.texImage2D(h.TEXTURE_2D, 0, h.RGBA, 1, 1, 0, h.RGBA, h.UNSIGNED_BYTE, new Uint8Array([255, 0, 0, 255])), this._atlasTextures[e] = t
|
||
}
|
||
h.enable(h.BLEND), h.blendFunc(h.SRC_ALPHA, h.ONE_MINUS_SRC_ALPHA), this.handleResize()
|
||
}
|
||
beginFrame() {
|
||
return !this._atlas || this._atlas.beginFrame()
|
||
}
|
||
updateCell(e, t, i, s, r, n, o, a, h) {
|
||
this._updateCell(this._vertices.attributes, e, t, i, s, r, n, o, a, h)
|
||
}
|
||
_updateCell(e, t, i, r, o, a, c, f, v, g) {
|
||
d = (i * this._terminal.cols + t) * h, r !== n.NULL_CELL_CODE && void 0 !== r ? this._atlas && (l = f && f.length > 1 ? this._atlas.getRasterizedGlyphCombinedChar(f, o, a, c, !1) : this._atlas.getRasterizedGlyph(r, o, a, c, !1), _ = Math.floor((this._dimensions.device.cell.width - this._dimensions.device.char.width) / 2), o !== g && l.offset.x > _ ? (u = l.offset.x - _, e[d] = -(l.offset.x - u) + this._dimensions.device.char.left, e[d + 1] = -l.offset.y + this._dimensions.device.char.top, e[d + 2] = (l.size.x - u) / this._dimensions.device.canvas.width, e[d + 3] = l.size.y / this._dimensions.device.canvas.height, e[d + 4] = l.texturePage, e[d + 5] = l.texturePositionClipSpace.x + u / this._atlas.pages[l.texturePage].canvas.width, e[d + 6] = l.texturePositionClipSpace.y, e[d + 7] = l.sizeClipSpace.x - u / this._atlas.pages[l.texturePage].canvas.width, e[d + 8] = l.sizeClipSpace.y) : (e[d] = -l.offset.x + this._dimensions.device.char.left, e[d + 1] = -l.offset.y + this._dimensions.device.char.top, e[d + 2] = l.size.x / this._dimensions.device.canvas.width, e[d + 3] = l.size.y / this._dimensions.device.canvas.height, e[d + 4] = l.texturePage, e[d + 5] = l.texturePositionClipSpace.x, e[d + 6] = l.texturePositionClipSpace.y, e[d + 7] = l.sizeClipSpace.x, e[d + 8] = l.sizeClipSpace.y), this._optionsService.rawOptions.rescaleOverlappingGlyphs && (0, s.allowRescaling)(r, v, l.size.x, this._dimensions.device.cell.width) && (e[d + 2] = (this._dimensions.device.cell.width - 1) / this._dimensions.device.canvas.width)) : e.fill(0, d, d + h - 1 - 2)
|
||
}
|
||
clear() {
|
||
const e = this._terminal,
|
||
t = e.cols * e.rows * h;
|
||
this._vertices.count !== t ? this._vertices.attributes = new Float32Array(t) : this._vertices.attributes.fill(0);
|
||
let i = 0;
|
||
for (; i < this._vertices.attributesBuffers.length; i++) this._vertices.count !== t ? this._vertices.attributesBuffers[i] = new Float32Array(t) : this._vertices.attributesBuffers[i].fill(0);
|
||
this._vertices.count = t, i = 0;
|
||
for (let t = 0; t < e.rows; t++)
|
||
for (let s = 0; s < e.cols; s++) this._vertices.attributes[i + 9] = s / e.cols, this._vertices.attributes[i + 10] = t / e.rows, i += h
|
||
}
|
||
handleResize() {
|
||
const e = this._gl;
|
||
e.useProgram(this._program), e.viewport(0, 0, e.canvas.width, e.canvas.height), e.uniform2f(this._resolutionLocation, e.canvas.width, e.canvas.height), this.clear()
|
||
}
|
||
render(e) {
|
||
if (!this._atlas) return;
|
||
const t = this._gl;
|
||
t.useProgram(this._program), t.bindVertexArray(this._vertexArrayObject), this._activeBuffer = (this._activeBuffer + 1) % 2;
|
||
const i = this._vertices.attributesBuffers[this._activeBuffer];
|
||
let s = 0;
|
||
for (let t = 0; t < e.lineLengths.length; t++) {
|
||
const r = t * this._terminal.cols * h,
|
||
n = this._vertices.attributes.subarray(r, r + e.lineLengths[t] * h);
|
||
i.set(n, s), s += n.length
|
||
}
|
||
t.bindBuffer(t.ARRAY_BUFFER, this._attributesBuffer), t.bufferData(t.ARRAY_BUFFER, i.subarray(0, s), t.STREAM_DRAW);
|
||
for (let e = 0; e < this._atlas.pages.length; e++) this._atlas.pages[e].version !== this._atlasTextures[e].version && this._bindAtlasPageTexture(t, this._atlas, e);
|
||
t.drawElementsInstanced(t.TRIANGLE_STRIP, 4, t.UNSIGNED_BYTE, 0, s / h)
|
||
}
|
||
setAtlas(e) {
|
||
this._atlas = e;
|
||
for (const e of this._atlasTextures) e.version = -1
|
||
}
|
||
_bindAtlasPageTexture(e, t, i) {
|
||
e.activeTexture(e.TEXTURE0 + i), e.bindTexture(e.TEXTURE_2D, this._atlasTextures[i].texture), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, t.pages[i].canvas), e.generateMipmap(e.TEXTURE_2D), this._atlasTextures[i].version = t.pages[i].version
|
||
}
|
||
setDimensions(e) {
|
||
this._dimensions = e
|
||
}
|
||
}
|
||
t.GlyphRenderer = f
|
||
},
|
||
742: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.RectangleRenderer = void 0;
|
||
const s = i(374),
|
||
r = i(859),
|
||
n = i(310),
|
||
o = i(381),
|
||
a = 8 * Float32Array.BYTES_PER_ELEMENT;
|
||
class h {
|
||
constructor() {
|
||
this.attributes = new Float32Array(160), this.count = 0
|
||
}
|
||
}
|
||
let c = 0,
|
||
l = 0,
|
||
d = 0,
|
||
_ = 0,
|
||
u = 0,
|
||
f = 0,
|
||
v = 0;
|
||
class g extends r.Disposable {
|
||
constructor(e, t, i, n) {
|
||
super(), this._terminal = e, this._gl = t, this._dimensions = i, this._themeService = n, this._vertices = new h, this._verticesCursor = new h;
|
||
const c = this._gl;
|
||
this._program = (0, s.throwIfFalsy)((0, o.createProgram)(c, "#version 300 es\nlayout (location = 0) in vec2 a_position;\nlayout (location = 1) in vec2 a_size;\nlayout (location = 2) in vec4 a_color;\nlayout (location = 3) in vec2 a_unitquad;\n\nuniform mat4 u_projection;\n\nout vec4 v_color;\n\nvoid main() {\n vec2 zeroToOne = a_position + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_color = a_color;\n}", "#version 300 es\nprecision lowp float;\n\nin vec4 v_color;\n\nout vec4 outColor;\n\nvoid main() {\n outColor = v_color;\n}")), this.register((0, r.toDisposable)((() => c.deleteProgram(this._program)))), this._projectionLocation = (0, s.throwIfFalsy)(c.getUniformLocation(this._program, "u_projection")), this._vertexArrayObject = c.createVertexArray(), c.bindVertexArray(this._vertexArrayObject);
|
||
const l = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]),
|
||
d = c.createBuffer();
|
||
this.register((0, r.toDisposable)((() => c.deleteBuffer(d)))), c.bindBuffer(c.ARRAY_BUFFER, d), c.bufferData(c.ARRAY_BUFFER, l, c.STATIC_DRAW), c.enableVertexAttribArray(3), c.vertexAttribPointer(3, 2, this._gl.FLOAT, !1, 0, 0);
|
||
const _ = new Uint8Array([0, 1, 2, 3]),
|
||
u = c.createBuffer();
|
||
this.register((0, r.toDisposable)((() => c.deleteBuffer(u)))), c.bindBuffer(c.ELEMENT_ARRAY_BUFFER, u), c.bufferData(c.ELEMENT_ARRAY_BUFFER, _, c.STATIC_DRAW), this._attributesBuffer = (0, s.throwIfFalsy)(c.createBuffer()), this.register((0, r.toDisposable)((() => c.deleteBuffer(this._attributesBuffer)))), c.bindBuffer(c.ARRAY_BUFFER, this._attributesBuffer), c.enableVertexAttribArray(0), c.vertexAttribPointer(0, 2, c.FLOAT, !1, a, 0), c.vertexAttribDivisor(0, 1), c.enableVertexAttribArray(1), c.vertexAttribPointer(1, 2, c.FLOAT, !1, a, 2 * Float32Array.BYTES_PER_ELEMENT), c.vertexAttribDivisor(1, 1), c.enableVertexAttribArray(2), c.vertexAttribPointer(2, 4, c.FLOAT, !1, a, 4 * Float32Array.BYTES_PER_ELEMENT), c.vertexAttribDivisor(2, 1), this._updateCachedColors(n.colors), this.register(this._themeService.onChangeColors((e => {
|
||
this._updateCachedColors(e), this._updateViewportRectangle()
|
||
})))
|
||
}
|
||
renderBackgrounds() {
|
||
this._renderVertices(this._vertices)
|
||
}
|
||
renderCursor() {
|
||
this._renderVertices(this._verticesCursor)
|
||
}
|
||
_renderVertices(e) {
|
||
const t = this._gl;
|
||
t.useProgram(this._program), t.bindVertexArray(this._vertexArrayObject), t.uniformMatrix4fv(this._projectionLocation, !1, o.PROJECTION_MATRIX), t.bindBuffer(t.ARRAY_BUFFER, this._attributesBuffer), t.bufferData(t.ARRAY_BUFFER, e.attributes, t.DYNAMIC_DRAW), t.drawElementsInstanced(this._gl.TRIANGLE_STRIP, 4, t.UNSIGNED_BYTE, 0, e.count)
|
||
}
|
||
handleResize() {
|
||
this._updateViewportRectangle()
|
||
}
|
||
setDimensions(e) {
|
||
this._dimensions = e
|
||
}
|
||
_updateCachedColors(e) {
|
||
this._bgFloat = this._colorToFloat32Array(e.background), this._cursorFloat = this._colorToFloat32Array(e.cursor)
|
||
}
|
||
_updateViewportRectangle() {
|
||
this._addRectangleFloat(this._vertices.attributes, 0, 0, 0, this._terminal.cols * this._dimensions.device.cell.width, this._terminal.rows * this._dimensions.device.cell.height, this._bgFloat)
|
||
}
|
||
updateBackgrounds(e) {
|
||
const t = this._terminal,
|
||
i = this._vertices;
|
||
let s, r, o, a, h, c, l, d, _, u, f, v = 1;
|
||
for (s = 0; s < t.rows; s++) {
|
||
for (o = -1, a = 0, h = 0, c = !1, r = 0; r < t.cols; r++) l = (s * t.cols + r) * n.RENDER_MODEL_INDICIES_PER_CELL, d = e.cells[l + n.RENDER_MODEL_BG_OFFSET], _ = e.cells[l + n.RENDER_MODEL_FG_OFFSET], u = !!(67108864 & _), (d !== a || _ !== h && (c || u)) && ((0 !== a || c && 0 !== h) && (f = 8 * v++, this._updateRectangle(i, f, h, a, o, r, s)), o = r, a = d, h = _, c = u);
|
||
(0 !== a || c && 0 !== h) && (f = 8 * v++, this._updateRectangle(i, f, h, a, o, t.cols, s))
|
||
}
|
||
i.count = v
|
||
}
|
||
updateCursor(e) {
|
||
const t = this._verticesCursor,
|
||
i = e.cursor;
|
||
if (!i || "block" === i.style) return void(t.count = 0);
|
||
let s, r = 0;
|
||
"bar" !== i.style && "outline" !== i.style || (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, i.y * this._dimensions.device.cell.height, "bar" === i.style ? i.dpr * i.cursorWidth : i.dpr, this._dimensions.device.cell.height, this._cursorFloat)), "underline" !== i.style && "outline" !== i.style || (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, (i.y + 1) * this._dimensions.device.cell.height - i.dpr, i.width * this._dimensions.device.cell.width, i.dpr, this._cursorFloat)), "outline" === i.style && (s = 8 * r++, this._addRectangleFloat(t.attributes, s, i.x * this._dimensions.device.cell.width, i.y * this._dimensions.device.cell.height, i.width * this._dimensions.device.cell.width, i.dpr, this._cursorFloat), s = 8 * r++, this._addRectangleFloat(t.attributes, s, (i.x + i.width) * this._dimensions.device.cell.width - i.dpr, i.y * this._dimensions.device.cell.height, i.dpr, this._dimensions.device.cell.height, this._cursorFloat)), t.count = r
|
||
}
|
||
_updateRectangle(e, t, i, s, r, n, a) {
|
||
if (67108864 & i) switch (50331648 & i) {
|
||
case 16777216:
|
||
case 33554432:
|
||
c = this._themeService.colors.ansi[255 & i].rgba;
|
||
break;
|
||
case 50331648:
|
||
c = (16777215 & i) << 8;
|
||
break;
|
||
default:
|
||
c = this._themeService.colors.foreground.rgba
|
||
} else switch (50331648 & s) {
|
||
case 16777216:
|
||
case 33554432:
|
||
c = this._themeService.colors.ansi[255 & s].rgba;
|
||
break;
|
||
case 50331648:
|
||
c = (16777215 & s) << 8;
|
||
break;
|
||
default:
|
||
c = this._themeService.colors.background.rgba
|
||
}
|
||
e.attributes.length < t + 4 && (e.attributes = (0, o.expandFloat32Array)(e.attributes, this._terminal.rows * this._terminal.cols * 8)), l = r * this._dimensions.device.cell.width, d = a * this._dimensions.device.cell.height, _ = (c >> 24 & 255) / 255, u = (c >> 16 & 255) / 255, f = (c >> 8 & 255) / 255, v = 1, this._addRectangle(e.attributes, t, l, d, (n - r) * this._dimensions.device.cell.width, this._dimensions.device.cell.height, _, u, f, v)
|
||
}
|
||
_addRectangle(e, t, i, s, r, n, o, a, h, c) {
|
||
e[t] = i / this._dimensions.device.canvas.width, e[t + 1] = s / this._dimensions.device.canvas.height, e[t + 2] = r / this._dimensions.device.canvas.width, e[t + 3] = n / this._dimensions.device.canvas.height, e[t + 4] = o, e[t + 5] = a, e[t + 6] = h, e[t + 7] = c
|
||
}
|
||
_addRectangleFloat(e, t, i, s, r, n, o) {
|
||
e[t] = i / this._dimensions.device.canvas.width, e[t + 1] = s / this._dimensions.device.canvas.height, e[t + 2] = r / this._dimensions.device.canvas.width, e[t + 3] = n / this._dimensions.device.canvas.height, e[t + 4] = o[0], e[t + 5] = o[1], e[t + 6] = o[2], e[t + 7] = o[3]
|
||
}
|
||
_colorToFloat32Array(e) {
|
||
return new Float32Array([(e.rgba >> 24 & 255) / 255, (e.rgba >> 16 & 255) / 255, (e.rgba >> 8 & 255) / 255, (255 & e.rgba) / 255])
|
||
}
|
||
}
|
||
t.RectangleRenderer = g
|
||
},
|
||
310: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.RenderModel = t.COMBINED_CHAR_BIT_MASK = t.RENDER_MODEL_EXT_OFFSET = t.RENDER_MODEL_FG_OFFSET = t.RENDER_MODEL_BG_OFFSET = t.RENDER_MODEL_INDICIES_PER_CELL = void 0;
|
||
const s = i(296);
|
||
t.RENDER_MODEL_INDICIES_PER_CELL = 4, t.RENDER_MODEL_BG_OFFSET = 1, t.RENDER_MODEL_FG_OFFSET = 2, t.RENDER_MODEL_EXT_OFFSET = 3, t.COMBINED_CHAR_BIT_MASK = 2147483648, t.RenderModel = class {
|
||
constructor() {
|
||
this.cells = new Uint32Array(0), this.lineLengths = new Uint32Array(0), this.selection = (0, s.createSelectionRenderModel)()
|
||
}
|
||
resize(e, i) {
|
||
const s = e * i * t.RENDER_MODEL_INDICIES_PER_CELL;
|
||
s !== this.cells.length && (this.cells = new Uint32Array(s), this.lineLengths = new Uint32Array(i))
|
||
}
|
||
clear() {
|
||
this.cells.fill(0, 0), this.lineLengths.fill(0, 0)
|
||
}
|
||
}
|
||
},
|
||
666: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.JoinedCellData = t.WebglRenderer = void 0;
|
||
const s = i(820),
|
||
r = i(274),
|
||
n = i(627),
|
||
o = i(457),
|
||
a = i(56),
|
||
h = i(374),
|
||
c = i(345),
|
||
l = i(859),
|
||
d = i(147),
|
||
_ = i(782),
|
||
u = i(855),
|
||
f = i(965),
|
||
v = i(742),
|
||
g = i(310),
|
||
p = i(733);
|
||
class m extends l.Disposable {
|
||
constructor(e, t, i, o, d, u, f, v, m) {
|
||
super(), this._terminal = e, this._characterJoinerService = t, this._charSizeService = i, this._coreBrowserService = o, this._coreService = d, this._decorationService = u, this._optionsService = f, this._themeService = v, this._cursorBlinkStateManager = new l.MutableDisposable, this._charAtlasDisposable = this.register(new l.MutableDisposable), this._observerDisposable = this.register(new l.MutableDisposable), this._model = new g.RenderModel, this._workCell = new _.CellData, this._workCell2 = new _.CellData, this._rectangleRenderer = this.register(new l.MutableDisposable), this._glyphRenderer = this.register(new l.MutableDisposable), this._onChangeTextureAtlas = this.register(new c.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new c.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = this.register(new c.EventEmitter), this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._onRequestRedraw = this.register(new c.EventEmitter), this.onRequestRedraw = this._onRequestRedraw.event, this._onContextLoss = this.register(new c.EventEmitter), this.onContextLoss = this._onContextLoss.event, this.register(this._themeService.onChangeColors((() => this._handleColorChange()))), this._cellColorResolver = new r.CellColorResolver(this._terminal, this._optionsService, this._model.selection, this._decorationService, this._coreBrowserService, this._themeService), this._core = this._terminal._core, this._renderLayers = [new p.LinkRenderLayer(this._core.screenElement, 2, this._terminal, this._core.linkifier, this._coreBrowserService, f, this._themeService)], this.dimensions = (0, h.createRenderDimensions)(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._updateCursorBlink(), this.register(f.onOptionChange((() => this._handleOptionsChanged()))), this._canvas = this._coreBrowserService.mainDocument.createElement("canvas");
|
||
const C = {
|
||
antialias: !1,
|
||
depth: !1,
|
||
preserveDrawingBuffer: m
|
||
};
|
||
if (this._gl = this._canvas.getContext("webgl2", C), !this._gl) throw new Error("WebGL2 not supported " + this._gl);
|
||
this.register((0, s.addDisposableDomListener)(this._canvas, "webglcontextlost", (e => {
|
||
console.log("webglcontextlost event received"), e.preventDefault(), this._contextRestorationTimeout = setTimeout((() => {
|
||
this._contextRestorationTimeout = void 0, console.warn("webgl context not restored; firing onContextLoss"), this._onContextLoss.fire(e)
|
||
}), 3e3)
|
||
}))), this.register((0, s.addDisposableDomListener)(this._canvas, "webglcontextrestored", (e => {
|
||
console.warn("webglcontextrestored event received"), clearTimeout(this._contextRestorationTimeout), this._contextRestorationTimeout = void 0, (0, n.removeTerminalFromCache)(this._terminal), this._initializeWebGLState(), this._requestRedrawViewport()
|
||
}))), this._observerDisposable.value = (0, a.observeDevicePixelDimensions)(this._canvas, this._coreBrowserService.window, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))), this.register(this._coreBrowserService.onWindowChange((e => {
|
||
this._observerDisposable.value = (0, a.observeDevicePixelDimensions)(this._canvas, e, ((e, t) => this._setCanvasDevicePixelDimensions(e, t)))
|
||
}))), this._core.screenElement.appendChild(this._canvas), [this._rectangleRenderer.value, this._glyphRenderer.value] = this._initializeWebGLState(), this._isAttached = this._coreBrowserService.window.document.body.contains(this._core.screenElement), this.register((0, l.toDisposable)((() => {
|
||
for (const e of this._renderLayers) e.dispose();
|
||
this._canvas.parentElement?.removeChild(this._canvas), (0, n.removeTerminalFromCache)(this._terminal)
|
||
})))
|
||
}
|
||
get textureAtlas() {
|
||
return this._charAtlas?.pages[0].canvas
|
||
}
|
||
_handleColorChange() {
|
||
this._refreshCharAtlas(), this._clearModel(!0)
|
||
}
|
||
handleDevicePixelRatioChange() {
|
||
this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._terminal.cols, this._terminal.rows))
|
||
}
|
||
handleResize(e, t) {
|
||
this._updateDimensions(), this._model.resize(this._terminal.cols, this._terminal.rows);
|
||
for (const e of this._renderLayers) e.resize(this._terminal, this.dimensions);
|
||
this._canvas.width = this.dimensions.device.canvas.width, this._canvas.height = this.dimensions.device.canvas.height, this._canvas.style.width = `${this.dimensions.css.canvas.width}px`, this._canvas.style.height = `${this.dimensions.css.canvas.height}px`, this._core.screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._core.screenElement.style.height = `${this.dimensions.css.canvas.height}px`, this._rectangleRenderer.value?.setDimensions(this.dimensions), this._rectangleRenderer.value?.handleResize(), this._glyphRenderer.value?.setDimensions(this.dimensions), this._glyphRenderer.value?.handleResize(), this._refreshCharAtlas(), this._clearModel(!1)
|
||
}
|
||
handleCharSizeChanged() {
|
||
this.handleResize(this._terminal.cols, this._terminal.rows)
|
||
}
|
||
handleBlur() {
|
||
for (const e of this._renderLayers) e.handleBlur(this._terminal);
|
||
this._cursorBlinkStateManager.value?.pause(), this._requestRedrawViewport()
|
||
}
|
||
handleFocus() {
|
||
for (const e of this._renderLayers) e.handleFocus(this._terminal);
|
||
this._cursorBlinkStateManager.value?.resume(), this._requestRedrawViewport()
|
||
}
|
||
handleSelectionChanged(e, t, i) {
|
||
for (const s of this._renderLayers) s.handleSelectionChanged(this._terminal, e, t, i);
|
||
this._model.selection.update(this._core, e, t, i), this._requestRedrawViewport()
|
||
}
|
||
handleCursorMove() {
|
||
for (const e of this._renderLayers) e.handleCursorMove(this._terminal);
|
||
this._cursorBlinkStateManager.value?.restartBlinkAnimation()
|
||
}
|
||
_handleOptionsChanged() {
|
||
this._updateDimensions(), this._refreshCharAtlas(), this._updateCursorBlink()
|
||
}
|
||
_initializeWebGLState() {
|
||
return this._rectangleRenderer.value = new v.RectangleRenderer(this._terminal, this._gl, this.dimensions, this._themeService), this._glyphRenderer.value = new f.GlyphRenderer(this._terminal, this._gl, this.dimensions, this._optionsService), this.handleCharSizeChanged(), [this._rectangleRenderer.value, this._glyphRenderer.value]
|
||
}
|
||
_refreshCharAtlas() {
|
||
if (this.dimensions.device.char.width <= 0 && this.dimensions.device.char.height <= 0) return void(this._isAttached = !1);
|
||
const e = (0, n.acquireTextureAtlas)(this._terminal, this._optionsService.rawOptions, this._themeService.colors, this.dimensions.device.cell.width, this.dimensions.device.cell.height, this.dimensions.device.char.width, this.dimensions.device.char.height, this._coreBrowserService.dpr);
|
||
this._charAtlas !== e && (this._onChangeTextureAtlas.fire(e.pages[0].canvas), this._charAtlasDisposable.value = (0, l.getDisposeArrayDisposable)([(0, c.forwardEvent)(e.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), (0, c.forwardEvent)(e.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)])), this._charAtlas = e, this._charAtlas.warmUp(), this._glyphRenderer.value?.setAtlas(this._charAtlas)
|
||
}
|
||
_clearModel(e) {
|
||
this._model.clear(), e && this._glyphRenderer.value?.clear()
|
||
}
|
||
clearTextureAtlas() {
|
||
this._charAtlas?.clearTexture(), this._clearModel(!0), this._requestRedrawViewport()
|
||
}
|
||
clear() {
|
||
this._clearModel(!0);
|
||
for (const e of this._renderLayers) e.reset(this._terminal);
|
||
this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._updateCursorBlink()
|
||
}
|
||
registerCharacterJoiner(e) {
|
||
return -1
|
||
}
|
||
deregisterCharacterJoiner(e) {
|
||
return !1
|
||
}
|
||
renderRows(e, t) {
|
||
if (!this._isAttached) {
|
||
if (!(this._coreBrowserService.window.document.body.contains(this._core.screenElement) && this._charSizeService.width && this._charSizeService.height)) return;
|
||
this._updateDimensions(), this._refreshCharAtlas(), this._isAttached = !0
|
||
}
|
||
for (const i of this._renderLayers) i.handleGridChanged(this._terminal, e, t);
|
||
this._glyphRenderer.value && this._rectangleRenderer.value && (this._glyphRenderer.value.beginFrame() ? (this._clearModel(!0), this._updateModel(0, this._terminal.rows - 1)) : this._updateModel(e, t), this._rectangleRenderer.value.renderBackgrounds(), this._glyphRenderer.value.render(this._model), this._cursorBlinkStateManager.value && !this._cursorBlinkStateManager.value.isCursorVisible || this._rectangleRenderer.value.renderCursor())
|
||
}
|
||
_updateCursorBlink() {
|
||
this._terminal.options.cursorBlink ? this._cursorBlinkStateManager.value = new o.CursorBlinkStateManager((() => {
|
||
this._requestRedrawCursor()
|
||
}), this._coreBrowserService) : this._cursorBlinkStateManager.clear(), this._requestRedrawCursor()
|
||
}
|
||
_updateModel(e, t) {
|
||
const i = this._core;
|
||
let s, r, n, o, a, h, c, l, d, _, f, v, p, m, b = this._workCell;
|
||
e = S(e, i.rows - 1, 0), t = S(t, i.rows - 1, 0);
|
||
const w = this._terminal.buffer.active.baseY + this._terminal.buffer.active.cursorY,
|
||
y = w - i.buffer.ydisp,
|
||
L = Math.min(this._terminal.buffer.active.cursorX, i.cols - 1);
|
||
let x = -1;
|
||
const E = this._coreService.isCursorInitialized && !this._coreService.isCursorHidden && (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible);
|
||
this._model.cursor = void 0;
|
||
let R = !1;
|
||
for (r = e; r <= t; r++)
|
||
for (n = r + i.buffer.ydisp, o = i.buffer.lines.get(n), this._model.lineLengths[r] = 0, a = this._characterJoinerService.getJoinedCharacters(n), p = 0; p < i.cols; p++)
|
||
if (s = this._cellColorResolver.result.bg, o.loadCell(p, b), 0 === p && (s = this._cellColorResolver.result.bg), h = !1, c = p, a.length > 0 && p === a[0][0] && (h = !0, l = a.shift(), b = new C(b, o.translateToString(!0, l[0], l[1]), l[1] - l[0]), c = l[1] - 1), d = b.getChars(), _ = b.getCode(), v = (r * i.cols + p) * g.RENDER_MODEL_INDICIES_PER_CELL, this._cellColorResolver.resolve(b, p, n, this.dimensions.device.cell.width), E && n === w && (p === L && (this._model.cursor = {
|
||
x: L,
|
||
y,
|
||
width: b.getWidth(),
|
||
style: this._coreBrowserService.isFocused ? i.options.cursorStyle || "block" : i.options.cursorInactiveStyle,
|
||
cursorWidth: i.options.cursorWidth,
|
||
dpr: this._devicePixelRatio
|
||
}, x = L + b.getWidth() - 1), p >= L && p <= x && (this._coreBrowserService.isFocused && "block" === (i.options.cursorStyle || "block") || !1 === this._coreBrowserService.isFocused && "block" === i.options.cursorInactiveStyle) && (this._cellColorResolver.result.fg = 50331648 | this._themeService.colors.cursorAccent.rgba >> 8 & 16777215, this._cellColorResolver.result.bg = 50331648 | this._themeService.colors.cursor.rgba >> 8 & 16777215)), _ !== u.NULL_CELL_CODE && (this._model.lineLengths[r] = p + 1), (this._model.cells[v] !== _ || this._model.cells[v + g.RENDER_MODEL_BG_OFFSET] !== this._cellColorResolver.result.bg || this._model.cells[v + g.RENDER_MODEL_FG_OFFSET] !== this._cellColorResolver.result.fg || this._model.cells[v + g.RENDER_MODEL_EXT_OFFSET] !== this._cellColorResolver.result.ext) && (R = !0, d.length > 1 && (_ |= g.COMBINED_CHAR_BIT_MASK), this._model.cells[v] = _, this._model.cells[v + g.RENDER_MODEL_BG_OFFSET] = this._cellColorResolver.result.bg, this._model.cells[v + g.RENDER_MODEL_FG_OFFSET] = this._cellColorResolver.result.fg, this._model.cells[v + g.RENDER_MODEL_EXT_OFFSET] = this._cellColorResolver.result.ext, f = b.getWidth(), this._glyphRenderer.value.updateCell(p, r, _, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, d, f, s), h))
|
||
for (b = this._workCell, p++; p < c; p++) m = (r * i.cols + p) * g.RENDER_MODEL_INDICIES_PER_CELL, this._glyphRenderer.value.updateCell(p, r, u.NULL_CELL_CODE, 0, 0, 0, u.NULL_CELL_CHAR, 0, 0), this._model.cells[m] = u.NULL_CELL_CODE, this._model.cells[m + g.RENDER_MODEL_BG_OFFSET] = this._cellColorResolver.result.bg, this._model.cells[m + g.RENDER_MODEL_FG_OFFSET] = this._cellColorResolver.result.fg, this._model.cells[m + g.RENDER_MODEL_EXT_OFFSET] = this._cellColorResolver.result.ext;
|
||
R && this._rectangleRenderer.value.updateBackgrounds(this._model), this._rectangleRenderer.value.updateCursor(this._model)
|
||
}
|
||
_updateDimensions() {
|
||
this._charSizeService.width && this._charSizeService.height && (this.dimensions.device.char.width = Math.floor(this._charSizeService.width * this._devicePixelRatio), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * this._devicePixelRatio), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = 1 === this._optionsService.rawOptions.lineHeight ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._terminal.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._terminal.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / this._devicePixelRatio), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / this._devicePixelRatio), this.dimensions.css.cell.height = this.dimensions.device.cell.height / this._devicePixelRatio, this.dimensions.css.cell.width = this.dimensions.device.cell.width / this._devicePixelRatio)
|
||
}
|
||
_setCanvasDevicePixelDimensions(e, t) {
|
||
this._canvas.width === e && this._canvas.height === t || (this._canvas.width = e, this._canvas.height = t, this._requestRedrawViewport())
|
||
}
|
||
_requestRedrawViewport() {
|
||
this._onRequestRedraw.fire({
|
||
start: 0,
|
||
end: this._terminal.rows - 1
|
||
})
|
||
}
|
||
_requestRedrawCursor() {
|
||
const e = this._terminal.buffer.active.cursorY;
|
||
this._onRequestRedraw.fire({
|
||
start: e,
|
||
end: e
|
||
})
|
||
}
|
||
}
|
||
t.WebglRenderer = m;
|
||
class C extends d.AttributeData {
|
||
constructor(e, t, i) {
|
||
super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i
|
||
}
|
||
isCombined() {
|
||
return 2097152
|
||
}
|
||
getWidth() {
|
||
return this._width
|
||
}
|
||
getChars() {
|
||
return this.combinedData
|
||
}
|
||
getCode() {
|
||
return 2097151
|
||
}
|
||
setFromCharData(e) {
|
||
throw new Error("not implemented")
|
||
}
|
||
getAsCharData() {
|
||
return [this.fg, this.getChars(), this.getWidth(), this.getCode()]
|
||
}
|
||
}
|
||
|
||
function S(e, t, i = 0) {
|
||
return Math.max(Math.min(e, t), i)
|
||
}
|
||
t.JoinedCellData = C
|
||
},
|
||
381: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.GLTexture = t.expandFloat32Array = t.createShader = t.createProgram = t.PROJECTION_MATRIX = void 0;
|
||
const s = i(374);
|
||
|
||
function r(e, t, i) {
|
||
const r = (0, s.throwIfFalsy)(e.createShader(t));
|
||
if (e.shaderSource(r, i), e.compileShader(r), e.getShaderParameter(r, e.COMPILE_STATUS)) return r;
|
||
console.error(e.getShaderInfoLog(r)), e.deleteShader(r)
|
||
}
|
||
t.PROJECTION_MATRIX = new Float32Array([2, 0, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, -1, 1, 0, 1]), t.createProgram = function(e, t, i) {
|
||
const n = (0, s.throwIfFalsy)(e.createProgram());
|
||
if (e.attachShader(n, (0, s.throwIfFalsy)(r(e, e.VERTEX_SHADER, t))), e.attachShader(n, (0, s.throwIfFalsy)(r(e, e.FRAGMENT_SHADER, i))), e.linkProgram(n), e.getProgramParameter(n, e.LINK_STATUS)) return n;
|
||
console.error(e.getProgramInfoLog(n)), e.deleteProgram(n)
|
||
}, t.createShader = r, t.expandFloat32Array = function(e, t) {
|
||
const i = Math.min(2 * e.length, t),
|
||
s = new Float32Array(i);
|
||
for (let t = 0; t < e.length; t++) s[t] = e[t];
|
||
return s
|
||
}, t.GLTexture = class {
|
||
constructor(e) {
|
||
this.texture = e, this.version = -1
|
||
}
|
||
}
|
||
},
|
||
592: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BaseRenderLayer = void 0;
|
||
const s = i(627),
|
||
r = i(237),
|
||
n = i(374),
|
||
o = i(859);
|
||
class a extends o.Disposable {
|
||
constructor(e, t, i, s, r, n, a, h) {
|
||
super(), this._container = t, this._alpha = r, this._coreBrowserService = n, this._optionsService = a, this._themeService = h, this._deviceCharWidth = 0, this._deviceCharHeight = 0, this._deviceCellWidth = 0, this._deviceCellHeight = 0, this._deviceCharLeft = 0, this._deviceCharTop = 0, this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${i}-layer`), this._canvas.style.zIndex = s.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this.register(this._themeService.onChangeColors((t => {
|
||
this._refreshCharAtlas(e, t), this.reset(e)
|
||
}))), this.register((0, o.toDisposable)((() => {
|
||
this._canvas.remove()
|
||
})))
|
||
}
|
||
_initCanvas() {
|
||
this._ctx = (0, n.throwIfFalsy)(this._canvas.getContext("2d", {
|
||
alpha: this._alpha
|
||
})), this._alpha || this._clearAll()
|
||
}
|
||
handleBlur(e) {}
|
||
handleFocus(e) {}
|
||
handleCursorMove(e) {}
|
||
handleGridChanged(e, t, i) {}
|
||
handleSelectionChanged(e, t, i, s = !1) {}
|
||
_setTransparency(e, t) {
|
||
if (t === this._alpha) return;
|
||
const i = this._canvas;
|
||
this._alpha = t, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, i), this._refreshCharAtlas(e, this._themeService.colors), this.handleGridChanged(e, 0, e.rows - 1)
|
||
}
|
||
_refreshCharAtlas(e, t) {
|
||
this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0 || (this._charAtlas = (0, s.acquireTextureAtlas)(e, this._optionsService.rawOptions, t, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr), this._charAtlas.warmUp())
|
||
}
|
||
resize(e, t) {
|
||
this._deviceCellWidth = t.device.cell.width, this._deviceCellHeight = t.device.cell.height, this._deviceCharWidth = t.device.char.width, this._deviceCharHeight = t.device.char.height, this._deviceCharLeft = t.device.char.left, this._deviceCharTop = t.device.char.top, this._canvas.width = t.device.canvas.width, this._canvas.height = t.device.canvas.height, this._canvas.style.width = `${t.css.canvas.width}px`, this._canvas.style.height = `${t.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(e, this._themeService.colors)
|
||
}
|
||
_fillBottomLineAtCells(e, t, i = 1) {
|
||
this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight - this._coreBrowserService.dpr - 1, i * this._deviceCellWidth, this._coreBrowserService.dpr)
|
||
}
|
||
_clearAll() {
|
||
this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height))
|
||
}
|
||
_clearCells(e, t, i, s) {
|
||
this._alpha ? this._ctx.clearRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight))
|
||
}
|
||
_fillCharTrueColor(e, t, i, s) {
|
||
this._ctx.font = this._getFont(e, !1, !1), this._ctx.textBaseline = r.TEXT_BASELINE, this._clipCell(i, s, t.getWidth()), this._ctx.fillText(t.getChars(), i * this._deviceCellWidth + this._deviceCharLeft, s * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight)
|
||
}
|
||
_clipCell(e, t, i) {
|
||
this._ctx.beginPath(), this._ctx.rect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip()
|
||
}
|
||
_getFont(e, t, i) {
|
||
return `${i ? "italic" : ""} ${t ? e.options.fontWeightBold : e.options.fontWeight} ${e.options.fontSize * this._coreBrowserService.dpr}px ${e.options.fontFamily}`
|
||
}
|
||
}
|
||
t.BaseRenderLayer = a
|
||
},
|
||
733: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.LinkRenderLayer = void 0;
|
||
const s = i(197),
|
||
r = i(237),
|
||
n = i(592);
|
||
class o extends n.BaseRenderLayer {
|
||
constructor(e, t, i, s, r, n, o) {
|
||
super(i, e, "link", t, !0, r, n, o), this.register(s.onShowLinkUnderline((e => this._handleShowLinkUnderline(e)))), this.register(s.onHideLinkUnderline((e => this._handleHideLinkUnderline(e))))
|
||
}
|
||
resize(e, t) {
|
||
super.resize(e, t), this._state = void 0
|
||
}
|
||
reset(e) {
|
||
this._clearCurrentLink()
|
||
}
|
||
_clearCurrentLink() {
|
||
if (this._state) {
|
||
this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1);
|
||
const e = this._state.y2 - this._state.y1 - 1;
|
||
e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0
|
||
}
|
||
}
|
||
_handleShowLinkUnderline(e) {
|
||
if (e.fg === r.INVERTED_DEFAULT_COLOR ? this._ctx.fillStyle = this._themeService.colors.background.css : void 0 !== e.fg && (0, s.is256Color)(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, 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 (let t = e.y1 + 1; t < e.y2; t++) this._fillBottomLineAtCells(0, t, e.cols);
|
||
this._fillBottomLineAtCells(0, e.y2, e.x2)
|
||
}
|
||
this._state = e
|
||
}
|
||
_handleHideLinkUnderline(e) {
|
||
this._clearCurrentLink()
|
||
}
|
||
}
|
||
t.LinkRenderLayer = o
|
||
},
|
||
820: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.addDisposableDomListener = void 0, t.addDisposableDomListener = function(e, t, i, s) {
|
||
e.addEventListener(t, i, s);
|
||
let r = !1;
|
||
return {
|
||
dispose: () => {
|
||
r || (r = !0, e.removeEventListener(t, i, s))
|
||
}
|
||
}
|
||
}
|
||
},
|
||
274: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CellColorResolver = void 0;
|
||
const s = i(855),
|
||
r = i(160),
|
||
n = i(374);
|
||
let o, a = 0,
|
||
h = 0,
|
||
c = !1,
|
||
l = !1,
|
||
d = !1,
|
||
_ = 0;
|
||
t.CellColorResolver = class {
|
||
constructor(e, t, i, s, r, n) {
|
||
this._terminal = e, this._optionService = t, this._selectionRenderModel = i, this._decorationService = s, this._coreBrowserService = r, this._themeService = n, this.result = {
|
||
fg: 0,
|
||
bg: 0,
|
||
ext: 0
|
||
}
|
||
}
|
||
resolve(e, t, i, u) {
|
||
if (this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = 268435456 & e.bg ? e.extended.ext : 0, h = 0, a = 0, l = !1, c = !1, d = !1, o = this._themeService.colors, _ = 0, e.getCode() !== s.NULL_CELL_CODE && 4 === e.extended.underlineStyle) {
|
||
const e = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15));
|
||
_ = t * u % (2 * Math.round(e))
|
||
}
|
||
if (this._decorationService.forEachDecorationAtCell(t, i, "bottom", (e => {
|
||
e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0)
|
||
})), d = this._selectionRenderModel.isCellSelected(this._terminal, t, i), d) {
|
||
if (67108864 & this.result.fg || 50331648 & this.result.bg) {
|
||
if (67108864 & this.result.fg) switch (50331648 & this.result.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
h = this._themeService.colors.ansi[255 & this.result.fg].rgba;
|
||
break;
|
||
case 50331648:
|
||
h = (16777215 & this.result.fg) << 8 | 255;
|
||
break;
|
||
default:
|
||
h = this._themeService.colors.foreground.rgba
|
||
} else switch (50331648 & this.result.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
h = this._themeService.colors.ansi[255 & this.result.bg].rgba;
|
||
break;
|
||
case 50331648:
|
||
h = (16777215 & this.result.bg) << 8 | 255
|
||
}
|
||
h = r.rgba.blend(h, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215
|
||
} else h = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215;
|
||
if (l = !0, o.selectionForeground && (a = o.selectionForeground.rgba >> 8 & 16777215, c = !0), (0, n.treatGlyphAsBackgroundColor)(e.getCode())) {
|
||
if (67108864 & this.result.fg && !(50331648 & this.result.bg)) a = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215;
|
||
else {
|
||
if (67108864 & this.result.fg) switch (50331648 & this.result.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
a = this._themeService.colors.ansi[255 & this.result.bg].rgba;
|
||
break;
|
||
case 50331648:
|
||
a = (16777215 & this.result.bg) << 8 | 255
|
||
} else switch (50331648 & this.result.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
a = this._themeService.colors.ansi[255 & this.result.fg].rgba;
|
||
break;
|
||
case 50331648:
|
||
a = (16777215 & this.result.fg) << 8 | 255;
|
||
break;
|
||
default:
|
||
a = this._themeService.colors.foreground.rgba
|
||
}
|
||
a = r.rgba.blend(a, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215
|
||
}
|
||
c = !0
|
||
}
|
||
}
|
||
this._decorationService.forEachDecorationAtCell(t, i, "top", (e => {
|
||
e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0)
|
||
})), l && (h = d ? -16777216 & e.bg & -134217729 | h | 50331648 : -16777216 & e.bg | h | 50331648), c && (a = -16777216 & e.fg & -67108865 | a | 50331648), 67108864 & this.result.fg && (l && !c && (a = 50331648 & this.result.bg ? -134217728 & this.result.fg | 67108863 & this.result.bg : -134217728 & this.result.fg | 16777215 & o.background.rgba >> 8 | 50331648, c = !0), !l && c && (h = 50331648 & this.result.fg ? -67108864 & this.result.bg | 67108863 & this.result.fg : -67108864 & this.result.bg | 16777215 & o.foreground.rgba >> 8 | 50331648, l = !0)), o = void 0, this.result.bg = l ? h : this.result.bg, this.result.fg = c ? a : this.result.fg, this.result.ext &= 536870911, this.result.ext |= _ << 29 & 3758096384
|
||
}
|
||
}
|
||
},
|
||
627: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.removeTerminalFromCache = t.acquireTextureAtlas = void 0;
|
||
const s = i(509),
|
||
r = i(197),
|
||
n = [];
|
||
t.acquireTextureAtlas = function(e, t, i, o, a, h, c, l) {
|
||
const d = (0, r.generateConfig)(o, a, h, c, t, i, l);
|
||
for (let t = 0; t < n.length; t++) {
|
||
const i = n[t],
|
||
s = i.ownedBy.indexOf(e);
|
||
if (s >= 0) {
|
||
if ((0, r.configEquals)(i.config, d)) return i.atlas;
|
||
1 === i.ownedBy.length ? (i.atlas.dispose(), n.splice(t, 1)) : i.ownedBy.splice(s, 1);
|
||
break
|
||
}
|
||
}
|
||
for (let t = 0; t < n.length; t++) {
|
||
const i = n[t];
|
||
if ((0, r.configEquals)(i.config, d)) return i.ownedBy.push(e), i.atlas
|
||
}
|
||
const _ = e._core,
|
||
u = {
|
||
atlas: new s.TextureAtlas(document, d, _.unicodeService),
|
||
config: d,
|
||
ownedBy: [e]
|
||
};
|
||
return n.push(u), u.atlas
|
||
}, t.removeTerminalFromCache = function(e) {
|
||
for (let t = 0; t < n.length; t++) {
|
||
const i = n[t].ownedBy.indexOf(e);
|
||
if (-1 !== i) {
|
||
1 === n[t].ownedBy.length ? (n[t].atlas.dispose(), n.splice(t, 1)) : n[t].ownedBy.splice(i, 1);
|
||
break
|
||
}
|
||
}
|
||
}
|
||
},
|
||
197: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.is256Color = t.configEquals = t.generateConfig = void 0;
|
||
const s = i(160);
|
||
t.generateConfig = function(e, t, i, r, n, o, a) {
|
||
const h = {
|
||
foreground: o.foreground,
|
||
background: o.background,
|
||
cursor: s.NULL_COLOR,
|
||
cursorAccent: s.NULL_COLOR,
|
||
selectionForeground: s.NULL_COLOR,
|
||
selectionBackgroundTransparent: s.NULL_COLOR,
|
||
selectionBackgroundOpaque: s.NULL_COLOR,
|
||
selectionInactiveBackgroundTransparent: s.NULL_COLOR,
|
||
selectionInactiveBackgroundOpaque: s.NULL_COLOR,
|
||
ansi: o.ansi.slice(),
|
||
contrastCache: o.contrastCache,
|
||
halfContrastCache: o.halfContrastCache
|
||
};
|
||
return {
|
||
customGlyphs: n.customGlyphs,
|
||
devicePixelRatio: a,
|
||
letterSpacing: n.letterSpacing,
|
||
lineHeight: n.lineHeight,
|
||
deviceCellWidth: e,
|
||
deviceCellHeight: t,
|
||
deviceCharWidth: i,
|
||
deviceCharHeight: r,
|
||
fontFamily: n.fontFamily,
|
||
fontSize: n.fontSize,
|
||
fontWeight: n.fontWeight,
|
||
fontWeightBold: n.fontWeightBold,
|
||
allowTransparency: n.allowTransparency,
|
||
drawBoldTextInBrightColors: n.drawBoldTextInBrightColors,
|
||
minimumContrastRatio: n.minimumContrastRatio,
|
||
colors: h
|
||
}
|
||
}, t.configEquals = function(e, t) {
|
||
for (let i = 0; i < e.colors.ansi.length; i++)
|
||
if (e.colors.ansi[i].rgba !== t.colors.ansi[i].rgba) return !1;
|
||
return e.devicePixelRatio === t.devicePixelRatio && e.customGlyphs === t.customGlyphs && e.lineHeight === t.lineHeight && e.letterSpacing === t.letterSpacing && e.fontFamily === t.fontFamily && e.fontSize === t.fontSize && e.fontWeight === t.fontWeight && e.fontWeightBold === t.fontWeightBold && e.allowTransparency === t.allowTransparency && e.deviceCharWidth === t.deviceCharWidth && e.deviceCharHeight === t.deviceCharHeight && e.drawBoldTextInBrightColors === t.drawBoldTextInBrightColors && e.minimumContrastRatio === t.minimumContrastRatio && e.colors.foreground.rgba === t.colors.foreground.rgba && e.colors.background.rgba === t.colors.background.rgba
|
||
}, t.is256Color = function(e) {
|
||
return 16777216 == (50331648 & e) || 33554432 == (50331648 & e)
|
||
}
|
||
},
|
||
237: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0;
|
||
const s = i(399);
|
||
t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic"
|
||
},
|
||
457: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CursorBlinkStateManager = void 0, t.CursorBlinkStateManager = class {
|
||
constructor(e, t) {
|
||
this._renderCallback = e, this._coreBrowserService = t, this.isCursorVisible = !0, this._coreBrowserService.isFocused && this._restartInterval()
|
||
}
|
||
get isPaused() {
|
||
return !(this._blinkStartTimeout || this._blinkInterval)
|
||
}
|
||
dispose() {
|
||
this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0)
|
||
}
|
||
restartBlinkAnimation() {
|
||
this.isPaused || (this._animationTimeRestarted = Date.now(), this.isCursorVisible = !0, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._renderCallback(), this._animationFrame = void 0
|
||
}))))
|
||
}
|
||
_restartInterval(e = 600) {
|
||
this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout((() => {
|
||
if (this._animationTimeRestarted) {
|
||
const e = 600 - (Date.now() - this._animationTimeRestarted);
|
||
if (this._animationTimeRestarted = void 0, e > 0) return void this._restartInterval(e)
|
||
}
|
||
this.isCursorVisible = !1, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._renderCallback(), this._animationFrame = void 0
|
||
})), this._blinkInterval = this._coreBrowserService.window.setInterval((() => {
|
||
if (this._animationTimeRestarted) {
|
||
const e = 600 - (Date.now() - this._animationTimeRestarted);
|
||
return this._animationTimeRestarted = void 0, void this._restartInterval(e)
|
||
}
|
||
this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._renderCallback(), this._animationFrame = void 0
|
||
}))
|
||
}), 600)
|
||
}), e)
|
||
}
|
||
pause() {
|
||
this.isCursorVisible = !0, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0)
|
||
}
|
||
resume() {
|
||
this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this.restartBlinkAnimation()
|
||
}
|
||
}
|
||
},
|
||
860: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.tryDrawCustomChar = t.powerlineDefinitions = t.boxDrawingDefinitions = t.blockElementDefinitions = void 0;
|
||
const s = i(374);
|
||
t.blockElementDefinitions = {
|
||
"▀": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"▁": [{
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"▂": [{
|
||
x: 0,
|
||
y: 6,
|
||
w: 8,
|
||
h: 2
|
||
}],
|
||
"▃": [{
|
||
x: 0,
|
||
y: 5,
|
||
w: 8,
|
||
h: 3
|
||
}],
|
||
"▄": [{
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"▅": [{
|
||
x: 0,
|
||
y: 3,
|
||
w: 8,
|
||
h: 5
|
||
}],
|
||
"▆": [{
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 6
|
||
}],
|
||
"▇": [{
|
||
x: 0,
|
||
y: 1,
|
||
w: 8,
|
||
h: 7
|
||
}],
|
||
"█": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 8
|
||
}],
|
||
"▉": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 7,
|
||
h: 8
|
||
}],
|
||
"▊": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 6,
|
||
h: 8
|
||
}],
|
||
"▋": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 5,
|
||
h: 8
|
||
}],
|
||
"▌": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}],
|
||
"▍": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 3,
|
||
h: 8
|
||
}],
|
||
"▎": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 2,
|
||
h: 8
|
||
}],
|
||
"▏": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"▐": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}],
|
||
"▔": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"▕": [{
|
||
x: 7,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"▖": [{
|
||
x: 0,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▗": [{
|
||
x: 4,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▘": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▙": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"▚": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}, {
|
||
x: 4,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▛": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}, {
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▜": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 4
|
||
}, {
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}],
|
||
"▝": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▞": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▟": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"🭰": [{
|
||
x: 1,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭱": [{
|
||
x: 2,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭲": [{
|
||
x: 3,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭳": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭴": [{
|
||
x: 5,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭵": [{
|
||
x: 6,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭶": [{
|
||
x: 0,
|
||
y: 1,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭷": [{
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭸": [{
|
||
x: 0,
|
||
y: 3,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭹": [{
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭺": [{
|
||
x: 0,
|
||
y: 5,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭻": [{
|
||
x: 0,
|
||
y: 6,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭼": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭽": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭾": [{
|
||
x: 7,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭿": [{
|
||
x: 7,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🮀": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🮁": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🮂": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 2
|
||
}],
|
||
"🮃": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 3
|
||
}],
|
||
"🮄": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 5
|
||
}],
|
||
"🮅": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 6
|
||
}],
|
||
"🮆": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 7
|
||
}],
|
||
"🮇": [{
|
||
x: 6,
|
||
y: 0,
|
||
w: 2,
|
||
h: 8
|
||
}],
|
||
"🮈": [{
|
||
x: 5,
|
||
y: 0,
|
||
w: 3,
|
||
h: 8
|
||
}],
|
||
"🮉": [{
|
||
x: 3,
|
||
y: 0,
|
||
w: 5,
|
||
h: 8
|
||
}],
|
||
"🮊": [{
|
||
x: 2,
|
||
y: 0,
|
||
w: 6,
|
||
h: 8
|
||
}],
|
||
"🮋": [{
|
||
x: 1,
|
||
y: 0,
|
||
w: 7,
|
||
h: 8
|
||
}],
|
||
"🮕": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 2,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 2,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}],
|
||
"🮖": [{
|
||
x: 2,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 2,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}],
|
||
"🮗": [{
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 6,
|
||
w: 8,
|
||
h: 2
|
||
}]
|
||
};
|
||
const r = {
|
||
"░": [
|
||
[1, 0, 0, 0],
|
||
[0, 0, 0, 0],
|
||
[0, 0, 1, 0],
|
||
[0, 0, 0, 0]
|
||
],
|
||
"▒": [
|
||
[1, 0],
|
||
[0, 0],
|
||
[0, 1],
|
||
[0, 0]
|
||
],
|
||
"▓": [
|
||
[0, 1],
|
||
[1, 1],
|
||
[1, 0],
|
||
[1, 1]
|
||
]
|
||
};
|
||
t.boxDrawingDefinitions = {
|
||
"─": {
|
||
1: "M0,.5 L1,.5"
|
||
},
|
||
"━": {
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"│": {
|
||
1: "M.5,0 L.5,1"
|
||
},
|
||
"┃": {
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"┌": {
|
||
1: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┏": {
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┐": {
|
||
1: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"┓": {
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"└": {
|
||
1: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┗": {
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┘": {
|
||
1: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"┛": {
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"├": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L1,.5"
|
||
},
|
||
"┣": {
|
||
3: "M.5,0 L.5,1 M.5,.5 L1,.5"
|
||
},
|
||
"┤": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L0,.5"
|
||
},
|
||
"┫": {
|
||
3: "M.5,0 L.5,1 M.5,.5 L0,.5"
|
||
},
|
||
"┬": {
|
||
1: "M0,.5 L1,.5 M.5,.5 L.5,1"
|
||
},
|
||
"┳": {
|
||
3: "M0,.5 L1,.5 M.5,.5 L.5,1"
|
||
},
|
||
"┴": {
|
||
1: "M0,.5 L1,.5 M.5,.5 L.5,0"
|
||
},
|
||
"┻": {
|
||
3: "M0,.5 L1,.5 M.5,.5 L.5,0"
|
||
},
|
||
"┼": {
|
||
1: "M0,.5 L1,.5 M.5,0 L.5,1"
|
||
},
|
||
"╋": {
|
||
3: "M0,.5 L1,.5 M.5,0 L.5,1"
|
||
},
|
||
"╴": {
|
||
1: "M.5,.5 L0,.5"
|
||
},
|
||
"╸": {
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"╵": {
|
||
1: "M.5,.5 L.5,0"
|
||
},
|
||
"╹": {
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"╶": {
|
||
1: "M.5,.5 L1,.5"
|
||
},
|
||
"╺": {
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"╷": {
|
||
1: "M.5,.5 L.5,1"
|
||
},
|
||
"╻": {
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"═": {
|
||
1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"║": {
|
||
1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1`
|
||
},
|
||
"╒": {
|
||
1: (e, t) => `M.5,1 L.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╓": {
|
||
1: (e, t) => `M${.5 - e},1 L${.5 - e},.5 L1,.5 M${.5 + e},.5 L${.5 + e},1`
|
||
},
|
||
"╔": {
|
||
1: (e, t) => `M1,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1`
|
||
},
|
||
"╕": {
|
||
1: (e, t) => `M0,${.5 - t} L.5,${.5 - t} L.5,1 M0,${.5 + t} L.5,${.5 + t}`
|
||
},
|
||
"╖": {
|
||
1: (e, t) => `M${.5 + e},1 L${.5 + e},.5 L0,.5 M${.5 - e},.5 L${.5 - e},1`
|
||
},
|
||
"╗": {
|
||
1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},1`
|
||
},
|
||
"╘": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 + t} L1,${.5 + t} M.5,${.5 - t} L1,${.5 - t}`
|
||
},
|
||
"╙": {
|
||
1: (e, t) => `M1,.5 L${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0`
|
||
},
|
||
"╚": {
|
||
1: (e, t) => `M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0 M1,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},0`
|
||
},
|
||
"╛": {
|
||
1: (e, t) => `M0,${.5 + t} L.5,${.5 + t} L.5,0 M0,${.5 - t} L.5,${.5 - t}`
|
||
},
|
||
"╜": {
|
||
1: (e, t) => `M0,.5 L${.5 + e},.5 L${.5 + e},0 M${.5 - e},.5 L${.5 - e},0`
|
||
},
|
||
"╝": {
|
||
1: (e, t) => `M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M0,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},0`
|
||
},
|
||
"╞": {
|
||
1: (e, t) => `M.5,0 L.5,1 M.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╟": {
|
||
1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1 M${.5 + e},.5 L1,.5`
|
||
},
|
||
"╠": {
|
||
1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0`
|
||
},
|
||
"╡": {
|
||
1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L.5,${.5 - t} M0,${.5 + t} L.5,${.5 + t}`
|
||
},
|
||
"╢": {
|
||
1: (e, t) => `M0,.5 L${.5 - e},.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1`
|
||
},
|
||
"╣": {
|
||
1: (e, t) => `M${.5 + e},0 L${.5 + e},1 M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0`
|
||
},
|
||
"╤": {
|
||
1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t} M.5,${.5 + t} L.5,1`
|
||
},
|
||
"╥": {
|
||
1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},1 M${.5 + e},.5 L${.5 + e},1`
|
||
},
|
||
"╦": {
|
||
1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1`
|
||
},
|
||
"╧": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 - t} M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╨": {
|
||
1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0`
|
||
},
|
||
"╩": {
|
||
1: (e, t) => `M0,${.5 + t} L1,${.5 + t} M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0`
|
||
},
|
||
"╪": {
|
||
1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╫": {
|
||
1: (e, t) => `M0,.5 L1,.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1`
|
||
},
|
||
"╬": {
|
||
1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0`
|
||
},
|
||
"╱": {
|
||
1: "M1,0 L0,1"
|
||
},
|
||
"╲": {
|
||
1: "M0,0 L1,1"
|
||
},
|
||
"╳": {
|
||
1: "M1,0 L0,1 M0,0 L1,1"
|
||
},
|
||
"╼": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"╽": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"╾": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"╿": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┍": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┎": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┑": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┒": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┕": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┖": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┙": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┚": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┝": {
|
||
1: "M.5,0 L.5,1",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┞": {
|
||
1: "M0.5,1 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┟": {
|
||
1: "M.5,0 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┠": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"┡": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┢": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┥": {
|
||
1: "M.5,0 L.5,1",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┦": {
|
||
1: "M0,.5 L.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┧": {
|
||
1: "M.5,0 L.5,.5 L0,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┨": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"┩": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"┪": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"┭": {
|
||
1: "M0.5,1 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┮": {
|
||
1: "M0,.5 L.5,.5 L.5,1",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┯": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"┰": {
|
||
1: "M0,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┱": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"┲": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┵": {
|
||
1: "M.5,0 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┶": {
|
||
1: "M.5,0 L.5,.5 L0,.5",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┷": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"┸": {
|
||
1: "M0,.5 L1,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┹": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"┺": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┽": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┾": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L0,.5",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┿": {
|
||
1: "M.5,0 L.5,1",
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"╀": {
|
||
1: "M0,.5 L1,.5 M.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"╁": {
|
||
1: "M.5,.5 L.5,0 M0,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"╂": {
|
||
1: "M0,.5 L1,.5",
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"╃": {
|
||
1: "M0.5,1 L.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"╄": {
|
||
1: "M0,.5 L.5,.5 L.5,1",
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"╅": {
|
||
1: "M.5,0 L.5,.5 L1,.5",
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"╆": {
|
||
1: "M.5,0 L.5,.5 L0,.5",
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"╇": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0 M0,.5 L1,.5"
|
||
},
|
||
"╈": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0,.5 L1,.5 M.5,.5 L.5,1"
|
||
},
|
||
"╉": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,1 M.5,.5 L0,.5"
|
||
},
|
||
"╊": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,0 L.5,1 M.5,.5 L1,.5"
|
||
},
|
||
"╌": {
|
||
1: "M.1,.5 L.4,.5 M.6,.5 L.9,.5"
|
||
},
|
||
"╍": {
|
||
3: "M.1,.5 L.4,.5 M.6,.5 L.9,.5"
|
||
},
|
||
"┄": {
|
||
1: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"
|
||
},
|
||
"┅": {
|
||
3: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"
|
||
},
|
||
"┈": {
|
||
1: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"
|
||
},
|
||
"┉": {
|
||
3: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"
|
||
},
|
||
"╎": {
|
||
1: "M.5,.1 L.5,.4 M.5,.6 L.5,.9"
|
||
},
|
||
"╏": {
|
||
3: "M.5,.1 L.5,.4 M.5,.6 L.5,.9"
|
||
},
|
||
"┆": {
|
||
1: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"
|
||
},
|
||
"┇": {
|
||
3: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"
|
||
},
|
||
"┊": {
|
||
1: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"
|
||
},
|
||
"┋": {
|
||
3: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"
|
||
},
|
||
"╭": {
|
||
1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,1,.5`
|
||
},
|
||
"╮": {
|
||
1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,0,.5`
|
||
},
|
||
"╯": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,0,.5`
|
||
},
|
||
"╰": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,1,.5`
|
||
}
|
||
}, t.powerlineDefinitions = {
|
||
"": {
|
||
d: "M0,0 L1,.5 L0,1",
|
||
type: 0,
|
||
rightPadding: 2
|
||
},
|
||
"": {
|
||
d: "M-1,-.5 L1,.5 L-1,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M1,0 L0,.5 L1,1",
|
||
type: 0,
|
||
leftPadding: 2
|
||
},
|
||
"": {
|
||
d: "M2,-.5 L0,.5 L2,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0",
|
||
type: 0,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0",
|
||
type: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0",
|
||
type: 0,
|
||
leftPadding: 1
|
||
},
|
||
"": {
|
||
d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0",
|
||
type: 1,
|
||
leftPadding: 1
|
||
},
|
||
"": {
|
||
d: "M-.5,-.5 L1.5,1.5 L-.5,1.5",
|
||
type: 0
|
||
},
|
||
"": {
|
||
d: "M-.5,-.5 L1.5,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M1.5,-.5 L-.5,1.5 L1.5,1.5",
|
||
type: 0
|
||
},
|
||
"": {
|
||
d: "M1.5,-.5 L-.5,1.5 L-.5,-.5",
|
||
type: 0
|
||
},
|
||
"": {
|
||
d: "M1.5,-.5 L-.5,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M-.5,-.5 L1.5,1.5 L1.5,-.5",
|
||
type: 0
|
||
}
|
||
}, t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.tryDrawCustomChar = function(e, i, o, c, l, d, _, u) {
|
||
const f = t.blockElementDefinitions[i];
|
||
if (f) return function(e, t, i, s, r, n) {
|
||
for (let o = 0; o < t.length; o++) {
|
||
const a = t[o],
|
||
h = r / 8,
|
||
c = n / 8;
|
||
e.fillRect(i + a.x * h, s + a.y * c, a.w * h, a.h * c)
|
||
}
|
||
}(e, f, o, c, l, d), !0;
|
||
const v = r[i];
|
||
if (v) return function(e, t, i, r, o, a) {
|
||
let h = n.get(t);
|
||
h || (h = new Map, n.set(t, h));
|
||
const c = e.fillStyle;
|
||
if ("string" != typeof c) throw new Error(`Unexpected fillStyle type "${c}"`);
|
||
let l = h.get(c);
|
||
if (!l) {
|
||
const i = t[0].length,
|
||
r = t.length,
|
||
n = e.canvas.ownerDocument.createElement("canvas");
|
||
n.width = i, n.height = r;
|
||
const o = (0, s.throwIfFalsy)(n.getContext("2d")),
|
||
a = new ImageData(i, r);
|
||
let d, _, u, f;
|
||
if (c.startsWith("#")) d = parseInt(c.slice(1, 3), 16), _ = parseInt(c.slice(3, 5), 16), u = parseInt(c.slice(5, 7), 16), f = c.length > 7 && parseInt(c.slice(7, 9), 16) || 1;
|
||
else {
|
||
if (!c.startsWith("rgba")) throw new Error(`Unexpected fillStyle color format "${c}" when drawing pattern glyph`);
|
||
[d, _, u, f] = c.substring(5, c.length - 1).split(",").map((e => parseFloat(e)))
|
||
}
|
||
for (let e = 0; e < r; e++)
|
||
for (let s = 0; s < i; s++) a.data[4 * (e * i + s)] = d, a.data[4 * (e * i + s) + 1] = _, a.data[4 * (e * i + s) + 2] = u, a.data[4 * (e * i + s) + 3] = t[e][s] * (255 * f);
|
||
o.putImageData(a, 0, 0), l = (0, s.throwIfFalsy)(e.createPattern(n, null)), h.set(c, l)
|
||
}
|
||
e.fillStyle = l, e.fillRect(i, r, o, a)
|
||
}(e, v, o, c, l, d), !0;
|
||
const g = t.boxDrawingDefinitions[i];
|
||
if (g) return function(e, t, i, s, r, n, o) {
|
||
e.strokeStyle = e.fillStyle;
|
||
for (const [c, l] of Object.entries(t)) {
|
||
let t;
|
||
e.beginPath(), e.lineWidth = o * Number.parseInt(c), t = "function" == typeof l ? l(.15, .15 / n * r) : l;
|
||
for (const c of t.split(" ")) {
|
||
const t = c[0],
|
||
l = a[t];
|
||
if (!l) {
|
||
console.error(`Could not find drawing instructions for "${t}"`);
|
||
continue
|
||
}
|
||
const d = c.substring(1).split(",");
|
||
d[0] && d[1] && l(e, h(d, r, n, i, s, !0, o))
|
||
}
|
||
e.stroke(), e.closePath()
|
||
}
|
||
}(e, g, o, c, l, d, u), !0;
|
||
const p = t.powerlineDefinitions[i];
|
||
return !!p && (function(e, t, i, s, r, n, o, c) {
|
||
const l = new Path2D;
|
||
l.rect(i, s, r, n), e.clip(l), e.beginPath();
|
||
const d = o / 12;
|
||
e.lineWidth = c * d;
|
||
for (const o of t.d.split(" ")) {
|
||
const l = o[0],
|
||
_ = a[l];
|
||
if (!_) {
|
||
console.error(`Could not find drawing instructions for "${l}"`);
|
||
continue
|
||
}
|
||
const u = o.substring(1).split(",");
|
||
u[0] && u[1] && _(e, h(u, r, n, i, s, !1, c, (t.leftPadding ?? 0) * (d / 2), (t.rightPadding ?? 0) * (d / 2)))
|
||
}
|
||
1 === t.type ? (e.strokeStyle = e.fillStyle, e.stroke()) : e.fill(), e.closePath()
|
||
}(e, p, o, c, l, d, _, u), !0)
|
||
};
|
||
const n = new Map;
|
||
|
||
function o(e, t, i = 0) {
|
||
return Math.max(Math.min(e, t), i)
|
||
}
|
||
const a = {
|
||
C: (e, t) => e.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]),
|
||
L: (e, t) => e.lineTo(t[0], t[1]),
|
||
M: (e, t) => e.moveTo(t[0], t[1])
|
||
};
|
||
|
||
function h(e, t, i, s, r, n, a, h = 0, c = 0) {
|
||
const l = e.map((e => parseFloat(e) || parseInt(e)));
|
||
if (l.length < 2) throw new Error("Too few arguments for instruction");
|
||
for (let e = 0; e < l.length; e += 2) l[e] *= t - h * a - c * a, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, t, 0)), l[e] += s + h * a;
|
||
for (let e = 1; e < l.length; e += 2) l[e] *= i, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, i, 0)), l[e] += r;
|
||
return l
|
||
}
|
||
},
|
||
56: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.observeDevicePixelDimensions = void 0;
|
||
const s = i(859);
|
||
t.observeDevicePixelDimensions = function(e, t, i) {
|
||
let r = new t.ResizeObserver((t => {
|
||
const s = t.find((t => t.target === e));
|
||
if (!s) return;
|
||
if (!("devicePixelContentBoxSize" in s)) return r?.disconnect(), void(r = void 0);
|
||
const n = s.devicePixelContentBoxSize[0].inlineSize,
|
||
o = s.devicePixelContentBoxSize[0].blockSize;
|
||
n > 0 && o > 0 && i(n, o)
|
||
}));
|
||
try {
|
||
r.observe(e, {
|
||
box: ["device-pixel-content-box"]
|
||
})
|
||
} catch {
|
||
r.disconnect(), r = void 0
|
||
}
|
||
return (0, s.toDisposable)((() => r?.disconnect()))
|
||
}
|
||
},
|
||
374: (e, t) => {
|
||
function i(e) {
|
||
return 57508 <= e && e <= 57558
|
||
}
|
||
|
||
function s(e) {
|
||
return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function(e) {
|
||
if (!e) throw new Error("value must not be falsy");
|
||
return e
|
||
}, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function(e) {
|
||
return 57520 <= e && e <= 57527
|
||
}, t.isEmoji = s, t.allowRescaling = function(e, t, r, n) {
|
||
return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && ! function(e) {
|
||
return 57344 <= e && e <= 63743
|
||
}(e)
|
||
}, t.treatGlyphAsBackgroundColor = function(e) {
|
||
return i(e) || function(e) {
|
||
return 9472 <= e && e <= 9631
|
||
}(e)
|
||
}, t.createRenderDimensions = function() {
|
||
return {
|
||
css: {
|
||
canvas: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
cell: {
|
||
width: 0,
|
||
height: 0
|
||
}
|
||
},
|
||
device: {
|
||
canvas: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
cell: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
char: {
|
||
width: 0,
|
||
height: 0,
|
||
left: 0,
|
||
top: 0
|
||
}
|
||
}
|
||
}
|
||
}, t.computeNextVariantOffset = function(e, t, i = 0) {
|
||
return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t))
|
||
}
|
||
},
|
||
296: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.createSelectionRenderModel = void 0;
|
||
class i {
|
||
constructor() {
|
||
this.clear()
|
||
}
|
||
clear() {
|
||
this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0
|
||
}
|
||
update(e, t, i, s = !1) {
|
||
if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear();
|
||
const r = e.buffers.active.ydisp,
|
||
n = t[1] - r,
|
||
o = i[1] - r,
|
||
a = Math.max(n, 0),
|
||
h = Math.min(o, e.rows - 1);
|
||
a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0])
|
||
}
|
||
isCellSelected(e, t, i) {
|
||
return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol)
|
||
}
|
||
}
|
||
t.createSelectionRenderModel = function() {
|
||
return new i
|
||
}
|
||
},
|
||
509: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TextureAtlas = void 0;
|
||
const s = i(237),
|
||
r = i(860),
|
||
n = i(374),
|
||
o = i(160),
|
||
a = i(345),
|
||
h = i(485),
|
||
c = i(385),
|
||
l = i(147),
|
||
d = i(855),
|
||
_ = {
|
||
texturePage: 0,
|
||
texturePosition: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
texturePositionClipSpace: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
offset: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
size: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
sizeClipSpace: {
|
||
x: 0,
|
||
y: 0
|
||
}
|
||
};
|
||
let u;
|
||
class f {
|
||
get pages() {
|
||
return this._pages
|
||
}
|
||
constructor(e, t, i) {
|
||
this._document = e, this._config = t, this._unicodeService = i, this._didWarmUp = !1, this._cacheMap = new h.FourKeyMap, this._cacheMapCombined = new h.FourKeyMap, this._pages = [], this._activePages = [], this._workBoundingBox = {
|
||
top: 0,
|
||
left: 0,
|
||
bottom: 0,
|
||
right: 0
|
||
}, this._workAttributeData = new l.AttributeData, this._textureSize = 512, this._onAddTextureAtlasCanvas = new a.EventEmitter, this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = new a.EventEmitter, this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._requestClearModel = !1, this._createNewPage(), this._tmpCanvas = p(e, 4 * this._config.deviceCellWidth + 4, this._config.deviceCellHeight + 4), this._tmpCtx = (0, n.throwIfFalsy)(this._tmpCanvas.getContext("2d", {
|
||
alpha: this._config.allowTransparency,
|
||
willReadFrequently: !0
|
||
}))
|
||
}
|
||
dispose() {
|
||
for (const e of this.pages) e.canvas.remove();
|
||
this._onAddTextureAtlasCanvas.dispose()
|
||
}
|
||
warmUp() {
|
||
this._didWarmUp || (this._doWarmUp(), this._didWarmUp = !0)
|
||
}
|
||
_doWarmUp() {
|
||
const e = new c.IdleTaskQueue;
|
||
for (let t = 33; t < 126; t++) e.enqueue((() => {
|
||
if (!this._cacheMap.get(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT)) {
|
||
const e = this._drawToCache(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT);
|
||
this._cacheMap.set(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT, e)
|
||
}
|
||
}))
|
||
}
|
||
beginFrame() {
|
||
return this._requestClearModel
|
||
}
|
||
clearTexture() {
|
||
if (0 !== this._pages[0].currentRow.x || 0 !== this._pages[0].currentRow.y) {
|
||
for (const e of this._pages) e.clear();
|
||
this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = !1
|
||
}
|
||
}
|
||
_createNewPage() {
|
||
if (f.maxAtlasPages && this._pages.length >= Math.max(4, f.maxAtlasPages)) {
|
||
const e = this._pages.filter((e => 2 * e.canvas.width <= (f.maxTextureSize || 4096))).sort(((e, t) => t.canvas.width !== e.canvas.width ? t.canvas.width - e.canvas.width : t.percentageUsed - e.percentageUsed));
|
||
let t = -1,
|
||
i = 0;
|
||
for (let s = 0; s < e.length; s++)
|
||
if (e[s].canvas.width !== i) t = s, i = e[s].canvas.width;
|
||
else if (s - t == 3) break;
|
||
const s = e.slice(t, t + 4),
|
||
r = s.map((e => e.glyphs[0].texturePage)).sort(((e, t) => e > t ? 1 : -1)),
|
||
n = this.pages.length - s.length,
|
||
o = this._mergePages(s, n);
|
||
o.version++;
|
||
for (let e = r.length - 1; e >= 0; e--) this._deletePage(r[e]);
|
||
this.pages.push(o), this._requestClearModel = !0, this._onAddTextureAtlasCanvas.fire(o.canvas)
|
||
}
|
||
const e = new v(this._document, this._textureSize);
|
||
return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e
|
||
}
|
||
_mergePages(e, t) {
|
||
const i = 2 * e[0].canvas.width,
|
||
s = new v(this._document, i, e);
|
||
for (const [r, n] of e.entries()) {
|
||
const e = r * n.canvas.width % i,
|
||
o = Math.floor(r / 2) * n.canvas.height;
|
||
s.ctx.drawImage(n.canvas, e, o);
|
||
for (const s of n.glyphs) s.texturePage = t, s.sizeClipSpace.x = s.size.x / i, s.sizeClipSpace.y = s.size.y / i, s.texturePosition.x += e, s.texturePosition.y += o, s.texturePositionClipSpace.x = s.texturePosition.x / i, s.texturePositionClipSpace.y = s.texturePosition.y / i;
|
||
this._onRemoveTextureAtlasCanvas.fire(n.canvas);
|
||
const a = this._activePages.indexOf(n); - 1 !== a && this._activePages.splice(a, 1)
|
||
}
|
||
return s
|
||
}
|
||
_deletePage(e) {
|
||
this._pages.splice(e, 1);
|
||
for (let t = e; t < this._pages.length; t++) {
|
||
const e = this._pages[t];
|
||
for (const t of e.glyphs) t.texturePage--;
|
||
e.version++
|
||
}
|
||
}
|
||
getRasterizedGlyphCombinedChar(e, t, i, s, r) {
|
||
return this._getFromCacheMap(this._cacheMapCombined, e, t, i, s, r)
|
||
}
|
||
getRasterizedGlyph(e, t, i, s, r) {
|
||
return this._getFromCacheMap(this._cacheMap, e, t, i, s, r)
|
||
}
|
||
_getFromCacheMap(e, t, i, s, r, n = !1) {
|
||
return u = e.get(t, i, s, r), u || (u = this._drawToCache(t, i, s, r, n), e.set(t, i, s, r, u)), u
|
||
}
|
||
_getColorFromAnsiIndex(e) {
|
||
if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e);
|
||
return this._config.colors.ansi[e]
|
||
}
|
||
_getBackgroundColor(e, t, i, s) {
|
||
if (this._config.allowTransparency) return o.NULL_COLOR;
|
||
let r;
|
||
switch (e) {
|
||
case 16777216:
|
||
case 33554432:
|
||
r = this._getColorFromAnsiIndex(t);
|
||
break;
|
||
case 50331648:
|
||
const e = l.AttributeData.toColorRGB(t);
|
||
r = o.channels.toColor(e[0], e[1], e[2]);
|
||
break;
|
||
default:
|
||
r = i ? o.color.opaque(this._config.colors.foreground) : this._config.colors.background
|
||
}
|
||
return r
|
||
}
|
||
_getForegroundColor(e, t, i, r, n, a, h, c, d, _) {
|
||
const u = this._getMinimumContrastColor(e, t, i, r, n, a, h, d, c, _);
|
||
if (u) return u;
|
||
let f;
|
||
switch (n) {
|
||
case 16777216:
|
||
case 33554432:
|
||
this._config.drawBoldTextInBrightColors && d && a < 8 && (a += 8), f = this._getColorFromAnsiIndex(a);
|
||
break;
|
||
case 50331648:
|
||
const e = l.AttributeData.toColorRGB(a);
|
||
f = o.channels.toColor(e[0], e[1], e[2]);
|
||
break;
|
||
default:
|
||
f = h ? this._config.colors.background : this._config.colors.foreground
|
||
}
|
||
return this._config.allowTransparency && (f = o.color.opaque(f)), c && (f = o.color.multiplyOpacity(f, s.DIM_OPACITY)), f
|
||
}
|
||
_resolveBackgroundRgba(e, t, i) {
|
||
switch (e) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return this._getColorFromAnsiIndex(t).rgba;
|
||
case 50331648:
|
||
return t << 8;
|
||
default:
|
||
return i ? this._config.colors.foreground.rgba : this._config.colors.background.rgba
|
||
}
|
||
}
|
||
_resolveForegroundRgba(e, t, i, s) {
|
||
switch (e) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return this._config.drawBoldTextInBrightColors && s && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba;
|
||
case 50331648:
|
||
return t << 8;
|
||
default:
|
||
return i ? this._config.colors.background.rgba : this._config.colors.foreground.rgba
|
||
}
|
||
}
|
||
_getMinimumContrastColor(e, t, i, s, r, n, a, h, c, l) {
|
||
if (1 === this._config.minimumContrastRatio || l) return;
|
||
const d = this._getContrastCache(c),
|
||
_ = d.getColor(e, s);
|
||
if (void 0 !== _) return _ || void 0;
|
||
const u = this._resolveBackgroundRgba(t, i, a),
|
||
f = this._resolveForegroundRgba(r, n, a, h),
|
||
v = o.rgba.ensureContrastRatio(u, f, this._config.minimumContrastRatio / (c ? 2 : 1));
|
||
if (!v) return void d.setColor(e, s, null);
|
||
const g = o.channels.toColor(v >> 24 & 255, v >> 16 & 255, v >> 8 & 255);
|
||
return d.setColor(e, s, g), g
|
||
}
|
||
_getContrastCache(e) {
|
||
return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache
|
||
}
|
||
_drawToCache(e, t, i, o, a = !1) {
|
||
const h = "number" == typeof e ? String.fromCharCode(e) : e,
|
||
c = Math.min(this._config.deviceCellWidth * Math.max(h.length, 2) + 4, this._textureSize);
|
||
this._tmpCanvas.width < c && (this._tmpCanvas.width = c);
|
||
const d = Math.min(this._config.deviceCellHeight + 8, this._textureSize);
|
||
if (this._tmpCanvas.height < d && (this._tmpCanvas.height = d), this._tmpCtx.save(), this._workAttributeData.fg = i, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = o, this._workAttributeData.isInvisible()) return _;
|
||
const u = !!this._workAttributeData.isBold(),
|
||
v = !!this._workAttributeData.isInverse(),
|
||
p = !!this._workAttributeData.isDim(),
|
||
m = !!this._workAttributeData.isItalic(),
|
||
C = !!this._workAttributeData.isUnderline(),
|
||
S = !!this._workAttributeData.isStrikethrough(),
|
||
b = !!this._workAttributeData.isOverline();
|
||
let w = this._workAttributeData.getFgColor(),
|
||
y = this._workAttributeData.getFgColorMode(),
|
||
L = this._workAttributeData.getBgColor(),
|
||
x = this._workAttributeData.getBgColorMode();
|
||
if (v) {
|
||
const e = w;
|
||
w = L, L = e;
|
||
const t = y;
|
||
y = x, x = t
|
||
}
|
||
const E = this._getBackgroundColor(x, L, v, p);
|
||
this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over";
|
||
const R = u ? this._config.fontWeightBold : this._config.fontWeight,
|
||
M = m ? "italic" : "";
|
||
this._tmpCtx.font = `${M} ${R} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = s.TEXT_BASELINE;
|
||
const A = 1 === h.length && (0, n.isPowerlineGlyph)(h.charCodeAt(0)),
|
||
D = 1 === h.length && (0, n.isRestrictedPowerlineGlyph)(h.charCodeAt(0)),
|
||
k = this._getForegroundColor(t, x, L, i, y, w, v, p, u, (0, n.treatGlyphAsBackgroundColor)(h.charCodeAt(0)));
|
||
this._tmpCtx.fillStyle = k.css;
|
||
const T = D ? 0 : 4;
|
||
let B = !1;
|
||
!1 !== this._config.customGlyphs && (B = (0, r.tryDrawCustomChar)(this._tmpCtx, h, T, T, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.fontSize, this._config.devicePixelRatio));
|
||
let O, P = !A;
|
||
if (O = "number" == typeof e ? this._unicodeService.wcwidth(e) : this._unicodeService.getStringCellWidth(e), C) {
|
||
this._tmpCtx.save();
|
||
const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)),
|
||
t = e % 2 == 1 ? .5 : 0;
|
||
if (this._tmpCtx.lineWidth = e, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle;
|
||
else if (this._workAttributeData.isUnderlineColorRGB()) P = !1, this._tmpCtx.strokeStyle = `rgb(${l.AttributeData.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`;
|
||
else {
|
||
P = !1;
|
||
let e = this._workAttributeData.getUnderlineColor();
|
||
this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && e < 8 && (e += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(e).css
|
||
}
|
||
this._tmpCtx.beginPath();
|
||
const i = T,
|
||
s = Math.ceil(T + this._config.deviceCharHeight) - t - (a ? 2 * e : 0),
|
||
r = s + e,
|
||
o = s + 2 * e;
|
||
let c = this._workAttributeData.getUnderlineVariantOffset();
|
||
for (let a = 0; a < O; a++) {
|
||
this._tmpCtx.save();
|
||
const h = i + a * this._config.deviceCellWidth,
|
||
l = i + (a + 1) * this._config.deviceCellWidth,
|
||
d = h + this._config.deviceCellWidth / 2;
|
||
switch (this._workAttributeData.extended.underlineStyle) {
|
||
case 2:
|
||
this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s), this._tmpCtx.moveTo(h, o), this._tmpCtx.lineTo(l, o);
|
||
break;
|
||
case 3:
|
||
const i = e <= 1 ? o : Math.ceil(T + this._config.deviceCharHeight - e / 2) - t,
|
||
a = e <= 1 ? s : Math.ceil(T + this._config.deviceCharHeight + e / 2) - t,
|
||
_ = new Path2D;
|
||
_.rect(h, s, this._config.deviceCellWidth, o - s), this._tmpCtx.clip(_), this._tmpCtx.moveTo(h - this._config.deviceCellWidth / 2, r), this._tmpCtx.bezierCurveTo(h - this._config.deviceCellWidth / 2, a, h, a, h, r), this._tmpCtx.bezierCurveTo(h, i, d, i, d, r), this._tmpCtx.bezierCurveTo(d, a, l, a, l, r), this._tmpCtx.bezierCurveTo(l, i, l + this._config.deviceCellWidth / 2, i, l + this._config.deviceCellWidth / 2, r);
|
||
break;
|
||
case 4:
|
||
const u = 0 === c ? 0 : c >= e ? 2 * e - c : e - c;
|
||
0 == !(c >= e) || 0 === u ? (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h + u, s), this._tmpCtx.lineTo(l, s)) : (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(h + u, s), this._tmpCtx.moveTo(h + u + e, s), this._tmpCtx.lineTo(l, s)), c = (0, n.computeNextVariantOffset)(l - h, e, c);
|
||
break;
|
||
case 5:
|
||
const f = .6,
|
||
v = .3,
|
||
g = l - h,
|
||
p = Math.floor(f * g),
|
||
m = Math.floor(v * g),
|
||
C = g - p - m;
|
||
this._tmpCtx.setLineDash([p, m, C]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s);
|
||
break;
|
||
default:
|
||
this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s)
|
||
}
|
||
this._tmpCtx.stroke(), this._tmpCtx.restore()
|
||
}
|
||
if (this._tmpCtx.restore(), !B && this._config.fontSize >= 12 && !this._config.allowTransparency && " " !== h) {
|
||
this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic";
|
||
const t = this._tmpCtx.measureText(h);
|
||
if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in t && t.actualBoundingBoxDescent > 0) {
|
||
this._tmpCtx.save();
|
||
const t = new Path2D;
|
||
t.rect(i, s - Math.ceil(e / 2), this._config.deviceCellWidth * O, o - s + Math.ceil(e / 2)), this._tmpCtx.clip(t), this._tmpCtx.lineWidth = 3 * this._config.devicePixelRatio, this._tmpCtx.strokeStyle = E.css, this._tmpCtx.strokeText(h, T, T + this._config.deviceCharHeight), this._tmpCtx.restore()
|
||
}
|
||
}
|
||
}
|
||
if (b) {
|
||
const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)),
|
||
t = e % 2 == 1 ? .5 : 0;
|
||
this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + t), this._tmpCtx.stroke()
|
||
}
|
||
if (B || this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight), "_" === h && !this._config.allowTransparency) {
|
||
let e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P);
|
||
if (e)
|
||
for (let t = 1; t <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight - t), e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P), e); t++);
|
||
}
|
||
if (S) {
|
||
const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)),
|
||
t = this._tmpCtx.lineWidth % 2 == 1 ? .5 : 0;
|
||
this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.stroke()
|
||
}
|
||
this._tmpCtx.restore();
|
||
const I = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height);
|
||
let F;
|
||
if (F = this._config.allowTransparency ? function(e) {
|
||
for (let t = 0; t < e.data.length; t += 4)
|
||
if (e.data[t + 3] > 0) return !1;
|
||
return !0
|
||
}(I) : g(I, E, k, P), F) return _;
|
||
const H = this._findGlyphBoundingBox(I, this._workBoundingBox, c, D, B, T);
|
||
let $, W;
|
||
for (;;) {
|
||
if (0 === this._activePages.length) {
|
||
const e = this._createNewPage();
|
||
$ = e, W = e.currentRow, W.height = H.size.y;
|
||
break
|
||
}
|
||
$ = this._activePages[this._activePages.length - 1], W = $.currentRow;
|
||
for (const e of this._activePages) H.size.y <= e.currentRow.height && ($ = e, W = e.currentRow);
|
||
for (let e = this._activePages.length - 1; e >= 0; e--)
|
||
for (const t of this._activePages[e].fixedRows) t.height <= W.height && H.size.y <= t.height && ($ = this._activePages[e], W = t);
|
||
if (W.y + H.size.y >= $.canvas.height || W.height > H.size.y + 2) {
|
||
let e = !1;
|
||
if ($.currentRow.y + $.currentRow.height + H.size.y >= $.canvas.height) {
|
||
let t;
|
||
for (const e of this._activePages)
|
||
if (e.currentRow.y + e.currentRow.height + H.size.y < e.canvas.height) {
|
||
t = e;
|
||
break
|
||
} if (t) $ = t;
|
||
else if (f.maxAtlasPages && this._pages.length >= f.maxAtlasPages && W.y + H.size.y <= $.canvas.height && W.height >= H.size.y && W.x + H.size.x <= $.canvas.width) e = !0;
|
||
else {
|
||
const t = this._createNewPage();
|
||
$ = t, W = t.currentRow, W.height = H.size.y, e = !0
|
||
}
|
||
}
|
||
e || ($.currentRow.height > 0 && $.fixedRows.push($.currentRow), W = {
|
||
x: 0,
|
||
y: $.currentRow.y + $.currentRow.height,
|
||
height: H.size.y
|
||
}, $.fixedRows.push(W), $.currentRow = {
|
||
x: 0,
|
||
y: W.y + W.height,
|
||
height: 0
|
||
})
|
||
}
|
||
if (W.x + H.size.x <= $.canvas.width) break;
|
||
W === $.currentRow ? (W.x = 0, W.y += W.height, W.height = 0) : $.fixedRows.splice($.fixedRows.indexOf(W), 1)
|
||
}
|
||
return H.texturePage = this._pages.indexOf($), H.texturePosition.x = W.x, H.texturePosition.y = W.y, H.texturePositionClipSpace.x = W.x / $.canvas.width, H.texturePositionClipSpace.y = W.y / $.canvas.height, H.sizeClipSpace.x /= $.canvas.width, H.sizeClipSpace.y /= $.canvas.height, W.height = Math.max(W.height, H.size.y), W.x += H.size.x, $.ctx.putImageData(I, H.texturePosition.x - this._workBoundingBox.left, H.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, H.size.x, H.size.y), $.addGlyph(H), $.version++, H
|
||
}
|
||
_findGlyphBoundingBox(e, t, i, s, r, n) {
|
||
t.top = 0;
|
||
const o = s ? this._config.deviceCellHeight : this._tmpCanvas.height,
|
||
a = s ? this._config.deviceCellWidth : i;
|
||
let h = !1;
|
||
for (let i = 0; i < o; i++) {
|
||
for (let s = 0; s < a; s++) {
|
||
const r = i * this._tmpCanvas.width * 4 + 4 * s + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.top = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
t.left = 0, h = !1;
|
||
for (let i = 0; i < n + a; i++) {
|
||
for (let s = 0; s < o; s++) {
|
||
const r = s * this._tmpCanvas.width * 4 + 4 * i + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.left = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
t.right = a, h = !1;
|
||
for (let i = n + a - 1; i >= n; i--) {
|
||
for (let s = 0; s < o; s++) {
|
||
const r = s * this._tmpCanvas.width * 4 + 4 * i + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.right = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
t.bottom = o, h = !1;
|
||
for (let i = o - 1; i >= 0; i--) {
|
||
for (let s = 0; s < a; s++) {
|
||
const r = i * this._tmpCanvas.width * 4 + 4 * s + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.bottom = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
return {
|
||
texturePage: 0,
|
||
texturePosition: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
texturePositionClipSpace: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
size: {
|
||
x: t.right - t.left + 1,
|
||
y: t.bottom - t.top + 1
|
||
},
|
||
sizeClipSpace: {
|
||
x: t.right - t.left + 1,
|
||
y: t.bottom - t.top + 1
|
||
},
|
||
offset: {
|
||
x: -t.left + n + (s || r ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0),
|
||
y: -t.top + n + (s || r ? 1 === this._config.lineHeight ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
t.TextureAtlas = f;
|
||
class v {
|
||
get percentageUsed() {
|
||
return this._usedPixels / (this.canvas.width * this.canvas.height)
|
||
}
|
||
get glyphs() {
|
||
return this._glyphs
|
||
}
|
||
addGlyph(e) {
|
||
this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y
|
||
}
|
||
constructor(e, t, i) {
|
||
if (this._usedPixels = 0, this._glyphs = [], this.version = 0, this.currentRow = {
|
||
x: 0,
|
||
y: 0,
|
||
height: 0
|
||
}, this.fixedRows = [], i)
|
||
for (const e of i) this._glyphs.push(...e.glyphs), this._usedPixels += e._usedPixels;
|
||
this.canvas = p(e, t, t), this.ctx = (0, n.throwIfFalsy)(this.canvas.getContext("2d", {
|
||
alpha: !0
|
||
}))
|
||
}
|
||
clear() {
|
||
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++
|
||
}
|
||
}
|
||
|
||
function g(e, t, i, s) {
|
||
const r = t.rgba >>> 24,
|
||
n = t.rgba >>> 16 & 255,
|
||
o = t.rgba >>> 8 & 255,
|
||
a = i.rgba >>> 24,
|
||
h = i.rgba >>> 16 & 255,
|
||
c = i.rgba >>> 8 & 255,
|
||
l = Math.floor((Math.abs(r - a) + Math.abs(n - h) + Math.abs(o - c)) / 12);
|
||
let d = !0;
|
||
for (let t = 0; t < e.data.length; t += 4) e.data[t] === r && e.data[t + 1] === n && e.data[t + 2] === o || s && Math.abs(e.data[t] - r) + Math.abs(e.data[t + 1] - n) + Math.abs(e.data[t + 2] - o) < l ? e.data[t + 3] = 0 : d = !1;
|
||
return d
|
||
}
|
||
|
||
function p(e, t, i) {
|
||
const s = e.createElement("canvas");
|
||
return s.width = t, s.height = i, s
|
||
}
|
||
},
|
||
160: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0;
|
||
let i = 0,
|
||
s = 0,
|
||
r = 0,
|
||
n = 0;
|
||
var o, a, h, c, l;
|
||
|
||
function d(e) {
|
||
const t = e.toString(16);
|
||
return t.length < 2 ? "0" + t : t
|
||
}
|
||
|
||
function _(e, t) {
|
||
return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05)
|
||
}
|
||
t.NULL_COLOR = {
|
||
css: "#00000000",
|
||
rgba: 0
|
||
},
|
||
function(e) {
|
||
e.toCss = function(e, t, i, s) {
|
||
return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}`
|
||
}, e.toRgba = function(e, t, i, s = 255) {
|
||
return (e << 24 | t << 16 | i << 8 | s) >>> 0
|
||
}, e.toColor = function(t, i, s, r) {
|
||
return {
|
||
css: e.toCss(t, i, s, r),
|
||
rgba: e.toRgba(t, i, s, r)
|
||
}
|
||
}
|
||
}(o || (t.channels = o = {})),
|
||
function(e) {
|
||
function t(e, t) {
|
||
return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), {
|
||
css: o.toCss(i, s, r, n),
|
||
rgba: o.toRgba(i, s, r, n)
|
||
}
|
||
}
|
||
e.blend = function(e, t) {
|
||
if (n = (255 & t.rgba) / 255, 1 === n) return {
|
||
css: t.css,
|
||
rgba: t.rgba
|
||
};
|
||
const a = t.rgba >> 24 & 255,
|
||
h = t.rgba >> 16 & 255,
|
||
c = t.rgba >> 8 & 255,
|
||
l = e.rgba >> 24 & 255,
|
||
d = e.rgba >> 16 & 255,
|
||
_ = e.rgba >> 8 & 255;
|
||
return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), {
|
||
css: o.toCss(i, s, r),
|
||
rgba: o.toRgba(i, s, r)
|
||
}
|
||
}, e.isOpaque = function(e) {
|
||
return !(255 & ~e.rgba)
|
||
}, e.ensureContrastRatio = function(e, t, i) {
|
||
const s = l.ensureContrastRatio(e.rgba, t.rgba, i);
|
||
if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255)
|
||
}, e.opaque = function(e) {
|
||
const t = (255 | e.rgba) >>> 0;
|
||
return [i, s, r] = l.toChannels(t), {
|
||
css: o.toCss(i, s, r),
|
||
rgba: t
|
||
}
|
||
}, e.opacity = t, e.multiplyOpacity = function(e, i) {
|
||
return n = 255 & e.rgba, t(e, n * i / 255)
|
||
}, e.toColorRGB = function(e) {
|
||
return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255]
|
||
}
|
||
}(a || (t.color = a = {})),
|
||
function(e) {
|
||
let t, a;
|
||
try {
|
||
const e = document.createElement("canvas");
|
||
e.width = 1, e.height = 1;
|
||
const i = e.getContext("2d", {
|
||
willReadFrequently: !0
|
||
});
|
||
i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1))
|
||
} catch {}
|
||
e.toColor = function(e) {
|
||
if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) {
|
||
case 4:
|
||
return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r);
|
||
case 5:
|
||
return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n);
|
||
case 7:
|
||
return {
|
||
css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0
|
||
};
|
||
case 9:
|
||
return {
|
||
css: e, rgba: parseInt(e.slice(1), 16) >>> 0
|
||
}
|
||
}
|
||
const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);
|
||
if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n);
|
||
if (!t || !a) throw new Error("css.toColor: Unsupported css format");
|
||
if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format");
|
||
if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format");
|
||
return {
|
||
rgba: o.toRgba(i, s, r, n),
|
||
css: e
|
||
}
|
||
}
|
||
}(h || (t.css = h = {})),
|
||
function(e) {
|
||
function t(e, t, i) {
|
||
const s = e / 255,
|
||
r = t / 255,
|
||
n = i / 255;
|
||
return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4))
|
||
}
|
||
e.relativeLuminance = function(e) {
|
||
return t(e >> 16 & 255, e >> 8 & 255, 255 & e)
|
||
}, e.relativeLuminance2 = t
|
||
}(c || (t.rgb = c = {})),
|
||
function(e) {
|
||
function t(e, t, i) {
|
||
const s = e >> 24 & 255,
|
||
r = e >> 16 & 255,
|
||
n = e >> 8 & 255;
|
||
let o = t >> 24 & 255,
|
||
a = t >> 16 & 255,
|
||
h = t >> 8 & 255,
|
||
l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
for (; l < i && (o > 0 || a > 0 || h > 0);) o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
return (o << 24 | a << 16 | h << 8 | 255) >>> 0
|
||
}
|
||
|
||
function a(e, t, i) {
|
||
const s = e >> 24 & 255,
|
||
r = e >> 16 & 255,
|
||
n = e >> 8 & 255;
|
||
let o = t >> 24 & 255,
|
||
a = t >> 16 & 255,
|
||
h = t >> 8 & 255,
|
||
l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
for (; l < i && (o < 255 || a < 255 || h < 255);) o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
return (o << 24 | a << 16 | h << 8 | 255) >>> 0
|
||
}
|
||
e.blend = function(e, t) {
|
||
if (n = (255 & t) / 255, 1 === n) return t;
|
||
const a = t >> 24 & 255,
|
||
h = t >> 16 & 255,
|
||
c = t >> 8 & 255,
|
||
l = e >> 24 & 255,
|
||
d = e >> 16 & 255,
|
||
_ = e >> 8 & 255;
|
||
return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r)
|
||
}, e.ensureContrastRatio = function(e, i, s) {
|
||
const r = c.relativeLuminance(e >> 8),
|
||
n = c.relativeLuminance(i >> 8);
|
||
if (_(r, n) < s) {
|
||
if (n < r) {
|
||
const n = t(e, i, s),
|
||
o = _(r, c.relativeLuminance(n >> 8));
|
||
if (o < s) {
|
||
const t = a(e, i, s);
|
||
return o > _(r, c.relativeLuminance(t >> 8)) ? n : t
|
||
}
|
||
return n
|
||
}
|
||
const o = a(e, i, s),
|
||
h = _(r, c.relativeLuminance(o >> 8));
|
||
if (h < s) {
|
||
const n = t(e, i, s);
|
||
return h > _(r, c.relativeLuminance(n >> 8)) ? o : n
|
||
}
|
||
return o
|
||
}
|
||
}, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function(e) {
|
||
return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
|
||
}
|
||
}(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _
|
||
},
|
||
345: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class {
|
||
constructor() {
|
||
this._listeners = [], this._disposed = !1
|
||
}
|
||
get event() {
|
||
return this._event || (this._event = e => (this._listeners.push(e), {
|
||
dispose: () => {
|
||
if (!this._disposed)
|
||
for (let t = 0; t < this._listeners.length; t++)
|
||
if (this._listeners[t] === e) return void this._listeners.splice(t, 1)
|
||
}
|
||
})), this._event
|
||
}
|
||
fire(e, t) {
|
||
const i = [];
|
||
for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]);
|
||
for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t)
|
||
}
|
||
dispose() {
|
||
this.clearListeners(), this._disposed = !0
|
||
}
|
||
clearListeners() {
|
||
this._listeners && (this._listeners.length = 0)
|
||
}
|
||
}, t.forwardEvent = function(e, t) {
|
||
return e((e => t.fire(e)))
|
||
}, t.runAndSubscribe = function(e, t) {
|
||
return t(void 0), e((e => t(e)))
|
||
}
|
||
},
|
||
859: (e, t) => {
|
||
function i(e) {
|
||
for (const t of e) t.dispose();
|
||
e.length = 0
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class {
|
||
constructor() {
|
||
this._disposables = [], this._isDisposed = !1
|
||
}
|
||
dispose() {
|
||
this._isDisposed = !0;
|
||
for (const e of this._disposables) e.dispose();
|
||
this._disposables.length = 0
|
||
}
|
||
register(e) {
|
||
return this._disposables.push(e), e
|
||
}
|
||
unregister(e) {
|
||
const t = this._disposables.indexOf(e); - 1 !== t && this._disposables.splice(t, 1)
|
||
}
|
||
}, t.MutableDisposable = class {
|
||
constructor() {
|
||
this._isDisposed = !1
|
||
}
|
||
get value() {
|
||
return this._isDisposed ? void 0 : this._value
|
||
}
|
||
set value(e) {
|
||
this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e)
|
||
}
|
||
clear() {
|
||
this.value = void 0
|
||
}
|
||
dispose() {
|
||
this._isDisposed = !0, this._value?.dispose(), this._value = void 0
|
||
}
|
||
}, t.toDisposable = function(e) {
|
||
return {
|
||
dispose: e
|
||
}
|
||
}, t.disposeArray = i, t.getDisposeArrayDisposable = function(e) {
|
||
return {
|
||
dispose: () => i(e)
|
||
}
|
||
}
|
||
},
|
||
485: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.FourKeyMap = t.TwoKeyMap = void 0;
|
||
class i {
|
||
constructor() {
|
||
this._data = {}
|
||
}
|
||
set(e, t, i) {
|
||
this._data[e] || (this._data[e] = {}), this._data[e][t] = i
|
||
}
|
||
get(e, t) {
|
||
return this._data[e] ? this._data[e][t] : void 0
|
||
}
|
||
clear() {
|
||
this._data = {}
|
||
}
|
||
}
|
||
t.TwoKeyMap = i, t.FourKeyMap = class {
|
||
constructor() {
|
||
this._data = new i
|
||
}
|
||
set(e, t, s, r, n) {
|
||
this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n)
|
||
}
|
||
get(e, t, i, s) {
|
||
return this._data.get(e, t)?.get(i, s)
|
||
}
|
||
clear() {
|
||
this._data.clear()
|
||
}
|
||
}
|
||
},
|
||
399: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process;
|
||
const i = t.isNode ? "node" : navigator.userAgent,
|
||
s = t.isNode ? "node" : navigator.platform;
|
||
t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function() {
|
||
if (!t.isSafari) return 0;
|
||
const e = i.match(/Version\/(\d+)/);
|
||
return null === e || e.length < 2 ? 0 : parseInt(e[1])
|
||
}, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i)
|
||
},
|
||
385: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0;
|
||
const s = i(399);
|
||
class r {
|
||
constructor() {
|
||
this._tasks = [], this._i = 0
|
||
}
|
||
enqueue(e) {
|
||
this._tasks.push(e), this._start()
|
||
}
|
||
flush() {
|
||
for (; this._i < this._tasks.length;) this._tasks[this._i]() || this._i++;
|
||
this.clear()
|
||
}
|
||
clear() {
|
||
this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0
|
||
}
|
||
_start() {
|
||
this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this)))
|
||
}
|
||
_process(e) {
|
||
this._idleCallback = void 0;
|
||
let t = 0,
|
||
i = 0,
|
||
s = e.timeRemaining(),
|
||
r = 0;
|
||
for (; this._i < this._tasks.length;) {
|
||
if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start();
|
||
s = r
|
||
}
|
||
this.clear()
|
||
}
|
||
}
|
||
class n extends r {
|
||
_requestCallback(e) {
|
||
return setTimeout((() => e(this._createDeadline(16))))
|
||
}
|
||
_cancelCallback(e) {
|
||
clearTimeout(e)
|
||
}
|
||
_createDeadline(e) {
|
||
const t = Date.now() + e;
|
||
return {
|
||
timeRemaining: () => Math.max(0, t - Date.now())
|
||
}
|
||
}
|
||
}
|
||
t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r {
|
||
_requestCallback(e) {
|
||
return requestIdleCallback(e)
|
||
}
|
||
_cancelCallback(e) {
|
||
cancelIdleCallback(e)
|
||
}
|
||
} : n, t.DebouncedIdleTask = class {
|
||
constructor() {
|
||
this._queue = new t.IdleTaskQueue
|
||
}
|
||
set(e) {
|
||
this._queue.clear(), this._queue.enqueue(e)
|
||
}
|
||
flush() {
|
||
this._queue.flush()
|
||
}
|
||
}
|
||
},
|
||
147: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ExtendedAttrs = t.AttributeData = void 0;
|
||
class i {
|
||
constructor() {
|
||
this.fg = 0, this.bg = 0, this.extended = new s
|
||
}
|
||
static toColorRGB(e) {
|
||
return [e >>> 16 & 255, e >>> 8 & 255, 255 & e]
|
||
}
|
||
static fromColorRGB(e) {
|
||
return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2]
|
||
}
|
||
clone() {
|
||
const e = new i;
|
||
return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e
|
||
}
|
||
isInverse() {
|
||
return 67108864 & this.fg
|
||
}
|
||
isBold() {
|
||
return 134217728 & this.fg
|
||
}
|
||
isUnderline() {
|
||
return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg
|
||
}
|
||
isBlink() {
|
||
return 536870912 & this.fg
|
||
}
|
||
isInvisible() {
|
||
return 1073741824 & this.fg
|
||
}
|
||
isItalic() {
|
||
return 67108864 & this.bg
|
||
}
|
||
isDim() {
|
||
return 134217728 & this.bg
|
||
}
|
||
isStrikethrough() {
|
||
return 2147483648 & this.fg
|
||
}
|
||
isProtected() {
|
||
return 536870912 & this.bg
|
||
}
|
||
isOverline() {
|
||
return 1073741824 & this.bg
|
||
}
|
||
getFgColorMode() {
|
||
return 50331648 & this.fg
|
||
}
|
||
getBgColorMode() {
|
||
return 50331648 & this.bg
|
||
}
|
||
isFgRGB() {
|
||
return !(50331648 & ~this.fg)
|
||
}
|
||
isBgRGB() {
|
||
return !(50331648 & ~this.bg)
|
||
}
|
||
isFgPalette() {
|
||
return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg)
|
||
}
|
||
isBgPalette() {
|
||
return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg)
|
||
}
|
||
isFgDefault() {
|
||
return !(50331648 & this.fg)
|
||
}
|
||
isBgDefault() {
|
||
return !(50331648 & this.bg)
|
||
}
|
||
isAttributeDefault() {
|
||
return 0 === this.fg && 0 === this.bg
|
||
}
|
||
getFgColor() {
|
||
switch (50331648 & this.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.fg;
|
||
case 50331648:
|
||
return 16777215 & this.fg;
|
||
default:
|
||
return -1
|
||
}
|
||
}
|
||
getBgColor() {
|
||
switch (50331648 & this.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.bg;
|
||
case 50331648:
|
||
return 16777215 & this.bg;
|
||
default:
|
||
return -1
|
||
}
|
||
}
|
||
hasExtendedAttrs() {
|
||
return 268435456 & this.bg
|
||
}
|
||
updateExtended() {
|
||
this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456
|
||
}
|
||
getUnderlineColor() {
|
||
if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.extended.underlineColor;
|
||
case 50331648:
|
||
return 16777215 & this.extended.underlineColor;
|
||
default:
|
||
return this.getFgColor()
|
||
}
|
||
return this.getFgColor()
|
||
}
|
||
getUnderlineColorMode() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode()
|
||
}
|
||
isUnderlineColorRGB() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB()
|
||
}
|
||
isUnderlineColorPalette() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette()
|
||
}
|
||
isUnderlineColorDefault() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault()
|
||
}
|
||
getUnderlineStyle() {
|
||
return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0
|
||
}
|
||
getUnderlineVariantOffset() {
|
||
return this.extended.underlineVariantOffset
|
||
}
|
||
}
|
||
t.AttributeData = i;
|
||
class s {
|
||
get ext() {
|
||
return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext
|
||
}
|
||
set ext(e) {
|
||
this._ext = e
|
||
}
|
||
get underlineStyle() {
|
||
return this._urlId ? 5 : (469762048 & this._ext) >> 26
|
||
}
|
||
set underlineStyle(e) {
|
||
this._ext &= -469762049, this._ext |= e << 26 & 469762048
|
||
}
|
||
get underlineColor() {
|
||
return 67108863 & this._ext
|
||
}
|
||
set underlineColor(e) {
|
||
this._ext &= -67108864, this._ext |= 67108863 & e
|
||
}
|
||
get urlId() {
|
||
return this._urlId
|
||
}
|
||
set urlId(e) {
|
||
this._urlId = e
|
||
}
|
||
get underlineVariantOffset() {
|
||
const e = (3758096384 & this._ext) >> 29;
|
||
return e < 0 ? 4294967288 ^ e : e
|
||
}
|
||
set underlineVariantOffset(e) {
|
||
this._ext &= 536870911, this._ext |= e << 29 & 3758096384
|
||
}
|
||
constructor(e = 0, t = 0) {
|
||
this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t
|
||
}
|
||
clone() {
|
||
return new s(this._ext, this._urlId)
|
||
}
|
||
isEmpty() {
|
||
return 0 === this.underlineStyle && 0 === this._urlId
|
||
}
|
||
}
|
||
t.ExtendedAttrs = s
|
||
},
|
||
782: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CellData = void 0;
|
||
const s = i(133),
|
||
r = i(855),
|
||
n = i(147);
|
||
class o extends n.AttributeData {
|
||
constructor() {
|
||
super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = ""
|
||
}
|
||
static fromCharData(e) {
|
||
const t = new o;
|
||
return t.setFromCharData(e), t
|
||
}
|
||
isCombined() {
|
||
return 2097152 & this.content
|
||
}
|
||
getWidth() {
|
||
return this.content >> 22
|
||
}
|
||
getChars() {
|
||
return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : ""
|
||
}
|
||
getCode() {
|
||
return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content
|
||
}
|
||
setFromCharData(e) {
|
||
this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0;
|
||
let t = !1;
|
||
if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0;
|
||
else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) {
|
||
const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0);
|
||
if (55296 <= i && i <= 56319) {
|
||
const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1);
|
||
56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0
|
||
} else t = !0
|
||
} else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22;
|
||
t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22)
|
||
}
|
||
getAsCharData() {
|
||
return [this.fg, this.getChars(), this.getWidth(), this.getCode()]
|
||
}
|
||
}
|
||
t.CellData = o
|
||
},
|
||
855: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32
|
||
},
|
||
133: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function(e) {
|
||
return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e)
|
||
}, t.utf32ToString = function(e, t = 0, i = e.length) {
|
||
let s = "";
|
||
for (let r = t; r < i; ++r) {
|
||
let t = e[r];
|
||
t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t)
|
||
}
|
||
return s
|
||
}, t.StringToUtf32 = class {
|
||
constructor() {
|
||
this._interim = 0
|
||
}
|
||
clear() {
|
||
this._interim = 0
|
||
}
|
||
decode(e, t) {
|
||
const i = e.length;
|
||
if (!i) return 0;
|
||
let s = 0,
|
||
r = 0;
|
||
if (this._interim) {
|
||
const i = e.charCodeAt(r++);
|
||
56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0
|
||
}
|
||
for (let n = r; n < i; ++n) {
|
||
const r = e.charCodeAt(n);
|
||
if (55296 <= r && r <= 56319) {
|
||
if (++n >= i) return this._interim = r, s;
|
||
const o = e.charCodeAt(n);
|
||
56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o)
|
||
} else 65279 !== r && (t[s++] = r)
|
||
}
|
||
return s
|
||
}
|
||
}, t.Utf8ToUtf32 = class {
|
||
constructor() {
|
||
this.interim = new Uint8Array(3)
|
||
}
|
||
clear() {
|
||
this.interim.fill(0)
|
||
}
|
||
decode(e, t) {
|
||
const i = e.length;
|
||
if (!i) return 0;
|
||
let s, r, n, o, a = 0,
|
||
h = 0,
|
||
c = 0;
|
||
if (this.interim[0]) {
|
||
let s = !1,
|
||
r = this.interim[0];
|
||
r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7;
|
||
let n, o = 0;
|
||
for (;
|
||
(n = 63 & this.interim[++o]) && o < 4;) r <<= 6, r |= n;
|
||
const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4,
|
||
l = h - o;
|
||
for (; c < l;) {
|
||
if (c >= i) return 0;
|
||
if (n = e[c++], 128 != (192 & n)) {
|
||
c--, s = !0;
|
||
break
|
||
}
|
||
this.interim[o++] = n, r <<= 6, r |= 63 & n
|
||
}
|
||
s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0)
|
||
}
|
||
const l = i - 4;
|
||
let d = c;
|
||
for (; d < i;) {
|
||
for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));) t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4;
|
||
if (s = e[d++], s < 128) t[a++] = s;
|
||
else if (192 == (224 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (31 & s) << 6 | 63 & r, h < 128) {
|
||
d--;
|
||
continue
|
||
}
|
||
t[a++] = h
|
||
} else if (224 == (240 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, a;
|
||
if (n = e[d++], 128 != (192 & n)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue;
|
||
t[a++] = h
|
||
} else if (240 == (248 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, a;
|
||
if (n = e[d++], 128 != (192 & n)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a;
|
||
if (o = e[d++], 128 != (192 & o)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue;
|
||
t[a++] = h
|
||
}
|
||
}
|
||
return a
|
||
}
|
||
}
|
||
},
|
||
776: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.traceCall = t.setTraceLogger = t.LogService = void 0;
|
||
const n = i(859),
|
||
o = i(97),
|
||
a = {
|
||
trace: o.LogLevelEnum.TRACE,
|
||
debug: o.LogLevelEnum.DEBUG,
|
||
info: o.LogLevelEnum.INFO,
|
||
warn: o.LogLevelEnum.WARN,
|
||
error: o.LogLevelEnum.ERROR,
|
||
off: o.LogLevelEnum.OFF
|
||
};
|
||
let h, c = t.LogService = class extends n.Disposable {
|
||
get logLevel() {
|
||
return this._logLevel
|
||
}
|
||
constructor(e) {
|
||
super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this
|
||
}
|
||
_updateLogLevel() {
|
||
this._logLevel = a[this._optionsService.rawOptions.logLevel]
|
||
}
|
||
_evalLazyOptionalParams(e) {
|
||
for (let t = 0; t < e.length; t++) "function" == typeof e[t] && (e[t] = e[t]())
|
||
}
|
||
_log(e, t, i) {
|
||
this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i)
|
||
}
|
||
trace(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t)
|
||
}
|
||
debug(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t)
|
||
}
|
||
info(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t)
|
||
}
|
||
warn(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t)
|
||
}
|
||
error(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t)
|
||
}
|
||
};
|
||
t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function(e) {
|
||
h = e
|
||
}, t.traceCall = function(e, t, i) {
|
||
if ("function" != typeof i.value) throw new Error("not supported");
|
||
const s = i.value;
|
||
i.value = function(...e) {
|
||
if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e);
|
||
h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`);
|
||
const t = s.apply(this, e);
|
||
return h.trace(`GlyphRenderer#${s.name} return`, t), t
|
||
}
|
||
}
|
||
},
|
||
726: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0;
|
||
const i = "di$target",
|
||
s = "di$dependencies";
|
||
t.serviceRegistry = new Map, t.getServiceDependencies = function(e) {
|
||
return e[s] || []
|
||
}, t.createDecorator = function(e) {
|
||
if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e);
|
||
const r = function(e, t, n) {
|
||
if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter");
|
||
! function(e, t, r) {
|
||
t[i] === t ? t[s].push({
|
||
id: e,
|
||
index: r
|
||
}) : (t[s] = [{
|
||
id: e,
|
||
index: r
|
||
}], t[i] = t)
|
||
}(r, e, n)
|
||
};
|
||
return r.toString = () => e, t.serviceRegistry.set(e, r), r
|
||
}
|
||
},
|
||
97: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0;
|
||
const s = i(726);
|
||
var r;
|
||
t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"),
|
||
function(e) {
|
||
e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF"
|
||
}(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService")
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
exports: {}
|
||
};
|
||
return e[s].call(n.exports, n, n.exports, i), n.exports
|
||
}
|
||
var s = {};
|
||
return (() => {
|
||
var e = s;
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.WebglAddon = void 0;
|
||
const t = i(345),
|
||
r = i(859),
|
||
n = i(399),
|
||
o = i(666),
|
||
a = i(776);
|
||
class h extends r.Disposable {
|
||
constructor(e) {
|
||
if (n.isSafari && (0, n.getSafariVersion)() < 16) {
|
||
const e = {
|
||
antialias: !1,
|
||
depth: !1,
|
||
preserveDrawingBuffer: !0
|
||
};
|
||
if (!document.createElement("canvas").getContext("webgl2", e)) throw new Error("Webgl2 is only supported on Safari 16 and above")
|
||
}
|
||
super(), this._preserveDrawingBuffer = e, this._onChangeTextureAtlas = this.register(new t.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new t.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = this.register(new t.EventEmitter), this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._onContextLoss = this.register(new t.EventEmitter), this.onContextLoss = this._onContextLoss.event
|
||
}
|
||
activate(e) {
|
||
const i = e._core;
|
||
if (!e.element) return void this.register(i.onWillOpen((() => this.activate(e))));
|
||
this._terminal = e;
|
||
const s = i.coreService,
|
||
n = i.optionsService,
|
||
h = i,
|
||
c = h._renderService,
|
||
l = h._characterJoinerService,
|
||
d = h._charSizeService,
|
||
_ = h._coreBrowserService,
|
||
u = h._decorationService,
|
||
f = h._logService,
|
||
v = h._themeService;
|
||
(0, a.setTraceLogger)(f), this._renderer = this.register(new o.WebglRenderer(e, l, d, _, s, u, n, v, this._preserveDrawingBuffer)), this.register((0, t.forwardEvent)(this._renderer.onContextLoss, this._onContextLoss)), this.register((0, t.forwardEvent)(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this.register((0, t.forwardEvent)(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), this.register((0, t.forwardEvent)(this._renderer.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)), c.setRenderer(this._renderer), this.register((0, r.toDisposable)((() => {
|
||
const t = this._terminal._core._renderService;
|
||
t.setRenderer(this._terminal._core._createRenderer()), t.handleResize(e.cols, e.rows)
|
||
})))
|
||
}
|
||
get textureAtlas() {
|
||
return this._renderer?.textureAtlas
|
||
}
|
||
clearTextureAtlas() {
|
||
this._renderer?.clearTextureAtlas()
|
||
}
|
||
}
|
||
e.WebglAddon = h
|
||
})(), s
|
||
})(), e.exports = t()
|
||
},
|
||
314: e => {
|
||
"use strict";
|
||
e.exports = function(e) {
|
||
var t = [];
|
||
return t.toString = function() {
|
||
return this.map((function(t) {
|
||
var i = "",
|
||
s = void 0 !== t[5];
|
||
return t[4] && (i += "@supports (".concat(t[4], ") {")), t[2] && (i += "@media ".concat(t[2], " {")), s && (i += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), i += e(t), s && (i += "}"), t[2] && (i += "}"), t[4] && (i += "}"), i
|
||
})).join("")
|
||
}, t.i = function(e, i, s, r, n) {
|
||
"string" == typeof e && (e = [
|
||
[null, e, void 0]
|
||
]);
|
||
var o = {};
|
||
if (s)
|
||
for (var a = 0; a < this.length; a++) {
|
||
var h = this[a][0];
|
||
null != h && (o[h] = !0)
|
||
}
|
||
for (var c = 0; c < e.length; c++) {
|
||
var l = [].concat(e[c]);
|
||
s && o[l[0]] || (void 0 !== n && (void 0 === l[5] || (l[1] = "@layer".concat(l[5].length > 0 ? " ".concat(l[5]) : "", " {").concat(l[1], "}")), l[5] = n), i && (l[2] ? (l[1] = "@media ".concat(l[2], " {").concat(l[1], "}"), l[2] = i) : l[2] = i), r && (l[4] ? (l[1] = "@supports (".concat(l[4], ") {").concat(l[1], "}"), l[4] = r) : l[4] = "".concat(r)), t.push(l))
|
||
}
|
||
}, t
|
||
}
|
||
},
|
||
372: e => {
|
||
var t;
|
||
self, t = () => (() => {
|
||
var e = {
|
||
575: function(e, t, i) {
|
||
"undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== i.g && i.g, e.exports = function() {
|
||
"use strict";
|
||
var e, t = "3.7.7",
|
||
i = t,
|
||
s = "function" == typeof Buffer,
|
||
r = "function" == typeof TextDecoder ? new TextDecoder : void 0,
|
||
n = "function" == typeof TextEncoder ? new TextEncoder : void 0,
|
||
o = Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),
|
||
a = (e = {}, o.forEach((function(t, i) {
|
||
return e[t] = i
|
||
})), e),
|
||
h = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,
|
||
c = String.fromCharCode.bind(String),
|
||
l = "function" == typeof Uint8Array.from ? Uint8Array.from.bind(Uint8Array) : function(e) {
|
||
return new Uint8Array(Array.prototype.slice.call(e, 0))
|
||
},
|
||
d = function(e) {
|
||
return e.replace(/=/g, "").replace(/[+\/]/g, (function(e) {
|
||
return "+" == e ? "-" : "_"
|
||
}))
|
||
},
|
||
_ = function(e) {
|
||
return e.replace(/[^A-Za-z0-9\+\/]/g, "")
|
||
},
|
||
u = function(e) {
|
||
for (var t, i, s, r, n = "", a = e.length % 3, h = 0; h < e.length;) {
|
||
if ((i = e.charCodeAt(h++)) > 255 || (s = e.charCodeAt(h++)) > 255 || (r = e.charCodeAt(h++)) > 255) throw new TypeError("invalid character found");
|
||
n += o[(t = i << 16 | s << 8 | r) >> 18 & 63] + o[t >> 12 & 63] + o[t >> 6 & 63] + o[63 & t]
|
||
}
|
||
return a ? n.slice(0, a - 3) + "===".substring(a) : n
|
||
},
|
||
f = "function" == typeof btoa ? function(e) {
|
||
return btoa(e)
|
||
} : s ? function(e) {
|
||
return Buffer.from(e, "binary").toString("base64")
|
||
} : u,
|
||
v = s ? function(e) {
|
||
return Buffer.from(e).toString("base64")
|
||
} : function(e) {
|
||
for (var t = [], i = 0, s = e.length; i < s; i += 4096) t.push(c.apply(null, e.subarray(i, i + 4096)));
|
||
return f(t.join(""))
|
||
},
|
||
g = function(e, t) {
|
||
return void 0 === t && (t = !1), t ? d(v(e)) : v(e)
|
||
},
|
||
p = function(e) {
|
||
if (e.length < 2) return (t = e.charCodeAt(0)) < 128 ? e : t < 2048 ? c(192 | t >>> 6) + c(128 | 63 & t) : c(224 | t >>> 12 & 15) + c(128 | t >>> 6 & 63) + c(128 | 63 & t);
|
||
var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320);
|
||
return c(240 | t >>> 18 & 7) + c(128 | t >>> 12 & 63) + c(128 | t >>> 6 & 63) + c(128 | 63 & t)
|
||
},
|
||
m = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,
|
||
C = function(e) {
|
||
return e.replace(m, p)
|
||
},
|
||
S = s ? function(e) {
|
||
return Buffer.from(e, "utf8").toString("base64")
|
||
} : n ? function(e) {
|
||
return v(n.encode(e))
|
||
} : function(e) {
|
||
return f(C(e))
|
||
},
|
||
b = function(e, t) {
|
||
return void 0 === t && (t = !1), t ? d(S(e)) : S(e)
|
||
},
|
||
w = function(e) {
|
||
return b(e, !0)
|
||
},
|
||
y = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,
|
||
L = function(e) {
|
||
switch (e.length) {
|
||
case 4:
|
||
var t = ((7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3)) - 65536;
|
||
return c(55296 + (t >>> 10)) + c(56320 + (1023 & t));
|
||
case 3:
|
||
return c((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2));
|
||
default:
|
||
return c((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1))
|
||
}
|
||
},
|
||
x = function(e) {
|
||
return e.replace(y, L)
|
||
},
|
||
E = function(e) {
|
||
if (e = e.replace(/\s+/g, ""), !h.test(e)) throw new TypeError("malformed base64.");
|
||
e += "==".slice(2 - (3 & e.length));
|
||
for (var t, i, s, r = "", n = 0; n < e.length;) t = a[e.charAt(n++)] << 18 | a[e.charAt(n++)] << 12 | (i = a[e.charAt(n++)]) << 6 | (s = a[e.charAt(n++)]), r += 64 === i ? c(t >> 16 & 255) : 64 === s ? c(t >> 16 & 255, t >> 8 & 255) : c(t >> 16 & 255, t >> 8 & 255, 255 & t);
|
||
return r
|
||
},
|
||
R = "function" == typeof atob ? function(e) {
|
||
return atob(_(e))
|
||
} : s ? function(e) {
|
||
return Buffer.from(e, "base64").toString("binary")
|
||
} : E,
|
||
M = s ? function(e) {
|
||
return l(Buffer.from(e, "base64"))
|
||
} : function(e) {
|
||
return l(R(e).split("").map((function(e) {
|
||
return e.charCodeAt(0)
|
||
})))
|
||
},
|
||
A = function(e) {
|
||
return M(k(e))
|
||
},
|
||
D = s ? function(e) {
|
||
return Buffer.from(e, "base64").toString("utf8")
|
||
} : r ? function(e) {
|
||
return r.decode(M(e))
|
||
} : function(e) {
|
||
return x(R(e))
|
||
},
|
||
k = function(e) {
|
||
return _(e.replace(/[-_]/g, (function(e) {
|
||
return "-" == e ? "+" : "/"
|
||
})))
|
||
},
|
||
T = function(e) {
|
||
return D(k(e))
|
||
},
|
||
B = function(e) {
|
||
return {
|
||
value: e,
|
||
enumerable: !1,
|
||
writable: !0,
|
||
configurable: !0
|
||
}
|
||
},
|
||
O = function() {
|
||
var e = function(e, t) {
|
||
return Object.defineProperty(String.prototype, e, B(t))
|
||
};
|
||
e("fromBase64", (function() {
|
||
return T(this)
|
||
})), e("toBase64", (function(e) {
|
||
return b(this, e)
|
||
})), e("toBase64URI", (function() {
|
||
return b(this, !0)
|
||
})), e("toBase64URL", (function() {
|
||
return b(this, !0)
|
||
})), e("toUint8Array", (function() {
|
||
return A(this)
|
||
}))
|
||
},
|
||
P = function() {
|
||
var e = function(e, t) {
|
||
return Object.defineProperty(Uint8Array.prototype, e, B(t))
|
||
};
|
||
e("toBase64", (function(e) {
|
||
return g(this, e)
|
||
})), e("toBase64URI", (function() {
|
||
return g(this, !0)
|
||
})), e("toBase64URL", (function() {
|
||
return g(this, !0)
|
||
}))
|
||
},
|
||
I = {
|
||
version: t,
|
||
VERSION: i,
|
||
atob: R,
|
||
atobPolyfill: E,
|
||
btoa: f,
|
||
btoaPolyfill: u,
|
||
fromBase64: T,
|
||
toBase64: b,
|
||
encode: b,
|
||
encodeURI: w,
|
||
encodeURL: w,
|
||
utob: C,
|
||
btou: x,
|
||
decode: T,
|
||
isValid: function(e) {
|
||
if ("string" != typeof e) return !1;
|
||
var t = e.replace(/\s+/g, "").replace(/={0,2}$/, "");
|
||
return !/[^\s0-9a-zA-Z\+/]/.test(t) || !/[^\s0-9a-zA-Z\-_]/.test(t)
|
||
},
|
||
fromUint8Array: g,
|
||
toUint8Array: A,
|
||
extendString: O,
|
||
extendUint8Array: P,
|
||
extendBuiltins: function() {
|
||
O(), P()
|
||
},
|
||
Base64: {}
|
||
};
|
||
return Object.keys(I).forEach((function(e) {
|
||
return I.Base64[e] = I[e]
|
||
})), I
|
||
}()
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
exports: {}
|
||
};
|
||
return e[s].call(n.exports, n, n.exports, i), n.exports
|
||
}
|
||
i.g = function() {
|
||
if ("object" == typeof globalThis) return globalThis;
|
||
try {
|
||
return this || new Function("return this")()
|
||
} catch (e) {
|
||
if ("object" == typeof window) return window
|
||
}
|
||
}();
|
||
var s = {};
|
||
return (() => {
|
||
"use strict";
|
||
var e = s;
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.Base64 = e.BrowserClipboardProvider = e.ClipboardAddon = void 0;
|
||
const t = i(575);
|
||
e.ClipboardAddon = class {
|
||
constructor(e = new n, t = new r) {
|
||
this._base64 = e, this._provider = t
|
||
}
|
||
activate(e) {
|
||
this._terminal = e, this._disposable = e.parser.registerOscHandler(52, (e => this._setOrReportClipboard(e)))
|
||
}
|
||
dispose() {
|
||
return this._disposable?.dispose()
|
||
}
|
||
_readText(e, t) {
|
||
const i = this._base64.encodeText(t);
|
||
this._terminal?.input(`]52;${e};${i}`, !1)
|
||
}
|
||
_setOrReportClipboard(e) {
|
||
const t = e.split(";");
|
||
if (t.length < 2) return !0;
|
||
const i = t[0],
|
||
s = t[1];
|
||
if ("?" === s) {
|
||
const e = this._provider.readText(i);
|
||
return e instanceof Promise ? e.then((e => (this._readText(i, e), !0))) : (this._readText(i, e), !0)
|
||
}
|
||
let r = "";
|
||
try {
|
||
r = this._base64.decodeText(s)
|
||
} catch {}
|
||
const n = this._provider.writeText(i, r);
|
||
return !(n instanceof Promise) || n.then((() => !0))
|
||
}
|
||
};
|
||
class r {
|
||
async readText(e) {
|
||
return "c" !== e ? Promise.resolve("") : navigator.clipboard.readText()
|
||
}
|
||
async writeText(e, t) {
|
||
return "c" !== e ? Promise.resolve() : navigator.clipboard.writeText(t)
|
||
}
|
||
}
|
||
e.BrowserClipboardProvider = r;
|
||
class n {
|
||
encodeText(e) {
|
||
return t.Base64.encode(e)
|
||
}
|
||
decodeText(e) {
|
||
const i = t.Base64.decode(e);
|
||
return t.Base64.isValid(e) && t.Base64.encode(i) === e ? i : ""
|
||
}
|
||
}
|
||
e.Base64 = n
|
||
})(), s
|
||
})(), e.exports = t()
|
||
},
|
||
540: e => {
|
||
"use strict";
|
||
e.exports = function(e) {
|
||
var t = document.createElement("style");
|
||
return e.setAttributes(t, e.attributes), e.insert(t, e.options), t
|
||
}
|
||
},
|
||
544: function(e) {
|
||
var t;
|
||
t = () => (() => {
|
||
"use strict";
|
||
var e = {
|
||
433: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.UnicodeV11 = void 0;
|
||
const s = i(938),
|
||
r = [
|
||
[768, 879],
|
||
[1155, 1161],
|
||
[1425, 1469],
|
||
[1471, 1471],
|
||
[1473, 1474],
|
||
[1476, 1477],
|
||
[1479, 1479],
|
||
[1536, 1541],
|
||
[1552, 1562],
|
||
[1564, 1564],
|
||
[1611, 1631],
|
||
[1648, 1648],
|
||
[1750, 1757],
|
||
[1759, 1764],
|
||
[1767, 1768],
|
||
[1770, 1773],
|
||
[1807, 1807],
|
||
[1809, 1809],
|
||
[1840, 1866],
|
||
[1958, 1968],
|
||
[2027, 2035],
|
||
[2045, 2045],
|
||
[2070, 2073],
|
||
[2075, 2083],
|
||
[2085, 2087],
|
||
[2089, 2093],
|
||
[2137, 2139],
|
||
[2259, 2306],
|
||
[2362, 2362],
|
||
[2364, 2364],
|
||
[2369, 2376],
|
||
[2381, 2381],
|
||
[2385, 2391],
|
||
[2402, 2403],
|
||
[2433, 2433],
|
||
[2492, 2492],
|
||
[2497, 2500],
|
||
[2509, 2509],
|
||
[2530, 2531],
|
||
[2558, 2558],
|
||
[2561, 2562],
|
||
[2620, 2620],
|
||
[2625, 2626],
|
||
[2631, 2632],
|
||
[2635, 2637],
|
||
[2641, 2641],
|
||
[2672, 2673],
|
||
[2677, 2677],
|
||
[2689, 2690],
|
||
[2748, 2748],
|
||
[2753, 2757],
|
||
[2759, 2760],
|
||
[2765, 2765],
|
||
[2786, 2787],
|
||
[2810, 2815],
|
||
[2817, 2817],
|
||
[2876, 2876],
|
||
[2879, 2879],
|
||
[2881, 2884],
|
||
[2893, 2893],
|
||
[2902, 2902],
|
||
[2914, 2915],
|
||
[2946, 2946],
|
||
[3008, 3008],
|
||
[3021, 3021],
|
||
[3072, 3072],
|
||
[3076, 3076],
|
||
[3134, 3136],
|
||
[3142, 3144],
|
||
[3146, 3149],
|
||
[3157, 3158],
|
||
[3170, 3171],
|
||
[3201, 3201],
|
||
[3260, 3260],
|
||
[3263, 3263],
|
||
[3270, 3270],
|
||
[3276, 3277],
|
||
[3298, 3299],
|
||
[3328, 3329],
|
||
[3387, 3388],
|
||
[3393, 3396],
|
||
[3405, 3405],
|
||
[3426, 3427],
|
||
[3530, 3530],
|
||
[3538, 3540],
|
||
[3542, 3542],
|
||
[3633, 3633],
|
||
[3636, 3642],
|
||
[3655, 3662],
|
||
[3761, 3761],
|
||
[3764, 3772],
|
||
[3784, 3789],
|
||
[3864, 3865],
|
||
[3893, 3893],
|
||
[3895, 3895],
|
||
[3897, 3897],
|
||
[3953, 3966],
|
||
[3968, 3972],
|
||
[3974, 3975],
|
||
[3981, 3991],
|
||
[3993, 4028],
|
||
[4038, 4038],
|
||
[4141, 4144],
|
||
[4146, 4151],
|
||
[4153, 4154],
|
||
[4157, 4158],
|
||
[4184, 4185],
|
||
[4190, 4192],
|
||
[4209, 4212],
|
||
[4226, 4226],
|
||
[4229, 4230],
|
||
[4237, 4237],
|
||
[4253, 4253],
|
||
[4448, 4607],
|
||
[4957, 4959],
|
||
[5906, 5908],
|
||
[5938, 5940],
|
||
[5970, 5971],
|
||
[6002, 6003],
|
||
[6068, 6069],
|
||
[6071, 6077],
|
||
[6086, 6086],
|
||
[6089, 6099],
|
||
[6109, 6109],
|
||
[6155, 6158],
|
||
[6277, 6278],
|
||
[6313, 6313],
|
||
[6432, 6434],
|
||
[6439, 6440],
|
||
[6450, 6450],
|
||
[6457, 6459],
|
||
[6679, 6680],
|
||
[6683, 6683],
|
||
[6742, 6742],
|
||
[6744, 6750],
|
||
[6752, 6752],
|
||
[6754, 6754],
|
||
[6757, 6764],
|
||
[6771, 6780],
|
||
[6783, 6783],
|
||
[6832, 6846],
|
||
[6912, 6915],
|
||
[6964, 6964],
|
||
[6966, 6970],
|
||
[6972, 6972],
|
||
[6978, 6978],
|
||
[7019, 7027],
|
||
[7040, 7041],
|
||
[7074, 7077],
|
||
[7080, 7081],
|
||
[7083, 7085],
|
||
[7142, 7142],
|
||
[7144, 7145],
|
||
[7149, 7149],
|
||
[7151, 7153],
|
||
[7212, 7219],
|
||
[7222, 7223],
|
||
[7376, 7378],
|
||
[7380, 7392],
|
||
[7394, 7400],
|
||
[7405, 7405],
|
||
[7412, 7412],
|
||
[7416, 7417],
|
||
[7616, 7673],
|
||
[7675, 7679],
|
||
[8203, 8207],
|
||
[8234, 8238],
|
||
[8288, 8292],
|
||
[8294, 8303],
|
||
[8400, 8432],
|
||
[11503, 11505],
|
||
[11647, 11647],
|
||
[11744, 11775],
|
||
[12330, 12333],
|
||
[12441, 12442],
|
||
[42607, 42610],
|
||
[42612, 42621],
|
||
[42654, 42655],
|
||
[42736, 42737],
|
||
[43010, 43010],
|
||
[43014, 43014],
|
||
[43019, 43019],
|
||
[43045, 43046],
|
||
[43204, 43205],
|
||
[43232, 43249],
|
||
[43263, 43263],
|
||
[43302, 43309],
|
||
[43335, 43345],
|
||
[43392, 43394],
|
||
[43443, 43443],
|
||
[43446, 43449],
|
||
[43452, 43453],
|
||
[43493, 43493],
|
||
[43561, 43566],
|
||
[43569, 43570],
|
||
[43573, 43574],
|
||
[43587, 43587],
|
||
[43596, 43596],
|
||
[43644, 43644],
|
||
[43696, 43696],
|
||
[43698, 43700],
|
||
[43703, 43704],
|
||
[43710, 43711],
|
||
[43713, 43713],
|
||
[43756, 43757],
|
||
[43766, 43766],
|
||
[44005, 44005],
|
||
[44008, 44008],
|
||
[44013, 44013],
|
||
[64286, 64286],
|
||
[65024, 65039],
|
||
[65056, 65071],
|
||
[65279, 65279],
|
||
[65529, 65531]
|
||
],
|
||
n = [
|
||
[66045, 66045],
|
||
[66272, 66272],
|
||
[66422, 66426],
|
||
[68097, 68099],
|
||
[68101, 68102],
|
||
[68108, 68111],
|
||
[68152, 68154],
|
||
[68159, 68159],
|
||
[68325, 68326],
|
||
[68900, 68903],
|
||
[69446, 69456],
|
||
[69633, 69633],
|
||
[69688, 69702],
|
||
[69759, 69761],
|
||
[69811, 69814],
|
||
[69817, 69818],
|
||
[69821, 69821],
|
||
[69837, 69837],
|
||
[69888, 69890],
|
||
[69927, 69931],
|
||
[69933, 69940],
|
||
[70003, 70003],
|
||
[70016, 70017],
|
||
[70070, 70078],
|
||
[70089, 70092],
|
||
[70191, 70193],
|
||
[70196, 70196],
|
||
[70198, 70199],
|
||
[70206, 70206],
|
||
[70367, 70367],
|
||
[70371, 70378],
|
||
[70400, 70401],
|
||
[70459, 70460],
|
||
[70464, 70464],
|
||
[70502, 70508],
|
||
[70512, 70516],
|
||
[70712, 70719],
|
||
[70722, 70724],
|
||
[70726, 70726],
|
||
[70750, 70750],
|
||
[70835, 70840],
|
||
[70842, 70842],
|
||
[70847, 70848],
|
||
[70850, 70851],
|
||
[71090, 71093],
|
||
[71100, 71101],
|
||
[71103, 71104],
|
||
[71132, 71133],
|
||
[71219, 71226],
|
||
[71229, 71229],
|
||
[71231, 71232],
|
||
[71339, 71339],
|
||
[71341, 71341],
|
||
[71344, 71349],
|
||
[71351, 71351],
|
||
[71453, 71455],
|
||
[71458, 71461],
|
||
[71463, 71467],
|
||
[71727, 71735],
|
||
[71737, 71738],
|
||
[72148, 72151],
|
||
[72154, 72155],
|
||
[72160, 72160],
|
||
[72193, 72202],
|
||
[72243, 72248],
|
||
[72251, 72254],
|
||
[72263, 72263],
|
||
[72273, 72278],
|
||
[72281, 72283],
|
||
[72330, 72342],
|
||
[72344, 72345],
|
||
[72752, 72758],
|
||
[72760, 72765],
|
||
[72767, 72767],
|
||
[72850, 72871],
|
||
[72874, 72880],
|
||
[72882, 72883],
|
||
[72885, 72886],
|
||
[73009, 73014],
|
||
[73018, 73018],
|
||
[73020, 73021],
|
||
[73023, 73029],
|
||
[73031, 73031],
|
||
[73104, 73105],
|
||
[73109, 73109],
|
||
[73111, 73111],
|
||
[73459, 73460],
|
||
[78896, 78904],
|
||
[92912, 92916],
|
||
[92976, 92982],
|
||
[94031, 94031],
|
||
[94095, 94098],
|
||
[113821, 113822],
|
||
[113824, 113827],
|
||
[119143, 119145],
|
||
[119155, 119170],
|
||
[119173, 119179],
|
||
[119210, 119213],
|
||
[119362, 119364],
|
||
[121344, 121398],
|
||
[121403, 121452],
|
||
[121461, 121461],
|
||
[121476, 121476],
|
||
[121499, 121503],
|
||
[121505, 121519],
|
||
[122880, 122886],
|
||
[122888, 122904],
|
||
[122907, 122913],
|
||
[122915, 122916],
|
||
[122918, 122922],
|
||
[123184, 123190],
|
||
[123628, 123631],
|
||
[125136, 125142],
|
||
[125252, 125258],
|
||
[917505, 917505],
|
||
[917536, 917631],
|
||
[917760, 917999]
|
||
],
|
||
o = [
|
||
[4352, 4447],
|
||
[8986, 8987],
|
||
[9001, 9002],
|
||
[9193, 9196],
|
||
[9200, 9200],
|
||
[9203, 9203],
|
||
[9725, 9726],
|
||
[9748, 9749],
|
||
[9800, 9811],
|
||
[9855, 9855],
|
||
[9875, 9875],
|
||
[9889, 9889],
|
||
[9898, 9899],
|
||
[9917, 9918],
|
||
[9924, 9925],
|
||
[9934, 9934],
|
||
[9940, 9940],
|
||
[9962, 9962],
|
||
[9970, 9971],
|
||
[9973, 9973],
|
||
[9978, 9978],
|
||
[9981, 9981],
|
||
[9989, 9989],
|
||
[9994, 9995],
|
||
[10024, 10024],
|
||
[10060, 10060],
|
||
[10062, 10062],
|
||
[10067, 10069],
|
||
[10071, 10071],
|
||
[10133, 10135],
|
||
[10160, 10160],
|
||
[10175, 10175],
|
||
[11035, 11036],
|
||
[11088, 11088],
|
||
[11093, 11093],
|
||
[11904, 11929],
|
||
[11931, 12019],
|
||
[12032, 12245],
|
||
[12272, 12283],
|
||
[12288, 12329],
|
||
[12334, 12350],
|
||
[12353, 12438],
|
||
[12443, 12543],
|
||
[12549, 12591],
|
||
[12593, 12686],
|
||
[12688, 12730],
|
||
[12736, 12771],
|
||
[12784, 12830],
|
||
[12832, 12871],
|
||
[12880, 19903],
|
||
[19968, 42124],
|
||
[42128, 42182],
|
||
[43360, 43388],
|
||
[44032, 55203],
|
||
[63744, 64255],
|
||
[65040, 65049],
|
||
[65072, 65106],
|
||
[65108, 65126],
|
||
[65128, 65131],
|
||
[65281, 65376],
|
||
[65504, 65510]
|
||
],
|
||
a = [
|
||
[94176, 94179],
|
||
[94208, 100343],
|
||
[100352, 101106],
|
||
[110592, 110878],
|
||
[110928, 110930],
|
||
[110948, 110951],
|
||
[110960, 111355],
|
||
[126980, 126980],
|
||
[127183, 127183],
|
||
[127374, 127374],
|
||
[127377, 127386],
|
||
[127488, 127490],
|
||
[127504, 127547],
|
||
[127552, 127560],
|
||
[127568, 127569],
|
||
[127584, 127589],
|
||
[127744, 127776],
|
||
[127789, 127797],
|
||
[127799, 127868],
|
||
[127870, 127891],
|
||
[127904, 127946],
|
||
[127951, 127955],
|
||
[127968, 127984],
|
||
[127988, 127988],
|
||
[127992, 128062],
|
||
[128064, 128064],
|
||
[128066, 128252],
|
||
[128255, 128317],
|
||
[128331, 128334],
|
||
[128336, 128359],
|
||
[128378, 128378],
|
||
[128405, 128406],
|
||
[128420, 128420],
|
||
[128507, 128591],
|
||
[128640, 128709],
|
||
[128716, 128716],
|
||
[128720, 128722],
|
||
[128725, 128725],
|
||
[128747, 128748],
|
||
[128756, 128762],
|
||
[128992, 129003],
|
||
[129293, 129393],
|
||
[129395, 129398],
|
||
[129402, 129442],
|
||
[129445, 129450],
|
||
[129454, 129482],
|
||
[129485, 129535],
|
||
[129648, 129651],
|
||
[129656, 129658],
|
||
[129664, 129666],
|
||
[129680, 129685],
|
||
[131072, 196605],
|
||
[196608, 262141]
|
||
];
|
||
let h;
|
||
|
||
function c(e, t) {
|
||
let i, s = 0,
|
||
r = t.length - 1;
|
||
if (e < t[0][0] || e > t[r][1]) return !1;
|
||
for (; r >= s;)
|
||
if (i = s + r >> 1, e > t[i][1]) s = i + 1;
|
||
else {
|
||
if (!(e < t[i][0])) return !0;
|
||
r = i - 1
|
||
} return !1
|
||
}
|
||
t.UnicodeV11 = class {
|
||
constructor() {
|
||
if (this.version = "11", !h) {
|
||
h = new Uint8Array(65536), h.fill(1), h[0] = 0, h.fill(0, 1, 32), h.fill(0, 127, 160);
|
||
for (let e = 0; e < r.length; ++e) h.fill(0, r[e][0], r[e][1] + 1);
|
||
for (let e = 0; e < o.length; ++e) h.fill(2, o[e][0], o[e][1] + 1)
|
||
}
|
||
}
|
||
wcwidth(e) {
|
||
return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? h[e] : c(e, n) ? 0 : c(e, a) ? 2 : 1
|
||
}
|
||
charProperties(e, t) {
|
||
let i = this.wcwidth(e),
|
||
r = 0 === i && 0 !== t;
|
||
if (r) {
|
||
const e = s.UnicodeService.extractWidth(t);
|
||
0 === e ? r = !1 : e > i && (i = e)
|
||
}
|
||
return s.UnicodeService.createPropertyValue(0, i, r)
|
||
}
|
||
}
|
||
},
|
||
345: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class {
|
||
constructor() {
|
||
this._listeners = [], this._disposed = !1
|
||
}
|
||
get event() {
|
||
return this._event || (this._event = e => (this._listeners.push(e), {
|
||
dispose: () => {
|
||
if (!this._disposed)
|
||
for (let t = 0; t < this._listeners.length; t++)
|
||
if (this._listeners[t] === e) return void this._listeners.splice(t, 1)
|
||
}
|
||
})), this._event
|
||
}
|
||
fire(e, t) {
|
||
const i = [];
|
||
for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]);
|
||
for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t)
|
||
}
|
||
dispose() {
|
||
this.clearListeners(), this._disposed = !0
|
||
}
|
||
clearListeners() {
|
||
this._listeners && (this._listeners.length = 0)
|
||
}
|
||
}, t.forwardEvent = function(e, t) {
|
||
return e((e => t.fire(e)))
|
||
}, t.runAndSubscribe = function(e, t) {
|
||
return t(void 0), e((e => t(e)))
|
||
}
|
||
},
|
||
490: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.UnicodeV6 = void 0;
|
||
const s = i(938),
|
||
r = [
|
||
[768, 879],
|
||
[1155, 1158],
|
||
[1160, 1161],
|
||
[1425, 1469],
|
||
[1471, 1471],
|
||
[1473, 1474],
|
||
[1476, 1477],
|
||
[1479, 1479],
|
||
[1536, 1539],
|
||
[1552, 1557],
|
||
[1611, 1630],
|
||
[1648, 1648],
|
||
[1750, 1764],
|
||
[1767, 1768],
|
||
[1770, 1773],
|
||
[1807, 1807],
|
||
[1809, 1809],
|
||
[1840, 1866],
|
||
[1958, 1968],
|
||
[2027, 2035],
|
||
[2305, 2306],
|
||
[2364, 2364],
|
||
[2369, 2376],
|
||
[2381, 2381],
|
||
[2385, 2388],
|
||
[2402, 2403],
|
||
[2433, 2433],
|
||
[2492, 2492],
|
||
[2497, 2500],
|
||
[2509, 2509],
|
||
[2530, 2531],
|
||
[2561, 2562],
|
||
[2620, 2620],
|
||
[2625, 2626],
|
||
[2631, 2632],
|
||
[2635, 2637],
|
||
[2672, 2673],
|
||
[2689, 2690],
|
||
[2748, 2748],
|
||
[2753, 2757],
|
||
[2759, 2760],
|
||
[2765, 2765],
|
||
[2786, 2787],
|
||
[2817, 2817],
|
||
[2876, 2876],
|
||
[2879, 2879],
|
||
[2881, 2883],
|
||
[2893, 2893],
|
||
[2902, 2902],
|
||
[2946, 2946],
|
||
[3008, 3008],
|
||
[3021, 3021],
|
||
[3134, 3136],
|
||
[3142, 3144],
|
||
[3146, 3149],
|
||
[3157, 3158],
|
||
[3260, 3260],
|
||
[3263, 3263],
|
||
[3270, 3270],
|
||
[3276, 3277],
|
||
[3298, 3299],
|
||
[3393, 3395],
|
||
[3405, 3405],
|
||
[3530, 3530],
|
||
[3538, 3540],
|
||
[3542, 3542],
|
||
[3633, 3633],
|
||
[3636, 3642],
|
||
[3655, 3662],
|
||
[3761, 3761],
|
||
[3764, 3769],
|
||
[3771, 3772],
|
||
[3784, 3789],
|
||
[3864, 3865],
|
||
[3893, 3893],
|
||
[3895, 3895],
|
||
[3897, 3897],
|
||
[3953, 3966],
|
||
[3968, 3972],
|
||
[3974, 3975],
|
||
[3984, 3991],
|
||
[3993, 4028],
|
||
[4038, 4038],
|
||
[4141, 4144],
|
||
[4146, 4146],
|
||
[4150, 4151],
|
||
[4153, 4153],
|
||
[4184, 4185],
|
||
[4448, 4607],
|
||
[4959, 4959],
|
||
[5906, 5908],
|
||
[5938, 5940],
|
||
[5970, 5971],
|
||
[6002, 6003],
|
||
[6068, 6069],
|
||
[6071, 6077],
|
||
[6086, 6086],
|
||
[6089, 6099],
|
||
[6109, 6109],
|
||
[6155, 6157],
|
||
[6313, 6313],
|
||
[6432, 6434],
|
||
[6439, 6440],
|
||
[6450, 6450],
|
||
[6457, 6459],
|
||
[6679, 6680],
|
||
[6912, 6915],
|
||
[6964, 6964],
|
||
[6966, 6970],
|
||
[6972, 6972],
|
||
[6978, 6978],
|
||
[7019, 7027],
|
||
[7616, 7626],
|
||
[7678, 7679],
|
||
[8203, 8207],
|
||
[8234, 8238],
|
||
[8288, 8291],
|
||
[8298, 8303],
|
||
[8400, 8431],
|
||
[12330, 12335],
|
||
[12441, 12442],
|
||
[43014, 43014],
|
||
[43019, 43019],
|
||
[43045, 43046],
|
||
[64286, 64286],
|
||
[65024, 65039],
|
||
[65056, 65059],
|
||
[65279, 65279],
|
||
[65529, 65531]
|
||
],
|
||
n = [
|
||
[68097, 68099],
|
||
[68101, 68102],
|
||
[68108, 68111],
|
||
[68152, 68154],
|
||
[68159, 68159],
|
||
[119143, 119145],
|
||
[119155, 119170],
|
||
[119173, 119179],
|
||
[119210, 119213],
|
||
[119362, 119364],
|
||
[917505, 917505],
|
||
[917536, 917631],
|
||
[917760, 917999]
|
||
];
|
||
let o;
|
||
t.UnicodeV6 = class {
|
||
constructor() {
|
||
if (this.version = "6", !o) {
|
||
o = new Uint8Array(65536), o.fill(1), o[0] = 0, o.fill(0, 1, 32), o.fill(0, 127, 160), o.fill(2, 4352, 4448), o[9001] = 2, o[9002] = 2, o.fill(2, 11904, 42192), o[12351] = 1, o.fill(2, 44032, 55204), o.fill(2, 63744, 64256), o.fill(2, 65040, 65050), o.fill(2, 65072, 65136), o.fill(2, 65280, 65377), o.fill(2, 65504, 65511);
|
||
for (let e = 0; e < r.length; ++e) o.fill(0, r[e][0], r[e][1] + 1)
|
||
}
|
||
}
|
||
wcwidth(e) {
|
||
return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? o[e] : function(e, t) {
|
||
let i, s = 0,
|
||
r = t.length - 1;
|
||
if (e < t[0][0] || e > t[r][1]) return !1;
|
||
for (; r >= s;)
|
||
if (i = s + r >> 1, e > t[i][1]) s = i + 1;
|
||
else {
|
||
if (!(e < t[i][0])) return !0;
|
||
r = i - 1
|
||
} return !1
|
||
}(e, n) ? 0 : e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141 ? 2 : 1
|
||
}
|
||
charProperties(e, t) {
|
||
let i = this.wcwidth(e),
|
||
r = 0 === i && 0 !== t;
|
||
if (r) {
|
||
const e = s.UnicodeService.extractWidth(t);
|
||
0 === e ? r = !1 : e > i && (i = e)
|
||
}
|
||
return s.UnicodeService.createPropertyValue(0, i, r)
|
||
}
|
||
}
|
||
},
|
||
938: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.UnicodeService = void 0;
|
||
const s = i(345),
|
||
r = i(490);
|
||
class n {
|
||
static extractShouldJoin(e) {
|
||
return !!(1 & e)
|
||
}
|
||
static extractWidth(e) {
|
||
return e >> 1 & 3
|
||
}
|
||
static extractCharKind(e) {
|
||
return e >> 3
|
||
}
|
||
static createPropertyValue(e, t, i = !1) {
|
||
return (16777215 & e) << 3 | (3 & t) << 1 | (i ? 1 : 0)
|
||
}
|
||
constructor() {
|
||
this._providers = Object.create(null), this._active = "", this._onChange = new s.EventEmitter, this.onChange = this._onChange.event;
|
||
const e = new r.UnicodeV6;
|
||
this.register(e), this._active = e.version, this._activeProvider = e
|
||
}
|
||
dispose() {
|
||
this._onChange.dispose()
|
||
}
|
||
get versions() {
|
||
return Object.keys(this._providers)
|
||
}
|
||
get activeVersion() {
|
||
return this._active
|
||
}
|
||
set activeVersion(e) {
|
||
if (!this._providers[e]) throw new Error(`unknown Unicode version "${e}"`);
|
||
this._active = e, this._activeProvider = this._providers[e], this._onChange.fire(e)
|
||
}
|
||
register(e) {
|
||
this._providers[e.version] = e
|
||
}
|
||
wcwidth(e) {
|
||
return this._activeProvider.wcwidth(e)
|
||
}
|
||
getStringCellWidth(e) {
|
||
let t = 0,
|
||
i = 0;
|
||
const s = e.length;
|
||
for (let r = 0; r < s; ++r) {
|
||
let o = e.charCodeAt(r);
|
||
if (55296 <= o && o <= 56319) {
|
||
if (++r >= s) return t + this.wcwidth(o);
|
||
const i = e.charCodeAt(r);
|
||
56320 <= i && i <= 57343 ? o = 1024 * (o - 55296) + i - 56320 + 65536 : t += this.wcwidth(i)
|
||
}
|
||
const a = this.charProperties(o, i);
|
||
let h = n.extractWidth(a);
|
||
n.extractShouldJoin(a) && (h -= n.extractWidth(i)), t += h, i = a
|
||
}
|
||
return t
|
||
}
|
||
charProperties(e, t) {
|
||
return this._activeProvider.charProperties(e, t)
|
||
}
|
||
}
|
||
t.UnicodeService = n
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
exports: {}
|
||
};
|
||
return e[s](n, n.exports, i), n.exports
|
||
}
|
||
var s = {};
|
||
return (() => {
|
||
var e = s;
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.Unicode11Addon = void 0;
|
||
const t = i(433);
|
||
e.Unicode11Addon = class {
|
||
activate(e) {
|
||
e.unicode.register(new t.UnicodeV11)
|
||
}
|
||
dispose() {}
|
||
}
|
||
})(), s
|
||
})(), e.exports = t()
|
||
},
|
||
601: e => {
|
||
"use strict";
|
||
e.exports = function(e) {
|
||
return e[1]
|
||
}
|
||
},
|
||
616: e => {
|
||
var t;
|
||
self, t = () => (() => {
|
||
"use strict";
|
||
var e, t = {};
|
||
return e = t, Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.FitAddon = void 0, e.FitAddon = class {
|
||
activate(e) {
|
||
this._terminal = e
|
||
}
|
||
dispose() {}
|
||
fit() {
|
||
const e = this.proposeDimensions();
|
||
if (!e || !this._terminal || isNaN(e.cols) || isNaN(e.rows)) return;
|
||
const t = this._terminal._core;
|
||
this._terminal.rows === e.rows && this._terminal.cols === e.cols || (t._renderService.clear(), this._terminal.resize(e.cols, e.rows))
|
||
}
|
||
proposeDimensions() {
|
||
if (!this._terminal) return;
|
||
if (!this._terminal.element || !this._terminal.element.parentElement) return;
|
||
const e = this._terminal._core,
|
||
t = e._renderService.dimensions;
|
||
if (0 === t.css.cell.width || 0 === t.css.cell.height) return;
|
||
const i = 0 === this._terminal.options.scrollback ? 0 : e.viewport.scrollBarWidth,
|
||
s = window.getComputedStyle(this._terminal.element.parentElement),
|
||
r = parseInt(s.getPropertyValue("height")),
|
||
n = Math.max(0, parseInt(s.getPropertyValue("width"))),
|
||
o = window.getComputedStyle(this._terminal.element),
|
||
a = r - (parseInt(o.getPropertyValue("padding-top")) + parseInt(o.getPropertyValue("padding-bottom"))),
|
||
h = n - (parseInt(o.getPropertyValue("padding-right")) + parseInt(o.getPropertyValue("padding-left"))) - i;
|
||
return {
|
||
cols: Math.max(2, Math.floor(h / t.css.cell.width)),
|
||
rows: Math.max(1, Math.floor(a / t.css.cell.height))
|
||
}
|
||
}
|
||
}, t
|
||
})(), e.exports = t()
|
||
},
|
||
659: e => {
|
||
"use strict";
|
||
var t = {};
|
||
e.exports = function(e, i) {
|
||
var s = function(e) {
|
||
if (void 0 === t[e]) {
|
||
var i = document.querySelector(e);
|
||
if (window.HTMLIFrameElement && i instanceof window.HTMLIFrameElement) try {
|
||
i = i.contentDocument.head
|
||
} catch (e) {
|
||
i = null
|
||
}
|
||
t[e] = i
|
||
}
|
||
return t[e]
|
||
}(e);
|
||
if (!s) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
||
s.appendChild(i)
|
||
}
|
||
},
|
||
825: e => {
|
||
"use strict";
|
||
e.exports = function(e) {
|
||
if ("undefined" == typeof document) return {
|
||
update: function() {},
|
||
remove: function() {}
|
||
};
|
||
var t = e.insertStyleElement(e);
|
||
return {
|
||
update: function(i) {
|
||
! function(e, t, i) {
|
||
var s = "";
|
||
i.supports && (s += "@supports (".concat(i.supports, ") {")), i.media && (s += "@media ".concat(i.media, " {"));
|
||
var r = void 0 !== i.layer;
|
||
r && (s += "@layer".concat(i.layer.length > 0 ? " ".concat(i.layer) : "", " {")), s += i.css, r && (s += "}"), i.media && (s += "}"), i.supports && (s += "}");
|
||
var n = i.sourceMap;
|
||
n && "undefined" != typeof btoa && (s += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n)))), " */")), t.styleTagTransform(s, e, t.options)
|
||
}(t, e, i)
|
||
},
|
||
remove: function() {
|
||
! function(e) {
|
||
if (null === e.parentNode) return !1;
|
||
e.parentNode.removeChild(e)
|
||
}(t)
|
||
}
|
||
}
|
||
}
|
||
},
|
||
832: e => {
|
||
var t;
|
||
self, t = () => (() => {
|
||
"use strict";
|
||
var e = {
|
||
6: (e, t) => {
|
||
function i(e) {
|
||
try {
|
||
const t = new URL(e),
|
||
i = t.password && t.username ? `${t.protocol}//${t.username}:${t.password}@${t.host}` : t.username ? `${t.protocol}//${t.username}@${t.host}` : `${t.protocol}//${t.host}`;
|
||
return e.toLocaleLowerCase().startsWith(i.toLocaleLowerCase())
|
||
} catch (e) {
|
||
return !1
|
||
}
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.LinkComputer = t.WebLinkProvider = void 0, t.WebLinkProvider = class {
|
||
constructor(e, t, i, s = {}) {
|
||
this._terminal = e, this._regex = t, this._handler = i, this._options = s
|
||
}
|
||
provideLinks(e, t) {
|
||
const i = s.computeLink(e, this._regex, this._terminal, this._handler);
|
||
t(this._addCallbacks(i))
|
||
}
|
||
_addCallbacks(e) {
|
||
return e.map((e => (e.leave = this._options.leave, e.hover = (t, i) => {
|
||
if (this._options.hover) {
|
||
const {
|
||
range: s
|
||
} = e;
|
||
this._options.hover(t, i, s)
|
||
}
|
||
}, e)))
|
||
}
|
||
};
|
||
class s {
|
||
static computeLink(e, t, r, n) {
|
||
const o = new RegExp(t.source, (t.flags || "") + "g"),
|
||
[a, h] = s._getWindowedLineStrings(e - 1, r),
|
||
c = a.join("");
|
||
let l;
|
||
const d = [];
|
||
for (; l = o.exec(c);) {
|
||
const e = l[0];
|
||
if (!i(e)) continue;
|
||
const [t, o] = s._mapStrIdx(r, h, 0, l.index), [a, c] = s._mapStrIdx(r, t, o, e.length);
|
||
if (-1 === t || -1 === o || -1 === a || -1 === c) continue;
|
||
const _ = {
|
||
start: {
|
||
x: o + 1,
|
||
y: t + 1
|
||
},
|
||
end: {
|
||
x: c,
|
||
y: a + 1
|
||
}
|
||
};
|
||
d.push({
|
||
range: _,
|
||
text: e,
|
||
activate: n
|
||
})
|
||
}
|
||
return d
|
||
}
|
||
static _getWindowedLineStrings(e, t) {
|
||
let i, s = e,
|
||
r = e,
|
||
n = 0,
|
||
o = "";
|
||
const a = [];
|
||
if (i = t.buffer.active.getLine(e)) {
|
||
const e = i.translateToString(!0);
|
||
if (i.isWrapped && " " !== e[0]) {
|
||
for (n = 0;
|
||
(i = t.buffer.active.getLine(--s)) && n < 2048 && (o = i.translateToString(!0), n += o.length, a.push(o), i.isWrapped && -1 === o.indexOf(" ")););
|
||
a.reverse()
|
||
}
|
||
for (a.push(e), n = 0;
|
||
(i = t.buffer.active.getLine(++r)) && i.isWrapped && n < 2048 && (o = i.translateToString(!0), n += o.length, a.push(o), -1 === o.indexOf(" ")););
|
||
}
|
||
return [a, s]
|
||
}
|
||
static _mapStrIdx(e, t, i, s) {
|
||
const r = e.buffer.active,
|
||
n = r.getNullCell();
|
||
let o = i;
|
||
for (; s;) {
|
||
const e = r.getLine(t);
|
||
if (!e) return [-1, -1];
|
||
for (let i = o; i < e.length; ++i) {
|
||
e.getCell(i, n);
|
||
const o = n.getChars();
|
||
if (n.getWidth() && (s -= o.length || 1, i === e.length - 1 && "" === o)) {
|
||
const e = r.getLine(t + 1);
|
||
e && e.isWrapped && (e.getCell(0, n), 2 === n.getWidth() && (s += 1))
|
||
}
|
||
if (s < 0) return [t, i]
|
||
}
|
||
t++, o = 0
|
||
}
|
||
return [t, o]
|
||
}
|
||
}
|
||
t.LinkComputer = s
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
exports: {}
|
||
};
|
||
return e[s](n, n.exports, i), n.exports
|
||
}
|
||
var s = {};
|
||
return (() => {
|
||
var e = s;
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.WebLinksAddon = void 0;
|
||
const t = i(6),
|
||
r = /(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/;
|
||
|
||
function n(e, t) {
|
||
const i = window.open();
|
||
if (i) {
|
||
try {
|
||
i.opener = null
|
||
} catch {}
|
||
i.location.href = t
|
||
} else console.warn("Opening link blocked as opener could not be cleared")
|
||
}
|
||
e.WebLinksAddon = class {
|
||
constructor(e = n, t = {}) {
|
||
this._handler = e, this._options = t
|
||
}
|
||
activate(e) {
|
||
this._terminal = e;
|
||
const i = this._options,
|
||
s = i.urlRegex || r;
|
||
this._linkProvider = this._terminal.registerLinkProvider(new t.WebLinkProvider(this._terminal, s, this._handler, i))
|
||
}
|
||
dispose() {
|
||
this._linkProvider?.dispose()
|
||
}
|
||
}
|
||
})(), s
|
||
})(), e.exports = t()
|
||
},
|
||
856: e => {
|
||
var t;
|
||
globalThis, t = () => (() => {
|
||
"use strict";
|
||
var e = {
|
||
4567: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.AccessibilityManager = void 0;
|
||
const n = i(9042),
|
||
o = i(9924),
|
||
a = i(844),
|
||
h = i(4725),
|
||
c = i(2585),
|
||
l = i(3656);
|
||
let d = t.AccessibilityManager = class extends a.Disposable {
|
||
constructor(e, t, i, s) {
|
||
super(), this._terminal = e, this._coreBrowserService = i, this._renderService = s, this._rowColumns = new WeakMap, this._liveRegionLineCount = 0, this._charsToConsume = [], this._charsToAnnounce = "", this._accessibilityContainer = this._coreBrowserService.mainDocument.createElement("div"), this._accessibilityContainer.classList.add("xterm-accessibility"), this._rowContainer = this._coreBrowserService.mainDocument.createElement("div"), this._rowContainer.setAttribute("role", "list"), this._rowContainer.classList.add("xterm-accessibility-tree"), this._rowElements = [];
|
||
for (let e = 0; e < this._terminal.rows; e++) this._rowElements[e] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[e]);
|
||
if (this._topBoundaryFocusListener = e => this._handleBoundaryFocus(e, 0), this._bottomBoundaryFocusListener = e => this._handleBoundaryFocus(e, 1), this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions(), this._accessibilityContainer.appendChild(this._rowContainer), this._liveRegion = this._coreBrowserService.mainDocument.createElement("div"), this._liveRegion.classList.add("live-region"), this._liveRegion.setAttribute("aria-live", "assertive"), this._accessibilityContainer.appendChild(this._liveRegion), this._liveRegionDebouncer = this.register(new o.TimeBasedDebouncer(this._renderRows.bind(this))), !this._terminal.element) throw new Error("Cannot enable accessibility before Terminal.open");
|
||
this._terminal.element.insertAdjacentElement("afterbegin", this._accessibilityContainer), this.register(this._terminal.onResize((e => this._handleResize(e.rows)))), this.register(this._terminal.onRender((e => this._refreshRows(e.start, e.end)))), this.register(this._terminal.onScroll((() => this._refreshRows()))), this.register(this._terminal.onA11yChar((e => this._handleChar(e)))), this.register(this._terminal.onLineFeed((() => this._handleChar("\n")))), this.register(this._terminal.onA11yTab((e => this._handleTab(e)))), this.register(this._terminal.onKey((e => this._handleKey(e.key)))), this.register(this._terminal.onBlur((() => this._clearLiveRegion()))), this.register(this._renderService.onDimensionsChange((() => this._refreshRowsDimensions()))), this.register((0, l.addDisposableDomListener)(document, "selectionchange", (() => this._handleSelectionChange()))), this.register(this._coreBrowserService.onDprChange((() => this._refreshRowsDimensions()))), this._refreshRows(), this.register((0, a.toDisposable)((() => {
|
||
this._accessibilityContainer.remove(), this._rowElements.length = 0
|
||
})))
|
||
}
|
||
_handleTab(e) {
|
||
for (let t = 0; t < e; t++) this._handleChar(" ")
|
||
}
|
||
_handleChar(e) {
|
||
this._liveRegionLineCount < 21 && (this._charsToConsume.length > 0 ? this._charsToConsume.shift() !== e && (this._charsToAnnounce += e) : this._charsToAnnounce += e, "\n" === e && (this._liveRegionLineCount++, 21 === this._liveRegionLineCount && (this._liveRegion.textContent += n.tooMuchOutput)))
|
||
}
|
||
_clearLiveRegion() {
|
||
this._liveRegion.textContent = "", this._liveRegionLineCount = 0
|
||
}
|
||
_handleKey(e) {
|
||
this._clearLiveRegion(), /\p{Control}/u.test(e) || this._charsToConsume.push(e)
|
||
}
|
||
_refreshRows(e, t) {
|
||
this._liveRegionDebouncer.refresh(e, t, this._terminal.rows)
|
||
}
|
||
_renderRows(e, t) {
|
||
const i = this._terminal.buffer,
|
||
s = i.lines.length.toString();
|
||
for (let r = e; r <= t; r++) {
|
||
const e = i.lines.get(i.ydisp + r),
|
||
t = [],
|
||
n = e?.translateToString(!0, void 0, void 0, t) || "",
|
||
o = (i.ydisp + r + 1).toString(),
|
||
a = this._rowElements[r];
|
||
a && (0 === n.length ? (a.innerText = " ", this._rowColumns.set(a, [0, 1])) : (a.textContent = n, this._rowColumns.set(a, t)), a.setAttribute("aria-posinset", o), a.setAttribute("aria-setsize", s))
|
||
}
|
||
this._announceCharacters()
|
||
}
|
||
_announceCharacters() {
|
||
0 !== this._charsToAnnounce.length && (this._liveRegion.textContent += this._charsToAnnounce, this._charsToAnnounce = "")
|
||
}
|
||
_handleBoundaryFocus(e, t) {
|
||
const i = e.target,
|
||
s = this._rowElements[0 === t ? 1 : this._rowElements.length - 2];
|
||
if (i.getAttribute("aria-posinset") === (0 === t ? "1" : `${this._terminal.buffer.lines.length}`)) return;
|
||
if (e.relatedTarget !== s) return;
|
||
let r, n;
|
||
if (0 === t ? (r = i, n = this._rowElements.pop(), this._rowContainer.removeChild(n)) : (r = this._rowElements.shift(), n = i, this._rowContainer.removeChild(r)), r.removeEventListener("focus", this._topBoundaryFocusListener), n.removeEventListener("focus", this._bottomBoundaryFocusListener), 0 === t) {
|
||
const e = this._createAccessibilityTreeNode();
|
||
this._rowElements.unshift(e), this._rowContainer.insertAdjacentElement("afterbegin", e)
|
||
} else {
|
||
const e = this._createAccessibilityTreeNode();
|
||
this._rowElements.push(e), this._rowContainer.appendChild(e)
|
||
}
|
||
this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._terminal.scrollLines(0 === t ? -1 : 1), this._rowElements[0 === t ? 1 : this._rowElements.length - 2].focus(), e.preventDefault(), e.stopImmediatePropagation()
|
||
}
|
||
_handleSelectionChange() {
|
||
if (0 === this._rowElements.length) return;
|
||
const e = document.getSelection();
|
||
if (!e) return;
|
||
if (e.isCollapsed) return void(this._rowContainer.contains(e.anchorNode) && this._terminal.clearSelection());
|
||
if (!e.anchorNode || !e.focusNode) return void console.error("anchorNode and/or focusNode are null");
|
||
let t = {
|
||
node: e.anchorNode,
|
||
offset: e.anchorOffset
|
||
},
|
||
i = {
|
||
node: e.focusNode,
|
||
offset: e.focusOffset
|
||
};
|
||
if ((t.node.compareDocumentPosition(i.node) & Node.DOCUMENT_POSITION_PRECEDING || t.node === i.node && t.offset > i.offset) && ([t, i] = [i, t]), t.node.compareDocumentPosition(this._rowElements[0]) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING) && (t = {
|
||
node: this._rowElements[0].childNodes[0],
|
||
offset: 0
|
||
}), !this._rowContainer.contains(t.node)) return;
|
||
const s = this._rowElements.slice(-1)[0];
|
||
if (i.node.compareDocumentPosition(s) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_PRECEDING) && (i = {
|
||
node: s,
|
||
offset: s.textContent?.length ?? 0
|
||
}), !this._rowContainer.contains(i.node)) return;
|
||
const r = ({
|
||
node: e,
|
||
offset: t
|
||
}) => {
|
||
const i = e instanceof Text ? e.parentNode : e;
|
||
let s = parseInt(i?.getAttribute("aria-posinset"), 10) - 1;
|
||
if (isNaN(s)) return console.warn("row is invalid. Race condition?"), null;
|
||
const r = this._rowColumns.get(i);
|
||
if (!r) return console.warn("columns is null. Race condition?"), null;
|
||
let n = t < r.length ? r[t] : r.slice(-1)[0] + 1;
|
||
return n >= this._terminal.cols && (++s, n = 0), {
|
||
row: s,
|
||
column: n
|
||
}
|
||
},
|
||
n = r(t),
|
||
o = r(i);
|
||
if (n && o) {
|
||
if (n.row > o.row || n.row === o.row && n.column >= o.column) throw new Error("invalid range");
|
||
this._terminal.select(n.column, n.row, (o.row - n.row) * this._terminal.cols - n.column + o.column)
|
||
}
|
||
}
|
||
_handleResize(e) {
|
||
this._rowElements[this._rowElements.length - 1].removeEventListener("focus", this._bottomBoundaryFocusListener);
|
||
for (let e = this._rowContainer.children.length; e < this._terminal.rows; e++) this._rowElements[e] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[e]);
|
||
for (; this._rowElements.length > e;) this._rowContainer.removeChild(this._rowElements.pop());
|
||
this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions()
|
||
}
|
||
_createAccessibilityTreeNode() {
|
||
const e = this._coreBrowserService.mainDocument.createElement("div");
|
||
return e.setAttribute("role", "listitem"), e.tabIndex = -1, this._refreshRowDimensions(e), e
|
||
}
|
||
_refreshRowsDimensions() {
|
||
if (this._renderService.dimensions.css.cell.height) {
|
||
this._accessibilityContainer.style.width = `${this._renderService.dimensions.css.canvas.width}px`, this._rowElements.length !== this._terminal.rows && this._handleResize(this._terminal.rows);
|
||
for (let e = 0; e < this._terminal.rows; e++) this._refreshRowDimensions(this._rowElements[e])
|
||
}
|
||
}
|
||
_refreshRowDimensions(e) {
|
||
e.style.height = `${this._renderService.dimensions.css.cell.height}px`
|
||
}
|
||
};
|
||
t.AccessibilityManager = d = s([r(1, c.IInstantiationService), r(2, h.ICoreBrowserService), r(3, h.IRenderService)], d)
|
||
},
|
||
3614: (e, t) => {
|
||
function i(e) {
|
||
return e.replace(/\r?\n/g, "\r")
|
||
}
|
||
|
||
function s(e, t) {
|
||
return t ? "[200~" + e + "[201~" : e
|
||
}
|
||
|
||
function r(e, t, r, n) {
|
||
e = s(e = i(e), r.decPrivateModes.bracketedPasteMode && !0 !== n.rawOptions.ignoreBracketedPasteMode), r.triggerDataEvent(e, !0), t.value = ""
|
||
}
|
||
|
||
function n(e, t, i) {
|
||
const s = i.getBoundingClientRect(),
|
||
r = e.clientX - s.left - 10,
|
||
n = e.clientY - s.top - 10;
|
||
t.style.width = "20px", t.style.height = "20px", t.style.left = `${r}px`, t.style.top = `${n}px`, t.style.zIndex = "1000", t.focus()
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.rightClickHandler = t.moveTextAreaUnderMouseCursor = t.paste = t.handlePasteEvent = t.copyHandler = t.bracketTextForPaste = t.prepareTextForTerminal = void 0, t.prepareTextForTerminal = i, t.bracketTextForPaste = s, t.copyHandler = function(e, t) {
|
||
e.clipboardData && e.clipboardData.setData("text/plain", t.selectionText), e.preventDefault()
|
||
}, t.handlePasteEvent = function(e, t, i, s) {
|
||
e.stopPropagation(), e.clipboardData && r(e.clipboardData.getData("text/plain"), t, i, s)
|
||
}, t.paste = r, t.moveTextAreaUnderMouseCursor = n, t.rightClickHandler = function(e, t, i, s, r) {
|
||
n(e, t, i), r && s.rightClickSelect(e), t.value = s.selectionText, t.select()
|
||
}
|
||
},
|
||
7239: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ColorContrastCache = void 0;
|
||
const s = i(1505);
|
||
t.ColorContrastCache = class {
|
||
constructor() {
|
||
this._color = new s.TwoKeyMap, this._css = new s.TwoKeyMap
|
||
}
|
||
setCss(e, t, i) {
|
||
this._css.set(e, t, i)
|
||
}
|
||
getCss(e, t) {
|
||
return this._css.get(e, t)
|
||
}
|
||
setColor(e, t, i) {
|
||
this._color.set(e, t, i)
|
||
}
|
||
getColor(e, t) {
|
||
return this._color.get(e, t)
|
||
}
|
||
clear() {
|
||
this._color.clear(), this._css.clear()
|
||
}
|
||
}
|
||
},
|
||
3656: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.addDisposableDomListener = void 0, t.addDisposableDomListener = function(e, t, i, s) {
|
||
e.addEventListener(t, i, s);
|
||
let r = !1;
|
||
return {
|
||
dispose: () => {
|
||
r || (r = !0, e.removeEventListener(t, i, s))
|
||
}
|
||
}
|
||
}
|
||
},
|
||
3551: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Linkifier = void 0;
|
||
const n = i(3656),
|
||
o = i(8460),
|
||
a = i(844),
|
||
h = i(2585),
|
||
c = i(4725);
|
||
let l = t.Linkifier = class extends a.Disposable {
|
||
get currentLink() {
|
||
return this._currentLink
|
||
}
|
||
constructor(e, t, i, s, r) {
|
||
super(), this._element = e, this._mouseService = t, this._renderService = i, this._bufferService = s, this._linkProviderService = r, this._linkCacheDisposables = [], this._isMouseOut = !0, this._wasResized = !1, this._activeLine = -1, this._onShowLinkUnderline = this.register(new o.EventEmitter), this.onShowLinkUnderline = this._onShowLinkUnderline.event, this._onHideLinkUnderline = this.register(new o.EventEmitter), this.onHideLinkUnderline = this._onHideLinkUnderline.event, this.register((0, a.getDisposeArrayDisposable)(this._linkCacheDisposables)), this.register((0, a.toDisposable)((() => {
|
||
this._lastMouseEvent = void 0, this._activeProviderReplies?.clear()
|
||
}))), this.register(this._bufferService.onResize((() => {
|
||
this._clearCurrentLink(), this._wasResized = !0
|
||
}))), this.register((0, n.addDisposableDomListener)(this._element, "mouseleave", (() => {
|
||
this._isMouseOut = !0, this._clearCurrentLink()
|
||
}))), this.register((0, n.addDisposableDomListener)(this._element, "mousemove", this._handleMouseMove.bind(this))), this.register((0, n.addDisposableDomListener)(this._element, "mousedown", this._handleMouseDown.bind(this))), this.register((0, n.addDisposableDomListener)(this._element, "mouseup", this._handleMouseUp.bind(this)))
|
||
}
|
||
_handleMouseMove(e) {
|
||
this._lastMouseEvent = e;
|
||
const t = this._positionFromMouseEvent(e, this._element, this._mouseService);
|
||
if (!t) return;
|
||
this._isMouseOut = !1;
|
||
const i = e.composedPath();
|
||
for (let e = 0; e < i.length; e++) {
|
||
const t = i[e];
|
||
if (t.classList.contains("xterm")) break;
|
||
if (t.classList.contains("xterm-hover")) return
|
||
}
|
||
this._lastBufferCell && t.x === this._lastBufferCell.x && t.y === this._lastBufferCell.y || (this._handleHover(t), this._lastBufferCell = t)
|
||
}
|
||
_handleHover(e) {
|
||
if (this._activeLine !== e.y || this._wasResized) return this._clearCurrentLink(), this._askForLink(e, !1), void(this._wasResized = !1);
|
||
this._currentLink && this._linkAtPosition(this._currentLink.link, e) || (this._clearCurrentLink(), this._askForLink(e, !0))
|
||
}
|
||
_askForLink(e, t) {
|
||
this._activeProviderReplies && t || (this._activeProviderReplies?.forEach((e => {
|
||
e?.forEach((e => {
|
||
e.link.dispose && e.link.dispose()
|
||
}))
|
||
})), this._activeProviderReplies = new Map, this._activeLine = e.y);
|
||
let i = !1;
|
||
for (const [s, r] of this._linkProviderService.linkProviders.entries())
|
||
if (t) {
|
||
const t = this._activeProviderReplies?.get(s);
|
||
t && (i = this._checkLinkProviderResult(s, e, i))
|
||
} else r.provideLinks(e.y, (t => {
|
||
if (this._isMouseOut) return;
|
||
const r = t?.map((e => ({
|
||
link: e
|
||
})));
|
||
this._activeProviderReplies?.set(s, r), i = this._checkLinkProviderResult(s, e, i), this._activeProviderReplies?.size === this._linkProviderService.linkProviders.length && this._removeIntersectingLinks(e.y, this._activeProviderReplies)
|
||
}))
|
||
}
|
||
_removeIntersectingLinks(e, t) {
|
||
const i = new Set;
|
||
for (let s = 0; s < t.size; s++) {
|
||
const r = t.get(s);
|
||
if (r)
|
||
for (let t = 0; t < r.length; t++) {
|
||
const s = r[t],
|
||
n = s.link.range.start.y < e ? 0 : s.link.range.start.x,
|
||
o = s.link.range.end.y > e ? this._bufferService.cols : s.link.range.end.x;
|
||
for (let e = n; e <= o; e++) {
|
||
if (i.has(e)) {
|
||
r.splice(t--, 1);
|
||
break
|
||
}
|
||
i.add(e)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
_checkLinkProviderResult(e, t, i) {
|
||
if (!this._activeProviderReplies) return i;
|
||
const s = this._activeProviderReplies.get(e);
|
||
let r = !1;
|
||
for (let t = 0; t < e; t++) this._activeProviderReplies.has(t) && !this._activeProviderReplies.get(t) || (r = !0);
|
||
if (!r && s) {
|
||
const e = s.find((e => this._linkAtPosition(e.link, t)));
|
||
e && (i = !0, this._handleNewLink(e))
|
||
}
|
||
if (this._activeProviderReplies.size === this._linkProviderService.linkProviders.length && !i)
|
||
for (let e = 0; e < this._activeProviderReplies.size; e++) {
|
||
const s = this._activeProviderReplies.get(e)?.find((e => this._linkAtPosition(e.link, t)));
|
||
if (s) {
|
||
i = !0, this._handleNewLink(s);
|
||
break
|
||
}
|
||
}
|
||
return i
|
||
}
|
||
_handleMouseDown() {
|
||
this._mouseDownLink = this._currentLink
|
||
}
|
||
_handleMouseUp(e) {
|
||
if (!this._currentLink) return;
|
||
const t = this._positionFromMouseEvent(e, this._element, this._mouseService);
|
||
t && this._mouseDownLink === this._currentLink && this._linkAtPosition(this._currentLink.link, t) && this._currentLink.link.activate(e, this._currentLink.link.text)
|
||
}
|
||
_clearCurrentLink(e, t) {
|
||
this._currentLink && this._lastMouseEvent && (!e || !t || this._currentLink.link.range.start.y >= e && this._currentLink.link.range.end.y <= t) && (this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent), this._currentLink = void 0, (0, a.disposeArray)(this._linkCacheDisposables))
|
||
}
|
||
_handleNewLink(e) {
|
||
if (!this._lastMouseEvent) return;
|
||
const t = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService);
|
||
t && this._linkAtPosition(e.link, t) && (this._currentLink = e, this._currentLink.state = {
|
||
decorations: {
|
||
underline: void 0 === e.link.decorations || e.link.decorations.underline,
|
||
pointerCursor: void 0 === e.link.decorations || e.link.decorations.pointerCursor
|
||
},
|
||
isHovered: !0
|
||
}, this._linkHover(this._element, e.link, this._lastMouseEvent), e.link.decorations = {}, Object.defineProperties(e.link.decorations, {
|
||
pointerCursor: {
|
||
get: () => this._currentLink?.state?.decorations.pointerCursor,
|
||
set: e => {
|
||
this._currentLink?.state && this._currentLink.state.decorations.pointerCursor !== e && (this._currentLink.state.decorations.pointerCursor = e, this._currentLink.state.isHovered && this._element.classList.toggle("xterm-cursor-pointer", e))
|
||
}
|
||
},
|
||
underline: {
|
||
get: () => this._currentLink?.state?.decorations.underline,
|
||
set: t => {
|
||
this._currentLink?.state && this._currentLink?.state?.decorations.underline !== t && (this._currentLink.state.decorations.underline = t, this._currentLink.state.isHovered && this._fireUnderlineEvent(e.link, t))
|
||
}
|
||
}
|
||
}), this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((e => {
|
||
if (!this._currentLink) return;
|
||
const t = 0 === e.start ? 0 : e.start + 1 + this._bufferService.buffer.ydisp,
|
||
i = this._bufferService.buffer.ydisp + 1 + e.end;
|
||
if (this._currentLink.link.range.start.y >= t && this._currentLink.link.range.end.y <= i && (this._clearCurrentLink(t, i), this._lastMouseEvent)) {
|
||
const e = this._positionFromMouseEvent(this._lastMouseEvent, this._element, this._mouseService);
|
||
e && this._askForLink(e, !1)
|
||
}
|
||
}))))
|
||
}
|
||
_linkHover(e, t, i) {
|
||
this._currentLink?.state && (this._currentLink.state.isHovered = !0, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(t, !0), this._currentLink.state.decorations.pointerCursor && e.classList.add("xterm-cursor-pointer")), t.hover && t.hover(i, t.text)
|
||
}
|
||
_fireUnderlineEvent(e, t) {
|
||
const i = e.range,
|
||
s = this._bufferService.buffer.ydisp,
|
||
r = this._createLinkUnderlineEvent(i.start.x - 1, i.start.y - s - 1, i.end.x, i.end.y - s - 1, void 0);
|
||
(t ? this._onShowLinkUnderline : this._onHideLinkUnderline).fire(r)
|
||
}
|
||
_linkLeave(e, t, i) {
|
||
this._currentLink?.state && (this._currentLink.state.isHovered = !1, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(t, !1), this._currentLink.state.decorations.pointerCursor && e.classList.remove("xterm-cursor-pointer")), t.leave && t.leave(i, t.text)
|
||
}
|
||
_linkAtPosition(e, t) {
|
||
const i = e.range.start.y * this._bufferService.cols + e.range.start.x,
|
||
s = e.range.end.y * this._bufferService.cols + e.range.end.x,
|
||
r = t.y * this._bufferService.cols + t.x;
|
||
return i <= r && r <= s
|
||
}
|
||
_positionFromMouseEvent(e, t, i) {
|
||
const s = i.getCoords(e, t, this._bufferService.cols, this._bufferService.rows);
|
||
if (s) return {
|
||
x: s[0],
|
||
y: s[1] + this._bufferService.buffer.ydisp
|
||
}
|
||
}
|
||
_createLinkUnderlineEvent(e, t, i, s, r) {
|
||
return {
|
||
x1: e,
|
||
y1: t,
|
||
x2: i,
|
||
y2: s,
|
||
cols: this._bufferService.cols,
|
||
fg: r
|
||
}
|
||
}
|
||
};
|
||
t.Linkifier = l = s([r(1, c.IMouseService), r(2, c.IRenderService), r(3, h.IBufferService), r(4, c.ILinkProviderService)], l)
|
||
},
|
||
9042: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.tooMuchOutput = t.promptLabel = void 0, t.promptLabel = "Terminal input", t.tooMuchOutput = "Too much output to announce, navigate to rows manually to read"
|
||
},
|
||
3730: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.OscLinkProvider = void 0;
|
||
const n = i(511),
|
||
o = i(2585);
|
||
let a = t.OscLinkProvider = class {
|
||
constructor(e, t, i) {
|
||
this._bufferService = e, this._optionsService = t, this._oscLinkService = i
|
||
}
|
||
provideLinks(e, t) {
|
||
const i = this._bufferService.buffer.lines.get(e - 1);
|
||
if (!i) return void t(void 0);
|
||
const s = [],
|
||
r = this._optionsService.rawOptions.linkHandler,
|
||
o = new n.CellData,
|
||
a = i.getTrimmedLength();
|
||
let c = -1,
|
||
l = -1,
|
||
d = !1;
|
||
for (let t = 0; t < a; t++)
|
||
if (-1 !== l || i.hasContent(t)) {
|
||
if (i.loadCell(t, o), o.hasExtendedAttrs() && o.extended.urlId) {
|
||
if (-1 === l) {
|
||
l = t, c = o.extended.urlId;
|
||
continue
|
||
}
|
||
d = o.extended.urlId !== c
|
||
} else - 1 !== l && (d = !0);
|
||
if (d || -1 !== l && t === a - 1) {
|
||
const i = this._oscLinkService.getLinkData(c)?.uri;
|
||
if (i) {
|
||
const n = {
|
||
start: {
|
||
x: l + 1,
|
||
y: e
|
||
},
|
||
end: {
|
||
x: t + (d || t !== a - 1 ? 0 : 1),
|
||
y: e
|
||
}
|
||
};
|
||
let o = !1;
|
||
if (!r?.allowNonHttpProtocols) try {
|
||
const e = new URL(i);
|
||
["http:", "https:"].includes(e.protocol) || (o = !0)
|
||
} catch (e) {
|
||
o = !0
|
||
}
|
||
o || s.push({
|
||
text: i,
|
||
range: n,
|
||
activate: (e, t) => r ? r.activate(e, t, n) : h(0, t),
|
||
hover: (e, t) => r?.hover?.(e, t, n),
|
||
leave: (e, t) => r?.leave?.(e, t, n)
|
||
})
|
||
}
|
||
d = !1, o.hasExtendedAttrs() && o.extended.urlId ? (l = t, c = o.extended.urlId) : (l = -1, c = -1)
|
||
}
|
||
} t(s)
|
||
}
|
||
};
|
||
|
||
function h(e, t) {
|
||
if (confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)) {
|
||
const e = window.open();
|
||
if (e) {
|
||
try {
|
||
e.opener = null
|
||
} catch {}
|
||
e.location.href = t
|
||
} else console.warn("Opening link blocked as opener could not be cleared")
|
||
}
|
||
}
|
||
t.OscLinkProvider = a = s([r(0, o.IBufferService), r(1, o.IOptionsService), r(2, o.IOscLinkService)], a)
|
||
},
|
||
6193: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.RenderDebouncer = void 0, t.RenderDebouncer = class {
|
||
constructor(e, t) {
|
||
this._renderCallback = e, this._coreBrowserService = t, this._refreshCallbacks = []
|
||
}
|
||
dispose() {
|
||
this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0)
|
||
}
|
||
addRefreshCallback(e) {
|
||
return this._refreshCallbacks.push(e), this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh()))), this._animationFrame
|
||
}
|
||
refresh(e, t, i) {
|
||
this._rowCount = i, e = void 0 !== e ? e : 0, t = void 0 !== t ? t : this._rowCount - 1, this._rowStart = void 0 !== this._rowStart ? Math.min(this._rowStart, e) : e, this._rowEnd = void 0 !== this._rowEnd ? Math.max(this._rowEnd, t) : t, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh())))
|
||
}
|
||
_innerRefresh() {
|
||
if (this._animationFrame = void 0, void 0 === this._rowStart || void 0 === this._rowEnd || void 0 === this._rowCount) return void this._runRefreshCallbacks();
|
||
const e = Math.max(this._rowStart, 0),
|
||
t = Math.min(this._rowEnd, this._rowCount - 1);
|
||
this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(e, t), this._runRefreshCallbacks()
|
||
}
|
||
_runRefreshCallbacks() {
|
||
for (const e of this._refreshCallbacks) e(0);
|
||
this._refreshCallbacks = []
|
||
}
|
||
}
|
||
},
|
||
3236: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Terminal = void 0;
|
||
const s = i(3614),
|
||
r = i(3656),
|
||
n = i(3551),
|
||
o = i(9042),
|
||
a = i(3730),
|
||
h = i(1680),
|
||
c = i(3107),
|
||
l = i(5744),
|
||
d = i(2950),
|
||
_ = i(1296),
|
||
u = i(428),
|
||
f = i(4269),
|
||
v = i(5114),
|
||
g = i(8934),
|
||
p = i(3230),
|
||
m = i(9312),
|
||
C = i(4725),
|
||
S = i(6731),
|
||
b = i(8055),
|
||
w = i(8969),
|
||
y = i(8460),
|
||
L = i(844),
|
||
x = i(6114),
|
||
E = i(8437),
|
||
R = i(2584),
|
||
M = i(7399),
|
||
A = i(5941),
|
||
D = i(9074),
|
||
k = i(2585),
|
||
T = i(5435),
|
||
B = i(4567),
|
||
O = i(779);
|
||
class P extends w.CoreTerminal {
|
||
get onFocus() {
|
||
return this._onFocus.event
|
||
}
|
||
get onBlur() {
|
||
return this._onBlur.event
|
||
}
|
||
get onA11yChar() {
|
||
return this._onA11yCharEmitter.event
|
||
}
|
||
get onA11yTab() {
|
||
return this._onA11yTabEmitter.event
|
||
}
|
||
get onWillOpen() {
|
||
return this._onWillOpen.event
|
||
}
|
||
constructor(e = {}) {
|
||
super(e), this.browser = x, this._keyDownHandled = !1, this._keyDownSeen = !1, this._keyPressHandled = !1, this._unprocessedDeadKey = !1, this._accessibilityManager = this.register(new L.MutableDisposable), this._onCursorMove = this.register(new y.EventEmitter), this.onCursorMove = this._onCursorMove.event, this._onKey = this.register(new y.EventEmitter), this.onKey = this._onKey.event, this._onRender = this.register(new y.EventEmitter), this.onRender = this._onRender.event, this._onSelectionChange = this.register(new y.EventEmitter), this.onSelectionChange = this._onSelectionChange.event, this._onTitleChange = this.register(new y.EventEmitter), this.onTitleChange = this._onTitleChange.event, this._onBell = this.register(new y.EventEmitter), this.onBell = this._onBell.event, this._onFocus = this.register(new y.EventEmitter), this._onBlur = this.register(new y.EventEmitter), this._onA11yCharEmitter = this.register(new y.EventEmitter), this._onA11yTabEmitter = this.register(new y.EventEmitter), this._onWillOpen = this.register(new y.EventEmitter), this._setup(), this._decorationService = this._instantiationService.createInstance(D.DecorationService), this._instantiationService.setService(k.IDecorationService, this._decorationService), this._linkProviderService = this._instantiationService.createInstance(O.LinkProviderService), this._instantiationService.setService(C.ILinkProviderService, this._linkProviderService), this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(a.OscLinkProvider)), this.register(this._inputHandler.onRequestBell((() => this._onBell.fire()))), this.register(this._inputHandler.onRequestRefreshRows(((e, t) => this.refresh(e, t)))), this.register(this._inputHandler.onRequestSendFocus((() => this._reportFocus()))), this.register(this._inputHandler.onRequestReset((() => this.reset()))), this.register(this._inputHandler.onRequestWindowsOptionsReport((e => this._reportWindowsOptions(e)))), this.register(this._inputHandler.onColor((e => this._handleColorEvent(e)))), this.register((0, y.forwardEvent)(this._inputHandler.onCursorMove, this._onCursorMove)), this.register((0, y.forwardEvent)(this._inputHandler.onTitleChange, this._onTitleChange)), this.register((0, y.forwardEvent)(this._inputHandler.onA11yChar, this._onA11yCharEmitter)), this.register((0, y.forwardEvent)(this._inputHandler.onA11yTab, this._onA11yTabEmitter)), this.register(this._bufferService.onResize((e => this._afterResize(e.cols, e.rows)))), this.register((0, L.toDisposable)((() => {
|
||
this._customKeyEventHandler = void 0, this.element?.parentNode?.removeChild(this.element)
|
||
})))
|
||
}
|
||
_handleColorEvent(e) {
|
||
if (this._themeService)
|
||
for (const t of e) {
|
||
let e, i = "";
|
||
switch (t.index) {
|
||
case 256:
|
||
e = "foreground", i = "10";
|
||
break;
|
||
case 257:
|
||
e = "background", i = "11";
|
||
break;
|
||
case 258:
|
||
e = "cursor", i = "12";
|
||
break;
|
||
default:
|
||
e = "ansi", i = "4;" + t.index
|
||
}
|
||
switch (t.type) {
|
||
case 0:
|
||
const s = b.color.toColorRGB("ansi" === e ? this._themeService.colors.ansi[t.index] : this._themeService.colors[e]);
|
||
this.coreService.triggerDataEvent(`${R.C0.ESC}]${i};${(0, A.toRgbString)(s)}${R.C1_ESCAPED.ST}`);
|
||
break;
|
||
case 1:
|
||
if ("ansi" === e) this._themeService.modifyColors((e => e.ansi[t.index] = b.channels.toColor(...t.color)));
|
||
else {
|
||
const i = e;
|
||
this._themeService.modifyColors((e => e[i] = b.channels.toColor(...t.color)))
|
||
}
|
||
break;
|
||
case 2:
|
||
this._themeService.restoreColor(t.index)
|
||
}
|
||
}
|
||
}
|
||
_setup() {
|
||
super._setup(), this._customKeyEventHandler = void 0
|
||
}
|
||
get buffer() {
|
||
return this.buffers.active
|
||
}
|
||
focus() {
|
||
this.textarea && this.textarea.focus({
|
||
preventScroll: !0
|
||
})
|
||
}
|
||
_handleScreenReaderModeOptionChange(e) {
|
||
e ? !this._accessibilityManager.value && this._renderService && (this._accessibilityManager.value = this._instantiationService.createInstance(B.AccessibilityManager, this)) : this._accessibilityManager.clear()
|
||
}
|
||
_handleTextAreaFocus(e) {
|
||
this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent(R.C0.ESC + "[I"), this.element.classList.add("focus"), this._showCursor(), this._onFocus.fire()
|
||
}
|
||
blur() {
|
||
return this.textarea?.blur()
|
||
}
|
||
_handleTextAreaBlur() {
|
||
this.textarea.value = "", this.refresh(this.buffer.y, this.buffer.y), this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent(R.C0.ESC + "[O"), this.element.classList.remove("focus"), this._onBlur.fire()
|
||
}
|
||
_syncTextArea() {
|
||
if (!this.textarea || !this.buffer.isCursorInViewport || this._compositionHelper.isComposing || !this._renderService) return;
|
||
const e = this.buffer.ybase + this.buffer.y,
|
||
t = this.buffer.lines.get(e);
|
||
if (!t) return;
|
||
const i = Math.min(this.buffer.x, this.cols - 1),
|
||
s = this._renderService.dimensions.css.cell.height,
|
||
r = t.getWidth(i),
|
||
n = this._renderService.dimensions.css.cell.width * r,
|
||
o = this.buffer.y * this._renderService.dimensions.css.cell.height,
|
||
a = i * this._renderService.dimensions.css.cell.width;
|
||
this.textarea.style.left = a + "px", this.textarea.style.top = o + "px", this.textarea.style.width = n + "px", this.textarea.style.height = s + "px", this.textarea.style.lineHeight = s + "px", this.textarea.style.zIndex = "-5"
|
||
}
|
||
_initGlobal() {
|
||
this._bindKeys(), this.register((0, r.addDisposableDomListener)(this.element, "copy", (e => {
|
||
this.hasSelection() && (0, s.copyHandler)(e, this._selectionService)
|
||
})));
|
||
const e = e => (0, s.handlePasteEvent)(e, this.textarea, this.coreService, this.optionsService);
|
||
this.register((0, r.addDisposableDomListener)(this.textarea, "paste", e)), this.register((0, r.addDisposableDomListener)(this.element, "paste", e)), x.isFirefox ? this.register((0, r.addDisposableDomListener)(this.element, "mousedown", (e => {
|
||
2 === e.button && (0, s.rightClickHandler)(e, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord)
|
||
}))) : this.register((0, r.addDisposableDomListener)(this.element, "contextmenu", (e => {
|
||
(0, s.rightClickHandler)(e, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord)
|
||
}))), x.isLinux && this.register((0, r.addDisposableDomListener)(this.element, "auxclick", (e => {
|
||
1 === e.button && (0, s.moveTextAreaUnderMouseCursor)(e, this.textarea, this.screenElement)
|
||
})))
|
||
}
|
||
_bindKeys() {
|
||
this.register((0, r.addDisposableDomListener)(this.textarea, "keyup", (e => this._keyUp(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "keydown", (e => this._keyDown(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "keypress", (e => this._keyPress(e)), !0)), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionstart", (() => this._compositionHelper.compositionstart()))), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionupdate", (e => this._compositionHelper.compositionupdate(e)))), this.register((0, r.addDisposableDomListener)(this.textarea, "compositionend", (() => this._compositionHelper.compositionend()))), this.register((0, r.addDisposableDomListener)(this.textarea, "input", (e => this._inputEvent(e)), !0)), this.register(this.onRender((() => this._compositionHelper.updateCompositionElements())))
|
||
}
|
||
open(e) {
|
||
if (!e) throw new Error("Terminal requires a parent element.");
|
||
if (e.isConnected || this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"), this.element?.ownerDocument.defaultView && this._coreBrowserService) return void(this.element.ownerDocument.defaultView !== this._coreBrowserService.window && (this._coreBrowserService.window = this.element.ownerDocument.defaultView));
|
||
this._document = e.ownerDocument, this.options.documentOverride && this.options.documentOverride instanceof Document && (this._document = this.optionsService.rawOptions.documentOverride), this.element = this._document.createElement("div"), this.element.dir = "ltr", this.element.classList.add("terminal"), this.element.classList.add("xterm"), e.appendChild(this.element);
|
||
const t = this._document.createDocumentFragment();
|
||
this._viewportElement = this._document.createElement("div"), this._viewportElement.classList.add("xterm-viewport"), t.appendChild(this._viewportElement), this._viewportScrollArea = this._document.createElement("div"), this._viewportScrollArea.classList.add("xterm-scroll-area"), this._viewportElement.appendChild(this._viewportScrollArea), this.screenElement = this._document.createElement("div"), this.screenElement.classList.add("xterm-screen"), this.register((0, r.addDisposableDomListener)(this.screenElement, "mousemove", (e => this.updateCursorStyle(e)))), this._helperContainer = this._document.createElement("div"), this._helperContainer.classList.add("xterm-helpers"), this.screenElement.appendChild(this._helperContainer), t.appendChild(this.screenElement), this.textarea = this._document.createElement("textarea"), this.textarea.classList.add("xterm-helper-textarea"), this.textarea.setAttribute("aria-label", o.promptLabel), x.isChromeOS || 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._coreBrowserService = this.register(this._instantiationService.createInstance(v.CoreBrowserService, this.textarea, e.ownerDocument.defaultView ?? window, this._document ?? "undefined" != typeof window ? window.document : null)), this._instantiationService.setService(C.ICoreBrowserService, this._coreBrowserService), this.register((0, r.addDisposableDomListener)(this.textarea, "focus", (e => this._handleTextAreaFocus(e)))), this.register((0, r.addDisposableDomListener)(this.textarea, "blur", (() => this._handleTextAreaBlur()))), this._helperContainer.appendChild(this.textarea), this._charSizeService = this._instantiationService.createInstance(u.CharSizeService, this._document, this._helperContainer), this._instantiationService.setService(C.ICharSizeService, this._charSizeService), this._themeService = this._instantiationService.createInstance(S.ThemeService), this._instantiationService.setService(C.IThemeService, this._themeService), this._characterJoinerService = this._instantiationService.createInstance(f.CharacterJoinerService), this._instantiationService.setService(C.ICharacterJoinerService, this._characterJoinerService), this._renderService = this.register(this._instantiationService.createInstance(p.RenderService, this.rows, this.screenElement)), this._instantiationService.setService(C.IRenderService, this._renderService), this.register(this._renderService.onRenderedViewportChange((e => this._onRender.fire(e)))), this.onResize((e => this._renderService.resize(e.cols, e.rows))), this._compositionView = this._document.createElement("div"), this._compositionView.classList.add("composition-view"), this._compositionHelper = this._instantiationService.createInstance(d.CompositionHelper, this.textarea, this._compositionView), this._helperContainer.appendChild(this._compositionView), this._mouseService = this._instantiationService.createInstance(g.MouseService), this._instantiationService.setService(C.IMouseService, this._mouseService), this.linkifier = this.register(this._instantiationService.createInstance(n.Linkifier, this.screenElement)), this.element.appendChild(t);
|
||
try {
|
||
this._onWillOpen.fire(this.element)
|
||
} catch {}
|
||
this._renderService.hasRenderer() || this._renderService.setRenderer(this._createRenderer()), this.viewport = this._instantiationService.createInstance(h.Viewport, this._viewportElement, this._viewportScrollArea), this.viewport.onRequestScrollLines((e => this.scrollLines(e.amount, e.suppressScrollEvent, 1))), this.register(this._inputHandler.onRequestSyncScrollBar((() => this.viewport.syncScrollArea()))), this.register(this.viewport), this.register(this.onCursorMove((() => {
|
||
this._renderService.handleCursorMove(), this._syncTextArea()
|
||
}))), this.register(this.onResize((() => this._renderService.handleResize(this.cols, this.rows)))), this.register(this.onBlur((() => this._renderService.handleBlur()))), this.register(this.onFocus((() => this._renderService.handleFocus()))), this.register(this._renderService.onDimensionsChange((() => this.viewport.syncScrollArea()))), this._selectionService = this.register(this._instantiationService.createInstance(m.SelectionService, this.element, this.screenElement, this.linkifier)), this._instantiationService.setService(C.ISelectionService, this._selectionService), this.register(this._selectionService.onRequestScrollLines((e => this.scrollLines(e.amount, e.suppressScrollEvent)))), this.register(this._selectionService.onSelectionChange((() => this._onSelectionChange.fire()))), this.register(this._selectionService.onRequestRedraw((e => this._renderService.handleSelectionChanged(e.start, e.end, e.columnSelectMode)))), this.register(this._selectionService.onLinuxMouseSelection((e => {
|
||
this.textarea.value = e, this.textarea.focus(), this.textarea.select()
|
||
}))), this.register(this._onScroll.event((e => {
|
||
this.viewport.syncScrollArea(), this._selectionService.refresh()
|
||
}))), this.register((0, r.addDisposableDomListener)(this._viewportElement, "scroll", (() => this._selectionService.refresh()))), this.register(this._instantiationService.createInstance(c.BufferDecorationRenderer, this.screenElement)), this.register((0, r.addDisposableDomListener)(this.element, "mousedown", (e => this._selectionService.handleMouseDown(e)))), this.coreMouseService.areMouseEventsActive ? (this._selectionService.disable(), this.element.classList.add("enable-mouse-events")) : this._selectionService.enable(), this.options.screenReaderMode && (this._accessibilityManager.value = this._instantiationService.createInstance(B.AccessibilityManager, this)), this.register(this.optionsService.onSpecificOptionChange("screenReaderMode", (e => this._handleScreenReaderModeOptionChange(e)))), this.options.overviewRulerWidth && (this._overviewRulerRenderer = this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer, this._viewportElement, this.screenElement))), this.optionsService.onSpecificOptionChange("overviewRulerWidth", (e => {
|
||
!this._overviewRulerRenderer && e && this._viewportElement && this.screenElement && (this._overviewRulerRenderer = this.register(this._instantiationService.createInstance(l.OverviewRulerRenderer, this._viewportElement, this.screenElement)))
|
||
})), this._charSizeService.measure(), this.refresh(0, this.rows - 1), this._initGlobal(), this.bindMouse()
|
||
}
|
||
_createRenderer() {
|
||
return this._instantiationService.createInstance(_.DomRenderer, this, this._document, this.element, this.screenElement, this._viewportElement, this._helperContainer, this.linkifier)
|
||
}
|
||
bindMouse() {
|
||
const e = this,
|
||
t = this.element;
|
||
|
||
function i(t) {
|
||
const i = e._mouseService.getMouseReportCoords(t, e.screenElement);
|
||
if (!i) return !1;
|
||
let s, r;
|
||
switch (t.overrideType || t.type) {
|
||
case "mousemove":
|
||
r = 32, void 0 === t.buttons ? (s = 3, void 0 !== t.button && (s = t.button < 3 ? t.button : 3)) : s = 1 & t.buttons ? 0 : 4 & t.buttons ? 1 : 2 & t.buttons ? 2 : 3;
|
||
break;
|
||
case "mouseup":
|
||
r = 0, s = t.button < 3 ? t.button : 3;
|
||
break;
|
||
case "mousedown":
|
||
r = 1, s = t.button < 3 ? t.button : 3;
|
||
break;
|
||
case "wheel":
|
||
if (e._customWheelEventHandler && !1 === e._customWheelEventHandler(t)) return !1;
|
||
if (0 === e.viewport.getLinesScrolled(t)) return !1;
|
||
r = t.deltaY < 0 ? 0 : 1, s = 4;
|
||
break;
|
||
default:
|
||
return !1
|
||
}
|
||
return !(void 0 === r || void 0 === s || s > 4) && e.coreMouseService.triggerMouseEvent({
|
||
col: i.col,
|
||
row: i.row,
|
||
x: i.x,
|
||
y: i.y,
|
||
button: s,
|
||
action: r,
|
||
ctrl: t.ctrlKey,
|
||
alt: t.altKey,
|
||
shift: t.shiftKey
|
||
})
|
||
}
|
||
const s = {
|
||
mouseup: null,
|
||
wheel: null,
|
||
mousedrag: null,
|
||
mousemove: null
|
||
},
|
||
n = {
|
||
mouseup: e => (i(e), e.buttons || (this._document.removeEventListener("mouseup", s.mouseup), s.mousedrag && this._document.removeEventListener("mousemove", s.mousedrag)), this.cancel(e)),
|
||
wheel: e => (i(e), this.cancel(e, !0)),
|
||
mousedrag: e => {
|
||
e.buttons && i(e)
|
||
},
|
||
mousemove: e => {
|
||
e.buttons || i(e)
|
||
}
|
||
};
|
||
this.register(this.coreMouseService.onProtocolChange((e => {
|
||
e ? ("debug" === this.optionsService.rawOptions.logLevel && this._logService.debug("Binding to mouse events:", this.coreMouseService.explainEvents(e)), this.element.classList.add("enable-mouse-events"), this._selectionService.disable()) : (this._logService.debug("Unbinding from mouse events."), this.element.classList.remove("enable-mouse-events"), this._selectionService.enable()), 8 & e ? s.mousemove || (t.addEventListener("mousemove", n.mousemove), s.mousemove = n.mousemove) : (t.removeEventListener("mousemove", s.mousemove), s.mousemove = null), 16 & e ? s.wheel || (t.addEventListener("wheel", n.wheel, {
|
||
passive: !1
|
||
}), s.wheel = n.wheel) : (t.removeEventListener("wheel", s.wheel), s.wheel = null), 2 & e ? s.mouseup || (s.mouseup = n.mouseup) : (this._document.removeEventListener("mouseup", s.mouseup), s.mouseup = null), 4 & e ? s.mousedrag || (s.mousedrag = n.mousedrag) : (this._document.removeEventListener("mousemove", s.mousedrag), s.mousedrag = null)
|
||
}))), this.coreMouseService.activeProtocol = this.coreMouseService.activeProtocol, this.register((0, r.addDisposableDomListener)(t, "mousedown", (e => {
|
||
if (e.preventDefault(), this.focus(), this.coreMouseService.areMouseEventsActive && !this._selectionService.shouldForceSelection(e)) return i(e), s.mouseup && this._document.addEventListener("mouseup", s.mouseup), s.mousedrag && this._document.addEventListener("mousemove", s.mousedrag), this.cancel(e)
|
||
}))), this.register((0, r.addDisposableDomListener)(t, "wheel", (e => {
|
||
if (!s.wheel) {
|
||
if (this._customWheelEventHandler && !1 === this._customWheelEventHandler(e)) return !1;
|
||
if (!this.buffer.hasScrollback) {
|
||
const t = this.viewport.getLinesScrolled(e);
|
||
if (0 === t) return;
|
||
const i = R.C0.ESC + (this.coreService.decPrivateModes.applicationCursorKeys ? "O" : "[") + (e.deltaY < 0 ? "A" : "B");
|
||
let s = "";
|
||
for (let e = 0; e < Math.abs(t); e++) s += i;
|
||
return this.coreService.triggerDataEvent(s, !0), this.cancel(e, !0)
|
||
}
|
||
return this.viewport.handleWheel(e) ? this.cancel(e) : void 0
|
||
}
|
||
}), {
|
||
passive: !1
|
||
})), this.register((0, r.addDisposableDomListener)(t, "touchstart", (e => {
|
||
if (!this.coreMouseService.areMouseEventsActive) return this.viewport.handleTouchStart(e), this.cancel(e)
|
||
}), {
|
||
passive: !0
|
||
})), this.register((0, r.addDisposableDomListener)(t, "touchmove", (e => {
|
||
if (!this.coreMouseService.areMouseEventsActive) return this.viewport.handleTouchMove(e) ? void 0 : this.cancel(e)
|
||
}), {
|
||
passive: !1
|
||
}))
|
||
}
|
||
refresh(e, t) {
|
||
this._renderService?.refreshRows(e, t)
|
||
}
|
||
updateCursorStyle(e) {
|
||
this._selectionService?.shouldColumnSelect(e) ? this.element.classList.add("column-select") : this.element.classList.remove("column-select")
|
||
}
|
||
_showCursor() {
|
||
this.coreService.isCursorInitialized || (this.coreService.isCursorInitialized = !0, this.refresh(this.buffer.y, this.buffer.y))
|
||
}
|
||
scrollLines(e, t, i = 0) {
|
||
1 === i ? (super.scrollLines(e, t, i), this.refresh(0, this.rows - 1)) : this.viewport?.scrollLines(e)
|
||
}
|
||
paste(e) {
|
||
(0, s.paste)(e, this.textarea, this.coreService, this.optionsService)
|
||
}
|
||
attachCustomKeyEventHandler(e) {
|
||
this._customKeyEventHandler = e
|
||
}
|
||
attachCustomWheelEventHandler(e) {
|
||
this._customWheelEventHandler = e
|
||
}
|
||
registerLinkProvider(e) {
|
||
return this._linkProviderService.registerLinkProvider(e)
|
||
}
|
||
registerCharacterJoiner(e) {
|
||
if (!this._characterJoinerService) throw new Error("Terminal must be opened first");
|
||
const t = this._characterJoinerService.register(e);
|
||
return this.refresh(0, this.rows - 1), t
|
||
}
|
||
deregisterCharacterJoiner(e) {
|
||
if (!this._characterJoinerService) throw new Error("Terminal must be opened first");
|
||
this._characterJoinerService.deregister(e) && this.refresh(0, this.rows - 1)
|
||
}
|
||
get markers() {
|
||
return this.buffer.markers
|
||
}
|
||
registerMarker(e) {
|
||
return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + e)
|
||
}
|
||
registerDecoration(e) {
|
||
return this._decorationService.registerDecoration(e)
|
||
}
|
||
hasSelection() {
|
||
return !!this._selectionService && this._selectionService.hasSelection
|
||
}
|
||
select(e, t, i) {
|
||
this._selectionService.setSelection(e, t, i)
|
||
}
|
||
getSelection() {
|
||
return this._selectionService ? this._selectionService.selectionText : ""
|
||
}
|
||
getSelectionPosition() {
|
||
if (this._selectionService && this._selectionService.hasSelection) return {
|
||
start: {
|
||
x: this._selectionService.selectionStart[0],
|
||
y: this._selectionService.selectionStart[1]
|
||
},
|
||
end: {
|
||
x: this._selectionService.selectionEnd[0],
|
||
y: this._selectionService.selectionEnd[1]
|
||
}
|
||
}
|
||
}
|
||
clearSelection() {
|
||
this._selectionService?.clearSelection()
|
||
}
|
||
selectAll() {
|
||
this._selectionService?.selectAll()
|
||
}
|
||
selectLines(e, t) {
|
||
this._selectionService?.selectLines(e, t)
|
||
}
|
||
_keyDown(e) {
|
||
if (this._keyDownHandled = !1, this._keyDownSeen = !0, this._customKeyEventHandler && !1 === this._customKeyEventHandler(e)) return !1;
|
||
const t = this.browser.isMac && this.options.macOptionIsMeta && e.altKey;
|
||
if (!t && !this._compositionHelper.keydown(e)) return this.options.scrollOnUserInput && this.buffer.ybase !== this.buffer.ydisp && this.scrollToBottom(), !1;
|
||
t || "Dead" !== e.key && "AltGraph" !== e.key || (this._unprocessedDeadKey = !0);
|
||
const i = (0, M.evaluateKeyboardEvent)(e, this.coreService.decPrivateModes.applicationCursorKeys, this.browser.isMac, this.options.macOptionIsMeta);
|
||
if (this.updateCursorStyle(e), 3 === i.type || 2 === i.type) {
|
||
const t = this.rows - 1;
|
||
return this.scrollLines(2 === i.type ? -t : t), this.cancel(e, !0)
|
||
}
|
||
return 1 === i.type && this.selectAll(), !!this._isThirdLevelShift(this.browser, e) || (i.cancel && this.cancel(e, !0), !i.key || !!(e.key && !e.ctrlKey && !e.altKey && !e.metaKey && 1 === e.key.length && e.key.charCodeAt(0) >= 65 && e.key.charCodeAt(0) <= 90) || (this._unprocessedDeadKey ? (this._unprocessedDeadKey = !1, !0) : (i.key !== R.C0.ETX && i.key !== R.C0.CR || (this.textarea.value = ""), this._onKey.fire({
|
||
key: i.key,
|
||
domEvent: e
|
||
}), this._showCursor(), this.coreService.triggerDataEvent(i.key, !0), !this.optionsService.rawOptions.screenReaderMode || e.altKey || e.ctrlKey ? this.cancel(e, !0) : void(this._keyDownHandled = !0))))
|
||
}
|
||
_isThirdLevelShift(e, t) {
|
||
const i = e.isMac && !this.options.macOptionIsMeta && t.altKey && !t.ctrlKey && !t.metaKey || e.isWindows && t.altKey && t.ctrlKey && !t.metaKey || e.isWindows && t.getModifierState("AltGraph");
|
||
return "keypress" === t.type ? i : i && (!t.keyCode || t.keyCode > 47)
|
||
}
|
||
_keyUp(e) {
|
||
this._keyDownSeen = !1, this._customKeyEventHandler && !1 === this._customKeyEventHandler(e) || (function(e) {
|
||
return 16 === e.keyCode || 17 === e.keyCode || 18 === e.keyCode
|
||
}(e) || this.focus(), this.updateCursorStyle(e), this._keyPressHandled = !1)
|
||
}
|
||
_keyPress(e) {
|
||
let t;
|
||
if (this._keyPressHandled = !1, this._keyDownHandled) return !1;
|
||
if (this._customKeyEventHandler && !1 === this._customKeyEventHandler(e)) return !1;
|
||
if (this.cancel(e), e.charCode) t = e.charCode;
|
||
else if (null === e.which || void 0 === e.which) t = e.keyCode;
|
||
else {
|
||
if (0 === e.which || 0 === e.charCode) return !1;
|
||
t = e.which
|
||
}
|
||
return !(!t || (e.altKey || e.ctrlKey || e.metaKey) && !this._isThirdLevelShift(this.browser, e) || (t = String.fromCharCode(t), this._onKey.fire({
|
||
key: t,
|
||
domEvent: e
|
||
}), this._showCursor(), this.coreService.triggerDataEvent(t, !0), this._keyPressHandled = !0, this._unprocessedDeadKey = !1, 0))
|
||
}
|
||
_inputEvent(e) {
|
||
if (e.data && "insertText" === e.inputType && (!e.composed || !this._keyDownSeen) && !this.optionsService.rawOptions.screenReaderMode) {
|
||
if (this._keyPressHandled) return !1;
|
||
this._unprocessedDeadKey = !1;
|
||
const t = e.data;
|
||
return this.coreService.triggerDataEvent(t, !0), this.cancel(e), !0
|
||
}
|
||
return !1
|
||
}
|
||
resize(e, t) {
|
||
e !== this.cols || t !== this.rows ? super.resize(e, t) : this._charSizeService && !this._charSizeService.hasValidSize && this._charSizeService.measure()
|
||
}
|
||
_afterResize(e, t) {
|
||
this._charSizeService?.measure(), this.viewport?.syncScrollArea(!0)
|
||
}
|
||
clear() {
|
||
if (0 !== this.buffer.ybase || 0 !== this.buffer.y) {
|
||
this.buffer.clearAllMarkers(), 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 (let e = 1; e < this.rows; e++) this.buffer.lines.push(this.buffer.getBlankLine(E.DEFAULT_ATTR_DATA));
|
||
this._onScroll.fire({
|
||
position: this.buffer.ydisp,
|
||
source: 0
|
||
}), this.viewport?.reset(), this.refresh(0, this.rows - 1)
|
||
}
|
||
}
|
||
reset() {
|
||
this.options.rows = this.rows, this.options.cols = this.cols;
|
||
const e = this._customKeyEventHandler;
|
||
this._setup(), super.reset(), this._selectionService?.reset(), this._decorationService.reset(), this.viewport?.reset(), this._customKeyEventHandler = e, this.refresh(0, this.rows - 1)
|
||
}
|
||
clearTextureAtlas() {
|
||
this._renderService?.clearTextureAtlas()
|
||
}
|
||
_reportFocus() {
|
||
this.element?.classList.contains("focus") ? this.coreService.triggerDataEvent(R.C0.ESC + "[I") : this.coreService.triggerDataEvent(R.C0.ESC + "[O")
|
||
}
|
||
_reportWindowsOptions(e) {
|
||
if (this._renderService) switch (e) {
|
||
case T.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:
|
||
const e = this._renderService.dimensions.css.canvas.width.toFixed(0),
|
||
t = this._renderService.dimensions.css.canvas.height.toFixed(0);
|
||
this.coreService.triggerDataEvent(`${R.C0.ESC}[4;${t};${e}t`);
|
||
break;
|
||
case T.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:
|
||
const i = this._renderService.dimensions.css.cell.width.toFixed(0),
|
||
s = this._renderService.dimensions.css.cell.height.toFixed(0);
|
||
this.coreService.triggerDataEvent(`${R.C0.ESC}[6;${s};${i}t`)
|
||
}
|
||
}
|
||
cancel(e, t) {
|
||
if (this.options.cancelEvents || t) return e.preventDefault(), e.stopPropagation(), !1
|
||
}
|
||
}
|
||
t.Terminal = P
|
||
},
|
||
9924: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TimeBasedDebouncer = void 0, t.TimeBasedDebouncer = class {
|
||
constructor(e, t = 1e3) {
|
||
this._renderCallback = e, this._debounceThresholdMS = t, this._lastRefreshMs = 0, this._additionalRefreshRequested = !1
|
||
}
|
||
dispose() {
|
||
this._refreshTimeoutID && clearTimeout(this._refreshTimeoutID)
|
||
}
|
||
refresh(e, t, i) {
|
||
this._rowCount = i, e = void 0 !== e ? e : 0, t = void 0 !== t ? t : this._rowCount - 1, this._rowStart = void 0 !== this._rowStart ? Math.min(this._rowStart, e) : e, this._rowEnd = void 0 !== this._rowEnd ? Math.max(this._rowEnd, t) : t;
|
||
const s = Date.now();
|
||
if (s - this._lastRefreshMs >= this._debounceThresholdMS) this._lastRefreshMs = s, this._innerRefresh();
|
||
else if (!this._additionalRefreshRequested) {
|
||
const e = s - this._lastRefreshMs,
|
||
t = this._debounceThresholdMS - e;
|
||
this._additionalRefreshRequested = !0, this._refreshTimeoutID = window.setTimeout((() => {
|
||
this._lastRefreshMs = Date.now(), this._innerRefresh(), this._additionalRefreshRequested = !1, this._refreshTimeoutID = void 0
|
||
}), t)
|
||
}
|
||
}
|
||
_innerRefresh() {
|
||
if (void 0 === this._rowStart || void 0 === this._rowEnd || void 0 === this._rowCount) return;
|
||
const e = Math.max(this._rowStart, 0),
|
||
t = Math.min(this._rowEnd, this._rowCount - 1);
|
||
this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(e, t)
|
||
}
|
||
}
|
||
},
|
||
1680: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Viewport = void 0;
|
||
const n = i(3656),
|
||
o = i(4725),
|
||
a = i(8460),
|
||
h = i(844),
|
||
c = i(2585);
|
||
let l = t.Viewport = class extends h.Disposable {
|
||
constructor(e, t, i, s, r, o, h, c) {
|
||
super(), this._viewportElement = e, this._scrollArea = t, this._bufferService = i, this._optionsService = s, this._charSizeService = r, this._renderService = o, this._coreBrowserService = h, this.scrollBarWidth = 0, this._currentRowHeight = 0, this._currentDeviceCellHeight = 0, this._lastRecordedBufferLength = 0, this._lastRecordedViewportHeight = 0, this._lastRecordedBufferHeight = 0, this._lastTouchY = 0, this._lastScrollTop = 0, this._wheelPartialScroll = 0, this._refreshAnimationFrame = null, this._ignoreNextScrollEvent = !1, this._smoothScrollState = {
|
||
startTime: 0,
|
||
origin: -1,
|
||
target: -1
|
||
}, this._onRequestScrollLines = this.register(new a.EventEmitter), this.onRequestScrollLines = this._onRequestScrollLines.event, this.scrollBarWidth = this._viewportElement.offsetWidth - this._scrollArea.offsetWidth || 15, this.register((0, n.addDisposableDomListener)(this._viewportElement, "scroll", this._handleScroll.bind(this))), this._activeBuffer = this._bufferService.buffer, this.register(this._bufferService.buffers.onBufferActivate((e => this._activeBuffer = e.activeBuffer))), this._renderDimensions = this._renderService.dimensions, this.register(this._renderService.onDimensionsChange((e => this._renderDimensions = e))), this._handleThemeChange(c.colors), this.register(c.onChangeColors((e => this._handleThemeChange(e)))), this.register(this._optionsService.onSpecificOptionChange("scrollback", (() => this.syncScrollArea()))), setTimeout((() => this.syncScrollArea()))
|
||
}
|
||
_handleThemeChange(e) {
|
||
this._viewportElement.style.backgroundColor = e.background.css
|
||
}
|
||
reset() {
|
||
this._currentRowHeight = 0, this._currentDeviceCellHeight = 0, this._lastRecordedBufferLength = 0, this._lastRecordedViewportHeight = 0, this._lastRecordedBufferHeight = 0, this._lastTouchY = 0, this._lastScrollTop = 0, this._coreBrowserService.window.requestAnimationFrame((() => this.syncScrollArea()))
|
||
}
|
||
_refresh(e) {
|
||
if (e) return this._innerRefresh(), void(null !== this._refreshAnimationFrame && this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));
|
||
null === this._refreshAnimationFrame && (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._innerRefresh())))
|
||
}
|
||
_innerRefresh() {
|
||
if (this._charSizeService.height > 0) {
|
||
this._currentRowHeight = this._renderDimensions.device.cell.height / this._coreBrowserService.dpr, this._currentDeviceCellHeight = this._renderDimensions.device.cell.height, this._lastRecordedViewportHeight = this._viewportElement.offsetHeight;
|
||
const e = Math.round(this._currentRowHeight * this._lastRecordedBufferLength) + (this._lastRecordedViewportHeight - this._renderDimensions.css.canvas.height);
|
||
this._lastRecordedBufferHeight !== e && (this._lastRecordedBufferHeight = e, this._scrollArea.style.height = this._lastRecordedBufferHeight + "px")
|
||
}
|
||
const e = this._bufferService.buffer.ydisp * this._currentRowHeight;
|
||
this._viewportElement.scrollTop !== e && (this._ignoreNextScrollEvent = !0, this._viewportElement.scrollTop = e), this._refreshAnimationFrame = null
|
||
}
|
||
syncScrollArea(e = !1) {
|
||
if (this._lastRecordedBufferLength !== this._bufferService.buffer.lines.length) return this._lastRecordedBufferLength = this._bufferService.buffer.lines.length, void this._refresh(e);
|
||
this._lastRecordedViewportHeight === this._renderService.dimensions.css.canvas.height && this._lastScrollTop === this._activeBuffer.ydisp * this._currentRowHeight && this._renderDimensions.device.cell.height === this._currentDeviceCellHeight || this._refresh(e)
|
||
}
|
||
_handleScroll(e) {
|
||
if (this._lastScrollTop = this._viewportElement.scrollTop, !this._viewportElement.offsetParent) return;
|
||
if (this._ignoreNextScrollEvent) return this._ignoreNextScrollEvent = !1, void this._onRequestScrollLines.fire({
|
||
amount: 0,
|
||
suppressScrollEvent: !0
|
||
});
|
||
const t = Math.round(this._lastScrollTop / this._currentRowHeight) - this._bufferService.buffer.ydisp;
|
||
this._onRequestScrollLines.fire({
|
||
amount: t,
|
||
suppressScrollEvent: !0
|
||
})
|
||
}
|
||
_smoothScroll() {
|
||
if (this._isDisposed || -1 === this._smoothScrollState.origin || -1 === this._smoothScrollState.target) return;
|
||
const e = this._smoothScrollPercent();
|
||
this._viewportElement.scrollTop = this._smoothScrollState.origin + Math.round(e * (this._smoothScrollState.target - this._smoothScrollState.origin)), e < 1 ? this._coreBrowserService.window.requestAnimationFrame((() => this._smoothScroll())) : this._clearSmoothScrollState()
|
||
}
|
||
_smoothScrollPercent() {
|
||
return this._optionsService.rawOptions.smoothScrollDuration && this._smoothScrollState.startTime ? Math.max(Math.min((Date.now() - this._smoothScrollState.startTime) / this._optionsService.rawOptions.smoothScrollDuration, 1), 0) : 1
|
||
}
|
||
_clearSmoothScrollState() {
|
||
this._smoothScrollState.startTime = 0, this._smoothScrollState.origin = -1, this._smoothScrollState.target = -1
|
||
}
|
||
_bubbleScroll(e, t) {
|
||
const i = this._viewportElement.scrollTop + this._lastRecordedViewportHeight;
|
||
return !(t < 0 && 0 !== this._viewportElement.scrollTop || t > 0 && i < this._lastRecordedBufferHeight) || (e.cancelable && e.preventDefault(), !1)
|
||
}
|
||
handleWheel(e) {
|
||
const t = this._getPixelsScrolled(e);
|
||
return 0 !== t && (this._optionsService.rawOptions.smoothScrollDuration ? (this._smoothScrollState.startTime = Date.now(), this._smoothScrollPercent() < 1 ? (this._smoothScrollState.origin = this._viewportElement.scrollTop, -1 === this._smoothScrollState.target ? this._smoothScrollState.target = this._viewportElement.scrollTop + t : this._smoothScrollState.target += t, this._smoothScrollState.target = Math.max(Math.min(this._smoothScrollState.target, this._viewportElement.scrollHeight), 0), this._smoothScroll()) : this._clearSmoothScrollState()) : this._viewportElement.scrollTop += t, this._bubbleScroll(e, t))
|
||
}
|
||
scrollLines(e) {
|
||
if (0 !== e)
|
||
if (this._optionsService.rawOptions.smoothScrollDuration) {
|
||
const t = e * this._currentRowHeight;
|
||
this._smoothScrollState.startTime = Date.now(), this._smoothScrollPercent() < 1 ? (this._smoothScrollState.origin = this._viewportElement.scrollTop, this._smoothScrollState.target = this._smoothScrollState.origin + t, this._smoothScrollState.target = Math.max(Math.min(this._smoothScrollState.target, this._viewportElement.scrollHeight), 0), this._smoothScroll()) : this._clearSmoothScrollState()
|
||
} else this._onRequestScrollLines.fire({
|
||
amount: e,
|
||
suppressScrollEvent: !1
|
||
})
|
||
}
|
||
_getPixelsScrolled(e) {
|
||
if (0 === e.deltaY || e.shiftKey) return 0;
|
||
let t = this._applyScrollModifier(e.deltaY, e);
|
||
return e.deltaMode === WheelEvent.DOM_DELTA_LINE ? t *= this._currentRowHeight : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= this._currentRowHeight * this._bufferService.rows), t
|
||
}
|
||
getBufferElements(e, t) {
|
||
let i, s = "";
|
||
const r = [],
|
||
n = t ?? this._bufferService.buffer.lines.length,
|
||
o = this._bufferService.buffer.lines;
|
||
for (let t = e; t < n; t++) {
|
||
const e = o.get(t);
|
||
if (!e) continue;
|
||
const n = o.get(t + 1)?.isWrapped;
|
||
if (s += e.translateToString(!n), !n || t === o.length - 1) {
|
||
const e = document.createElement("div");
|
||
e.textContent = s, r.push(e), s.length > 0 && (i = e), s = ""
|
||
}
|
||
}
|
||
return {
|
||
bufferElements: r,
|
||
cursorElement: i
|
||
}
|
||
}
|
||
getLinesScrolled(e) {
|
||
if (0 === e.deltaY || e.shiftKey) return 0;
|
||
let t = this._applyScrollModifier(e.deltaY, e);
|
||
return e.deltaMode === WheelEvent.DOM_DELTA_PIXEL ? (t /= this._currentRowHeight + 0, this._wheelPartialScroll += t, t = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1), this._wheelPartialScroll %= 1) : e.deltaMode === WheelEvent.DOM_DELTA_PAGE && (t *= this._bufferService.rows), t
|
||
}
|
||
_applyScrollModifier(e, t) {
|
||
const i = this._optionsService.rawOptions.fastScrollModifier;
|
||
return "alt" === i && t.altKey || "ctrl" === i && t.ctrlKey || "shift" === i && t.shiftKey ? e * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity : e * this._optionsService.rawOptions.scrollSensitivity
|
||
}
|
||
handleTouchStart(e) {
|
||
this._lastTouchY = e.touches[0].pageY
|
||
}
|
||
handleTouchMove(e) {
|
||
const t = this._lastTouchY - e.touches[0].pageY;
|
||
return this._lastTouchY = e.touches[0].pageY, 0 !== t && (this._viewportElement.scrollTop += t, this._bubbleScroll(e, t))
|
||
}
|
||
};
|
||
t.Viewport = l = s([r(2, c.IBufferService), r(3, c.IOptionsService), r(4, o.ICharSizeService), r(5, o.IRenderService), r(6, o.ICoreBrowserService), r(7, o.IThemeService)], l)
|
||
},
|
||
3107: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferDecorationRenderer = void 0;
|
||
const n = i(4725),
|
||
o = i(844),
|
||
a = i(2585);
|
||
let h = t.BufferDecorationRenderer = class extends o.Disposable {
|
||
constructor(e, t, i, s, r) {
|
||
super(), this._screenElement = e, this._bufferService = t, this._coreBrowserService = i, this._decorationService = s, this._renderService = r, this._decorationElements = new Map, this._altBufferIsActive = !1, this._dimensionsChanged = !1, this._container = document.createElement("div"), this._container.classList.add("xterm-decoration-container"), this._screenElement.appendChild(this._container), this.register(this._renderService.onRenderedViewportChange((() => this._doRefreshDecorations()))), this.register(this._renderService.onDimensionsChange((() => {
|
||
this._dimensionsChanged = !0, this._queueRefresh()
|
||
}))), this.register(this._coreBrowserService.onDprChange((() => this._queueRefresh()))), this.register(this._bufferService.buffers.onBufferActivate((() => {
|
||
this._altBufferIsActive = this._bufferService.buffer === this._bufferService.buffers.alt
|
||
}))), this.register(this._decorationService.onDecorationRegistered((() => this._queueRefresh()))), this.register(this._decorationService.onDecorationRemoved((e => this._removeDecoration(e)))), this.register((0, o.toDisposable)((() => {
|
||
this._container.remove(), this._decorationElements.clear()
|
||
})))
|
||
}
|
||
_queueRefresh() {
|
||
void 0 === this._animationFrame && (this._animationFrame = this._renderService.addRefreshCallback((() => {
|
||
this._doRefreshDecorations(), this._animationFrame = void 0
|
||
})))
|
||
}
|
||
_doRefreshDecorations() {
|
||
for (const e of this._decorationService.decorations) this._renderDecoration(e);
|
||
this._dimensionsChanged = !1
|
||
}
|
||
_renderDecoration(e) {
|
||
this._refreshStyle(e), this._dimensionsChanged && this._refreshXPosition(e)
|
||
}
|
||
_createElement(e) {
|
||
const t = this._coreBrowserService.mainDocument.createElement("div");
|
||
t.classList.add("xterm-decoration"), t.classList.toggle("xterm-decoration-top-layer", "top" === e?.options?.layer), t.style.width = `${Math.round((e.options.width || 1) * this._renderService.dimensions.css.cell.width)}px`, t.style.height = (e.options.height || 1) * this._renderService.dimensions.css.cell.height + "px", t.style.top = (e.marker.line - this._bufferService.buffers.active.ydisp) * this._renderService.dimensions.css.cell.height + "px", t.style.lineHeight = `${this._renderService.dimensions.css.cell.height}px`;
|
||
const i = e.options.x ?? 0;
|
||
return i && i > this._bufferService.cols && (t.style.display = "none"), this._refreshXPosition(e, t), t
|
||
}
|
||
_refreshStyle(e) {
|
||
const t = e.marker.line - this._bufferService.buffers.active.ydisp;
|
||
if (t < 0 || t >= this._bufferService.rows) e.element && (e.element.style.display = "none", e.onRenderEmitter.fire(e.element));
|
||
else {
|
||
let i = this._decorationElements.get(e);
|
||
i || (i = this._createElement(e), e.element = i, this._decorationElements.set(e, i), this._container.appendChild(i), e.onDispose((() => {
|
||
this._decorationElements.delete(e), i.remove()
|
||
}))), i.style.top = t * this._renderService.dimensions.css.cell.height + "px", i.style.display = this._altBufferIsActive ? "none" : "block", e.onRenderEmitter.fire(i)
|
||
}
|
||
}
|
||
_refreshXPosition(e, t = e.element) {
|
||
if (!t) return;
|
||
const i = e.options.x ?? 0;
|
||
"right" === (e.options.anchor || "left") ? t.style.right = i ? i * this._renderService.dimensions.css.cell.width + "px" : "": t.style.left = i ? i * this._renderService.dimensions.css.cell.width + "px" : ""
|
||
}
|
||
_removeDecoration(e) {
|
||
this._decorationElements.get(e)?.remove(), this._decorationElements.delete(e), e.dispose()
|
||
}
|
||
};
|
||
t.BufferDecorationRenderer = h = s([r(1, a.IBufferService), r(2, n.ICoreBrowserService), r(3, a.IDecorationService), r(4, n.IRenderService)], h)
|
||
},
|
||
5871: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ColorZoneStore = void 0, t.ColorZoneStore = class {
|
||
constructor() {
|
||
this._zones = [], this._zonePool = [], this._zonePoolIndex = 0, this._linePadding = {
|
||
full: 0,
|
||
left: 0,
|
||
center: 0,
|
||
right: 0
|
||
}
|
||
}
|
||
get zones() {
|
||
return this._zonePool.length = Math.min(this._zonePool.length, this._zones.length), this._zones
|
||
}
|
||
clear() {
|
||
this._zones.length = 0, this._zonePoolIndex = 0
|
||
}
|
||
addDecoration(e) {
|
||
if (e.options.overviewRulerOptions) {
|
||
for (const t of this._zones)
|
||
if (t.color === e.options.overviewRulerOptions.color && t.position === e.options.overviewRulerOptions.position) {
|
||
if (this._lineIntersectsZone(t, e.marker.line)) return;
|
||
if (this._lineAdjacentToZone(t, e.marker.line, e.options.overviewRulerOptions.position)) return void this._addLineToZone(t, e.marker.line)
|
||
} if (this._zonePoolIndex < this._zonePool.length) return this._zonePool[this._zonePoolIndex].color = e.options.overviewRulerOptions.color, this._zonePool[this._zonePoolIndex].position = e.options.overviewRulerOptions.position, this._zonePool[this._zonePoolIndex].startBufferLine = e.marker.line, this._zonePool[this._zonePoolIndex].endBufferLine = e.marker.line, void this._zones.push(this._zonePool[this._zonePoolIndex++]);
|
||
this._zones.push({
|
||
color: e.options.overviewRulerOptions.color,
|
||
position: e.options.overviewRulerOptions.position,
|
||
startBufferLine: e.marker.line,
|
||
endBufferLine: e.marker.line
|
||
}), this._zonePool.push(this._zones[this._zones.length - 1]), this._zonePoolIndex++
|
||
}
|
||
}
|
||
setPadding(e) {
|
||
this._linePadding = e
|
||
}
|
||
_lineIntersectsZone(e, t) {
|
||
return t >= e.startBufferLine && t <= e.endBufferLine
|
||
}
|
||
_lineAdjacentToZone(e, t, i) {
|
||
return t >= e.startBufferLine - this._linePadding[i || "full"] && t <= e.endBufferLine + this._linePadding[i || "full"]
|
||
}
|
||
_addLineToZone(e, t) {
|
||
e.startBufferLine = Math.min(e.startBufferLine, t), e.endBufferLine = Math.max(e.endBufferLine, t)
|
||
}
|
||
}
|
||
},
|
||
5744: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.OverviewRulerRenderer = void 0;
|
||
const n = i(5871),
|
||
o = i(4725),
|
||
a = i(844),
|
||
h = i(2585),
|
||
c = {
|
||
full: 0,
|
||
left: 0,
|
||
center: 0,
|
||
right: 0
|
||
},
|
||
l = {
|
||
full: 0,
|
||
left: 0,
|
||
center: 0,
|
||
right: 0
|
||
},
|
||
d = {
|
||
full: 0,
|
||
left: 0,
|
||
center: 0,
|
||
right: 0
|
||
};
|
||
let _ = t.OverviewRulerRenderer = class extends a.Disposable {
|
||
get _width() {
|
||
return this._optionsService.options.overviewRulerWidth || 0
|
||
}
|
||
constructor(e, t, i, s, r, o, h) {
|
||
super(), this._viewportElement = e, this._screenElement = t, this._bufferService = i, this._decorationService = s, this._renderService = r, this._optionsService = o, this._coreBrowserService = h, this._colorZoneStore = new n.ColorZoneStore, this._shouldUpdateDimensions = !0, this._shouldUpdateAnchor = !0, this._lastKnownBufferLength = 0, this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add("xterm-decoration-overview-ruler"), this._refreshCanvasDimensions(), this._viewportElement.parentElement?.insertBefore(this._canvas, this._viewportElement);
|
||
const c = this._canvas.getContext("2d");
|
||
if (!c) throw new Error("Ctx cannot be null");
|
||
this._ctx = c, this._registerDecorationListeners(), this._registerBufferChangeListeners(), this._registerDimensionChangeListeners(), this.register((0, a.toDisposable)((() => {
|
||
this._canvas?.remove()
|
||
})))
|
||
}
|
||
_registerDecorationListeners() {
|
||
this.register(this._decorationService.onDecorationRegistered((() => this._queueRefresh(void 0, !0)))), this.register(this._decorationService.onDecorationRemoved((() => this._queueRefresh(void 0, !0))))
|
||
}
|
||
_registerBufferChangeListeners() {
|
||
this.register(this._renderService.onRenderedViewportChange((() => this._queueRefresh()))), this.register(this._bufferService.buffers.onBufferActivate((() => {
|
||
this._canvas.style.display = this._bufferService.buffer === this._bufferService.buffers.alt ? "none" : "block"
|
||
}))), this.register(this._bufferService.onScroll((() => {
|
||
this._lastKnownBufferLength !== this._bufferService.buffers.normal.lines.length && (this._refreshDrawHeightConstants(), this._refreshColorZonePadding())
|
||
})))
|
||
}
|
||
_registerDimensionChangeListeners() {
|
||
this.register(this._renderService.onRender((() => {
|
||
this._containerHeight && this._containerHeight === this._screenElement.clientHeight || (this._queueRefresh(!0), this._containerHeight = this._screenElement.clientHeight)
|
||
}))), this.register(this._optionsService.onSpecificOptionChange("overviewRulerWidth", (() => this._queueRefresh(!0)))), this.register(this._coreBrowserService.onDprChange((() => this._queueRefresh(!0)))), this._queueRefresh(!0)
|
||
}
|
||
_refreshDrawConstants() {
|
||
const e = Math.floor(this._canvas.width / 3),
|
||
t = Math.ceil(this._canvas.width / 3);
|
||
l.full = this._canvas.width, l.left = e, l.center = t, l.right = e, this._refreshDrawHeightConstants(), d.full = 0, d.left = 0, d.center = l.left, d.right = l.left + l.center
|
||
}
|
||
_refreshDrawHeightConstants() {
|
||
c.full = Math.round(2 * this._coreBrowserService.dpr);
|
||
const e = this._canvas.height / this._bufferService.buffer.lines.length,
|
||
t = Math.round(Math.max(Math.min(e, 12), 6) * this._coreBrowserService.dpr);
|
||
c.left = t, c.center = t, c.right = t
|
||
}
|
||
_refreshColorZonePadding() {
|
||
this._colorZoneStore.setPadding({
|
||
full: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.full),
|
||
left: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.left),
|
||
center: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.center),
|
||
right: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * c.right)
|
||
}), this._lastKnownBufferLength = this._bufferService.buffers.normal.lines.length
|
||
}
|
||
_refreshCanvasDimensions() {
|
||
this._canvas.style.width = `${this._width}px`, this._canvas.width = Math.round(this._width * this._coreBrowserService.dpr), this._canvas.style.height = `${this._screenElement.clientHeight}px`, this._canvas.height = Math.round(this._screenElement.clientHeight * this._coreBrowserService.dpr), this._refreshDrawConstants(), this._refreshColorZonePadding()
|
||
}
|
||
_refreshDecorations() {
|
||
this._shouldUpdateDimensions && this._refreshCanvasDimensions(), this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height), this._colorZoneStore.clear();
|
||
for (const e of this._decorationService.decorations) this._colorZoneStore.addDecoration(e);
|
||
this._ctx.lineWidth = 1;
|
||
const e = this._colorZoneStore.zones;
|
||
for (const t of e) "full" !== t.position && this._renderColorZone(t);
|
||
for (const t of e) "full" === t.position && this._renderColorZone(t);
|
||
this._shouldUpdateDimensions = !1, this._shouldUpdateAnchor = !1
|
||
}
|
||
_renderColorZone(e) {
|
||
this._ctx.fillStyle = e.color, this._ctx.fillRect(d[e.position || "full"], Math.round((this._canvas.height - 1) * (e.startBufferLine / this._bufferService.buffers.active.lines.length) - c[e.position || "full"] / 2), l[e.position || "full"], Math.round((this._canvas.height - 1) * ((e.endBufferLine - e.startBufferLine) / this._bufferService.buffers.active.lines.length) + c[e.position || "full"]))
|
||
}
|
||
_queueRefresh(e, t) {
|
||
this._shouldUpdateDimensions = e || this._shouldUpdateDimensions, this._shouldUpdateAnchor = t || this._shouldUpdateAnchor, void 0 === this._animationFrame && (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._refreshDecorations(), this._animationFrame = void 0
|
||
})))
|
||
}
|
||
};
|
||
t.OverviewRulerRenderer = _ = s([r(2, h.IBufferService), r(3, h.IDecorationService), r(4, o.IRenderService), r(5, h.IOptionsService), r(6, o.ICoreBrowserService)], _)
|
||
},
|
||
2950: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CompositionHelper = void 0;
|
||
const n = i(4725),
|
||
o = i(2585),
|
||
a = i(2584);
|
||
let h = t.CompositionHelper = class {
|
||
get isComposing() {
|
||
return this._isComposing
|
||
}
|
||
constructor(e, t, i, s, r, n) {
|
||
this._textarea = e, this._compositionView = t, this._bufferService = i, this._optionsService = s, this._coreService = r, this._renderService = n, this._isComposing = !1, this._isSendingComposition = !1, this._compositionPosition = {
|
||
start: 0,
|
||
end: 0
|
||
}, this._dataAlreadySent = ""
|
||
}
|
||
compositionstart() {
|
||
this._isComposing = !0, this._compositionPosition.start = this._textarea.value.length, this._compositionView.textContent = "", this._dataAlreadySent = "", this._compositionView.classList.add("active")
|
||
}
|
||
compositionupdate(e) {
|
||
this._compositionView.textContent = e.data, this.updateCompositionElements(), setTimeout((() => {
|
||
this._compositionPosition.end = this._textarea.value.length
|
||
}), 0)
|
||
}
|
||
compositionend() {
|
||
this._finalizeComposition(!0)
|
||
}
|
||
keydown(e) {
|
||
if (this._isComposing || this._isSendingComposition) {
|
||
if (229 === e.keyCode) return !1;
|
||
if (16 === e.keyCode || 17 === e.keyCode || 18 === e.keyCode) return !1;
|
||
this._finalizeComposition(!1)
|
||
}
|
||
return 229 !== e.keyCode || (this._handleAnyTextareaChanges(), !1)
|
||
}
|
||
_finalizeComposition(e) {
|
||
if (this._compositionView.classList.remove("active"), this._isComposing = !1, e) {
|
||
const e = {
|
||
start: this._compositionPosition.start,
|
||
end: this._compositionPosition.end
|
||
};
|
||
this._isSendingComposition = !0, setTimeout((() => {
|
||
if (this._isSendingComposition) {
|
||
let t;
|
||
this._isSendingComposition = !1, e.start += this._dataAlreadySent.length, t = this._isComposing ? this._textarea.value.substring(e.start, e.end) : this._textarea.value.substring(e.start), t.length > 0 && this._coreService.triggerDataEvent(t, !0)
|
||
}
|
||
}), 0)
|
||
} else {
|
||
this._isSendingComposition = !1;
|
||
const e = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end);
|
||
this._coreService.triggerDataEvent(e, !0)
|
||
}
|
||
}
|
||
_handleAnyTextareaChanges() {
|
||
const e = this._textarea.value;
|
||
setTimeout((() => {
|
||
if (!this._isComposing) {
|
||
const t = this._textarea.value,
|
||
i = t.replace(e, "");
|
||
this._dataAlreadySent = i, t.length > e.length ? this._coreService.triggerDataEvent(i, !0) : t.length < e.length ? this._coreService.triggerDataEvent(`${a.C0.DEL}`, !0) : t.length === e.length && t !== e && this._coreService.triggerDataEvent(t, !0)
|
||
}
|
||
}), 0)
|
||
}
|
||
updateCompositionElements(e) {
|
||
if (this._isComposing) {
|
||
if (this._bufferService.buffer.isCursorInViewport) {
|
||
const e = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1),
|
||
t = this._renderService.dimensions.css.cell.height,
|
||
i = this._bufferService.buffer.y * this._renderService.dimensions.css.cell.height,
|
||
s = e * this._renderService.dimensions.css.cell.width;
|
||
this._compositionView.style.left = s + "px", this._compositionView.style.top = i + "px", this._compositionView.style.height = t + "px", this._compositionView.style.lineHeight = t + "px", this._compositionView.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._compositionView.style.fontSize = this._optionsService.rawOptions.fontSize + "px";
|
||
const r = this._compositionView.getBoundingClientRect();
|
||
this._textarea.style.left = s + "px", this._textarea.style.top = i + "px", this._textarea.style.width = Math.max(r.width, 1) + "px", this._textarea.style.height = Math.max(r.height, 1) + "px", this._textarea.style.lineHeight = r.height + "px"
|
||
}
|
||
e || setTimeout((() => this.updateCompositionElements(!0)), 0)
|
||
}
|
||
}
|
||
};
|
||
t.CompositionHelper = h = s([r(2, o.IBufferService), r(3, o.IOptionsService), r(4, o.ICoreService), r(5, n.IRenderService)], h)
|
||
},
|
||
9806: (e, t) => {
|
||
function i(e, t, i) {
|
||
const s = i.getBoundingClientRect(),
|
||
r = e.getComputedStyle(i),
|
||
n = parseInt(r.getPropertyValue("padding-left")),
|
||
o = parseInt(r.getPropertyValue("padding-top"));
|
||
return [t.clientX - s.left - n, t.clientY - s.top - o]
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.getCoords = t.getCoordsRelativeToElement = void 0, t.getCoordsRelativeToElement = i, t.getCoords = function(e, t, s, r, n, o, a, h, c) {
|
||
if (!o) return;
|
||
const l = i(e, t, s);
|
||
return l ? (l[0] = Math.ceil((l[0] + (c ? a / 2 : 0)) / a), l[1] = Math.ceil(l[1] / h), l[0] = Math.min(Math.max(l[0], 1), r + (c ? 1 : 0)), l[1] = Math.min(Math.max(l[1], 1), n), l) : void 0
|
||
}
|
||
},
|
||
9504: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.moveToCellSequence = void 0;
|
||
const s = i(2584);
|
||
|
||
function r(e, t, i, s) {
|
||
const r = e - n(e, i),
|
||
a = t - n(t, i),
|
||
l = Math.abs(r - a) - function(e, t, i) {
|
||
let s = 0;
|
||
const r = e - n(e, i),
|
||
a = t - n(t, i);
|
||
for (let n = 0; n < Math.abs(r - a); n++) {
|
||
const a = "A" === o(e, t) ? -1 : 1,
|
||
h = i.buffer.lines.get(r + a * n);
|
||
h?.isWrapped && s++
|
||
}
|
||
return s
|
||
}(e, t, i);
|
||
return c(l, h(o(e, t), s))
|
||
}
|
||
|
||
function n(e, t) {
|
||
let i = 0,
|
||
s = t.buffer.lines.get(e),
|
||
r = s?.isWrapped;
|
||
for (; r && e >= 0 && e < t.rows;) i++, s = t.buffer.lines.get(--e), r = s?.isWrapped;
|
||
return i
|
||
}
|
||
|
||
function o(e, t) {
|
||
return e > t ? "A" : "B"
|
||
}
|
||
|
||
function a(e, t, i, s, r, n) {
|
||
let o = e,
|
||
a = t,
|
||
h = "";
|
||
for (; o !== i || a !== s;) o += r ? 1 : -1, r && o > n.cols - 1 ? (h += n.buffer.translateBufferLineToString(a, !1, e, o), o = 0, e = 0, a++) : !r && o < 0 && (h += n.buffer.translateBufferLineToString(a, !1, 0, e + 1), o = n.cols - 1, e = o, a--);
|
||
return h + n.buffer.translateBufferLineToString(a, !1, e, o)
|
||
}
|
||
|
||
function h(e, t) {
|
||
const i = t ? "O" : "[";
|
||
return s.C0.ESC + i + e
|
||
}
|
||
|
||
function c(e, t) {
|
||
e = Math.floor(e);
|
||
let i = "";
|
||
for (let s = 0; s < e; s++) i += t;
|
||
return i
|
||
}
|
||
t.moveToCellSequence = function(e, t, i, s) {
|
||
const o = i.buffer.x,
|
||
l = i.buffer.y;
|
||
if (!i.buffer.hasScrollback) return function(e, t, i, s, o, l) {
|
||
return 0 === r(t, s, o, l).length ? "" : c(a(e, t, e, t - n(t, o), !1, o).length, h("D", l))
|
||
}(o, l, 0, t, i, s) + r(l, t, i, s) + function(e, t, i, s, o, l) {
|
||
let d;
|
||
d = r(t, s, o, l).length > 0 ? s - n(s, o) : t;
|
||
const _ = s,
|
||
u = function(e, t, i, s, o, a) {
|
||
let h;
|
||
return h = r(i, s, o, a).length > 0 ? s - n(s, o) : t, e < i && h <= s || e >= i && h < s ? "C" : "D"
|
||
}(e, t, i, s, o, l);
|
||
return c(a(e, d, i, _, "C" === u, o).length, h(u, l))
|
||
}(o, l, e, t, i, s);
|
||
let d;
|
||
if (l === t) return d = o > e ? "D" : "C", c(Math.abs(o - e), h(d, s));
|
||
d = l > t ? "D" : "C";
|
||
const _ = Math.abs(l - t);
|
||
return c(function(e, t) {
|
||
return t.cols - e
|
||
}(l > t ? e : o, i) + (_ - 1) * i.cols + 1 + ((l > t ? o : e) - 1), h(d, s))
|
||
}
|
||
},
|
||
1296: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DomRenderer = void 0;
|
||
const n = i(3787),
|
||
o = i(2550),
|
||
a = i(2223),
|
||
h = i(6171),
|
||
c = i(6052),
|
||
l = i(4725),
|
||
d = i(8055),
|
||
_ = i(8460),
|
||
u = i(844),
|
||
f = i(2585),
|
||
v = "xterm-dom-renderer-owner-",
|
||
g = "xterm-rows",
|
||
p = "xterm-fg-",
|
||
m = "xterm-bg-",
|
||
C = "xterm-focus",
|
||
S = "xterm-selection";
|
||
let b = 1,
|
||
w = t.DomRenderer = class extends u.Disposable {
|
||
constructor(e, t, i, s, r, a, l, d, f, p, m, C, w) {
|
||
super(), this._terminal = e, this._document = t, this._element = i, this._screenElement = s, this._viewportElement = r, this._helperContainer = a, this._linkifier2 = l, this._charSizeService = f, this._optionsService = p, this._bufferService = m, this._coreBrowserService = C, this._themeService = w, this._terminalClass = b++, this._rowElements = [], this._selectionRenderModel = (0, c.createSelectionRenderModel)(), this.onRequestRedraw = this.register(new _.EventEmitter).event, this._rowContainer = this._document.createElement("div"), this._rowContainer.classList.add(g), this._rowContainer.style.lineHeight = "normal", this._rowContainer.setAttribute("aria-hidden", "true"), this._refreshRowElements(this._bufferService.cols, this._bufferService.rows), this._selectionContainer = this._document.createElement("div"), this._selectionContainer.classList.add(S), this._selectionContainer.setAttribute("aria-hidden", "true"), this.dimensions = (0, h.createRenderDimensions)(), this._updateDimensions(), this.register(this._optionsService.onOptionChange((() => this._handleOptionsChanged()))), this.register(this._themeService.onChangeColors((e => this._injectCss(e)))), this._injectCss(this._themeService.colors), this._rowFactory = d.createInstance(n.DomRendererRowFactory, document), this._element.classList.add(v + this._terminalClass), this._screenElement.appendChild(this._rowContainer), this._screenElement.appendChild(this._selectionContainer), this.register(this._linkifier2.onShowLinkUnderline((e => this._handleLinkHover(e)))), this.register(this._linkifier2.onHideLinkUnderline((e => this._handleLinkLeave(e)))), this.register((0, u.toDisposable)((() => {
|
||
this._element.classList.remove(v + this._terminalClass), this._rowContainer.remove(), this._selectionContainer.remove(), this._widthCache.dispose(), this._themeStyleElement.remove(), this._dimensionsStyleElement.remove()
|
||
}))), this._widthCache = new o.WidthCache(this._document, this._helperContainer), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing()
|
||
}
|
||
_updateDimensions() {
|
||
const e = this._coreBrowserService.dpr;
|
||
this.dimensions.device.char.width = this._charSizeService.width * e, this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.left = 0, this.dimensions.device.char.top = 0, this.dimensions.device.canvas.width = this.dimensions.device.cell.width * this._bufferService.cols, this.dimensions.device.canvas.height = this.dimensions.device.cell.height * this._bufferService.rows, this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols, this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows;
|
||
for (const e of this._rowElements) e.style.width = `${this.dimensions.css.canvas.width}px`, e.style.height = `${this.dimensions.css.cell.height}px`, e.style.lineHeight = `${this.dimensions.css.cell.height}px`, e.style.overflow = "hidden";
|
||
this._dimensionsStyleElement || (this._dimensionsStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._dimensionsStyleElement));
|
||
const t = `${this._terminalSelector} .${g} span { display: inline-block; height: 100%; vertical-align: top;}`;
|
||
this._dimensionsStyleElement.textContent = t, this._selectionContainer.style.height = this._viewportElement.style.height, this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px`
|
||
}
|
||
_injectCss(e) {
|
||
this._themeStyleElement || (this._themeStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._themeStyleElement));
|
||
let t = `${this._terminalSelector} .${g} { color: ${e.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;
|
||
t += `${this._terminalSelector} .${g} .xterm-dim { color: ${d.color.multiplyOpacity(e.foreground, .5).css};}`, t += `${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`;
|
||
const i = `blink_underline_${this._terminalClass}`,
|
||
s = `blink_bar_${this._terminalClass}`,
|
||
r = `blink_block_${this._terminalClass}`;
|
||
t += `@keyframes ${i} { 50% { border-bottom-style: hidden; }}`, t += `@keyframes ${s} { 50% { box-shadow: none; }}`, t += `@keyframes ${r} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`, t += `${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${i} 1s step-end infinite;}${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${s} 1s step-end infinite;}${this._terminalSelector} .${g}.${C} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${g} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`, t += `${this._terminalSelector} .${S} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${S} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${S} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;
|
||
for (const [i, s] of e.ansi.entries()) t += `${this._terminalSelector} .${p}${i} { color: ${s.css}; }${this._terminalSelector} .${p}${i}.xterm-dim { color: ${d.color.multiplyOpacity(s, .5).css}; }${this._terminalSelector} .${m}${i} { background-color: ${s.css}; }`;
|
||
t += `${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR} { color: ${d.color.opaque(e.background).css}; }${this._terminalSelector} .${p}${a.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${d.color.multiplyOpacity(d.color.opaque(e.background), .5).css}; }${this._terminalSelector} .${m}${a.INVERTED_DEFAULT_COLOR} { background-color: ${e.foreground.css}; }`, this._themeStyleElement.textContent = t
|
||
}
|
||
_setDefaultSpacing() {
|
||
const e = this.dimensions.css.cell.width - this._widthCache.get("W", !1, !1);
|
||
this._rowContainer.style.letterSpacing = `${e}px`, this._rowFactory.defaultSpacing = e
|
||
}
|
||
handleDevicePixelRatioChange() {
|
||
this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing()
|
||
}
|
||
_refreshRowElements(e, t) {
|
||
for (let e = this._rowElements.length; e <= t; e++) {
|
||
const e = this._document.createElement("div");
|
||
this._rowContainer.appendChild(e), this._rowElements.push(e)
|
||
}
|
||
for (; this._rowElements.length > t;) this._rowContainer.removeChild(this._rowElements.pop())
|
||
}
|
||
handleResize(e, t) {
|
||
this._refreshRowElements(e, t), this._updateDimensions(), this.handleSelectionChanged(this._selectionRenderModel.selectionStart, this._selectionRenderModel.selectionEnd, this._selectionRenderModel.columnSelectMode)
|
||
}
|
||
handleCharSizeChanged() {
|
||
this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing()
|
||
}
|
||
handleBlur() {
|
||
this._rowContainer.classList.remove(C), this.renderRows(0, this._bufferService.rows - 1)
|
||
}
|
||
handleFocus() {
|
||
this._rowContainer.classList.add(C), this.renderRows(this._bufferService.buffer.y, this._bufferService.buffer.y)
|
||
}
|
||
handleSelectionChanged(e, t, i) {
|
||
if (this._selectionContainer.replaceChildren(), this._rowFactory.handleSelectionChanged(e, t, i), this.renderRows(0, this._bufferService.rows - 1), !e || !t) return;
|
||
this._selectionRenderModel.update(this._terminal, e, t, i);
|
||
const s = this._selectionRenderModel.viewportStartRow,
|
||
r = this._selectionRenderModel.viewportEndRow,
|
||
n = this._selectionRenderModel.viewportCappedStartRow,
|
||
o = this._selectionRenderModel.viewportCappedEndRow;
|
||
if (n >= this._bufferService.rows || o < 0) return;
|
||
const a = this._document.createDocumentFragment();
|
||
if (i) {
|
||
const i = e[0] > t[0];
|
||
a.appendChild(this._createSelectionElement(n, i ? t[0] : e[0], i ? e[0] : t[0], o - n + 1))
|
||
} else {
|
||
const i = s === n ? e[0] : 0,
|
||
h = n === r ? t[0] : this._bufferService.cols;
|
||
a.appendChild(this._createSelectionElement(n, i, h));
|
||
const c = o - n - 1;
|
||
if (a.appendChild(this._createSelectionElement(n + 1, 0, this._bufferService.cols, c)), n !== o) {
|
||
const e = r === o ? t[0] : this._bufferService.cols;
|
||
a.appendChild(this._createSelectionElement(o, 0, e))
|
||
}
|
||
}
|
||
this._selectionContainer.appendChild(a)
|
||
}
|
||
_createSelectionElement(e, t, i, s = 1) {
|
||
const r = this._document.createElement("div"),
|
||
n = t * this.dimensions.css.cell.width;
|
||
let o = this.dimensions.css.cell.width * (i - t);
|
||
return n + o > this.dimensions.css.canvas.width && (o = this.dimensions.css.canvas.width - n), r.style.height = s * this.dimensions.css.cell.height + "px", r.style.top = e * this.dimensions.css.cell.height + "px", r.style.left = `${n}px`, r.style.width = `${o}px`, r
|
||
}
|
||
handleCursorMove() {}
|
||
_handleOptionsChanged() {
|
||
this._updateDimensions(), this._injectCss(this._themeService.colors), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing()
|
||
}
|
||
clear() {
|
||
for (const e of this._rowElements) e.replaceChildren()
|
||
}
|
||
renderRows(e, t) {
|
||
const i = this._bufferService.buffer,
|
||
s = i.ybase + i.y,
|
||
r = Math.min(i.x, this._bufferService.cols - 1),
|
||
n = this._optionsService.rawOptions.cursorBlink,
|
||
o = this._optionsService.rawOptions.cursorStyle,
|
||
a = this._optionsService.rawOptions.cursorInactiveStyle;
|
||
for (let h = e; h <= t; h++) {
|
||
const e = h + i.ydisp,
|
||
t = this._rowElements[h],
|
||
c = i.lines.get(e);
|
||
if (!t || !c) break;
|
||
t.replaceChildren(...this._rowFactory.createRow(c, e, e === s, o, a, r, n, this.dimensions.css.cell.width, this._widthCache, -1, -1))
|
||
}
|
||
}
|
||
get _terminalSelector() {
|
||
return `.${v}${this._terminalClass}`
|
||
}
|
||
_handleLinkHover(e) {
|
||
this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, !0)
|
||
}
|
||
_handleLinkLeave(e) {
|
||
this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, !1)
|
||
}
|
||
_setCellUnderline(e, t, i, s, r, n) {
|
||
i < 0 && (e = 0), s < 0 && (t = 0);
|
||
const o = this._bufferService.rows - 1;
|
||
i = Math.max(Math.min(i, o), 0), s = Math.max(Math.min(s, o), 0), r = Math.min(r, this._bufferService.cols);
|
||
const a = this._bufferService.buffer,
|
||
h = a.ybase + a.y,
|
||
c = Math.min(a.x, r - 1),
|
||
l = this._optionsService.rawOptions.cursorBlink,
|
||
d = this._optionsService.rawOptions.cursorStyle,
|
||
_ = this._optionsService.rawOptions.cursorInactiveStyle;
|
||
for (let o = i; o <= s; ++o) {
|
||
const u = o + a.ydisp,
|
||
f = this._rowElements[o],
|
||
v = a.lines.get(u);
|
||
if (!f || !v) break;
|
||
f.replaceChildren(...this._rowFactory.createRow(v, u, u === h, d, _, c, l, this.dimensions.css.cell.width, this._widthCache, n ? o === i ? e : 0 : -1, n ? (o === s ? t : r) - 1 : -1))
|
||
}
|
||
}
|
||
};
|
||
t.DomRenderer = w = s([r(7, f.IInstantiationService), r(8, l.ICharSizeService), r(9, f.IOptionsService), r(10, f.IBufferService), r(11, l.ICoreBrowserService), r(12, l.IThemeService)], w)
|
||
},
|
||
3787: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DomRendererRowFactory = void 0;
|
||
const n = i(2223),
|
||
o = i(643),
|
||
a = i(511),
|
||
h = i(2585),
|
||
c = i(8055),
|
||
l = i(4725),
|
||
d = i(4269),
|
||
_ = i(6171),
|
||
u = i(3734);
|
||
let f = t.DomRendererRowFactory = class {
|
||
constructor(e, t, i, s, r, n, o) {
|
||
this._document = e, this._characterJoinerService = t, this._optionsService = i, this._coreBrowserService = s, this._coreService = r, this._decorationService = n, this._themeService = o, this._workCell = new a.CellData, this._columnSelectMode = !1, this.defaultSpacing = 0
|
||
}
|
||
handleSelectionChanged(e, t, i) {
|
||
this._selectionStart = e, this._selectionEnd = t, this._columnSelectMode = i
|
||
}
|
||
createRow(e, t, i, s, r, a, h, l, _, f, g) {
|
||
const p = [],
|
||
m = this._characterJoinerService.getJoinedCharacters(t),
|
||
C = this._themeService.colors;
|
||
let S, b = e.getNoBgTrimmedLength();
|
||
i && b < a + 1 && (b = a + 1);
|
||
let w = 0,
|
||
y = "",
|
||
L = 0,
|
||
x = 0,
|
||
E = 0,
|
||
R = !1,
|
||
M = 0,
|
||
A = !1,
|
||
D = 0;
|
||
const k = [],
|
||
T = -1 !== f && -1 !== g;
|
||
for (let B = 0; B < b; B++) {
|
||
e.loadCell(B, this._workCell);
|
||
let b = this._workCell.getWidth();
|
||
if (0 === b) continue;
|
||
let O = !1,
|
||
P = B,
|
||
I = this._workCell;
|
||
if (m.length > 0 && B === m[0][0]) {
|
||
O = !0;
|
||
const t = m.shift();
|
||
I = new d.JoinedCellData(this._workCell, e.translateToString(!0, t[0], t[1]), t[1] - t[0]), P = t[1] - 1, b = I.getWidth()
|
||
}
|
||
const F = this._isCellInSelection(B, t),
|
||
H = i && B === a,
|
||
$ = T && B >= f && B <= g;
|
||
let W = !1;
|
||
this._decorationService.forEachDecorationAtCell(B, t, void 0, (e => {
|
||
W = !0
|
||
}));
|
||
let U = I.getChars() || o.WHITESPACE_CELL_CHAR;
|
||
if (" " === U && (I.isUnderline() || I.isOverline()) && (U = " "), D = b * l - _.get(U, I.isBold(), I.isItalic()), S) {
|
||
if (w && (F && A || !F && !A && I.bg === L) && (F && A && C.selectionForeground || I.fg === x) && I.extended.ext === E && $ === R && D === M && !H && !O && !W) {
|
||
I.isInvisible() ? y += o.WHITESPACE_CELL_CHAR : y += U, w++;
|
||
continue
|
||
}
|
||
w && (S.textContent = y), S = this._document.createElement("span"), w = 0, y = ""
|
||
} else S = this._document.createElement("span");
|
||
if (L = I.bg, x = I.fg, E = I.extended.ext, R = $, M = D, A = F, O && a >= B && a <= P && (a = B), !this._coreService.isCursorHidden && H && this._coreService.isCursorInitialized)
|
||
if (k.push("xterm-cursor"), this._coreBrowserService.isFocused) h && k.push("xterm-cursor-blink"), k.push("bar" === s ? "xterm-cursor-bar" : "underline" === s ? "xterm-cursor-underline" : "xterm-cursor-block");
|
||
else if (r) switch (r) {
|
||
case "outline":
|
||
k.push("xterm-cursor-outline");
|
||
break;
|
||
case "block":
|
||
k.push("xterm-cursor-block");
|
||
break;
|
||
case "bar":
|
||
k.push("xterm-cursor-bar");
|
||
break;
|
||
case "underline":
|
||
k.push("xterm-cursor-underline")
|
||
}
|
||
if (I.isBold() && k.push("xterm-bold"), I.isItalic() && k.push("xterm-italic"), I.isDim() && k.push("xterm-dim"), y = I.isInvisible() ? o.WHITESPACE_CELL_CHAR : I.getChars() || o.WHITESPACE_CELL_CHAR, I.isUnderline() && (k.push(`xterm-underline-${I.extended.underlineStyle}`), " " === y && (y = " "), !I.isUnderlineColorDefault()))
|
||
if (I.isUnderlineColorRGB()) S.style.textDecorationColor = `rgb(${u.AttributeData.toColorRGB(I.getUnderlineColor()).join(",")})`;
|
||
else {
|
||
let e = I.getUnderlineColor();
|
||
this._optionsService.rawOptions.drawBoldTextInBrightColors && I.isBold() && e < 8 && (e += 8), S.style.textDecorationColor = C.ansi[e].css
|
||
} I.isOverline() && (k.push("xterm-overline"), " " === y && (y = " ")), I.isStrikethrough() && k.push("xterm-strikethrough"), $ && (S.style.textDecoration = "underline");
|
||
let N = I.getFgColor(),
|
||
z = I.getFgColorMode(),
|
||
j = I.getBgColor(),
|
||
q = I.getBgColorMode();
|
||
const G = !!I.isInverse();
|
||
if (G) {
|
||
const e = N;
|
||
N = j, j = e;
|
||
const t = z;
|
||
z = q, q = t
|
||
}
|
||
let V, K, X, J = !1;
|
||
switch (this._decorationService.forEachDecorationAtCell(B, t, void 0, (e => {
|
||
"top" !== e.options.layer && J || (e.backgroundColorRGB && (q = 50331648, j = e.backgroundColorRGB.rgba >> 8 & 16777215, V = e.backgroundColorRGB), e.foregroundColorRGB && (z = 50331648, N = e.foregroundColorRGB.rgba >> 8 & 16777215, K = e.foregroundColorRGB), J = "top" === e.options.layer)
|
||
})), !J && F && (V = this._coreBrowserService.isFocused ? C.selectionBackgroundOpaque : C.selectionInactiveBackgroundOpaque, j = V.rgba >> 8 & 16777215, q = 50331648, J = !0, C.selectionForeground && (z = 50331648, N = C.selectionForeground.rgba >> 8 & 16777215, K = C.selectionForeground)), J && k.push("xterm-decoration-top"), q) {
|
||
case 16777216:
|
||
case 33554432:
|
||
X = C.ansi[j], k.push(`xterm-bg-${j}`);
|
||
break;
|
||
case 50331648:
|
||
X = c.channels.toColor(j >> 16, j >> 8 & 255, 255 & j), this._addStyle(S, `background-color:#${v((j >>> 0).toString(16), "0", 6)}`);
|
||
break;
|
||
default:
|
||
G ? (X = C.foreground, k.push(`xterm-bg-${n.INVERTED_DEFAULT_COLOR}`)) : X = C.background
|
||
}
|
||
switch (V || I.isDim() && (V = c.color.multiplyOpacity(X, .5)), z) {
|
||
case 16777216:
|
||
case 33554432:
|
||
I.isBold() && N < 8 && this._optionsService.rawOptions.drawBoldTextInBrightColors && (N += 8), this._applyMinimumContrast(S, X, C.ansi[N], I, V, void 0) || k.push(`xterm-fg-${N}`);
|
||
break;
|
||
case 50331648:
|
||
const e = c.channels.toColor(N >> 16 & 255, N >> 8 & 255, 255 & N);
|
||
this._applyMinimumContrast(S, X, e, I, V, K) || this._addStyle(S, `color:#${v(N.toString(16), "0", 6)}`);
|
||
break;
|
||
default:
|
||
this._applyMinimumContrast(S, X, C.foreground, I, V, K) || G && k.push(`xterm-fg-${n.INVERTED_DEFAULT_COLOR}`)
|
||
}
|
||
k.length && (S.className = k.join(" "), k.length = 0), H || O || W ? S.textContent = y : w++, D !== this.defaultSpacing && (S.style.letterSpacing = `${D}px`), p.push(S), B = P
|
||
}
|
||
return S && w && (S.textContent = y), p
|
||
}
|
||
_applyMinimumContrast(e, t, i, s, r, n) {
|
||
if (1 === this._optionsService.rawOptions.minimumContrastRatio || (0, _.treatGlyphAsBackgroundColor)(s.getCode())) return !1;
|
||
const o = this._getContrastCache(s);
|
||
let a;
|
||
if (r || n || (a = o.getColor(t.rgba, i.rgba)), void 0 === a) {
|
||
const e = this._optionsService.rawOptions.minimumContrastRatio / (s.isDim() ? 2 : 1);
|
||
a = c.color.ensureContrastRatio(r || t, n || i, e), o.setColor((r || t).rgba, (n || i).rgba, a ?? null)
|
||
}
|
||
return !!a && (this._addStyle(e, `color:${a.css}`), !0)
|
||
}
|
||
_getContrastCache(e) {
|
||
return e.isDim() ? this._themeService.colors.halfContrastCache : this._themeService.colors.contrastCache
|
||
}
|
||
_addStyle(e, t) {
|
||
e.setAttribute("style", `${e.getAttribute("style") || ""}${t};`)
|
||
}
|
||
_isCellInSelection(e, t) {
|
||
const i = this._selectionStart,
|
||
s = this._selectionEnd;
|
||
return !(!i || !s) && (this._columnSelectMode ? i[0] <= s[0] ? e >= i[0] && t >= i[1] && e < s[0] && t <= s[1] : e < i[0] && t >= i[1] && e >= s[0] && t <= s[1] : t > i[1] && t < s[1] || i[1] === s[1] && t === i[1] && e >= i[0] && e < s[0] || i[1] < s[1] && t === s[1] && e < s[0] || i[1] < s[1] && t === i[1] && e >= i[0])
|
||
}
|
||
};
|
||
|
||
function v(e, t, i) {
|
||
for (; e.length < i;) e = t + e;
|
||
return e
|
||
}
|
||
t.DomRendererRowFactory = f = s([r(1, l.ICharacterJoinerService), r(2, h.IOptionsService), r(3, l.ICoreBrowserService), r(4, h.ICoreService), r(5, h.IDecorationService), r(6, l.IThemeService)], f)
|
||
},
|
||
2550: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.WidthCache = void 0, t.WidthCache = class {
|
||
constructor(e, t) {
|
||
this._flat = new Float32Array(256), this._font = "", this._fontSize = 0, this._weight = "normal", this._weightBold = "bold", this._measureElements = [], this._container = e.createElement("div"), this._container.classList.add("xterm-width-cache-measure-container"), this._container.setAttribute("aria-hidden", "true"), this._container.style.whiteSpace = "pre", this._container.style.fontKerning = "none";
|
||
const i = e.createElement("span");
|
||
i.classList.add("xterm-char-measure-element");
|
||
const s = e.createElement("span");
|
||
s.classList.add("xterm-char-measure-element"), s.style.fontWeight = "bold";
|
||
const r = e.createElement("span");
|
||
r.classList.add("xterm-char-measure-element"), r.style.fontStyle = "italic";
|
||
const n = e.createElement("span");
|
||
n.classList.add("xterm-char-measure-element"), n.style.fontWeight = "bold", n.style.fontStyle = "italic", this._measureElements = [i, s, r, n], this._container.appendChild(i), this._container.appendChild(s), this._container.appendChild(r), this._container.appendChild(n), t.appendChild(this._container), this.clear()
|
||
}
|
||
dispose() {
|
||
this._container.remove(), this._measureElements.length = 0, this._holey = void 0
|
||
}
|
||
clear() {
|
||
this._flat.fill(-9999), this._holey = new Map
|
||
}
|
||
setFont(e, t, i, s) {
|
||
e === this._font && t === this._fontSize && i === this._weight && s === this._weightBold || (this._font = e, this._fontSize = t, this._weight = i, this._weightBold = s, this._container.style.fontFamily = this._font, this._container.style.fontSize = `${this._fontSize}px`, this._measureElements[0].style.fontWeight = `${i}`, this._measureElements[1].style.fontWeight = `${s}`, this._measureElements[2].style.fontWeight = `${i}`, this._measureElements[3].style.fontWeight = `${s}`, this.clear())
|
||
}
|
||
get(e, t, i) {
|
||
let s = 0;
|
||
if (!t && !i && 1 === e.length && (s = e.charCodeAt(0)) < 256) {
|
||
if (-9999 !== this._flat[s]) return this._flat[s];
|
||
const t = this._measure(e, 0);
|
||
return t > 0 && (this._flat[s] = t), t
|
||
}
|
||
let r = e;
|
||
t && (r += "B"), i && (r += "I");
|
||
let n = this._holey.get(r);
|
||
if (void 0 === n) {
|
||
let s = 0;
|
||
t && (s |= 1), i && (s |= 2), n = this._measure(e, s), n > 0 && this._holey.set(r, n)
|
||
}
|
||
return n
|
||
}
|
||
_measure(e, t) {
|
||
const i = this._measureElements[t];
|
||
return i.textContent = e.repeat(32), i.offsetWidth / 32
|
||
}
|
||
}
|
||
},
|
||
2223: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0;
|
||
const s = i(6114);
|
||
t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic"
|
||
},
|
||
6171: (e, t) => {
|
||
function i(e) {
|
||
return 57508 <= e && e <= 57558
|
||
}
|
||
|
||
function s(e) {
|
||
return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function(e) {
|
||
if (!e) throw new Error("value must not be falsy");
|
||
return e
|
||
}, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function(e) {
|
||
return 57520 <= e && e <= 57527
|
||
}, t.isEmoji = s, t.allowRescaling = function(e, t, r, n) {
|
||
return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && ! function(e) {
|
||
return 57344 <= e && e <= 63743
|
||
}(e)
|
||
}, t.treatGlyphAsBackgroundColor = function(e) {
|
||
return i(e) || function(e) {
|
||
return 9472 <= e && e <= 9631
|
||
}(e)
|
||
}, t.createRenderDimensions = function() {
|
||
return {
|
||
css: {
|
||
canvas: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
cell: {
|
||
width: 0,
|
||
height: 0
|
||
}
|
||
},
|
||
device: {
|
||
canvas: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
cell: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
char: {
|
||
width: 0,
|
||
height: 0,
|
||
left: 0,
|
||
top: 0
|
||
}
|
||
}
|
||
}
|
||
}, t.computeNextVariantOffset = function(e, t, i = 0) {
|
||
return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t))
|
||
}
|
||
},
|
||
6052: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.createSelectionRenderModel = void 0;
|
||
class i {
|
||
constructor() {
|
||
this.clear()
|
||
}
|
||
clear() {
|
||
this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0
|
||
}
|
||
update(e, t, i, s = !1) {
|
||
if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear();
|
||
const r = e.buffers.active.ydisp,
|
||
n = t[1] - r,
|
||
o = i[1] - r,
|
||
a = Math.max(n, 0),
|
||
h = Math.min(o, e.rows - 1);
|
||
a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0])
|
||
}
|
||
isCellSelected(e, t, i) {
|
||
return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol)
|
||
}
|
||
}
|
||
t.createSelectionRenderModel = function() {
|
||
return new i
|
||
}
|
||
},
|
||
456: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.SelectionModel = void 0, t.SelectionModel = class {
|
||
constructor(e) {
|
||
this._bufferService = e, this.isSelectAllActive = !1, this.selectionStartLength = 0
|
||
}
|
||
clearSelection() {
|
||
this.selectionStart = void 0, this.selectionEnd = void 0, this.isSelectAllActive = !1, this.selectionStartLength = 0
|
||
}
|
||
get finalSelectionStart() {
|
||
return this.isSelectAllActive ? [0, 0] : this.selectionEnd && this.selectionStart && this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart
|
||
}
|
||
get finalSelectionEnd() {
|
||
if (this.isSelectAllActive) return [this._bufferService.cols, this._bufferService.buffer.ybase + this._bufferService.rows - 1];
|
||
if (this.selectionStart) {
|
||
if (!this.selectionEnd || this.areSelectionValuesReversed()) {
|
||
const e = this.selectionStart[0] + this.selectionStartLength;
|
||
return e > this._bufferService.cols ? e % this._bufferService.cols == 0 ? [this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols) - 1] : [e % this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols)] : [e, this.selectionStart[1]]
|
||
}
|
||
if (this.selectionStartLength && this.selectionEnd[1] === this.selectionStart[1]) {
|
||
const e = this.selectionStart[0] + this.selectionStartLength;
|
||
return e > this._bufferService.cols ? [e % this._bufferService.cols, this.selectionStart[1] + Math.floor(e / this._bufferService.cols)] : [Math.max(e, this.selectionEnd[0]), this.selectionEnd[1]]
|
||
}
|
||
return this.selectionEnd
|
||
}
|
||
}
|
||
areSelectionValuesReversed() {
|
||
const e = this.selectionStart,
|
||
t = this.selectionEnd;
|
||
return !(!e || !t) && (e[1] > t[1] || e[1] === t[1] && e[0] > t[0])
|
||
}
|
||
handleTrim(e) {
|
||
return this.selectionStart && (this.selectionStart[1] -= e), this.selectionEnd && (this.selectionEnd[1] -= e), this.selectionEnd && this.selectionEnd[1] < 0 ? (this.clearSelection(), !0) : (this.selectionStart && this.selectionStart[1] < 0 && (this.selectionStart[1] = 0), !1)
|
||
}
|
||
}
|
||
},
|
||
428: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CharSizeService = void 0;
|
||
const n = i(2585),
|
||
o = i(8460),
|
||
a = i(844);
|
||
let h = t.CharSizeService = class extends a.Disposable {
|
||
get hasValidSize() {
|
||
return this.width > 0 && this.height > 0
|
||
}
|
||
constructor(e, t, i) {
|
||
super(), this._optionsService = i, this.width = 0, this.height = 0, this._onCharSizeChange = this.register(new o.EventEmitter), this.onCharSizeChange = this._onCharSizeChange.event;
|
||
try {
|
||
this._measureStrategy = this.register(new d(this._optionsService))
|
||
} catch {
|
||
this._measureStrategy = this.register(new l(e, t, this._optionsService))
|
||
}
|
||
this.register(this._optionsService.onMultipleOptionChange(["fontFamily", "fontSize"], (() => this.measure())))
|
||
}
|
||
measure() {
|
||
const e = this._measureStrategy.measure();
|
||
e.width === this.width && e.height === this.height || (this.width = e.width, this.height = e.height, this._onCharSizeChange.fire())
|
||
}
|
||
};
|
||
t.CharSizeService = h = s([r(2, n.IOptionsService)], h);
|
||
class c extends a.Disposable {
|
||
constructor() {
|
||
super(...arguments), this._result = {
|
||
width: 0,
|
||
height: 0
|
||
}
|
||
}
|
||
_validateAndSet(e, t) {
|
||
void 0 !== e && e > 0 && void 0 !== t && t > 0 && (this._result.width = e, this._result.height = t)
|
||
}
|
||
}
|
||
class l extends c {
|
||
constructor(e, t, i) {
|
||
super(), this._document = e, this._parentElement = t, this._optionsService = i, this._measureElement = this._document.createElement("span"), this._measureElement.classList.add("xterm-char-measure-element"), this._measureElement.textContent = "W".repeat(32), this._measureElement.setAttribute("aria-hidden", "true"), this._measureElement.style.whiteSpace = "pre", this._measureElement.style.fontKerning = "none", this._parentElement.appendChild(this._measureElement)
|
||
}
|
||
measure() {
|
||
return this._measureElement.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._measureElement.style.fontSize = `${this._optionsService.rawOptions.fontSize}px`, this._validateAndSet(Number(this._measureElement.offsetWidth) / 32, Number(this._measureElement.offsetHeight)), this._result
|
||
}
|
||
}
|
||
class d extends c {
|
||
constructor(e) {
|
||
super(), this._optionsService = e, this._canvas = new OffscreenCanvas(100, 100), this._ctx = this._canvas.getContext("2d");
|
||
const t = this._ctx.measureText("W");
|
||
if (!("width" in t && "fontBoundingBoxAscent" in t && "fontBoundingBoxDescent" in t)) throw new Error("Required font metrics not supported")
|
||
}
|
||
measure() {
|
||
this._ctx.font = `${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;
|
||
const e = this._ctx.measureText("W");
|
||
return this._validateAndSet(e.width, e.fontBoundingBoxAscent + e.fontBoundingBoxDescent), this._result
|
||
}
|
||
}
|
||
},
|
||
4269: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CharacterJoinerService = t.JoinedCellData = void 0;
|
||
const n = i(3734),
|
||
o = i(643),
|
||
a = i(511),
|
||
h = i(2585);
|
||
class c extends n.AttributeData {
|
||
constructor(e, t, i) {
|
||
super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i
|
||
}
|
||
isCombined() {
|
||
return 2097152
|
||
}
|
||
getWidth() {
|
||
return this._width
|
||
}
|
||
getChars() {
|
||
return this.combinedData
|
||
}
|
||
getCode() {
|
||
return 2097151
|
||
}
|
||
setFromCharData(e) {
|
||
throw new Error("not implemented")
|
||
}
|
||
getAsCharData() {
|
||
return [this.fg, this.getChars(), this.getWidth(), this.getCode()]
|
||
}
|
||
}
|
||
t.JoinedCellData = c;
|
||
let l = t.CharacterJoinerService = class e {
|
||
constructor(e) {
|
||
this._bufferService = e, this._characterJoiners = [], this._nextCharacterJoinerId = 0, this._workCell = new a.CellData
|
||
}
|
||
register(e) {
|
||
const t = {
|
||
id: this._nextCharacterJoinerId++,
|
||
handler: e
|
||
};
|
||
return this._characterJoiners.push(t), t.id
|
||
}
|
||
deregister(e) {
|
||
for (let t = 0; t < this._characterJoiners.length; t++)
|
||
if (this._characterJoiners[t].id === e) return this._characterJoiners.splice(t, 1), !0;
|
||
return !1
|
||
}
|
||
getJoinedCharacters(e) {
|
||
if (0 === this._characterJoiners.length) return [];
|
||
const t = this._bufferService.buffer.lines.get(e);
|
||
if (!t || 0 === t.length) return [];
|
||
const i = [],
|
||
s = t.translateToString(!0);
|
||
let r = 0,
|
||
n = 0,
|
||
a = 0,
|
||
h = t.getFg(0),
|
||
c = t.getBg(0);
|
||
for (let e = 0; e < t.getTrimmedLength(); e++)
|
||
if (t.loadCell(e, this._workCell), 0 !== this._workCell.getWidth()) {
|
||
if (this._workCell.fg !== h || this._workCell.bg !== c) {
|
||
if (e - r > 1) {
|
||
const e = this._getJoinedRanges(s, a, n, t, r);
|
||
for (let t = 0; t < e.length; t++) i.push(e[t])
|
||
}
|
||
r = e, a = n, h = this._workCell.fg, c = this._workCell.bg
|
||
}
|
||
n += this._workCell.getChars().length || o.WHITESPACE_CELL_CHAR.length
|
||
} if (this._bufferService.cols - r > 1) {
|
||
const e = this._getJoinedRanges(s, a, n, t, r);
|
||
for (let t = 0; t < e.length; t++) i.push(e[t])
|
||
}
|
||
return i
|
||
}
|
||
_getJoinedRanges(t, i, s, r, n) {
|
||
const o = t.substring(i, s);
|
||
let a = [];
|
||
try {
|
||
a = this._characterJoiners[0].handler(o)
|
||
} catch (e) {
|
||
console.error(e)
|
||
}
|
||
for (let t = 1; t < this._characterJoiners.length; t++) try {
|
||
const i = this._characterJoiners[t].handler(o);
|
||
for (let t = 0; t < i.length; t++) e._mergeRanges(a, i[t])
|
||
} catch (e) {
|
||
console.error(e)
|
||
}
|
||
return this._stringRangesToCellRanges(a, r, n), a
|
||
}
|
||
_stringRangesToCellRanges(e, t, i) {
|
||
let s = 0,
|
||
r = !1,
|
||
n = 0,
|
||
a = e[s];
|
||
if (a) {
|
||
for (let h = i; h < this._bufferService.cols; h++) {
|
||
const i = t.getWidth(h),
|
||
c = t.getString(h).length || o.WHITESPACE_CELL_CHAR.length;
|
||
if (0 !== i) {
|
||
if (!r && a[0] <= n && (a[0] = h, r = !0), a[1] <= n) {
|
||
if (a[1] = h, a = e[++s], !a) break;
|
||
a[0] <= n ? (a[0] = h, r = !0) : r = !1
|
||
}
|
||
n += c
|
||
}
|
||
}
|
||
a && (a[1] = this._bufferService.cols)
|
||
}
|
||
}
|
||
static _mergeRanges(e, t) {
|
||
let i = !1;
|
||
for (let s = 0; s < e.length; s++) {
|
||
const r = e[s];
|
||
if (i) {
|
||
if (t[1] <= r[0]) return e[s - 1][1] = t[1], e;
|
||
if (t[1] <= r[1]) return e[s - 1][1] = Math.max(t[1], r[1]), e.splice(s, 1), e;
|
||
e.splice(s, 1), s--
|
||
} else {
|
||
if (t[1] <= r[0]) return e.splice(s, 0, t), e;
|
||
if (t[1] <= r[1]) return r[0] = Math.min(t[0], r[0]), e;
|
||
t[0] < r[1] && (r[0] = Math.min(t[0], r[0]), i = !0)
|
||
}
|
||
}
|
||
return i ? e[e.length - 1][1] = t[1] : e.push(t), e
|
||
}
|
||
};
|
||
t.CharacterJoinerService = l = s([r(0, h.IBufferService)], l)
|
||
},
|
||
5114: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CoreBrowserService = void 0;
|
||
const s = i(844),
|
||
r = i(8460),
|
||
n = i(3656);
|
||
class o extends s.Disposable {
|
||
constructor(e, t, i) {
|
||
super(), this._textarea = e, this._window = t, this.mainDocument = i, this._isFocused = !1, this._cachedIsFocused = void 0, this._screenDprMonitor = new a(this._window), this._onDprChange = this.register(new r.EventEmitter), this.onDprChange = this._onDprChange.event, this._onWindowChange = this.register(new r.EventEmitter), this.onWindowChange = this._onWindowChange.event, this.register(this.onWindowChange((e => this._screenDprMonitor.setWindow(e)))), this.register((0, r.forwardEvent)(this._screenDprMonitor.onDprChange, this._onDprChange)), this._textarea.addEventListener("focus", (() => this._isFocused = !0)), this._textarea.addEventListener("blur", (() => this._isFocused = !1))
|
||
}
|
||
get window() {
|
||
return this._window
|
||
}
|
||
set window(e) {
|
||
this._window !== e && (this._window = e, this._onWindowChange.fire(this._window))
|
||
}
|
||
get dpr() {
|
||
return this.window.devicePixelRatio
|
||
}
|
||
get isFocused() {
|
||
return void 0 === this._cachedIsFocused && (this._cachedIsFocused = this._isFocused && this._textarea.ownerDocument.hasFocus(), queueMicrotask((() => this._cachedIsFocused = void 0))), this._cachedIsFocused
|
||
}
|
||
}
|
||
t.CoreBrowserService = o;
|
||
class a extends s.Disposable {
|
||
constructor(e) {
|
||
super(), this._parentWindow = e, this._windowResizeListener = this.register(new s.MutableDisposable), this._onDprChange = this.register(new r.EventEmitter), this.onDprChange = this._onDprChange.event, this._outerListener = () => this._setDprAndFireIfDiffers(), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._updateDpr(), this._setWindowResizeListener(), this.register((0, s.toDisposable)((() => this.clearListener())))
|
||
}
|
||
setWindow(e) {
|
||
this._parentWindow = e, this._setWindowResizeListener(), this._setDprAndFireIfDiffers()
|
||
}
|
||
_setWindowResizeListener() {
|
||
this._windowResizeListener.value = (0, n.addDisposableDomListener)(this._parentWindow, "resize", (() => this._setDprAndFireIfDiffers()))
|
||
}
|
||
_setDprAndFireIfDiffers() {
|
||
this._parentWindow.devicePixelRatio !== this._currentDevicePixelRatio && this._onDprChange.fire(this._parentWindow.devicePixelRatio), this._updateDpr()
|
||
}
|
||
_updateDpr() {
|
||
this._outerListener && (this._resolutionMediaMatchList?.removeListener(this._outerListener), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._resolutionMediaMatchList = this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`), this._resolutionMediaMatchList.addListener(this._outerListener))
|
||
}
|
||
clearListener() {
|
||
this._resolutionMediaMatchList && this._outerListener && (this._resolutionMediaMatchList.removeListener(this._outerListener), this._resolutionMediaMatchList = void 0, this._outerListener = void 0)
|
||
}
|
||
}
|
||
},
|
||
779: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.LinkProviderService = void 0;
|
||
const s = i(844);
|
||
class r extends s.Disposable {
|
||
constructor() {
|
||
super(), this.linkProviders = [], this.register((0, s.toDisposable)((() => this.linkProviders.length = 0)))
|
||
}
|
||
registerLinkProvider(e) {
|
||
return this.linkProviders.push(e), {
|
||
dispose: () => {
|
||
const t = this.linkProviders.indexOf(e); - 1 !== t && this.linkProviders.splice(t, 1)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
t.LinkProviderService = r
|
||
},
|
||
8934: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.MouseService = void 0;
|
||
const n = i(4725),
|
||
o = i(9806);
|
||
let a = t.MouseService = class {
|
||
constructor(e, t) {
|
||
this._renderService = e, this._charSizeService = t
|
||
}
|
||
getCoords(e, t, i, s, r) {
|
||
return (0, o.getCoords)(window, e, t, i, s, this._charSizeService.hasValidSize, this._renderService.dimensions.css.cell.width, this._renderService.dimensions.css.cell.height, r)
|
||
}
|
||
getMouseReportCoords(e, t) {
|
||
const i = (0, o.getCoordsRelativeToElement)(window, e, t);
|
||
if (this._charSizeService.hasValidSize) return i[0] = Math.min(Math.max(i[0], 0), this._renderService.dimensions.css.canvas.width - 1), i[1] = Math.min(Math.max(i[1], 0), this._renderService.dimensions.css.canvas.height - 1), {
|
||
col: Math.floor(i[0] / this._renderService.dimensions.css.cell.width),
|
||
row: Math.floor(i[1] / this._renderService.dimensions.css.cell.height),
|
||
x: Math.floor(i[0]),
|
||
y: Math.floor(i[1])
|
||
}
|
||
}
|
||
};
|
||
t.MouseService = a = s([r(0, n.IRenderService), r(1, n.ICharSizeService)], a)
|
||
},
|
||
3230: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.RenderService = void 0;
|
||
const n = i(6193),
|
||
o = i(4725),
|
||
a = i(8460),
|
||
h = i(844),
|
||
c = i(7226),
|
||
l = i(2585);
|
||
let d = t.RenderService = class extends h.Disposable {
|
||
get dimensions() {
|
||
return this._renderer.value.dimensions
|
||
}
|
||
constructor(e, t, i, s, r, o, l, d) {
|
||
super(), this._rowCount = e, this._charSizeService = s, this._renderer = this.register(new h.MutableDisposable), this._pausedResizeTask = new c.DebouncedIdleTask, this._observerDisposable = this.register(new h.MutableDisposable), this._isPaused = !1, this._needsFullRefresh = !1, this._isNextRenderRedrawOnly = !0, this._needsSelectionRefresh = !1, this._canvasWidth = 0, this._canvasHeight = 0, this._selectionState = {
|
||
start: void 0,
|
||
end: void 0,
|
||
columnSelectMode: !1
|
||
}, this._onDimensionsChange = this.register(new a.EventEmitter), this.onDimensionsChange = this._onDimensionsChange.event, this._onRenderedViewportChange = this.register(new a.EventEmitter), this.onRenderedViewportChange = this._onRenderedViewportChange.event, this._onRender = this.register(new a.EventEmitter), this.onRender = this._onRender.event, this._onRefreshRequest = this.register(new a.EventEmitter), this.onRefreshRequest = this._onRefreshRequest.event, this._renderDebouncer = new n.RenderDebouncer(((e, t) => this._renderRows(e, t)), l), this.register(this._renderDebouncer), this.register(l.onDprChange((() => this.handleDevicePixelRatioChange()))), this.register(o.onResize((() => this._fullRefresh()))), this.register(o.buffers.onBufferActivate((() => this._renderer.value?.clear()))), this.register(i.onOptionChange((() => this._handleOptionsChanged()))), this.register(this._charSizeService.onCharSizeChange((() => this.handleCharSizeChanged()))), this.register(r.onDecorationRegistered((() => this._fullRefresh()))), this.register(r.onDecorationRemoved((() => this._fullRefresh()))), this.register(i.onMultipleOptionChange(["customGlyphs", "drawBoldTextInBrightColors", "letterSpacing", "lineHeight", "fontFamily", "fontSize", "fontWeight", "fontWeightBold", "minimumContrastRatio", "rescaleOverlappingGlyphs"], (() => {
|
||
this.clear(), this.handleResize(o.cols, o.rows), this._fullRefresh()
|
||
}))), this.register(i.onMultipleOptionChange(["cursorBlink", "cursorStyle"], (() => this.refreshRows(o.buffer.y, o.buffer.y, !0)))), this.register(d.onChangeColors((() => this._fullRefresh()))), this._registerIntersectionObserver(l.window, t), this.register(l.onWindowChange((e => this._registerIntersectionObserver(e, t))))
|
||
}
|
||
_registerIntersectionObserver(e, t) {
|
||
if ("IntersectionObserver" in e) {
|
||
const i = new e.IntersectionObserver((e => this._handleIntersectionChange(e[e.length - 1])), {
|
||
threshold: 0
|
||
});
|
||
i.observe(t), this._observerDisposable.value = (0, h.toDisposable)((() => i.disconnect()))
|
||
}
|
||
}
|
||
_handleIntersectionChange(e) {
|
||
this._isPaused = void 0 === e.isIntersecting ? 0 === e.intersectionRatio : !e.isIntersecting, this._isPaused || this._charSizeService.hasValidSize || this._charSizeService.measure(), !this._isPaused && this._needsFullRefresh && (this._pausedResizeTask.flush(), this.refreshRows(0, this._rowCount - 1), this._needsFullRefresh = !1)
|
||
}
|
||
refreshRows(e, t, i = !1) {
|
||
this._isPaused ? this._needsFullRefresh = !0 : (i || (this._isNextRenderRedrawOnly = !1), this._renderDebouncer.refresh(e, t, this._rowCount))
|
||
}
|
||
_renderRows(e, t) {
|
||
this._renderer.value && (e = Math.min(e, this._rowCount - 1), t = Math.min(t, this._rowCount - 1), this._renderer.value.renderRows(e, t), this._needsSelectionRefresh && (this._renderer.value.handleSelectionChanged(this._selectionState.start, this._selectionState.end, this._selectionState.columnSelectMode), this._needsSelectionRefresh = !1), this._isNextRenderRedrawOnly || this._onRenderedViewportChange.fire({
|
||
start: e,
|
||
end: t
|
||
}), this._onRender.fire({
|
||
start: e,
|
||
end: t
|
||
}), this._isNextRenderRedrawOnly = !0)
|
||
}
|
||
resize(e, t) {
|
||
this._rowCount = t, this._fireOnCanvasResize()
|
||
}
|
||
_handleOptionsChanged() {
|
||
this._renderer.value && (this.refreshRows(0, this._rowCount - 1), this._fireOnCanvasResize())
|
||
}
|
||
_fireOnCanvasResize() {
|
||
this._renderer.value && (this._renderer.value.dimensions.css.canvas.width === this._canvasWidth && this._renderer.value.dimensions.css.canvas.height === this._canvasHeight || this._onDimensionsChange.fire(this._renderer.value.dimensions))
|
||
}
|
||
hasRenderer() {
|
||
return !!this._renderer.value
|
||
}
|
||
setRenderer(e) {
|
||
this._renderer.value = e, this._renderer.value && (this._renderer.value.onRequestRedraw((e => this.refreshRows(e.start, e.end, !0))), this._needsSelectionRefresh = !0, this._fullRefresh())
|
||
}
|
||
addRefreshCallback(e) {
|
||
return this._renderDebouncer.addRefreshCallback(e)
|
||
}
|
||
_fullRefresh() {
|
||
this._isPaused ? this._needsFullRefresh = !0 : this.refreshRows(0, this._rowCount - 1)
|
||
}
|
||
clearTextureAtlas() {
|
||
this._renderer.value && (this._renderer.value.clearTextureAtlas?.(), this._fullRefresh())
|
||
}
|
||
handleDevicePixelRatioChange() {
|
||
this._charSizeService.measure(), this._renderer.value && (this._renderer.value.handleDevicePixelRatioChange(), this.refreshRows(0, this._rowCount - 1))
|
||
}
|
||
handleResize(e, t) {
|
||
this._renderer.value && (this._isPaused ? this._pausedResizeTask.set((() => this._renderer.value?.handleResize(e, t))) : this._renderer.value.handleResize(e, t), this._fullRefresh())
|
||
}
|
||
handleCharSizeChanged() {
|
||
this._renderer.value?.handleCharSizeChanged()
|
||
}
|
||
handleBlur() {
|
||
this._renderer.value?.handleBlur()
|
||
}
|
||
handleFocus() {
|
||
this._renderer.value?.handleFocus()
|
||
}
|
||
handleSelectionChanged(e, t, i) {
|
||
this._selectionState.start = e, this._selectionState.end = t, this._selectionState.columnSelectMode = i, this._renderer.value?.handleSelectionChanged(e, t, i)
|
||
}
|
||
handleCursorMove() {
|
||
this._renderer.value?.handleCursorMove()
|
||
}
|
||
clear() {
|
||
this._renderer.value?.clear()
|
||
}
|
||
};
|
||
t.RenderService = d = s([r(2, l.IOptionsService), r(3, o.ICharSizeService), r(4, l.IDecorationService), r(5, l.IBufferService), r(6, o.ICoreBrowserService), r(7, o.IThemeService)], d)
|
||
},
|
||
9312: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.SelectionService = void 0;
|
||
const n = i(9806),
|
||
o = i(9504),
|
||
a = i(456),
|
||
h = i(4725),
|
||
c = i(8460),
|
||
l = i(844),
|
||
d = i(6114),
|
||
_ = i(4841),
|
||
u = i(511),
|
||
f = i(2585),
|
||
v = String.fromCharCode(160),
|
||
g = new RegExp(v, "g");
|
||
let p = t.SelectionService = class extends l.Disposable {
|
||
constructor(e, t, i, s, r, n, o, h, d) {
|
||
super(), this._element = e, this._screenElement = t, this._linkifier = i, this._bufferService = s, this._coreService = r, this._mouseService = n, this._optionsService = o, this._renderService = h, this._coreBrowserService = d, this._dragScrollAmount = 0, this._enabled = !0, this._workCell = new u.CellData, this._mouseDownTimeStamp = 0, this._oldHasSelection = !1, this._oldSelectionStart = void 0, this._oldSelectionEnd = void 0, this._onLinuxMouseSelection = this.register(new c.EventEmitter), this.onLinuxMouseSelection = this._onLinuxMouseSelection.event, this._onRedrawRequest = this.register(new c.EventEmitter), this.onRequestRedraw = this._onRedrawRequest.event, this._onSelectionChange = this.register(new c.EventEmitter), this.onSelectionChange = this._onSelectionChange.event, this._onRequestScrollLines = this.register(new c.EventEmitter), this.onRequestScrollLines = this._onRequestScrollLines.event, this._mouseMoveListener = e => this._handleMouseMove(e), this._mouseUpListener = e => this._handleMouseUp(e), this._coreService.onUserInput((() => {
|
||
this.hasSelection && this.clearSelection()
|
||
})), this._trimListener = this._bufferService.buffer.lines.onTrim((e => this._handleTrim(e))), this.register(this._bufferService.buffers.onBufferActivate((e => this._handleBufferActivate(e)))), this.enable(), this._model = new a.SelectionModel(this._bufferService), this._activeSelectionMode = 0, this.register((0, l.toDisposable)((() => {
|
||
this._removeMouseDownListeners()
|
||
})))
|
||
}
|
||
reset() {
|
||
this.clearSelection()
|
||
}
|
||
disable() {
|
||
this.clearSelection(), this._enabled = !1
|
||
}
|
||
enable() {
|
||
this._enabled = !0
|
||
}
|
||
get selectionStart() {
|
||
return this._model.finalSelectionStart
|
||
}
|
||
get selectionEnd() {
|
||
return this._model.finalSelectionEnd
|
||
}
|
||
get hasSelection() {
|
||
const e = this._model.finalSelectionStart,
|
||
t = this._model.finalSelectionEnd;
|
||
return !(!e || !t || e[0] === t[0] && e[1] === t[1])
|
||
}
|
||
get selectionText() {
|
||
const e = this._model.finalSelectionStart,
|
||
t = this._model.finalSelectionEnd;
|
||
if (!e || !t) return "";
|
||
const i = this._bufferService.buffer,
|
||
s = [];
|
||
if (3 === this._activeSelectionMode) {
|
||
if (e[0] === t[0]) return "";
|
||
const r = e[0] < t[0] ? e[0] : t[0],
|
||
n = e[0] < t[0] ? t[0] : e[0];
|
||
for (let o = e[1]; o <= t[1]; o++) {
|
||
const e = i.translateBufferLineToString(o, !0, r, n);
|
||
s.push(e)
|
||
}
|
||
} else {
|
||
const r = e[1] === t[1] ? t[0] : void 0;
|
||
s.push(i.translateBufferLineToString(e[1], !0, e[0], r));
|
||
for (let r = e[1] + 1; r <= t[1] - 1; r++) {
|
||
const e = i.lines.get(r),
|
||
t = i.translateBufferLineToString(r, !0);
|
||
e?.isWrapped ? s[s.length - 1] += t : s.push(t)
|
||
}
|
||
if (e[1] !== t[1]) {
|
||
const e = i.lines.get(t[1]),
|
||
r = i.translateBufferLineToString(t[1], !0, 0, t[0]);
|
||
e && e.isWrapped ? s[s.length - 1] += r : s.push(r)
|
||
}
|
||
}
|
||
return s.map((e => e.replace(g, " "))).join(d.isWindows ? "\r\n" : "\n")
|
||
}
|
||
clearSelection() {
|
||
this._model.clearSelection(), this._removeMouseDownListeners(), this.refresh(), this._onSelectionChange.fire()
|
||
}
|
||
refresh(e) {
|
||
this._refreshAnimationFrame || (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame((() => this._refresh()))), d.isLinux && e && this.selectionText.length && this._onLinuxMouseSelection.fire(this.selectionText)
|
||
}
|
||
_refresh() {
|
||
this._refreshAnimationFrame = void 0, this._onRedrawRequest.fire({
|
||
start: this._model.finalSelectionStart,
|
||
end: this._model.finalSelectionEnd,
|
||
columnSelectMode: 3 === this._activeSelectionMode
|
||
})
|
||
}
|
||
_isClickInSelection(e) {
|
||
const t = this._getMouseBufferCoords(e),
|
||
i = this._model.finalSelectionStart,
|
||
s = this._model.finalSelectionEnd;
|
||
return !!(i && s && t) && this._areCoordsInSelection(t, i, s)
|
||
}
|
||
isCellInSelection(e, t) {
|
||
const i = this._model.finalSelectionStart,
|
||
s = this._model.finalSelectionEnd;
|
||
return !(!i || !s) && this._areCoordsInSelection([e, t], i, s)
|
||
}
|
||
_areCoordsInSelection(e, t, i) {
|
||
return e[1] > t[1] && e[1] < i[1] || t[1] === i[1] && e[1] === t[1] && e[0] >= t[0] && e[0] < i[0] || t[1] < i[1] && e[1] === i[1] && e[0] < i[0] || t[1] < i[1] && e[1] === t[1] && e[0] >= t[0]
|
||
}
|
||
_selectWordAtCursor(e, t) {
|
||
const i = this._linkifier.currentLink?.link?.range;
|
||
if (i) return this._model.selectionStart = [i.start.x - 1, i.start.y - 1], this._model.selectionStartLength = (0, _.getRangeLength)(i, this._bufferService.cols), this._model.selectionEnd = void 0, !0;
|
||
const s = this._getMouseBufferCoords(e);
|
||
return !!s && (this._selectWordAt(s, t), this._model.selectionEnd = void 0, !0)
|
||
}
|
||
selectAll() {
|
||
this._model.isSelectAllActive = !0, this.refresh(), this._onSelectionChange.fire()
|
||
}
|
||
selectLines(e, t) {
|
||
this._model.clearSelection(), e = Math.max(e, 0), t = Math.min(t, this._bufferService.buffer.lines.length - 1), this._model.selectionStart = [0, e], this._model.selectionEnd = [this._bufferService.cols, t], this.refresh(), this._onSelectionChange.fire()
|
||
}
|
||
_handleTrim(e) {
|
||
this._model.handleTrim(e) && this.refresh()
|
||
}
|
||
_getMouseBufferCoords(e) {
|
||
const t = this._mouseService.getCoords(e, this._screenElement, this._bufferService.cols, this._bufferService.rows, !0);
|
||
if (t) return t[0]--, t[1]--, t[1] += this._bufferService.buffer.ydisp, t
|
||
}
|
||
_getMouseEventScrollAmount(e) {
|
||
let t = (0, n.getCoordsRelativeToElement)(this._coreBrowserService.window, e, this._screenElement)[1];
|
||
const i = this._renderService.dimensions.css.canvas.height;
|
||
return t >= 0 && t <= i ? 0 : (t > i && (t -= i), t = Math.min(Math.max(t, -50), 50), t /= 50, t / Math.abs(t) + Math.round(14 * t))
|
||
}
|
||
shouldForceSelection(e) {
|
||
return d.isMac ? e.altKey && this._optionsService.rawOptions.macOptionClickForcesSelection : e.shiftKey
|
||
}
|
||
handleMouseDown(e) {
|
||
if (this._mouseDownTimeStamp = e.timeStamp, (2 !== e.button || !this.hasSelection) && 0 === e.button) {
|
||
if (!this._enabled) {
|
||
if (!this.shouldForceSelection(e)) return;
|
||
e.stopPropagation()
|
||
}
|
||
e.preventDefault(), this._dragScrollAmount = 0, this._enabled && e.shiftKey ? this._handleIncrementalClick(e) : 1 === e.detail ? this._handleSingleClick(e) : 2 === e.detail ? this._handleDoubleClick(e) : 3 === e.detail && this._handleTripleClick(e), this._addMouseDownListeners(), this.refresh(!0)
|
||
}
|
||
}
|
||
_addMouseDownListeners() {
|
||
this._screenElement.ownerDocument && (this._screenElement.ownerDocument.addEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.addEventListener("mouseup", this._mouseUpListener)), this._dragScrollIntervalTimer = this._coreBrowserService.window.setInterval((() => this._dragScroll()), 50)
|
||
}
|
||
_removeMouseDownListeners() {
|
||
this._screenElement.ownerDocument && (this._screenElement.ownerDocument.removeEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.removeEventListener("mouseup", this._mouseUpListener)), this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer), this._dragScrollIntervalTimer = void 0
|
||
}
|
||
_handleIncrementalClick(e) {
|
||
this._model.selectionStart && (this._model.selectionEnd = this._getMouseBufferCoords(e))
|
||
}
|
||
_handleSingleClick(e) {
|
||
if (this._model.selectionStartLength = 0, this._model.isSelectAllActive = !1, this._activeSelectionMode = this.shouldColumnSelect(e) ? 3 : 0, this._model.selectionStart = this._getMouseBufferCoords(e), !this._model.selectionStart) return;
|
||
this._model.selectionEnd = void 0;
|
||
const t = this._bufferService.buffer.lines.get(this._model.selectionStart[1]);
|
||
t && t.length !== this._model.selectionStart[0] && 0 === t.hasWidth(this._model.selectionStart[0]) && this._model.selectionStart[0]++
|
||
}
|
||
_handleDoubleClick(e) {
|
||
this._selectWordAtCursor(e, !0) && (this._activeSelectionMode = 1)
|
||
}
|
||
_handleTripleClick(e) {
|
||
const t = this._getMouseBufferCoords(e);
|
||
t && (this._activeSelectionMode = 2, this._selectLineAt(t[1]))
|
||
}
|
||
shouldColumnSelect(e) {
|
||
return e.altKey && !(d.isMac && this._optionsService.rawOptions.macOptionClickForcesSelection)
|
||
}
|
||
_handleMouseMove(e) {
|
||
if (e.stopImmediatePropagation(), !this._model.selectionStart) return;
|
||
const t = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null;
|
||
if (this._model.selectionEnd = this._getMouseBufferCoords(e), !this._model.selectionEnd) return void this.refresh(!0);
|
||
2 === this._activeSelectionMode ? this._model.selectionEnd[1] < this._model.selectionStart[1] ? this._model.selectionEnd[0] = 0 : this._model.selectionEnd[0] = this._bufferService.cols : 1 === this._activeSelectionMode && this._selectToWordAt(this._model.selectionEnd), this._dragScrollAmount = this._getMouseEventScrollAmount(e), 3 !== this._activeSelectionMode && (this._dragScrollAmount > 0 ? this._model.selectionEnd[0] = this._bufferService.cols : this._dragScrollAmount < 0 && (this._model.selectionEnd[0] = 0));
|
||
const i = this._bufferService.buffer;
|
||
if (this._model.selectionEnd[1] < i.lines.length) {
|
||
const e = i.lines.get(this._model.selectionEnd[1]);
|
||
e && 0 === e.hasWidth(this._model.selectionEnd[0]) && this._model.selectionEnd[0] < this._bufferService.cols && this._model.selectionEnd[0]++
|
||
}
|
||
t && t[0] === this._model.selectionEnd[0] && t[1] === this._model.selectionEnd[1] || this.refresh(!0)
|
||
}
|
||
_dragScroll() {
|
||
if (this._model.selectionEnd && this._model.selectionStart && this._dragScrollAmount) {
|
||
this._onRequestScrollLines.fire({
|
||
amount: this._dragScrollAmount,
|
||
suppressScrollEvent: !1
|
||
});
|
||
const e = this._bufferService.buffer;
|
||
this._dragScrollAmount > 0 ? (3 !== this._activeSelectionMode && (this._model.selectionEnd[0] = this._bufferService.cols), this._model.selectionEnd[1] = Math.min(e.ydisp + this._bufferService.rows, e.lines.length - 1)) : (3 !== this._activeSelectionMode && (this._model.selectionEnd[0] = 0), this._model.selectionEnd[1] = e.ydisp), this.refresh()
|
||
}
|
||
}
|
||
_handleMouseUp(e) {
|
||
const t = e.timeStamp - this._mouseDownTimeStamp;
|
||
if (this._removeMouseDownListeners(), this.selectionText.length <= 1 && t < 500 && e.altKey && this._optionsService.rawOptions.altClickMovesCursor) {
|
||
if (this._bufferService.buffer.ybase === this._bufferService.buffer.ydisp) {
|
||
const t = this._mouseService.getCoords(e, this._element, this._bufferService.cols, this._bufferService.rows, !1);
|
||
if (t && void 0 !== t[0] && void 0 !== t[1]) {
|
||
const e = (0, o.moveToCellSequence)(t[0] - 1, t[1] - 1, this._bufferService, this._coreService.decPrivateModes.applicationCursorKeys);
|
||
this._coreService.triggerDataEvent(e, !0)
|
||
}
|
||
}
|
||
} else this._fireEventIfSelectionChanged()
|
||
}
|
||
_fireEventIfSelectionChanged() {
|
||
const e = this._model.finalSelectionStart,
|
||
t = this._model.finalSelectionEnd,
|
||
i = !(!e || !t || e[0] === t[0] && e[1] === t[1]);
|
||
i ? e && t && (this._oldSelectionStart && this._oldSelectionEnd && e[0] === this._oldSelectionStart[0] && e[1] === this._oldSelectionStart[1] && t[0] === this._oldSelectionEnd[0] && t[1] === this._oldSelectionEnd[1] || this._fireOnSelectionChange(e, t, i)) : this._oldHasSelection && this._fireOnSelectionChange(e, t, i)
|
||
}
|
||
_fireOnSelectionChange(e, t, i) {
|
||
this._oldSelectionStart = e, this._oldSelectionEnd = t, this._oldHasSelection = i, this._onSelectionChange.fire()
|
||
}
|
||
_handleBufferActivate(e) {
|
||
this.clearSelection(), this._trimListener.dispose(), this._trimListener = e.activeBuffer.lines.onTrim((e => this._handleTrim(e)))
|
||
}
|
||
_convertViewportColToCharacterIndex(e, t) {
|
||
let i = t;
|
||
for (let s = 0; t >= s; s++) {
|
||
const r = e.loadCell(s, this._workCell).getChars().length;
|
||
0 === this._workCell.getWidth() ? i-- : r > 1 && t !== s && (i += r - 1)
|
||
}
|
||
return i
|
||
}
|
||
setSelection(e, t, i) {
|
||
this._model.clearSelection(), this._removeMouseDownListeners(), this._model.selectionStart = [e, t], this._model.selectionStartLength = i, this.refresh(), this._fireEventIfSelectionChanged()
|
||
}
|
||
rightClickSelect(e) {
|
||
this._isClickInSelection(e) || (this._selectWordAtCursor(e, !1) && this.refresh(!0), this._fireEventIfSelectionChanged())
|
||
}
|
||
_getWordAt(e, t, i = !0, s = !0) {
|
||
if (e[0] >= this._bufferService.cols) return;
|
||
const r = this._bufferService.buffer,
|
||
n = r.lines.get(e[1]);
|
||
if (!n) return;
|
||
const o = r.translateBufferLineToString(e[1], !1);
|
||
let a = this._convertViewportColToCharacterIndex(n, e[0]),
|
||
h = a;
|
||
const c = e[0] - a;
|
||
let l = 0,
|
||
d = 0,
|
||
_ = 0,
|
||
u = 0;
|
||
if (" " === o.charAt(a)) {
|
||
for (; a > 0 && " " === o.charAt(a - 1);) a--;
|
||
for (; h < o.length && " " === o.charAt(h + 1);) h++
|
||
} else {
|
||
let t = e[0],
|
||
i = e[0];
|
||
0 === n.getWidth(t) && (l++, t--), 2 === n.getWidth(i) && (d++, i++);
|
||
const s = n.getString(i).length;
|
||
for (s > 1 && (u += s - 1, h += s - 1); t > 0 && a > 0 && !this._isCharWordSeparator(n.loadCell(t - 1, this._workCell));) {
|
||
n.loadCell(t - 1, this._workCell);
|
||
const e = this._workCell.getChars().length;
|
||
0 === this._workCell.getWidth() ? (l++, t--) : e > 1 && (_ += e - 1, a -= e - 1), a--, t--
|
||
}
|
||
for (; i < n.length && h + 1 < o.length && !this._isCharWordSeparator(n.loadCell(i + 1, this._workCell));) {
|
||
n.loadCell(i + 1, this._workCell);
|
||
const e = this._workCell.getChars().length;
|
||
2 === this._workCell.getWidth() ? (d++, i++) : e > 1 && (u += e - 1, h += e - 1), h++, i++
|
||
}
|
||
}
|
||
h++;
|
||
let f = a + c - l + _,
|
||
v = Math.min(this._bufferService.cols, h - a + l + d - _ - u);
|
||
if (t || "" !== o.slice(a, h).trim()) {
|
||
if (i && 0 === f && 32 !== n.getCodePoint(0)) {
|
||
const t = r.lines.get(e[1] - 1);
|
||
if (t && n.isWrapped && 32 !== t.getCodePoint(this._bufferService.cols - 1)) {
|
||
const t = this._getWordAt([this._bufferService.cols - 1, e[1] - 1], !1, !0, !1);
|
||
if (t) {
|
||
const e = this._bufferService.cols - t.start;
|
||
f -= e, v += e
|
||
}
|
||
}
|
||
}
|
||
if (s && f + v === this._bufferService.cols && 32 !== n.getCodePoint(this._bufferService.cols - 1)) {
|
||
const t = r.lines.get(e[1] + 1);
|
||
if (t?.isWrapped && 32 !== t.getCodePoint(0)) {
|
||
const t = this._getWordAt([0, e[1] + 1], !1, !1, !0);
|
||
t && (v += t.length)
|
||
}
|
||
}
|
||
return {
|
||
start: f,
|
||
length: v
|
||
}
|
||
}
|
||
}
|
||
_selectWordAt(e, t) {
|
||
const i = this._getWordAt(e, t);
|
||
if (i) {
|
||
for (; i.start < 0;) i.start += this._bufferService.cols, e[1]--;
|
||
this._model.selectionStart = [i.start, e[1]], this._model.selectionStartLength = i.length
|
||
}
|
||
}
|
||
_selectToWordAt(e) {
|
||
const t = this._getWordAt(e, !0);
|
||
if (t) {
|
||
let i = e[1];
|
||
for (; t.start < 0;) t.start += this._bufferService.cols, i--;
|
||
if (!this._model.areSelectionValuesReversed())
|
||
for (; t.start + t.length > this._bufferService.cols;) t.length -= this._bufferService.cols, i++;
|
||
this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? t.start : t.start + t.length, i]
|
||
}
|
||
}
|
||
_isCharWordSeparator(e) {
|
||
return 0 !== e.getWidth() && this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars()) >= 0
|
||
}
|
||
_selectLineAt(e) {
|
||
const t = this._bufferService.buffer.getWrappedRangeForLine(e),
|
||
i = {
|
||
start: {
|
||
x: 0,
|
||
y: t.first
|
||
},
|
||
end: {
|
||
x: this._bufferService.cols - 1,
|
||
y: t.last
|
||
}
|
||
};
|
||
this._model.selectionStart = [0, t.first], this._model.selectionEnd = void 0, this._model.selectionStartLength = (0, _.getRangeLength)(i, this._bufferService.cols)
|
||
}
|
||
};
|
||
t.SelectionService = p = s([r(3, f.IBufferService), r(4, f.ICoreService), r(5, h.IMouseService), r(6, f.IOptionsService), r(7, h.IRenderService), r(8, h.ICoreBrowserService)], p)
|
||
},
|
||
4725: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ILinkProviderService = t.IThemeService = t.ICharacterJoinerService = t.ISelectionService = t.IRenderService = t.IMouseService = t.ICoreBrowserService = t.ICharSizeService = void 0;
|
||
const s = i(8343);
|
||
t.ICharSizeService = (0, s.createDecorator)("CharSizeService"), t.ICoreBrowserService = (0, s.createDecorator)("CoreBrowserService"), t.IMouseService = (0, s.createDecorator)("MouseService"), t.IRenderService = (0, s.createDecorator)("RenderService"), t.ISelectionService = (0, s.createDecorator)("SelectionService"), t.ICharacterJoinerService = (0, s.createDecorator)("CharacterJoinerService"), t.IThemeService = (0, s.createDecorator)("ThemeService"), t.ILinkProviderService = (0, s.createDecorator)("LinkProviderService")
|
||
},
|
||
6731: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ThemeService = t.DEFAULT_ANSI_COLORS = void 0;
|
||
const n = i(7239),
|
||
o = i(8055),
|
||
a = i(8460),
|
||
h = i(844),
|
||
c = i(2585),
|
||
l = o.css.toColor("#ffffff"),
|
||
d = o.css.toColor("#000000"),
|
||
_ = o.css.toColor("#ffffff"),
|
||
u = o.css.toColor("#000000"),
|
||
f = {
|
||
css: "rgba(255, 255, 255, 0.3)",
|
||
rgba: 4294967117
|
||
};
|
||
t.DEFAULT_ANSI_COLORS = Object.freeze((() => {
|
||
const e = [o.css.toColor("#2e3436"), o.css.toColor("#cc0000"), o.css.toColor("#4e9a06"), o.css.toColor("#c4a000"), o.css.toColor("#3465a4"), o.css.toColor("#75507b"), o.css.toColor("#06989a"), o.css.toColor("#d3d7cf"), o.css.toColor("#555753"), o.css.toColor("#ef2929"), o.css.toColor("#8ae234"), o.css.toColor("#fce94f"), o.css.toColor("#729fcf"), o.css.toColor("#ad7fa8"), o.css.toColor("#34e2e2"), o.css.toColor("#eeeeec")],
|
||
t = [0, 95, 135, 175, 215, 255];
|
||
for (let i = 0; i < 216; i++) {
|
||
const s = t[i / 36 % 6 | 0],
|
||
r = t[i / 6 % 6 | 0],
|
||
n = t[i % 6];
|
||
e.push({
|
||
css: o.channels.toCss(s, r, n),
|
||
rgba: o.channels.toRgba(s, r, n)
|
||
})
|
||
}
|
||
for (let t = 0; t < 24; t++) {
|
||
const i = 8 + 10 * t;
|
||
e.push({
|
||
css: o.channels.toCss(i, i, i),
|
||
rgba: o.channels.toRgba(i, i, i)
|
||
})
|
||
}
|
||
return e
|
||
})());
|
||
let v = t.ThemeService = class extends h.Disposable {
|
||
get colors() {
|
||
return this._colors
|
||
}
|
||
constructor(e) {
|
||
super(), this._optionsService = e, this._contrastCache = new n.ColorContrastCache, this._halfContrastCache = new n.ColorContrastCache, this._onChangeColors = this.register(new a.EventEmitter), this.onChangeColors = this._onChangeColors.event, this._colors = {
|
||
foreground: l,
|
||
background: d,
|
||
cursor: _,
|
||
cursorAccent: u,
|
||
selectionForeground: void 0,
|
||
selectionBackgroundTransparent: f,
|
||
selectionBackgroundOpaque: o.color.blend(d, f),
|
||
selectionInactiveBackgroundTransparent: f,
|
||
selectionInactiveBackgroundOpaque: o.color.blend(d, f),
|
||
ansi: t.DEFAULT_ANSI_COLORS.slice(),
|
||
contrastCache: this._contrastCache,
|
||
halfContrastCache: this._halfContrastCache
|
||
}, this._updateRestoreColors(), this._setTheme(this._optionsService.rawOptions.theme), this.register(this._optionsService.onSpecificOptionChange("minimumContrastRatio", (() => this._contrastCache.clear()))), this.register(this._optionsService.onSpecificOptionChange("theme", (() => this._setTheme(this._optionsService.rawOptions.theme))))
|
||
}
|
||
_setTheme(e = {}) {
|
||
const i = this._colors;
|
||
if (i.foreground = g(e.foreground, l), i.background = g(e.background, d), i.cursor = g(e.cursor, _), i.cursorAccent = g(e.cursorAccent, u), i.selectionBackgroundTransparent = g(e.selectionBackground, f), i.selectionBackgroundOpaque = o.color.blend(i.background, i.selectionBackgroundTransparent), i.selectionInactiveBackgroundTransparent = g(e.selectionInactiveBackground, i.selectionBackgroundTransparent), i.selectionInactiveBackgroundOpaque = o.color.blend(i.background, i.selectionInactiveBackgroundTransparent), i.selectionForeground = e.selectionForeground ? g(e.selectionForeground, o.NULL_COLOR) : void 0, i.selectionForeground === o.NULL_COLOR && (i.selectionForeground = void 0), o.color.isOpaque(i.selectionBackgroundTransparent)) {
|
||
const e = .3;
|
||
i.selectionBackgroundTransparent = o.color.opacity(i.selectionBackgroundTransparent, e)
|
||
}
|
||
if (o.color.isOpaque(i.selectionInactiveBackgroundTransparent)) {
|
||
const e = .3;
|
||
i.selectionInactiveBackgroundTransparent = o.color.opacity(i.selectionInactiveBackgroundTransparent, e)
|
||
}
|
||
if (i.ansi = t.DEFAULT_ANSI_COLORS.slice(), i.ansi[0] = g(e.black, t.DEFAULT_ANSI_COLORS[0]), i.ansi[1] = g(e.red, t.DEFAULT_ANSI_COLORS[1]), i.ansi[2] = g(e.green, t.DEFAULT_ANSI_COLORS[2]), i.ansi[3] = g(e.yellow, t.DEFAULT_ANSI_COLORS[3]), i.ansi[4] = g(e.blue, t.DEFAULT_ANSI_COLORS[4]), i.ansi[5] = g(e.magenta, t.DEFAULT_ANSI_COLORS[5]), i.ansi[6] = g(e.cyan, t.DEFAULT_ANSI_COLORS[6]), i.ansi[7] = g(e.white, t.DEFAULT_ANSI_COLORS[7]), i.ansi[8] = g(e.brightBlack, t.DEFAULT_ANSI_COLORS[8]), i.ansi[9] = g(e.brightRed, t.DEFAULT_ANSI_COLORS[9]), i.ansi[10] = g(e.brightGreen, t.DEFAULT_ANSI_COLORS[10]), i.ansi[11] = g(e.brightYellow, t.DEFAULT_ANSI_COLORS[11]), i.ansi[12] = g(e.brightBlue, t.DEFAULT_ANSI_COLORS[12]), i.ansi[13] = g(e.brightMagenta, t.DEFAULT_ANSI_COLORS[13]), i.ansi[14] = g(e.brightCyan, t.DEFAULT_ANSI_COLORS[14]), i.ansi[15] = g(e.brightWhite, t.DEFAULT_ANSI_COLORS[15]), e.extendedAnsi) {
|
||
const s = Math.min(i.ansi.length - 16, e.extendedAnsi.length);
|
||
for (let r = 0; r < s; r++) i.ansi[r + 16] = g(e.extendedAnsi[r], t.DEFAULT_ANSI_COLORS[r + 16])
|
||
}
|
||
this._contrastCache.clear(), this._halfContrastCache.clear(), this._updateRestoreColors(), this._onChangeColors.fire(this.colors)
|
||
}
|
||
restoreColor(e) {
|
||
this._restoreColor(e), this._onChangeColors.fire(this.colors)
|
||
}
|
||
_restoreColor(e) {
|
||
if (void 0 !== e) switch (e) {
|
||
case 256:
|
||
this._colors.foreground = this._restoreColors.foreground;
|
||
break;
|
||
case 257:
|
||
this._colors.background = this._restoreColors.background;
|
||
break;
|
||
case 258:
|
||
this._colors.cursor = this._restoreColors.cursor;
|
||
break;
|
||
default:
|
||
this._colors.ansi[e] = this._restoreColors.ansi[e]
|
||
} else
|
||
for (let e = 0; e < this._restoreColors.ansi.length; ++e) this._colors.ansi[e] = this._restoreColors.ansi[e]
|
||
}
|
||
modifyColors(e) {
|
||
e(this._colors), this._onChangeColors.fire(this.colors)
|
||
}
|
||
_updateRestoreColors() {
|
||
this._restoreColors = {
|
||
foreground: this._colors.foreground,
|
||
background: this._colors.background,
|
||
cursor: this._colors.cursor,
|
||
ansi: this._colors.ansi.slice()
|
||
}
|
||
}
|
||
};
|
||
|
||
function g(e, t) {
|
||
if (void 0 !== e) try {
|
||
return o.css.toColor(e)
|
||
} catch {}
|
||
return t
|
||
}
|
||
t.ThemeService = v = s([r(0, c.IOptionsService)], v)
|
||
},
|
||
6349: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CircularList = void 0;
|
||
const s = i(8460),
|
||
r = i(844);
|
||
class n extends r.Disposable {
|
||
constructor(e) {
|
||
super(), this._maxLength = e, this.onDeleteEmitter = this.register(new s.EventEmitter), this.onDelete = this.onDeleteEmitter.event, this.onInsertEmitter = this.register(new s.EventEmitter), this.onInsert = this.onInsertEmitter.event, this.onTrimEmitter = this.register(new s.EventEmitter), this.onTrim = this.onTrimEmitter.event, this._array = new Array(this._maxLength), this._startIndex = 0, this._length = 0
|
||
}
|
||
get maxLength() {
|
||
return this._maxLength
|
||
}
|
||
set maxLength(e) {
|
||
if (this._maxLength === e) return;
|
||
const t = new Array(e);
|
||
for (let i = 0; i < Math.min(e, this.length); i++) t[i] = this._array[this._getCyclicIndex(i)];
|
||
this._array = t, this._maxLength = e, this._startIndex = 0
|
||
}
|
||
get length() {
|
||
return this._length
|
||
}
|
||
set length(e) {
|
||
if (e > this._length)
|
||
for (let t = this._length; t < e; t++) this._array[t] = void 0;
|
||
this._length = e
|
||
}
|
||
get(e) {
|
||
return this._array[this._getCyclicIndex(e)]
|
||
}
|
||
set(e, t) {
|
||
this._array[this._getCyclicIndex(e)] = t
|
||
}
|
||
push(e) {
|
||
this._array[this._getCyclicIndex(this._length)] = e, this._length === this._maxLength ? (this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1)) : this._length++
|
||
}
|
||
recycle() {
|
||
if (this._length !== this._maxLength) throw new Error("Can only recycle when the buffer is full");
|
||
return this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1), this._array[this._getCyclicIndex(this._length - 1)]
|
||
}
|
||
get isFull() {
|
||
return this._length === this._maxLength
|
||
}
|
||
pop() {
|
||
return this._array[this._getCyclicIndex(this._length-- - 1)]
|
||
}
|
||
splice(e, t, ...i) {
|
||
if (t) {
|
||
for (let i = e; i < this._length - t; i++) this._array[this._getCyclicIndex(i)] = this._array[this._getCyclicIndex(i + t)];
|
||
this._length -= t, this.onDeleteEmitter.fire({
|
||
index: e,
|
||
amount: t
|
||
})
|
||
}
|
||
for (let t = this._length - 1; t >= e; t--) this._array[this._getCyclicIndex(t + i.length)] = this._array[this._getCyclicIndex(t)];
|
||
for (let t = 0; t < i.length; t++) this._array[this._getCyclicIndex(e + t)] = i[t];
|
||
if (i.length && this.onInsertEmitter.fire({
|
||
index: e,
|
||
amount: i.length
|
||
}), this._length + i.length > this._maxLength) {
|
||
const e = this._length + i.length - this._maxLength;
|
||
this._startIndex += e, this._length = this._maxLength, this.onTrimEmitter.fire(e)
|
||
} else this._length += i.length
|
||
}
|
||
trimStart(e) {
|
||
e > this._length && (e = this._length), this._startIndex += e, this._length -= e, this.onTrimEmitter.fire(e)
|
||
}
|
||
shiftElements(e, t, i) {
|
||
if (!(t <= 0)) {
|
||
if (e < 0 || e >= this._length) throw new Error("start argument out of range");
|
||
if (e + i < 0) throw new Error("Cannot shift elements in list beyond index 0");
|
||
if (i > 0) {
|
||
for (let s = t - 1; s >= 0; s--) this.set(e + s + i, this.get(e + s));
|
||
const s = e + t + i - this._length;
|
||
if (s > 0)
|
||
for (this._length += s; this._length > this._maxLength;) this._length--, this._startIndex++, this.onTrimEmitter.fire(1)
|
||
} else
|
||
for (let s = 0; s < t; s++) this.set(e + s + i, this.get(e + s))
|
||
}
|
||
}
|
||
_getCyclicIndex(e) {
|
||
return (this._startIndex + e) % this._maxLength
|
||
}
|
||
}
|
||
t.CircularList = n
|
||
},
|
||
1439: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.clone = void 0, t.clone = function e(t, i = 5) {
|
||
if ("object" != typeof t) return t;
|
||
const s = Array.isArray(t) ? [] : {};
|
||
for (const r in t) s[r] = i <= 1 ? t[r] : t[r] && e(t[r], i - 1);
|
||
return s
|
||
}
|
||
},
|
||
8055: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0;
|
||
let i = 0,
|
||
s = 0,
|
||
r = 0,
|
||
n = 0;
|
||
var o, a, h, c, l;
|
||
|
||
function d(e) {
|
||
const t = e.toString(16);
|
||
return t.length < 2 ? "0" + t : t
|
||
}
|
||
|
||
function _(e, t) {
|
||
return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05)
|
||
}
|
||
t.NULL_COLOR = {
|
||
css: "#00000000",
|
||
rgba: 0
|
||
},
|
||
function(e) {
|
||
e.toCss = function(e, t, i, s) {
|
||
return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}`
|
||
}, e.toRgba = function(e, t, i, s = 255) {
|
||
return (e << 24 | t << 16 | i << 8 | s) >>> 0
|
||
}, e.toColor = function(t, i, s, r) {
|
||
return {
|
||
css: e.toCss(t, i, s, r),
|
||
rgba: e.toRgba(t, i, s, r)
|
||
}
|
||
}
|
||
}(o || (t.channels = o = {})),
|
||
function(e) {
|
||
function t(e, t) {
|
||
return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), {
|
||
css: o.toCss(i, s, r, n),
|
||
rgba: o.toRgba(i, s, r, n)
|
||
}
|
||
}
|
||
e.blend = function(e, t) {
|
||
if (n = (255 & t.rgba) / 255, 1 === n) return {
|
||
css: t.css,
|
||
rgba: t.rgba
|
||
};
|
||
const a = t.rgba >> 24 & 255,
|
||
h = t.rgba >> 16 & 255,
|
||
c = t.rgba >> 8 & 255,
|
||
l = e.rgba >> 24 & 255,
|
||
d = e.rgba >> 16 & 255,
|
||
_ = e.rgba >> 8 & 255;
|
||
return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), {
|
||
css: o.toCss(i, s, r),
|
||
rgba: o.toRgba(i, s, r)
|
||
}
|
||
}, e.isOpaque = function(e) {
|
||
return !(255 & ~e.rgba)
|
||
}, e.ensureContrastRatio = function(e, t, i) {
|
||
const s = l.ensureContrastRatio(e.rgba, t.rgba, i);
|
||
if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255)
|
||
}, e.opaque = function(e) {
|
||
const t = (255 | e.rgba) >>> 0;
|
||
return [i, s, r] = l.toChannels(t), {
|
||
css: o.toCss(i, s, r),
|
||
rgba: t
|
||
}
|
||
}, e.opacity = t, e.multiplyOpacity = function(e, i) {
|
||
return n = 255 & e.rgba, t(e, n * i / 255)
|
||
}, e.toColorRGB = function(e) {
|
||
return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255]
|
||
}
|
||
}(a || (t.color = a = {})),
|
||
function(e) {
|
||
let t, a;
|
||
try {
|
||
const e = document.createElement("canvas");
|
||
e.width = 1, e.height = 1;
|
||
const i = e.getContext("2d", {
|
||
willReadFrequently: !0
|
||
});
|
||
i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1))
|
||
} catch {}
|
||
e.toColor = function(e) {
|
||
if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) {
|
||
case 4:
|
||
return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r);
|
||
case 5:
|
||
return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n);
|
||
case 7:
|
||
return {
|
||
css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0
|
||
};
|
||
case 9:
|
||
return {
|
||
css: e, rgba: parseInt(e.slice(1), 16) >>> 0
|
||
}
|
||
}
|
||
const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);
|
||
if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n);
|
||
if (!t || !a) throw new Error("css.toColor: Unsupported css format");
|
||
if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format");
|
||
if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format");
|
||
return {
|
||
rgba: o.toRgba(i, s, r, n),
|
||
css: e
|
||
}
|
||
}
|
||
}(h || (t.css = h = {})),
|
||
function(e) {
|
||
function t(e, t, i) {
|
||
const s = e / 255,
|
||
r = t / 255,
|
||
n = i / 255;
|
||
return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4))
|
||
}
|
||
e.relativeLuminance = function(e) {
|
||
return t(e >> 16 & 255, e >> 8 & 255, 255 & e)
|
||
}, e.relativeLuminance2 = t
|
||
}(c || (t.rgb = c = {})),
|
||
function(e) {
|
||
function t(e, t, i) {
|
||
const s = e >> 24 & 255,
|
||
r = e >> 16 & 255,
|
||
n = e >> 8 & 255;
|
||
let o = t >> 24 & 255,
|
||
a = t >> 16 & 255,
|
||
h = t >> 8 & 255,
|
||
l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
for (; l < i && (o > 0 || a > 0 || h > 0);) o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
return (o << 24 | a << 16 | h << 8 | 255) >>> 0
|
||
}
|
||
|
||
function a(e, t, i) {
|
||
const s = e >> 24 & 255,
|
||
r = e >> 16 & 255,
|
||
n = e >> 8 & 255;
|
||
let o = t >> 24 & 255,
|
||
a = t >> 16 & 255,
|
||
h = t >> 8 & 255,
|
||
l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
for (; l < i && (o < 255 || a < 255 || h < 255);) o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
return (o << 24 | a << 16 | h << 8 | 255) >>> 0
|
||
}
|
||
e.blend = function(e, t) {
|
||
if (n = (255 & t) / 255, 1 === n) return t;
|
||
const a = t >> 24 & 255,
|
||
h = t >> 16 & 255,
|
||
c = t >> 8 & 255,
|
||
l = e >> 24 & 255,
|
||
d = e >> 16 & 255,
|
||
_ = e >> 8 & 255;
|
||
return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r)
|
||
}, e.ensureContrastRatio = function(e, i, s) {
|
||
const r = c.relativeLuminance(e >> 8),
|
||
n = c.relativeLuminance(i >> 8);
|
||
if (_(r, n) < s) {
|
||
if (n < r) {
|
||
const n = t(e, i, s),
|
||
o = _(r, c.relativeLuminance(n >> 8));
|
||
if (o < s) {
|
||
const t = a(e, i, s);
|
||
return o > _(r, c.relativeLuminance(t >> 8)) ? n : t
|
||
}
|
||
return n
|
||
}
|
||
const o = a(e, i, s),
|
||
h = _(r, c.relativeLuminance(o >> 8));
|
||
if (h < s) {
|
||
const n = t(e, i, s);
|
||
return h > _(r, c.relativeLuminance(n >> 8)) ? o : n
|
||
}
|
||
return o
|
||
}
|
||
}, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function(e) {
|
||
return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
|
||
}
|
||
}(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _
|
||
},
|
||
8969: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CoreTerminal = void 0;
|
||
const s = i(844),
|
||
r = i(2585),
|
||
n = i(4348),
|
||
o = i(7866),
|
||
a = i(744),
|
||
h = i(7302),
|
||
c = i(6975),
|
||
l = i(8460),
|
||
d = i(1753),
|
||
_ = i(1480),
|
||
u = i(7994),
|
||
f = i(9282),
|
||
v = i(5435),
|
||
g = i(5981),
|
||
p = i(2660);
|
||
let m = !1;
|
||
class C extends s.Disposable {
|
||
get onScroll() {
|
||
return this._onScrollApi || (this._onScrollApi = this.register(new l.EventEmitter), this._onScroll.event((e => {
|
||
this._onScrollApi?.fire(e.position)
|
||
}))), this._onScrollApi.event
|
||
}
|
||
get cols() {
|
||
return this._bufferService.cols
|
||
}
|
||
get rows() {
|
||
return this._bufferService.rows
|
||
}
|
||
get buffers() {
|
||
return this._bufferService.buffers
|
||
}
|
||
get options() {
|
||
return this.optionsService.options
|
||
}
|
||
set options(e) {
|
||
for (const t in e) this.optionsService.options[t] = e[t]
|
||
}
|
||
constructor(e) {
|
||
super(), this._windowsWrappingHeuristics = this.register(new s.MutableDisposable), this._onBinary = this.register(new l.EventEmitter), this.onBinary = this._onBinary.event, this._onData = this.register(new l.EventEmitter), this.onData = this._onData.event, this._onLineFeed = this.register(new l.EventEmitter), this.onLineFeed = this._onLineFeed.event, this._onResize = this.register(new l.EventEmitter), this.onResize = this._onResize.event, this._onWriteParsed = this.register(new l.EventEmitter), this.onWriteParsed = this._onWriteParsed.event, this._onScroll = this.register(new l.EventEmitter), this._instantiationService = new n.InstantiationService, this.optionsService = this.register(new h.OptionsService(e)), this._instantiationService.setService(r.IOptionsService, this.optionsService), this._bufferService = this.register(this._instantiationService.createInstance(a.BufferService)), this._instantiationService.setService(r.IBufferService, this._bufferService), this._logService = this.register(this._instantiationService.createInstance(o.LogService)), this._instantiationService.setService(r.ILogService, this._logService), this.coreService = this.register(this._instantiationService.createInstance(c.CoreService)), this._instantiationService.setService(r.ICoreService, this.coreService), this.coreMouseService = this.register(this._instantiationService.createInstance(d.CoreMouseService)), this._instantiationService.setService(r.ICoreMouseService, this.coreMouseService), this.unicodeService = this.register(this._instantiationService.createInstance(_.UnicodeService)), this._instantiationService.setService(r.IUnicodeService, this.unicodeService), this._charsetService = this._instantiationService.createInstance(u.CharsetService), this._instantiationService.setService(r.ICharsetService, this._charsetService), this._oscLinkService = this._instantiationService.createInstance(p.OscLinkService), this._instantiationService.setService(r.IOscLinkService, this._oscLinkService), this._inputHandler = this.register(new v.InputHandler(this._bufferService, this._charsetService, this.coreService, this._logService, this.optionsService, this._oscLinkService, this.coreMouseService, this.unicodeService)), this.register((0, l.forwardEvent)(this._inputHandler.onLineFeed, this._onLineFeed)), this.register(this._inputHandler), this.register((0, l.forwardEvent)(this._bufferService.onResize, this._onResize)), this.register((0, l.forwardEvent)(this.coreService.onData, this._onData)), this.register((0, l.forwardEvent)(this.coreService.onBinary, this._onBinary)), this.register(this.coreService.onRequestScrollToBottom((() => this.scrollToBottom()))), this.register(this.coreService.onUserInput((() => this._writeBuffer.handleUserInput()))), this.register(this.optionsService.onMultipleOptionChange(["windowsMode", "windowsPty"], (() => this._handleWindowsPtyOptionChange()))), this.register(this._bufferService.onScroll((e => {
|
||
this._onScroll.fire({
|
||
position: this._bufferService.buffer.ydisp,
|
||
source: 0
|
||
}), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom)
|
||
}))), this.register(this._inputHandler.onScroll((e => {
|
||
this._onScroll.fire({
|
||
position: this._bufferService.buffer.ydisp,
|
||
source: 0
|
||
}), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom)
|
||
}))), this._writeBuffer = this.register(new g.WriteBuffer(((e, t) => this._inputHandler.parse(e, t)))), this.register((0, l.forwardEvent)(this._writeBuffer.onWriteParsed, this._onWriteParsed))
|
||
}
|
||
write(e, t) {
|
||
this._writeBuffer.write(e, t)
|
||
}
|
||
writeSync(e, t) {
|
||
this._logService.logLevel <= r.LogLevelEnum.WARN && !m && (this._logService.warn("writeSync is unreliable and will be removed soon."), m = !0), this._writeBuffer.writeSync(e, t)
|
||
}
|
||
input(e, t = !0) {
|
||
this.coreService.triggerDataEvent(e, t)
|
||
}
|
||
resize(e, t) {
|
||
isNaN(e) || isNaN(t) || (e = Math.max(e, a.MINIMUM_COLS), t = Math.max(t, a.MINIMUM_ROWS), this._bufferService.resize(e, t))
|
||
}
|
||
scroll(e, t = !1) {
|
||
this._bufferService.scroll(e, t)
|
||
}
|
||
scrollLines(e, t, i) {
|
||
this._bufferService.scrollLines(e, t, i)
|
||
}
|
||
scrollPages(e) {
|
||
this.scrollLines(e * (this.rows - 1))
|
||
}
|
||
scrollToTop() {
|
||
this.scrollLines(-this._bufferService.buffer.ydisp)
|
||
}
|
||
scrollToBottom() {
|
||
this.scrollLines(this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp)
|
||
}
|
||
scrollToLine(e) {
|
||
const t = e - this._bufferService.buffer.ydisp;
|
||
0 !== t && this.scrollLines(t)
|
||
}
|
||
registerEscHandler(e, t) {
|
||
return this._inputHandler.registerEscHandler(e, t)
|
||
}
|
||
registerDcsHandler(e, t) {
|
||
return this._inputHandler.registerDcsHandler(e, t)
|
||
}
|
||
registerCsiHandler(e, t) {
|
||
return this._inputHandler.registerCsiHandler(e, t)
|
||
}
|
||
registerOscHandler(e, t) {
|
||
return this._inputHandler.registerOscHandler(e, t)
|
||
}
|
||
_setup() {
|
||
this._handleWindowsPtyOptionChange()
|
||
}
|
||
reset() {
|
||
this._inputHandler.reset(), this._bufferService.reset(), this._charsetService.reset(), this.coreService.reset(), this.coreMouseService.reset()
|
||
}
|
||
_handleWindowsPtyOptionChange() {
|
||
let e = !1;
|
||
const t = this.optionsService.rawOptions.windowsPty;
|
||
t && void 0 !== t.buildNumber && void 0 !== t.buildNumber ? e = !!("conpty" === t.backend && t.buildNumber < 21376) : this.optionsService.rawOptions.windowsMode && (e = !0), e ? this._enableWindowsWrappingHeuristics() : this._windowsWrappingHeuristics.clear()
|
||
}
|
||
_enableWindowsWrappingHeuristics() {
|
||
if (!this._windowsWrappingHeuristics.value) {
|
||
const e = [];
|
||
e.push(this.onLineFeed(f.updateWindowsModeWrappedState.bind(null, this._bufferService))), e.push(this.registerCsiHandler({
|
||
final: "H"
|
||
}, (() => ((0, f.updateWindowsModeWrappedState)(this._bufferService), !1)))), this._windowsWrappingHeuristics.value = (0, s.toDisposable)((() => {
|
||
for (const t of e) t.dispose()
|
||
}))
|
||
}
|
||
}
|
||
}
|
||
t.CoreTerminal = C
|
||
},
|
||
8460: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class {
|
||
constructor() {
|
||
this._listeners = [], this._disposed = !1
|
||
}
|
||
get event() {
|
||
return this._event || (this._event = e => (this._listeners.push(e), {
|
||
dispose: () => {
|
||
if (!this._disposed)
|
||
for (let t = 0; t < this._listeners.length; t++)
|
||
if (this._listeners[t] === e) return void this._listeners.splice(t, 1)
|
||
}
|
||
})), this._event
|
||
}
|
||
fire(e, t) {
|
||
const i = [];
|
||
for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]);
|
||
for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t)
|
||
}
|
||
dispose() {
|
||
this.clearListeners(), this._disposed = !0
|
||
}
|
||
clearListeners() {
|
||
this._listeners && (this._listeners.length = 0)
|
||
}
|
||
}, t.forwardEvent = function(e, t) {
|
||
return e((e => t.fire(e)))
|
||
}, t.runAndSubscribe = function(e, t) {
|
||
return t(void 0), e((e => t(e)))
|
||
}
|
||
},
|
||
5435: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.InputHandler = t.WindowsOptionsReportType = void 0;
|
||
const n = i(2584),
|
||
o = i(7116),
|
||
a = i(2015),
|
||
h = i(844),
|
||
c = i(482),
|
||
l = i(8437),
|
||
d = i(8460),
|
||
_ = i(643),
|
||
u = i(511),
|
||
f = i(3734),
|
||
v = i(2585),
|
||
g = i(1480),
|
||
p = i(6242),
|
||
m = i(6351),
|
||
C = i(5941),
|
||
S = {
|
||
"(": 0,
|
||
")": 1,
|
||
"*": 2,
|
||
"+": 3,
|
||
"-": 1,
|
||
".": 2
|
||
},
|
||
b = 131072;
|
||
|
||
function w(e, t) {
|
||
if (e > 24) return t.setWinLines || !1;
|
||
switch (e) {
|
||
case 1:
|
||
return !!t.restoreWin;
|
||
case 2:
|
||
return !!t.minimizeWin;
|
||
case 3:
|
||
return !!t.setWinPosition;
|
||
case 4:
|
||
return !!t.setWinSizePixels;
|
||
case 5:
|
||
return !!t.raiseWin;
|
||
case 6:
|
||
return !!t.lowerWin;
|
||
case 7:
|
||
return !!t.refreshWin;
|
||
case 8:
|
||
return !!t.setWinSizeChars;
|
||
case 9:
|
||
return !!t.maximizeWin;
|
||
case 10:
|
||
return !!t.fullscreenWin;
|
||
case 11:
|
||
return !!t.getWinState;
|
||
case 13:
|
||
return !!t.getWinPosition;
|
||
case 14:
|
||
return !!t.getWinSizePixels;
|
||
case 15:
|
||
return !!t.getScreenSizePixels;
|
||
case 16:
|
||
return !!t.getCellSizePixels;
|
||
case 18:
|
||
return !!t.getWinSizeChars;
|
||
case 19:
|
||
return !!t.getScreenSizeChars;
|
||
case 20:
|
||
return !!t.getIconTitle;
|
||
case 21:
|
||
return !!t.getWinTitle;
|
||
case 22:
|
||
return !!t.pushTitle;
|
||
case 23:
|
||
return !!t.popTitle;
|
||
case 24:
|
||
return !!t.setWinLines
|
||
}
|
||
return !1
|
||
}
|
||
var y;
|
||
! function(e) {
|
||
e[e.GET_WIN_SIZE_PIXELS = 0] = "GET_WIN_SIZE_PIXELS", e[e.GET_CELL_SIZE_PIXELS = 1] = "GET_CELL_SIZE_PIXELS"
|
||
}(y || (t.WindowsOptionsReportType = y = {}));
|
||
let L = 0;
|
||
class x extends h.Disposable {
|
||
getAttrData() {
|
||
return this._curAttrData
|
||
}
|
||
constructor(e, t, i, s, r, h, _, f, v = new a.EscapeSequenceParser) {
|
||
super(), this._bufferService = e, this._charsetService = t, this._coreService = i, this._logService = s, this._optionsService = r, this._oscLinkService = h, this._coreMouseService = _, this._unicodeService = f, this._parser = v, this._parseBuffer = new Uint32Array(4096), this._stringDecoder = new c.StringToUtf32, this._utf8Decoder = new c.Utf8ToUtf32, this._workCell = new u.CellData, this._windowTitle = "", this._iconName = "", this._windowTitleStack = [], this._iconNameStack = [], this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._eraseAttrDataInternal = l.DEFAULT_ATTR_DATA.clone(), this._onRequestBell = this.register(new d.EventEmitter), this.onRequestBell = this._onRequestBell.event, this._onRequestRefreshRows = this.register(new d.EventEmitter), this.onRequestRefreshRows = this._onRequestRefreshRows.event, this._onRequestReset = this.register(new d.EventEmitter), this.onRequestReset = this._onRequestReset.event, this._onRequestSendFocus = this.register(new d.EventEmitter), this.onRequestSendFocus = this._onRequestSendFocus.event, this._onRequestSyncScrollBar = this.register(new d.EventEmitter), this.onRequestSyncScrollBar = this._onRequestSyncScrollBar.event, this._onRequestWindowsOptionsReport = this.register(new d.EventEmitter), this.onRequestWindowsOptionsReport = this._onRequestWindowsOptionsReport.event, this._onA11yChar = this.register(new d.EventEmitter), this.onA11yChar = this._onA11yChar.event, this._onA11yTab = this.register(new d.EventEmitter), this.onA11yTab = this._onA11yTab.event, this._onCursorMove = this.register(new d.EventEmitter), this.onCursorMove = this._onCursorMove.event, this._onLineFeed = this.register(new d.EventEmitter), this.onLineFeed = this._onLineFeed.event, this._onScroll = this.register(new d.EventEmitter), this.onScroll = this._onScroll.event, this._onTitleChange = this.register(new d.EventEmitter), this.onTitleChange = this._onTitleChange.event, this._onColor = this.register(new d.EventEmitter), this.onColor = this._onColor.event, this._parseStack = {
|
||
paused: !1,
|
||
cursorStartX: 0,
|
||
cursorStartY: 0,
|
||
decodedLength: 0,
|
||
position: 0
|
||
}, this._specialColors = [256, 257, 258], this.register(this._parser), this._dirtyRowTracker = new E(this._bufferService), this._activeBuffer = this._bufferService.buffer, this.register(this._bufferService.buffers.onBufferActivate((e => this._activeBuffer = e.activeBuffer))), this._parser.setCsiHandlerFallback(((e, t) => {
|
||
this._logService.debug("Unknown CSI code: ", {
|
||
identifier: this._parser.identToString(e),
|
||
params: t.toArray()
|
||
})
|
||
})), this._parser.setEscHandlerFallback((e => {
|
||
this._logService.debug("Unknown ESC code: ", {
|
||
identifier: this._parser.identToString(e)
|
||
})
|
||
})), this._parser.setExecuteHandlerFallback((e => {
|
||
this._logService.debug("Unknown EXECUTE code: ", {
|
||
code: e
|
||
})
|
||
})), this._parser.setOscHandlerFallback(((e, t, i) => {
|
||
this._logService.debug("Unknown OSC code: ", {
|
||
identifier: e,
|
||
action: t,
|
||
data: i
|
||
})
|
||
})), this._parser.setDcsHandlerFallback(((e, t, i) => {
|
||
"HOOK" === t && (i = i.toArray()), this._logService.debug("Unknown DCS code: ", {
|
||
identifier: this._parser.identToString(e),
|
||
action: t,
|
||
payload: i
|
||
})
|
||
})), this._parser.setPrintHandler(((e, t, i) => this.print(e, t, i))), this._parser.registerCsiHandler({
|
||
final: "@"
|
||
}, (e => this.insertChars(e))), this._parser.registerCsiHandler({
|
||
intermediates: " ",
|
||
final: "@"
|
||
}, (e => this.scrollLeft(e))), this._parser.registerCsiHandler({
|
||
final: "A"
|
||
}, (e => this.cursorUp(e))), this._parser.registerCsiHandler({
|
||
intermediates: " ",
|
||
final: "A"
|
||
}, (e => this.scrollRight(e))), this._parser.registerCsiHandler({
|
||
final: "B"
|
||
}, (e => this.cursorDown(e))), this._parser.registerCsiHandler({
|
||
final: "C"
|
||
}, (e => this.cursorForward(e))), this._parser.registerCsiHandler({
|
||
final: "D"
|
||
}, (e => this.cursorBackward(e))), this._parser.registerCsiHandler({
|
||
final: "E"
|
||
}, (e => this.cursorNextLine(e))), this._parser.registerCsiHandler({
|
||
final: "F"
|
||
}, (e => this.cursorPrecedingLine(e))), this._parser.registerCsiHandler({
|
||
final: "G"
|
||
}, (e => this.cursorCharAbsolute(e))), this._parser.registerCsiHandler({
|
||
final: "H"
|
||
}, (e => this.cursorPosition(e))), this._parser.registerCsiHandler({
|
||
final: "I"
|
||
}, (e => this.cursorForwardTab(e))), this._parser.registerCsiHandler({
|
||
final: "J"
|
||
}, (e => this.eraseInDisplay(e, !1))), this._parser.registerCsiHandler({
|
||
prefix: "?",
|
||
final: "J"
|
||
}, (e => this.eraseInDisplay(e, !0))), this._parser.registerCsiHandler({
|
||
final: "K"
|
||
}, (e => this.eraseInLine(e, !1))), this._parser.registerCsiHandler({
|
||
prefix: "?",
|
||
final: "K"
|
||
}, (e => this.eraseInLine(e, !0))), this._parser.registerCsiHandler({
|
||
final: "L"
|
||
}, (e => this.insertLines(e))), this._parser.registerCsiHandler({
|
||
final: "M"
|
||
}, (e => this.deleteLines(e))), this._parser.registerCsiHandler({
|
||
final: "P"
|
||
}, (e => this.deleteChars(e))), this._parser.registerCsiHandler({
|
||
final: "S"
|
||
}, (e => this.scrollUp(e))), this._parser.registerCsiHandler({
|
||
final: "T"
|
||
}, (e => this.scrollDown(e))), this._parser.registerCsiHandler({
|
||
final: "X"
|
||
}, (e => this.eraseChars(e))), this._parser.registerCsiHandler({
|
||
final: "Z"
|
||
}, (e => this.cursorBackwardTab(e))), this._parser.registerCsiHandler({
|
||
final: "`"
|
||
}, (e => this.charPosAbsolute(e))), this._parser.registerCsiHandler({
|
||
final: "a"
|
||
}, (e => this.hPositionRelative(e))), this._parser.registerCsiHandler({
|
||
final: "b"
|
||
}, (e => this.repeatPrecedingCharacter(e))), this._parser.registerCsiHandler({
|
||
final: "c"
|
||
}, (e => this.sendDeviceAttributesPrimary(e))), this._parser.registerCsiHandler({
|
||
prefix: ">",
|
||
final: "c"
|
||
}, (e => this.sendDeviceAttributesSecondary(e))), this._parser.registerCsiHandler({
|
||
final: "d"
|
||
}, (e => this.linePosAbsolute(e))), this._parser.registerCsiHandler({
|
||
final: "e"
|
||
}, (e => this.vPositionRelative(e))), this._parser.registerCsiHandler({
|
||
final: "f"
|
||
}, (e => this.hVPosition(e))), this._parser.registerCsiHandler({
|
||
final: "g"
|
||
}, (e => this.tabClear(e))), this._parser.registerCsiHandler({
|
||
final: "h"
|
||
}, (e => this.setMode(e))), this._parser.registerCsiHandler({
|
||
prefix: "?",
|
||
final: "h"
|
||
}, (e => this.setModePrivate(e))), this._parser.registerCsiHandler({
|
||
final: "l"
|
||
}, (e => this.resetMode(e))), this._parser.registerCsiHandler({
|
||
prefix: "?",
|
||
final: "l"
|
||
}, (e => this.resetModePrivate(e))), this._parser.registerCsiHandler({
|
||
final: "m"
|
||
}, (e => this.charAttributes(e))), this._parser.registerCsiHandler({
|
||
final: "n"
|
||
}, (e => this.deviceStatus(e))), this._parser.registerCsiHandler({
|
||
prefix: "?",
|
||
final: "n"
|
||
}, (e => this.deviceStatusPrivate(e))), this._parser.registerCsiHandler({
|
||
intermediates: "!",
|
||
final: "p"
|
||
}, (e => this.softReset(e))), this._parser.registerCsiHandler({
|
||
intermediates: " ",
|
||
final: "q"
|
||
}, (e => this.setCursorStyle(e))), this._parser.registerCsiHandler({
|
||
final: "r"
|
||
}, (e => this.setScrollRegion(e))), this._parser.registerCsiHandler({
|
||
final: "s"
|
||
}, (e => this.saveCursor(e))), this._parser.registerCsiHandler({
|
||
final: "t"
|
||
}, (e => this.windowOptions(e))), this._parser.registerCsiHandler({
|
||
final: "u"
|
||
}, (e => this.restoreCursor(e))), this._parser.registerCsiHandler({
|
||
intermediates: "'",
|
||
final: "}"
|
||
}, (e => this.insertColumns(e))), this._parser.registerCsiHandler({
|
||
intermediates: "'",
|
||
final: "~"
|
||
}, (e => this.deleteColumns(e))), this._parser.registerCsiHandler({
|
||
intermediates: '"',
|
||
final: "q"
|
||
}, (e => this.selectProtected(e))), this._parser.registerCsiHandler({
|
||
intermediates: "$",
|
||
final: "p"
|
||
}, (e => this.requestMode(e, !0))), this._parser.registerCsiHandler({
|
||
prefix: "?",
|
||
intermediates: "$",
|
||
final: "p"
|
||
}, (e => this.requestMode(e, !1))), this._parser.setExecuteHandler(n.C0.BEL, (() => this.bell())), this._parser.setExecuteHandler(n.C0.LF, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.VT, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.FF, (() => this.lineFeed())), this._parser.setExecuteHandler(n.C0.CR, (() => this.carriageReturn())), this._parser.setExecuteHandler(n.C0.BS, (() => this.backspace())), this._parser.setExecuteHandler(n.C0.HT, (() => this.tab())), this._parser.setExecuteHandler(n.C0.SO, (() => this.shiftOut())), this._parser.setExecuteHandler(n.C0.SI, (() => this.shiftIn())), this._parser.setExecuteHandler(n.C1.IND, (() => this.index())), this._parser.setExecuteHandler(n.C1.NEL, (() => this.nextLine())), this._parser.setExecuteHandler(n.C1.HTS, (() => this.tabSet())), this._parser.registerOscHandler(0, new p.OscHandler((e => (this.setTitle(e), this.setIconName(e), !0)))), this._parser.registerOscHandler(1, new p.OscHandler((e => this.setIconName(e)))), this._parser.registerOscHandler(2, new p.OscHandler((e => this.setTitle(e)))), this._parser.registerOscHandler(4, new p.OscHandler((e => this.setOrReportIndexedColor(e)))), this._parser.registerOscHandler(8, new p.OscHandler((e => this.setHyperlink(e)))), this._parser.registerOscHandler(10, new p.OscHandler((e => this.setOrReportFgColor(e)))), this._parser.registerOscHandler(11, new p.OscHandler((e => this.setOrReportBgColor(e)))), this._parser.registerOscHandler(12, new p.OscHandler((e => this.setOrReportCursorColor(e)))), this._parser.registerOscHandler(104, new p.OscHandler((e => this.restoreIndexedColor(e)))), this._parser.registerOscHandler(110, new p.OscHandler((e => this.restoreFgColor(e)))), this._parser.registerOscHandler(111, new p.OscHandler((e => this.restoreBgColor(e)))), this._parser.registerOscHandler(112, new p.OscHandler((e => this.restoreCursorColor(e)))), this._parser.registerEscHandler({
|
||
final: "7"
|
||
}, (() => this.saveCursor())), this._parser.registerEscHandler({
|
||
final: "8"
|
||
}, (() => this.restoreCursor())), this._parser.registerEscHandler({
|
||
final: "D"
|
||
}, (() => this.index())), this._parser.registerEscHandler({
|
||
final: "E"
|
||
}, (() => this.nextLine())), this._parser.registerEscHandler({
|
||
final: "H"
|
||
}, (() => this.tabSet())), this._parser.registerEscHandler({
|
||
final: "M"
|
||
}, (() => this.reverseIndex())), this._parser.registerEscHandler({
|
||
final: "="
|
||
}, (() => this.keypadApplicationMode())), this._parser.registerEscHandler({
|
||
final: ">"
|
||
}, (() => this.keypadNumericMode())), this._parser.registerEscHandler({
|
||
final: "c"
|
||
}, (() => this.fullReset())), this._parser.registerEscHandler({
|
||
final: "n"
|
||
}, (() => this.setgLevel(2))), this._parser.registerEscHandler({
|
||
final: "o"
|
||
}, (() => this.setgLevel(3))), this._parser.registerEscHandler({
|
||
final: "|"
|
||
}, (() => this.setgLevel(3))), this._parser.registerEscHandler({
|
||
final: "}"
|
||
}, (() => this.setgLevel(2))), this._parser.registerEscHandler({
|
||
final: "~"
|
||
}, (() => this.setgLevel(1))), this._parser.registerEscHandler({
|
||
intermediates: "%",
|
||
final: "@"
|
||
}, (() => this.selectDefaultCharset())), this._parser.registerEscHandler({
|
||
intermediates: "%",
|
||
final: "G"
|
||
}, (() => this.selectDefaultCharset()));
|
||
for (const e in o.CHARSETS) this._parser.registerEscHandler({
|
||
intermediates: "(",
|
||
final: e
|
||
}, (() => this.selectCharset("(" + e))), this._parser.registerEscHandler({
|
||
intermediates: ")",
|
||
final: e
|
||
}, (() => this.selectCharset(")" + e))), this._parser.registerEscHandler({
|
||
intermediates: "*",
|
||
final: e
|
||
}, (() => this.selectCharset("*" + e))), this._parser.registerEscHandler({
|
||
intermediates: "+",
|
||
final: e
|
||
}, (() => this.selectCharset("+" + e))), this._parser.registerEscHandler({
|
||
intermediates: "-",
|
||
final: e
|
||
}, (() => this.selectCharset("-" + e))), this._parser.registerEscHandler({
|
||
intermediates: ".",
|
||
final: e
|
||
}, (() => this.selectCharset("." + e))), this._parser.registerEscHandler({
|
||
intermediates: "/",
|
||
final: e
|
||
}, (() => this.selectCharset("/" + e)));
|
||
this._parser.registerEscHandler({
|
||
intermediates: "#",
|
||
final: "8"
|
||
}, (() => this.screenAlignmentPattern())), this._parser.setErrorHandler((e => (this._logService.error("Parsing error: ", e), e))), this._parser.registerDcsHandler({
|
||
intermediates: "$",
|
||
final: "q"
|
||
}, new m.DcsHandler(((e, t) => this.requestStatusString(e, t))))
|
||
}
|
||
_preserveStack(e, t, i, s) {
|
||
this._parseStack.paused = !0, this._parseStack.cursorStartX = e, this._parseStack.cursorStartY = t, this._parseStack.decodedLength = i, this._parseStack.position = s
|
||
}
|
||
_logSlowResolvingAsync(e) {
|
||
this._logService.logLevel <= v.LogLevelEnum.WARN && Promise.race([e, new Promise(((e, t) => setTimeout((() => t("#SLOW_TIMEOUT")), 5e3)))]).catch((e => {
|
||
if ("#SLOW_TIMEOUT" !== e) throw e;
|
||
console.warn("async parser handler taking longer than 5000 ms")
|
||
}))
|
||
}
|
||
_getCurrentLinkId() {
|
||
return this._curAttrData.extended.urlId
|
||
}
|
||
parse(e, t) {
|
||
let i, s = this._activeBuffer.x,
|
||
r = this._activeBuffer.y,
|
||
n = 0;
|
||
const o = this._parseStack.paused;
|
||
if (o) {
|
||
if (i = this._parser.parse(this._parseBuffer, this._parseStack.decodedLength, t)) return this._logSlowResolvingAsync(i), i;
|
||
s = this._parseStack.cursorStartX, r = this._parseStack.cursorStartY, this._parseStack.paused = !1, e.length > b && (n = this._parseStack.position + b)
|
||
}
|
||
if (this._logService.logLevel <= v.LogLevelEnum.DEBUG && this._logService.debug("parsing data" + ("string" == typeof e ? ` "${e}"` : ` "${Array.prototype.map.call(e, (e => String.fromCharCode(e))).join("")}"`), "string" == typeof e ? e.split("").map((e => e.charCodeAt(0))) : e), this._parseBuffer.length < e.length && this._parseBuffer.length < b && (this._parseBuffer = new Uint32Array(Math.min(e.length, b))), o || this._dirtyRowTracker.clearRange(), e.length > b)
|
||
for (let t = n; t < e.length; t += b) {
|
||
const n = t + b < e.length ? t + b : e.length,
|
||
o = "string" == typeof e ? this._stringDecoder.decode(e.substring(t, n), this._parseBuffer) : this._utf8Decoder.decode(e.subarray(t, n), this._parseBuffer);
|
||
if (i = this._parser.parse(this._parseBuffer, o)) return this._preserveStack(s, r, o, t), this._logSlowResolvingAsync(i), i
|
||
} else if (!o) {
|
||
const t = "string" == typeof e ? this._stringDecoder.decode(e, this._parseBuffer) : this._utf8Decoder.decode(e, this._parseBuffer);
|
||
if (i = this._parser.parse(this._parseBuffer, t)) return this._preserveStack(s, r, t, 0), this._logSlowResolvingAsync(i), i
|
||
} this._activeBuffer.x === s && this._activeBuffer.y === r || this._onCursorMove.fire();
|
||
const a = this._dirtyRowTracker.end + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp),
|
||
h = this._dirtyRowTracker.start + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp);
|
||
h < this._bufferService.rows && this._onRequestRefreshRows.fire(Math.min(h, this._bufferService.rows - 1), Math.min(a, this._bufferService.rows - 1))
|
||
}
|
||
print(e, t, i) {
|
||
let s, r;
|
||
const n = this._charsetService.charset,
|
||
o = this._optionsService.rawOptions.screenReaderMode,
|
||
a = this._bufferService.cols,
|
||
h = this._coreService.decPrivateModes.wraparound,
|
||
d = this._coreService.modes.insertMode,
|
||
u = this._curAttrData;
|
||
let f = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);
|
||
this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._activeBuffer.x && i - t > 0 && 2 === f.getWidth(this._activeBuffer.x - 1) && f.setCellFromCodepoint(this._activeBuffer.x - 1, 0, 1, u);
|
||
let v = this._parser.precedingJoinState;
|
||
for (let p = t; p < i; ++p) {
|
||
if (s = e[p], s < 127 && n) {
|
||
const e = n[String.fromCharCode(s)];
|
||
e && (s = e.charCodeAt(0))
|
||
}
|
||
const t = this._unicodeService.charProperties(s, v);
|
||
r = g.UnicodeService.extractWidth(t);
|
||
const i = g.UnicodeService.extractShouldJoin(t),
|
||
m = i ? g.UnicodeService.extractWidth(v) : 0;
|
||
if (v = t, o && this._onA11yChar.fire((0, c.stringFromCodePoint)(s)), this._getCurrentLinkId() && this._oscLinkService.addLineToLink(this._getCurrentLinkId(), this._activeBuffer.ybase + this._activeBuffer.y), this._activeBuffer.x + r - m > a)
|
||
if (h) {
|
||
const e = f;
|
||
let t = this._activeBuffer.x - m;
|
||
for (this._activeBuffer.x = m, this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData(), !0)) : (this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !0), f = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y), m > 0 && f instanceof l.BufferLine && f.copyCellsFrom(e, t, 0, m, !1); t < a;) e.setCellFromCodepoint(t++, 0, 1, u)
|
||
} else if (this._activeBuffer.x = a - 1, 2 === r) continue;
|
||
if (i && this._activeBuffer.x) {
|
||
const e = f.getWidth(this._activeBuffer.x - 1) ? 1 : 2;
|
||
f.addCodepointToCell(this._activeBuffer.x - e, s, r);
|
||
for (let e = r - m; --e >= 0;) f.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u)
|
||
} else if (d && (f.insertCells(this._activeBuffer.x, r - m, this._activeBuffer.getNullCell(u)), 2 === f.getWidth(a - 1) && f.setCellFromCodepoint(a - 1, _.NULL_CELL_CODE, _.NULL_CELL_WIDTH, u)), f.setCellFromCodepoint(this._activeBuffer.x++, s, r, u), r > 0)
|
||
for (; --r;) f.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u)
|
||
}
|
||
this._parser.precedingJoinState = v, this._activeBuffer.x < a && i - t > 0 && 0 === f.getWidth(this._activeBuffer.x) && !f.hasContent(this._activeBuffer.x) && f.setCellFromCodepoint(this._activeBuffer.x, 0, 1, u), this._dirtyRowTracker.markDirty(this._activeBuffer.y)
|
||
}
|
||
registerCsiHandler(e, t) {
|
||
return "t" !== e.final || e.prefix || e.intermediates ? this._parser.registerCsiHandler(e, t) : this._parser.registerCsiHandler(e, (e => !w(e.params[0], this._optionsService.rawOptions.windowOptions) || t(e)))
|
||
}
|
||
registerDcsHandler(e, t) {
|
||
return this._parser.registerDcsHandler(e, new m.DcsHandler(t))
|
||
}
|
||
registerEscHandler(e, t) {
|
||
return this._parser.registerEscHandler(e, t)
|
||
}
|
||
registerOscHandler(e, t) {
|
||
return this._parser.registerOscHandler(e, new p.OscHandler(t))
|
||
}
|
||
bell() {
|
||
return this._onRequestBell.fire(), !0
|
||
}
|
||
lineFeed() {
|
||
return this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._optionsService.rawOptions.convertEol && (this._activeBuffer.x = 0), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows ? this._activeBuffer.y = this._bufferService.rows - 1 : this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !1, this._activeBuffer.x >= this._bufferService.cols && this._activeBuffer.x--, this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._onLineFeed.fire(), !0
|
||
}
|
||
carriageReturn() {
|
||
return this._activeBuffer.x = 0, !0
|
||
}
|
||
backspace() {
|
||
if (!this._coreService.decPrivateModes.reverseWraparound) return this._restrictCursor(), this._activeBuffer.x > 0 && this._activeBuffer.x--, !0;
|
||
if (this._restrictCursor(this._bufferService.cols), this._activeBuffer.x > 0) this._activeBuffer.x--;
|
||
else if (0 === this._activeBuffer.x && this._activeBuffer.y > this._activeBuffer.scrollTop && this._activeBuffer.y <= this._activeBuffer.scrollBottom && this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)?.isWrapped) {
|
||
this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = !1, this._activeBuffer.y--, this._activeBuffer.x = this._bufferService.cols - 1;
|
||
const e = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);
|
||
e.hasWidth(this._activeBuffer.x) && !e.hasContent(this._activeBuffer.x) && this._activeBuffer.x--
|
||
}
|
||
return this._restrictCursor(), !0
|
||
}
|
||
tab() {
|
||
if (this._activeBuffer.x >= this._bufferService.cols) return !0;
|
||
const e = this._activeBuffer.x;
|
||
return this._activeBuffer.x = this._activeBuffer.nextStop(), this._optionsService.rawOptions.screenReaderMode && this._onA11yTab.fire(this._activeBuffer.x - e), !0
|
||
}
|
||
shiftOut() {
|
||
return this._charsetService.setgLevel(1), !0
|
||
}
|
||
shiftIn() {
|
||
return this._charsetService.setgLevel(0), !0
|
||
}
|
||
_restrictCursor(e = this._bufferService.cols - 1) {
|
||
this._activeBuffer.x = Math.min(e, Math.max(0, this._activeBuffer.x)), this._activeBuffer.y = this._coreService.decPrivateModes.origin ? Math.min(this._activeBuffer.scrollBottom, Math.max(this._activeBuffer.scrollTop, this._activeBuffer.y)) : Math.min(this._bufferService.rows - 1, Math.max(0, this._activeBuffer.y)), this._dirtyRowTracker.markDirty(this._activeBuffer.y)
|
||
}
|
||
_setCursor(e, t) {
|
||
this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._coreService.decPrivateModes.origin ? (this._activeBuffer.x = e, this._activeBuffer.y = this._activeBuffer.scrollTop + t) : (this._activeBuffer.x = e, this._activeBuffer.y = t), this._restrictCursor(), this._dirtyRowTracker.markDirty(this._activeBuffer.y)
|
||
}
|
||
_moveCursor(e, t) {
|
||
this._restrictCursor(), this._setCursor(this._activeBuffer.x + e, this._activeBuffer.y + t)
|
||
}
|
||
cursorUp(e) {
|
||
const t = this._activeBuffer.y - this._activeBuffer.scrollTop;
|
||
return t >= 0 ? this._moveCursor(0, -Math.min(t, e.params[0] || 1)) : this._moveCursor(0, -(e.params[0] || 1)), !0
|
||
}
|
||
cursorDown(e) {
|
||
const t = this._activeBuffer.scrollBottom - this._activeBuffer.y;
|
||
return t >= 0 ? this._moveCursor(0, Math.min(t, e.params[0] || 1)) : this._moveCursor(0, e.params[0] || 1), !0
|
||
}
|
||
cursorForward(e) {
|
||
return this._moveCursor(e.params[0] || 1, 0), !0
|
||
}
|
||
cursorBackward(e) {
|
||
return this._moveCursor(-(e.params[0] || 1), 0), !0
|
||
}
|
||
cursorNextLine(e) {
|
||
return this.cursorDown(e), this._activeBuffer.x = 0, !0
|
||
}
|
||
cursorPrecedingLine(e) {
|
||
return this.cursorUp(e), this._activeBuffer.x = 0, !0
|
||
}
|
||
cursorCharAbsolute(e) {
|
||
return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), !0
|
||
}
|
||
cursorPosition(e) {
|
||
return this._setCursor(e.length >= 2 ? (e.params[1] || 1) - 1 : 0, (e.params[0] || 1) - 1), !0
|
||
}
|
||
charPosAbsolute(e) {
|
||
return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), !0
|
||
}
|
||
hPositionRelative(e) {
|
||
return this._moveCursor(e.params[0] || 1, 0), !0
|
||
}
|
||
linePosAbsolute(e) {
|
||
return this._setCursor(this._activeBuffer.x, (e.params[0] || 1) - 1), !0
|
||
}
|
||
vPositionRelative(e) {
|
||
return this._moveCursor(0, e.params[0] || 1), !0
|
||
}
|
||
hVPosition(e) {
|
||
return this.cursorPosition(e), !0
|
||
}
|
||
tabClear(e) {
|
||
const t = e.params[0];
|
||
return 0 === t ? delete this._activeBuffer.tabs[this._activeBuffer.x] : 3 === t && (this._activeBuffer.tabs = {}), !0
|
||
}
|
||
cursorForwardTab(e) {
|
||
if (this._activeBuffer.x >= this._bufferService.cols) return !0;
|
||
let t = e.params[0] || 1;
|
||
for (; t--;) this._activeBuffer.x = this._activeBuffer.nextStop();
|
||
return !0
|
||
}
|
||
cursorBackwardTab(e) {
|
||
if (this._activeBuffer.x >= this._bufferService.cols) return !0;
|
||
let t = e.params[0] || 1;
|
||
for (; t--;) this._activeBuffer.x = this._activeBuffer.prevStop();
|
||
return !0
|
||
}
|
||
selectProtected(e) {
|
||
const t = e.params[0];
|
||
return 1 === t && (this._curAttrData.bg |= 536870912), 2 !== t && 0 !== t || (this._curAttrData.bg &= -536870913), !0
|
||
}
|
||
_eraseInBufferLine(e, t, i, s = !1, r = !1) {
|
||
const n = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);
|
||
n.replaceCells(t, i, this._activeBuffer.getNullCell(this._eraseAttrData()), r), s && (n.isWrapped = !1)
|
||
}
|
||
_resetBufferLine(e, t = !1) {
|
||
const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);
|
||
i && (i.fill(this._activeBuffer.getNullCell(this._eraseAttrData()), t), this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase + e), i.isWrapped = !1)
|
||
}
|
||
eraseInDisplay(e, t = !1) {
|
||
let i;
|
||
switch (this._restrictCursor(this._bufferService.cols), e.params[0]) {
|
||
case 0:
|
||
for (i = this._activeBuffer.y, this._dirtyRowTracker.markDirty(i), this._eraseInBufferLine(i++, this._activeBuffer.x, this._bufferService.cols, 0 === this._activeBuffer.x, t); i < this._bufferService.rows; i++) this._resetBufferLine(i, t);
|
||
this._dirtyRowTracker.markDirty(i);
|
||
break;
|
||
case 1:
|
||
for (i = this._activeBuffer.y, this._dirtyRowTracker.markDirty(i), this._eraseInBufferLine(i, 0, this._activeBuffer.x + 1, !0, t), this._activeBuffer.x + 1 >= this._bufferService.cols && (this._activeBuffer.lines.get(i + 1).isWrapped = !1); i--;) this._resetBufferLine(i, t);
|
||
this._dirtyRowTracker.markDirty(0);
|
||
break;
|
||
case 2:
|
||
for (i = this._bufferService.rows, this._dirtyRowTracker.markDirty(i - 1); i--;) this._resetBufferLine(i, t);
|
||
this._dirtyRowTracker.markDirty(0);
|
||
break;
|
||
case 3:
|
||
const e = this._activeBuffer.lines.length - this._bufferService.rows;
|
||
e > 0 && (this._activeBuffer.lines.trimStart(e), this._activeBuffer.ybase = Math.max(this._activeBuffer.ybase - e, 0), this._activeBuffer.ydisp = Math.max(this._activeBuffer.ydisp - e, 0), this._onScroll.fire(0))
|
||
}
|
||
return !0
|
||
}
|
||
eraseInLine(e, t = !1) {
|
||
switch (this._restrictCursor(this._bufferService.cols), e.params[0]) {
|
||
case 0:
|
||
this._eraseInBufferLine(this._activeBuffer.y, this._activeBuffer.x, this._bufferService.cols, 0 === this._activeBuffer.x, t);
|
||
break;
|
||
case 1:
|
||
this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, !1, t);
|
||
break;
|
||
case 2:
|
||
this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, !0, t)
|
||
}
|
||
return this._dirtyRowTracker.markDirty(this._activeBuffer.y), !0
|
||
}
|
||
insertLines(e) {
|
||
this._restrictCursor();
|
||
let t = e.params[0] || 1;
|
||
if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0;
|
||
const i = this._activeBuffer.ybase + this._activeBuffer.y,
|
||
s = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom,
|
||
r = this._bufferService.rows - 1 + this._activeBuffer.ybase - s + 1;
|
||
for (; t--;) this._activeBuffer.lines.splice(r - 1, 1), this._activeBuffer.lines.splice(i, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, !0
|
||
}
|
||
deleteLines(e) {
|
||
this._restrictCursor();
|
||
let t = e.params[0] || 1;
|
||
if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0;
|
||
const i = this._activeBuffer.ybase + this._activeBuffer.y;
|
||
let s;
|
||
for (s = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, s = this._bufferService.rows - 1 + this._activeBuffer.ybase - s; t--;) this._activeBuffer.lines.splice(i, 1), this._activeBuffer.lines.splice(s, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, !0
|
||
}
|
||
insertChars(e) {
|
||
this._restrictCursor();
|
||
const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);
|
||
return t && (t.insertCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0
|
||
}
|
||
deleteChars(e) {
|
||
this._restrictCursor();
|
||
const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);
|
||
return t && (t.deleteCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0
|
||
}
|
||
scrollUp(e) {
|
||
let t = e.params[0] || 1;
|
||
for (; t--;) this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0
|
||
}
|
||
scrollDown(e) {
|
||
let t = e.params[0] || 1;
|
||
for (; t--;) this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 0, this._activeBuffer.getBlankLine(l.DEFAULT_ATTR_DATA));
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0
|
||
}
|
||
scrollLeft(e) {
|
||
if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0;
|
||
const t = e.params[0] || 1;
|
||
for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) {
|
||
const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);
|
||
i.deleteCells(0, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1
|
||
}
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0
|
||
}
|
||
scrollRight(e) {
|
||
if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0;
|
||
const t = e.params[0] || 1;
|
||
for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) {
|
||
const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);
|
||
i.insertCells(0, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1
|
||
}
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0
|
||
}
|
||
insertColumns(e) {
|
||
if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0;
|
||
const t = e.params[0] || 1;
|
||
for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) {
|
||
const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);
|
||
i.insertCells(this._activeBuffer.x, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1
|
||
}
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0
|
||
}
|
||
deleteColumns(e) {
|
||
if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return !0;
|
||
const t = e.params[0] || 1;
|
||
for (let e = this._activeBuffer.scrollTop; e <= this._activeBuffer.scrollBottom; ++e) {
|
||
const i = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);
|
||
i.deleteCells(this._activeBuffer.x, t, this._activeBuffer.getNullCell(this._eraseAttrData())), i.isWrapped = !1
|
||
}
|
||
return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), !0
|
||
}
|
||
eraseChars(e) {
|
||
this._restrictCursor();
|
||
const t = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);
|
||
return t && (t.replaceCells(this._activeBuffer.x, this._activeBuffer.x + (e.params[0] || 1), this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), !0
|
||
}
|
||
repeatPrecedingCharacter(e) {
|
||
const t = this._parser.precedingJoinState;
|
||
if (!t) return !0;
|
||
const i = e.params[0] || 1,
|
||
s = g.UnicodeService.extractWidth(t),
|
||
r = this._activeBuffer.x - s,
|
||
n = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).getString(r),
|
||
o = new Uint32Array(n.length * i);
|
||
let a = 0;
|
||
for (let e = 0; e < n.length;) {
|
||
const t = n.codePointAt(e) || 0;
|
||
o[a++] = t, e += t > 65535 ? 2 : 1
|
||
}
|
||
let h = a;
|
||
for (let e = 1; e < i; ++e) o.copyWithin(h, 0, a), h += a;
|
||
return this.print(o, 0, h), !0
|
||
}
|
||
sendDeviceAttributesPrimary(e) {
|
||
return e.params[0] > 0 || (this._is("xterm") || this._is("rxvt-unicode") || this._is("screen") ? this._coreService.triggerDataEvent(n.C0.ESC + "[?1;2c") : this._is("linux") && this._coreService.triggerDataEvent(n.C0.ESC + "[?6c")), !0
|
||
}
|
||
sendDeviceAttributesSecondary(e) {
|
||
return e.params[0] > 0 || (this._is("xterm") ? this._coreService.triggerDataEvent(n.C0.ESC + "[>0;276;0c") : this._is("rxvt-unicode") ? this._coreService.triggerDataEvent(n.C0.ESC + "[>85;95;0c") : this._is("linux") ? this._coreService.triggerDataEvent(e.params[0] + "c") : this._is("screen") && this._coreService.triggerDataEvent(n.C0.ESC + "[>83;40003;0c")), !0
|
||
}
|
||
_is(e) {
|
||
return 0 === (this._optionsService.rawOptions.termName + "").indexOf(e)
|
||
}
|
||
setMode(e) {
|
||
for (let t = 0; t < e.length; t++) switch (e.params[t]) {
|
||
case 4:
|
||
this._coreService.modes.insertMode = !0;
|
||
break;
|
||
case 20:
|
||
this._optionsService.options.convertEol = !0
|
||
}
|
||
return !0
|
||
}
|
||
setModePrivate(e) {
|
||
for (let t = 0; t < e.length; t++) switch (e.params[t]) {
|
||
case 1:
|
||
this._coreService.decPrivateModes.applicationCursorKeys = !0;
|
||
break;
|
||
case 2:
|
||
this._charsetService.setgCharset(0, o.DEFAULT_CHARSET), this._charsetService.setgCharset(1, o.DEFAULT_CHARSET), this._charsetService.setgCharset(2, o.DEFAULT_CHARSET), this._charsetService.setgCharset(3, o.DEFAULT_CHARSET);
|
||
break;
|
||
case 3:
|
||
this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(132, this._bufferService.rows), this._onRequestReset.fire());
|
||
break;
|
||
case 6:
|
||
this._coreService.decPrivateModes.origin = !0, this._setCursor(0, 0);
|
||
break;
|
||
case 7:
|
||
this._coreService.decPrivateModes.wraparound = !0;
|
||
break;
|
||
case 12:
|
||
this._optionsService.options.cursorBlink = !0;
|
||
break;
|
||
case 45:
|
||
this._coreService.decPrivateModes.reverseWraparound = !0;
|
||
break;
|
||
case 66:
|
||
this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = !0, this._onRequestSyncScrollBar.fire();
|
||
break;
|
||
case 9:
|
||
this._coreMouseService.activeProtocol = "X10";
|
||
break;
|
||
case 1e3:
|
||
this._coreMouseService.activeProtocol = "VT200";
|
||
break;
|
||
case 1002:
|
||
this._coreMouseService.activeProtocol = "DRAG";
|
||
break;
|
||
case 1003:
|
||
this._coreMouseService.activeProtocol = "ANY";
|
||
break;
|
||
case 1004:
|
||
this._coreService.decPrivateModes.sendFocus = !0, this._onRequestSendFocus.fire();
|
||
break;
|
||
case 1005:
|
||
this._logService.debug("DECSET 1005 not supported (see #2507)");
|
||
break;
|
||
case 1006:
|
||
this._coreMouseService.activeEncoding = "SGR";
|
||
break;
|
||
case 1015:
|
||
this._logService.debug("DECSET 1015 not supported (see #2507)");
|
||
break;
|
||
case 1016:
|
||
this._coreMouseService.activeEncoding = "SGR_PIXELS";
|
||
break;
|
||
case 25:
|
||
this._coreService.isCursorHidden = !1;
|
||
break;
|
||
case 1048:
|
||
this.saveCursor();
|
||
break;
|
||
case 1049:
|
||
this.saveCursor();
|
||
case 47:
|
||
case 1047:
|
||
this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()), this._coreService.isCursorInitialized = !0, this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1), this._onRequestSyncScrollBar.fire();
|
||
break;
|
||
case 2004:
|
||
this._coreService.decPrivateModes.bracketedPasteMode = !0
|
||
}
|
||
return !0
|
||
}
|
||
resetMode(e) {
|
||
for (let t = 0; t < e.length; t++) switch (e.params[t]) {
|
||
case 4:
|
||
this._coreService.modes.insertMode = !1;
|
||
break;
|
||
case 20:
|
||
this._optionsService.options.convertEol = !1
|
||
}
|
||
return !0
|
||
}
|
||
resetModePrivate(e) {
|
||
for (let t = 0; t < e.length; t++) switch (e.params[t]) {
|
||
case 1:
|
||
this._coreService.decPrivateModes.applicationCursorKeys = !1;
|
||
break;
|
||
case 3:
|
||
this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(80, this._bufferService.rows), this._onRequestReset.fire());
|
||
break;
|
||
case 6:
|
||
this._coreService.decPrivateModes.origin = !1, this._setCursor(0, 0);
|
||
break;
|
||
case 7:
|
||
this._coreService.decPrivateModes.wraparound = !1;
|
||
break;
|
||
case 12:
|
||
this._optionsService.options.cursorBlink = !1;
|
||
break;
|
||
case 45:
|
||
this._coreService.decPrivateModes.reverseWraparound = !1;
|
||
break;
|
||
case 66:
|
||
this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = !1, this._onRequestSyncScrollBar.fire();
|
||
break;
|
||
case 9:
|
||
case 1e3:
|
||
case 1002:
|
||
case 1003:
|
||
this._coreMouseService.activeProtocol = "NONE";
|
||
break;
|
||
case 1004:
|
||
this._coreService.decPrivateModes.sendFocus = !1;
|
||
break;
|
||
case 1005:
|
||
this._logService.debug("DECRST 1005 not supported (see #2507)");
|
||
break;
|
||
case 1006:
|
||
case 1016:
|
||
this._coreMouseService.activeEncoding = "DEFAULT";
|
||
break;
|
||
case 1015:
|
||
this._logService.debug("DECRST 1015 not supported (see #2507)");
|
||
break;
|
||
case 25:
|
||
this._coreService.isCursorHidden = !0;
|
||
break;
|
||
case 1048:
|
||
this.restoreCursor();
|
||
break;
|
||
case 1049:
|
||
case 47:
|
||
case 1047:
|
||
this._bufferService.buffers.activateNormalBuffer(), 1049 === e.params[t] && this.restoreCursor(), this._coreService.isCursorInitialized = !0, this._onRequestRefreshRows.fire(0, this._bufferService.rows - 1), this._onRequestSyncScrollBar.fire();
|
||
break;
|
||
case 2004:
|
||
this._coreService.decPrivateModes.bracketedPasteMode = !1
|
||
}
|
||
return !0
|
||
}
|
||
requestMode(e, t) {
|
||
const i = this._coreService.decPrivateModes,
|
||
{
|
||
activeProtocol: s,
|
||
activeEncoding: r
|
||
} = this._coreMouseService,
|
||
o = this._coreService,
|
||
{
|
||
buffers: a,
|
||
cols: h
|
||
} = this._bufferService,
|
||
{
|
||
active: c,
|
||
alt: l
|
||
} = a,
|
||
d = this._optionsService.rawOptions,
|
||
_ = e => e ? 1 : 2,
|
||
u = e.params[0];
|
||
return f = u, v = t ? 2 === u ? 4 : 4 === u ? _(o.modes.insertMode) : 12 === u ? 3 : 20 === u ? _(d.convertEol) : 0 : 1 === u ? _(i.applicationCursorKeys) : 3 === u ? d.windowOptions.setWinLines ? 80 === h ? 2 : 132 === h ? 1 : 0 : 0 : 6 === u ? _(i.origin) : 7 === u ? _(i.wraparound) : 8 === u ? 3 : 9 === u ? _("X10" === s) : 12 === u ? _(d.cursorBlink) : 25 === u ? _(!o.isCursorHidden) : 45 === u ? _(i.reverseWraparound) : 66 === u ? _(i.applicationKeypad) : 67 === u ? 4 : 1e3 === u ? _("VT200" === s) : 1002 === u ? _("DRAG" === s) : 1003 === u ? _("ANY" === s) : 1004 === u ? _(i.sendFocus) : 1005 === u ? 4 : 1006 === u ? _("SGR" === r) : 1015 === u ? 4 : 1016 === u ? _("SGR_PIXELS" === r) : 1048 === u ? 1 : 47 === u || 1047 === u || 1049 === u ? _(c === l) : 2004 === u ? _(i.bracketedPasteMode) : 0, o.triggerDataEvent(`${n.C0.ESC}[${t ? "" : "?"}${f};${v}$y`), !0;
|
||
var f, v
|
||
}
|
||
_updateAttrColor(e, t, i, s, r) {
|
||
return 2 === t ? (e |= 50331648, e &= -16777216, e |= f.AttributeData.fromColorRGB([i, s, r])) : 5 === t && (e &= -50331904, e |= 33554432 | 255 & i), e
|
||
}
|
||
_extractColor(e, t, i) {
|
||
const s = [0, 0, -1, 0, 0, 0];
|
||
let r = 0,
|
||
n = 0;
|
||
do {
|
||
if (s[n + r] = e.params[t + n], e.hasSubParams(t + n)) {
|
||
const i = e.getSubParams(t + n);
|
||
let o = 0;
|
||
do {
|
||
5 === s[1] && (r = 1), s[n + o + 1 + r] = i[o]
|
||
} while (++o < i.length && o + n + 1 + r < s.length);
|
||
break
|
||
}
|
||
if (5 === s[1] && n + r >= 2 || 2 === s[1] && n + r >= 5) break;
|
||
s[1] && (r = 1)
|
||
} while (++n + t < e.length && n + r < s.length);
|
||
for (let e = 2; e < s.length; ++e) - 1 === s[e] && (s[e] = 0);
|
||
switch (s[0]) {
|
||
case 38:
|
||
i.fg = this._updateAttrColor(i.fg, s[1], s[3], s[4], s[5]);
|
||
break;
|
||
case 48:
|
||
i.bg = this._updateAttrColor(i.bg, s[1], s[3], s[4], s[5]);
|
||
break;
|
||
case 58:
|
||
i.extended = i.extended.clone(), i.extended.underlineColor = this._updateAttrColor(i.extended.underlineColor, s[1], s[3], s[4], s[5])
|
||
}
|
||
return n
|
||
}
|
||
_processUnderline(e, t) {
|
||
t.extended = t.extended.clone(), (!~e || e > 5) && (e = 1), t.extended.underlineStyle = e, t.fg |= 268435456, 0 === e && (t.fg &= -268435457), t.updateExtended()
|
||
}
|
||
_processSGR0(e) {
|
||
e.fg = l.DEFAULT_ATTR_DATA.fg, e.bg = l.DEFAULT_ATTR_DATA.bg, e.extended = e.extended.clone(), e.extended.underlineStyle = 0, e.extended.underlineColor &= -67108864, e.updateExtended()
|
||
}
|
||
charAttributes(e) {
|
||
if (1 === e.length && 0 === e.params[0]) return this._processSGR0(this._curAttrData), !0;
|
||
const t = e.length;
|
||
let i;
|
||
const s = this._curAttrData;
|
||
for (let r = 0; r < t; r++) i = e.params[r], i >= 30 && i <= 37 ? (s.fg &= -50331904, s.fg |= 16777216 | i - 30) : i >= 40 && i <= 47 ? (s.bg &= -50331904, s.bg |= 16777216 | i - 40) : i >= 90 && i <= 97 ? (s.fg &= -50331904, s.fg |= 16777224 | i - 90) : i >= 100 && i <= 107 ? (s.bg &= -50331904, s.bg |= 16777224 | i - 100) : 0 === i ? this._processSGR0(s) : 1 === i ? s.fg |= 134217728 : 3 === i ? s.bg |= 67108864 : 4 === i ? (s.fg |= 268435456, this._processUnderline(e.hasSubParams(r) ? e.getSubParams(r)[0] : 1, s)) : 5 === i ? s.fg |= 536870912 : 7 === i ? s.fg |= 67108864 : 8 === i ? s.fg |= 1073741824 : 9 === i ? s.fg |= 2147483648 : 2 === i ? s.bg |= 134217728 : 21 === i ? this._processUnderline(2, s) : 22 === i ? (s.fg &= -134217729, s.bg &= -134217729) : 23 === i ? s.bg &= -67108865 : 24 === i ? (s.fg &= -268435457, this._processUnderline(0, s)) : 25 === i ? s.fg &= -536870913 : 27 === i ? s.fg &= -67108865 : 28 === i ? s.fg &= -1073741825 : 29 === i ? s.fg &= 2147483647 : 39 === i ? (s.fg &= -67108864, s.fg |= 16777215 & l.DEFAULT_ATTR_DATA.fg) : 49 === i ? (s.bg &= -67108864, s.bg |= 16777215 & l.DEFAULT_ATTR_DATA.bg) : 38 === i || 48 === i || 58 === i ? r += this._extractColor(e, r, s) : 53 === i ? s.bg |= 1073741824 : 55 === i ? s.bg &= -1073741825 : 59 === i ? (s.extended = s.extended.clone(), s.extended.underlineColor = -1, s.updateExtended()) : 100 === i ? (s.fg &= -67108864, s.fg |= 16777215 & l.DEFAULT_ATTR_DATA.fg, s.bg &= -67108864, s.bg |= 16777215 & l.DEFAULT_ATTR_DATA.bg) : this._logService.debug("Unknown SGR attribute: %d.", i);
|
||
return !0
|
||
}
|
||
deviceStatus(e) {
|
||
switch (e.params[0]) {
|
||
case 5:
|
||
this._coreService.triggerDataEvent(`${n.C0.ESC}[0n`);
|
||
break;
|
||
case 6:
|
||
const e = this._activeBuffer.y + 1,
|
||
t = this._activeBuffer.x + 1;
|
||
this._coreService.triggerDataEvent(`${n.C0.ESC}[${e};${t}R`)
|
||
}
|
||
return !0
|
||
}
|
||
deviceStatusPrivate(e) {
|
||
if (6 === e.params[0]) {
|
||
const e = this._activeBuffer.y + 1,
|
||
t = this._activeBuffer.x + 1;
|
||
this._coreService.triggerDataEvent(`${n.C0.ESC}[?${e};${t}R`)
|
||
}
|
||
return !0
|
||
}
|
||
softReset(e) {
|
||
return this._coreService.isCursorHidden = !1, this._onRequestSyncScrollBar.fire(), this._activeBuffer.scrollTop = 0, this._activeBuffer.scrollBottom = this._bufferService.rows - 1, this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._coreService.reset(), this._charsetService.reset(), this._activeBuffer.savedX = 0, this._activeBuffer.savedY = this._activeBuffer.ybase, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, this._coreService.decPrivateModes.origin = !1, !0
|
||
}
|
||
setCursorStyle(e) {
|
||
const t = e.params[0] || 1;
|
||
switch (t) {
|
||
case 1:
|
||
case 2:
|
||
this._optionsService.options.cursorStyle = "block";
|
||
break;
|
||
case 3:
|
||
case 4:
|
||
this._optionsService.options.cursorStyle = "underline";
|
||
break;
|
||
case 5:
|
||
case 6:
|
||
this._optionsService.options.cursorStyle = "bar"
|
||
}
|
||
const i = t % 2 == 1;
|
||
return this._optionsService.options.cursorBlink = i, !0
|
||
}
|
||
setScrollRegion(e) {
|
||
const t = e.params[0] || 1;
|
||
let i;
|
||
return (e.length < 2 || (i = e.params[1]) > this._bufferService.rows || 0 === i) && (i = this._bufferService.rows), i > t && (this._activeBuffer.scrollTop = t - 1, this._activeBuffer.scrollBottom = i - 1, this._setCursor(0, 0)), !0
|
||
}
|
||
windowOptions(e) {
|
||
if (!w(e.params[0], this._optionsService.rawOptions.windowOptions)) return !0;
|
||
const t = e.length > 1 ? e.params[1] : 0;
|
||
switch (e.params[0]) {
|
||
case 14:
|
||
2 !== t && this._onRequestWindowsOptionsReport.fire(y.GET_WIN_SIZE_PIXELS);
|
||
break;
|
||
case 16:
|
||
this._onRequestWindowsOptionsReport.fire(y.GET_CELL_SIZE_PIXELS);
|
||
break;
|
||
case 18:
|
||
this._bufferService && this._coreService.triggerDataEvent(`${n.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);
|
||
break;
|
||
case 22:
|
||
0 !== t && 2 !== t || (this._windowTitleStack.push(this._windowTitle), this._windowTitleStack.length > 10 && this._windowTitleStack.shift()), 0 !== t && 1 !== t || (this._iconNameStack.push(this._iconName), this._iconNameStack.length > 10 && this._iconNameStack.shift());
|
||
break;
|
||
case 23:
|
||
0 !== t && 2 !== t || this._windowTitleStack.length && this.setTitle(this._windowTitleStack.pop()), 0 !== t && 1 !== t || this._iconNameStack.length && this.setIconName(this._iconNameStack.pop())
|
||
}
|
||
return !0
|
||
}
|
||
saveCursor(e) {
|
||
return this._activeBuffer.savedX = this._activeBuffer.x, this._activeBuffer.savedY = this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, !0
|
||
}
|
||
restoreCursor(e) {
|
||
return this._activeBuffer.x = this._activeBuffer.savedX || 0, this._activeBuffer.y = Math.max(this._activeBuffer.savedY - this._activeBuffer.ybase, 0), this._curAttrData.fg = this._activeBuffer.savedCurAttrData.fg, this._curAttrData.bg = this._activeBuffer.savedCurAttrData.bg, this._charsetService.charset = this._savedCharset, this._activeBuffer.savedCharset && (this._charsetService.charset = this._activeBuffer.savedCharset), this._restrictCursor(), !0
|
||
}
|
||
setTitle(e) {
|
||
return this._windowTitle = e, this._onTitleChange.fire(e), !0
|
||
}
|
||
setIconName(e) {
|
||
return this._iconName = e, !0
|
||
}
|
||
setOrReportIndexedColor(e) {
|
||
const t = [],
|
||
i = e.split(";");
|
||
for (; i.length > 1;) {
|
||
const e = i.shift(),
|
||
s = i.shift();
|
||
if (/^\d+$/.exec(e)) {
|
||
const i = parseInt(e);
|
||
if (R(i))
|
||
if ("?" === s) t.push({
|
||
type: 0,
|
||
index: i
|
||
});
|
||
else {
|
||
const e = (0, C.parseColor)(s);
|
||
e && t.push({
|
||
type: 1,
|
||
index: i,
|
||
color: e
|
||
})
|
||
}
|
||
}
|
||
}
|
||
return t.length && this._onColor.fire(t), !0
|
||
}
|
||
setHyperlink(e) {
|
||
const t = e.split(";");
|
||
return !(t.length < 2) && (t[1] ? this._createHyperlink(t[0], t[1]) : !t[0] && this._finishHyperlink())
|
||
}
|
||
_createHyperlink(e, t) {
|
||
this._getCurrentLinkId() && this._finishHyperlink();
|
||
const i = e.split(":");
|
||
let s;
|
||
const r = i.findIndex((e => e.startsWith("id=")));
|
||
return -1 !== r && (s = i[r].slice(3) || void 0), this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = this._oscLinkService.registerLink({
|
||
id: s,
|
||
uri: t
|
||
}), this._curAttrData.updateExtended(), !0
|
||
}
|
||
_finishHyperlink() {
|
||
return this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = 0, this._curAttrData.updateExtended(), !0
|
||
}
|
||
_setOrReportSpecialColor(e, t) {
|
||
const i = e.split(";");
|
||
for (let e = 0; e < i.length && !(t >= this._specialColors.length); ++e, ++t)
|
||
if ("?" === i[e]) this._onColor.fire([{
|
||
type: 0,
|
||
index: this._specialColors[t]
|
||
}]);
|
||
else {
|
||
const s = (0, C.parseColor)(i[e]);
|
||
s && this._onColor.fire([{
|
||
type: 1,
|
||
index: this._specialColors[t],
|
||
color: s
|
||
}])
|
||
} return !0
|
||
}
|
||
setOrReportFgColor(e) {
|
||
return this._setOrReportSpecialColor(e, 0)
|
||
}
|
||
setOrReportBgColor(e) {
|
||
return this._setOrReportSpecialColor(e, 1)
|
||
}
|
||
setOrReportCursorColor(e) {
|
||
return this._setOrReportSpecialColor(e, 2)
|
||
}
|
||
restoreIndexedColor(e) {
|
||
if (!e) return this._onColor.fire([{
|
||
type: 2
|
||
}]), !0;
|
||
const t = [],
|
||
i = e.split(";");
|
||
for (let e = 0; e < i.length; ++e)
|
||
if (/^\d+$/.exec(i[e])) {
|
||
const s = parseInt(i[e]);
|
||
R(s) && t.push({
|
||
type: 2,
|
||
index: s
|
||
})
|
||
} return t.length && this._onColor.fire(t), !0
|
||
}
|
||
restoreFgColor(e) {
|
||
return this._onColor.fire([{
|
||
type: 2,
|
||
index: 256
|
||
}]), !0
|
||
}
|
||
restoreBgColor(e) {
|
||
return this._onColor.fire([{
|
||
type: 2,
|
||
index: 257
|
||
}]), !0
|
||
}
|
||
restoreCursorColor(e) {
|
||
return this._onColor.fire([{
|
||
type: 2,
|
||
index: 258
|
||
}]), !0
|
||
}
|
||
nextLine() {
|
||
return this._activeBuffer.x = 0, this.index(), !0
|
||
}
|
||
keypadApplicationMode() {
|
||
return this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = !0, this._onRequestSyncScrollBar.fire(), !0
|
||
}
|
||
keypadNumericMode() {
|
||
return this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = !1, this._onRequestSyncScrollBar.fire(), !0
|
||
}
|
||
selectDefaultCharset() {
|
||
return this._charsetService.setgLevel(0), this._charsetService.setgCharset(0, o.DEFAULT_CHARSET), !0
|
||
}
|
||
selectCharset(e) {
|
||
return 2 !== e.length ? (this.selectDefaultCharset(), !0) : ("/" === e[0] || this._charsetService.setgCharset(S[e[0]], o.CHARSETS[e[1]] || o.DEFAULT_CHARSET), !0)
|
||
}
|
||
index() {
|
||
return this._restrictCursor(), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._restrictCursor(), !0
|
||
}
|
||
tabSet() {
|
||
return this._activeBuffer.tabs[this._activeBuffer.x] = !0, !0
|
||
}
|
||
reverseIndex() {
|
||
if (this._restrictCursor(), this._activeBuffer.y === this._activeBuffer.scrollTop) {
|
||
const e = this._activeBuffer.scrollBottom - this._activeBuffer.scrollTop;
|
||
this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase + this._activeBuffer.y, e, 1), this._activeBuffer.lines.set(this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.getBlankLine(this._eraseAttrData())), this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom)
|
||
} else this._activeBuffer.y--, this._restrictCursor();
|
||
return !0
|
||
}
|
||
fullReset() {
|
||
return this._parser.reset(), this._onRequestReset.fire(), !0
|
||
}
|
||
reset() {
|
||
this._curAttrData = l.DEFAULT_ATTR_DATA.clone(), this._eraseAttrDataInternal = l.DEFAULT_ATTR_DATA.clone()
|
||
}
|
||
_eraseAttrData() {
|
||
return this._eraseAttrDataInternal.bg &= -67108864, this._eraseAttrDataInternal.bg |= 67108863 & this._curAttrData.bg, this._eraseAttrDataInternal
|
||
}
|
||
setgLevel(e) {
|
||
return this._charsetService.setgLevel(e), !0
|
||
}
|
||
screenAlignmentPattern() {
|
||
const e = new u.CellData;
|
||
e.content = 1 << 22 | "E".charCodeAt(0), e.fg = this._curAttrData.fg, e.bg = this._curAttrData.bg, this._setCursor(0, 0);
|
||
for (let t = 0; t < this._bufferService.rows; ++t) {
|
||
const i = this._activeBuffer.ybase + this._activeBuffer.y + t,
|
||
s = this._activeBuffer.lines.get(i);
|
||
s && (s.fill(e), s.isWrapped = !1)
|
||
}
|
||
return this._dirtyRowTracker.markAllDirty(), this._setCursor(0, 0), !0
|
||
}
|
||
requestStatusString(e, t) {
|
||
const i = this._bufferService.buffer,
|
||
s = this._optionsService.rawOptions;
|
||
return (e => (this._coreService.triggerDataEvent(`${n.C0.ESC}${e}${n.C0.ESC}\\`), !0))('"q' === e ? `P1$r${this._curAttrData.isProtected() ? 1 : 0}"q` : '"p' === e ? 'P1$r61;1"p' : "r" === e ? `P1$r${i.scrollTop + 1};${i.scrollBottom + 1}r` : "m" === e ? "P1$r0m" : " q" === e ? `P1$r${{ block: 2, underline: 4, bar: 6 }[s.cursorStyle] - (s.cursorBlink ? 1 : 0)} q` : "P0$r")
|
||
}
|
||
markRangeDirty(e, t) {
|
||
this._dirtyRowTracker.markRangeDirty(e, t)
|
||
}
|
||
}
|
||
t.InputHandler = x;
|
||
let E = class {
|
||
constructor(e) {
|
||
this._bufferService = e, this.clearRange()
|
||
}
|
||
clearRange() {
|
||
this.start = this._bufferService.buffer.y, this.end = this._bufferService.buffer.y
|
||
}
|
||
markDirty(e) {
|
||
e < this.start ? this.start = e : e > this.end && (this.end = e)
|
||
}
|
||
markRangeDirty(e, t) {
|
||
e > t && (L = e, e = t, t = L), e < this.start && (this.start = e), t > this.end && (this.end = t)
|
||
}
|
||
markAllDirty() {
|
||
this.markRangeDirty(0, this._bufferService.rows - 1)
|
||
}
|
||
};
|
||
|
||
function R(e) {
|
||
return 0 <= e && e < 256
|
||
}
|
||
E = s([r(0, v.IBufferService)], E)
|
||
},
|
||
844: (e, t) => {
|
||
function i(e) {
|
||
for (const t of e) t.dispose();
|
||
e.length = 0
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class {
|
||
constructor() {
|
||
this._disposables = [], this._isDisposed = !1
|
||
}
|
||
dispose() {
|
||
this._isDisposed = !0;
|
||
for (const e of this._disposables) e.dispose();
|
||
this._disposables.length = 0
|
||
}
|
||
register(e) {
|
||
return this._disposables.push(e), e
|
||
}
|
||
unregister(e) {
|
||
const t = this._disposables.indexOf(e); - 1 !== t && this._disposables.splice(t, 1)
|
||
}
|
||
}, t.MutableDisposable = class {
|
||
constructor() {
|
||
this._isDisposed = !1
|
||
}
|
||
get value() {
|
||
return this._isDisposed ? void 0 : this._value
|
||
}
|
||
set value(e) {
|
||
this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e)
|
||
}
|
||
clear() {
|
||
this.value = void 0
|
||
}
|
||
dispose() {
|
||
this._isDisposed = !0, this._value?.dispose(), this._value = void 0
|
||
}
|
||
}, t.toDisposable = function(e) {
|
||
return {
|
||
dispose: e
|
||
}
|
||
}, t.disposeArray = i, t.getDisposeArrayDisposable = function(e) {
|
||
return {
|
||
dispose: () => i(e)
|
||
}
|
||
}
|
||
},
|
||
1505: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.FourKeyMap = t.TwoKeyMap = void 0;
|
||
class i {
|
||
constructor() {
|
||
this._data = {}
|
||
}
|
||
set(e, t, i) {
|
||
this._data[e] || (this._data[e] = {}), this._data[e][t] = i
|
||
}
|
||
get(e, t) {
|
||
return this._data[e] ? this._data[e][t] : void 0
|
||
}
|
||
clear() {
|
||
this._data = {}
|
||
}
|
||
}
|
||
t.TwoKeyMap = i, t.FourKeyMap = class {
|
||
constructor() {
|
||
this._data = new i
|
||
}
|
||
set(e, t, s, r, n) {
|
||
this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n)
|
||
}
|
||
get(e, t, i, s) {
|
||
return this._data.get(e, t)?.get(i, s)
|
||
}
|
||
clear() {
|
||
this._data.clear()
|
||
}
|
||
}
|
||
},
|
||
6114: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process;
|
||
const i = t.isNode ? "node" : navigator.userAgent,
|
||
s = t.isNode ? "node" : navigator.platform;
|
||
t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function() {
|
||
if (!t.isSafari) return 0;
|
||
const e = i.match(/Version\/(\d+)/);
|
||
return null === e || e.length < 2 ? 0 : parseInt(e[1])
|
||
}, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i)
|
||
},
|
||
6106: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.SortedList = void 0;
|
||
let i = 0;
|
||
t.SortedList = class {
|
||
constructor(e) {
|
||
this._getKey = e, this._array = []
|
||
}
|
||
clear() {
|
||
this._array.length = 0
|
||
}
|
||
insert(e) {
|
||
0 !== this._array.length ? (i = this._search(this._getKey(e)), this._array.splice(i, 0, e)) : this._array.push(e)
|
||
}
|
||
delete(e) {
|
||
if (0 === this._array.length) return !1;
|
||
const t = this._getKey(e);
|
||
if (void 0 === t) return !1;
|
||
if (i = this._search(t), -1 === i) return !1;
|
||
if (this._getKey(this._array[i]) !== t) return !1;
|
||
do {
|
||
if (this._array[i] === e) return this._array.splice(i, 1), !0
|
||
} while (++i < this._array.length && this._getKey(this._array[i]) === t);
|
||
return !1
|
||
}* getKeyIterator(e) {
|
||
if (0 !== this._array.length && (i = this._search(e), !(i < 0 || i >= this._array.length) && this._getKey(this._array[i]) === e))
|
||
do {
|
||
yield this._array[i]
|
||
} while (++i < this._array.length && this._getKey(this._array[i]) === e)
|
||
}
|
||
forEachByKey(e, t) {
|
||
if (0 !== this._array.length && (i = this._search(e), !(i < 0 || i >= this._array.length) && this._getKey(this._array[i]) === e))
|
||
do {
|
||
t(this._array[i])
|
||
} while (++i < this._array.length && this._getKey(this._array[i]) === e)
|
||
}
|
||
values() {
|
||
return [...this._array].values()
|
||
}
|
||
_search(e) {
|
||
let t = 0,
|
||
i = this._array.length - 1;
|
||
for (; i >= t;) {
|
||
let s = t + i >> 1;
|
||
const r = this._getKey(this._array[s]);
|
||
if (r > e) i = s - 1;
|
||
else {
|
||
if (!(r < e)) {
|
||
for (; s > 0 && this._getKey(this._array[s - 1]) === e;) s--;
|
||
return s
|
||
}
|
||
t = s + 1
|
||
}
|
||
}
|
||
return t
|
||
}
|
||
}
|
||
},
|
||
7226: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0;
|
||
const s = i(6114);
|
||
class r {
|
||
constructor() {
|
||
this._tasks = [], this._i = 0
|
||
}
|
||
enqueue(e) {
|
||
this._tasks.push(e), this._start()
|
||
}
|
||
flush() {
|
||
for (; this._i < this._tasks.length;) this._tasks[this._i]() || this._i++;
|
||
this.clear()
|
||
}
|
||
clear() {
|
||
this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0
|
||
}
|
||
_start() {
|
||
this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this)))
|
||
}
|
||
_process(e) {
|
||
this._idleCallback = void 0;
|
||
let t = 0,
|
||
i = 0,
|
||
s = e.timeRemaining(),
|
||
r = 0;
|
||
for (; this._i < this._tasks.length;) {
|
||
if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start();
|
||
s = r
|
||
}
|
||
this.clear()
|
||
}
|
||
}
|
||
class n extends r {
|
||
_requestCallback(e) {
|
||
return setTimeout((() => e(this._createDeadline(16))))
|
||
}
|
||
_cancelCallback(e) {
|
||
clearTimeout(e)
|
||
}
|
||
_createDeadline(e) {
|
||
const t = Date.now() + e;
|
||
return {
|
||
timeRemaining: () => Math.max(0, t - Date.now())
|
||
}
|
||
}
|
||
}
|
||
t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r {
|
||
_requestCallback(e) {
|
||
return requestIdleCallback(e)
|
||
}
|
||
_cancelCallback(e) {
|
||
cancelIdleCallback(e)
|
||
}
|
||
} : n, t.DebouncedIdleTask = class {
|
||
constructor() {
|
||
this._queue = new t.IdleTaskQueue
|
||
}
|
||
set(e) {
|
||
this._queue.clear(), this._queue.enqueue(e)
|
||
}
|
||
flush() {
|
||
this._queue.flush()
|
||
}
|
||
}
|
||
},
|
||
9282: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.updateWindowsModeWrappedState = void 0;
|
||
const s = i(643);
|
||
t.updateWindowsModeWrappedState = function(e) {
|
||
const t = e.buffer.lines.get(e.buffer.ybase + e.buffer.y - 1),
|
||
i = t?.get(e.cols - 1),
|
||
r = e.buffer.lines.get(e.buffer.ybase + e.buffer.y);
|
||
r && i && (r.isWrapped = i[s.CHAR_DATA_CODE_INDEX] !== s.NULL_CELL_CODE && i[s.CHAR_DATA_CODE_INDEX] !== s.WHITESPACE_CELL_CODE)
|
||
}
|
||
},
|
||
3734: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ExtendedAttrs = t.AttributeData = void 0;
|
||
class i {
|
||
constructor() {
|
||
this.fg = 0, this.bg = 0, this.extended = new s
|
||
}
|
||
static toColorRGB(e) {
|
||
return [e >>> 16 & 255, e >>> 8 & 255, 255 & e]
|
||
}
|
||
static fromColorRGB(e) {
|
||
return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2]
|
||
}
|
||
clone() {
|
||
const e = new i;
|
||
return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e
|
||
}
|
||
isInverse() {
|
||
return 67108864 & this.fg
|
||
}
|
||
isBold() {
|
||
return 134217728 & this.fg
|
||
}
|
||
isUnderline() {
|
||
return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg
|
||
}
|
||
isBlink() {
|
||
return 536870912 & this.fg
|
||
}
|
||
isInvisible() {
|
||
return 1073741824 & this.fg
|
||
}
|
||
isItalic() {
|
||
return 67108864 & this.bg
|
||
}
|
||
isDim() {
|
||
return 134217728 & this.bg
|
||
}
|
||
isStrikethrough() {
|
||
return 2147483648 & this.fg
|
||
}
|
||
isProtected() {
|
||
return 536870912 & this.bg
|
||
}
|
||
isOverline() {
|
||
return 1073741824 & this.bg
|
||
}
|
||
getFgColorMode() {
|
||
return 50331648 & this.fg
|
||
}
|
||
getBgColorMode() {
|
||
return 50331648 & this.bg
|
||
}
|
||
isFgRGB() {
|
||
return !(50331648 & ~this.fg)
|
||
}
|
||
isBgRGB() {
|
||
return !(50331648 & ~this.bg)
|
||
}
|
||
isFgPalette() {
|
||
return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg)
|
||
}
|
||
isBgPalette() {
|
||
return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg)
|
||
}
|
||
isFgDefault() {
|
||
return !(50331648 & this.fg)
|
||
}
|
||
isBgDefault() {
|
||
return !(50331648 & this.bg)
|
||
}
|
||
isAttributeDefault() {
|
||
return 0 === this.fg && 0 === this.bg
|
||
}
|
||
getFgColor() {
|
||
switch (50331648 & this.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.fg;
|
||
case 50331648:
|
||
return 16777215 & this.fg;
|
||
default:
|
||
return -1
|
||
}
|
||
}
|
||
getBgColor() {
|
||
switch (50331648 & this.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.bg;
|
||
case 50331648:
|
||
return 16777215 & this.bg;
|
||
default:
|
||
return -1
|
||
}
|
||
}
|
||
hasExtendedAttrs() {
|
||
return 268435456 & this.bg
|
||
}
|
||
updateExtended() {
|
||
this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456
|
||
}
|
||
getUnderlineColor() {
|
||
if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.extended.underlineColor;
|
||
case 50331648:
|
||
return 16777215 & this.extended.underlineColor;
|
||
default:
|
||
return this.getFgColor()
|
||
}
|
||
return this.getFgColor()
|
||
}
|
||
getUnderlineColorMode() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode()
|
||
}
|
||
isUnderlineColorRGB() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB()
|
||
}
|
||
isUnderlineColorPalette() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette()
|
||
}
|
||
isUnderlineColorDefault() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault()
|
||
}
|
||
getUnderlineStyle() {
|
||
return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0
|
||
}
|
||
getUnderlineVariantOffset() {
|
||
return this.extended.underlineVariantOffset
|
||
}
|
||
}
|
||
t.AttributeData = i;
|
||
class s {
|
||
get ext() {
|
||
return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext
|
||
}
|
||
set ext(e) {
|
||
this._ext = e
|
||
}
|
||
get underlineStyle() {
|
||
return this._urlId ? 5 : (469762048 & this._ext) >> 26
|
||
}
|
||
set underlineStyle(e) {
|
||
this._ext &= -469762049, this._ext |= e << 26 & 469762048
|
||
}
|
||
get underlineColor() {
|
||
return 67108863 & this._ext
|
||
}
|
||
set underlineColor(e) {
|
||
this._ext &= -67108864, this._ext |= 67108863 & e
|
||
}
|
||
get urlId() {
|
||
return this._urlId
|
||
}
|
||
set urlId(e) {
|
||
this._urlId = e
|
||
}
|
||
get underlineVariantOffset() {
|
||
const e = (3758096384 & this._ext) >> 29;
|
||
return e < 0 ? 4294967288 ^ e : e
|
||
}
|
||
set underlineVariantOffset(e) {
|
||
this._ext &= 536870911, this._ext |= e << 29 & 3758096384
|
||
}
|
||
constructor(e = 0, t = 0) {
|
||
this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t
|
||
}
|
||
clone() {
|
||
return new s(this._ext, this._urlId)
|
||
}
|
||
isEmpty() {
|
||
return 0 === this.underlineStyle && 0 === this._urlId
|
||
}
|
||
}
|
||
t.ExtendedAttrs = s
|
||
},
|
||
9092: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Buffer = t.MAX_BUFFER_SIZE = void 0;
|
||
const s = i(6349),
|
||
r = i(7226),
|
||
n = i(3734),
|
||
o = i(8437),
|
||
a = i(4634),
|
||
h = i(511),
|
||
c = i(643),
|
||
l = i(4863),
|
||
d = i(7116);
|
||
t.MAX_BUFFER_SIZE = 4294967295, t.Buffer = class {
|
||
constructor(e, t, i) {
|
||
this._hasScrollback = e, this._optionsService = t, this._bufferService = i, this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.tabs = {}, this.savedY = 0, this.savedX = 0, this.savedCurAttrData = o.DEFAULT_ATTR_DATA.clone(), this.savedCharset = d.DEFAULT_CHARSET, this.markers = [], this._nullCell = h.CellData.fromCharData([0, c.NULL_CELL_CHAR, c.NULL_CELL_WIDTH, c.NULL_CELL_CODE]), this._whitespaceCell = h.CellData.fromCharData([0, c.WHITESPACE_CELL_CHAR, c.WHITESPACE_CELL_WIDTH, c.WHITESPACE_CELL_CODE]), this._isClearing = !1, this._memoryCleanupQueue = new r.IdleTaskQueue, this._memoryCleanupPosition = 0, this._cols = this._bufferService.cols, this._rows = this._bufferService.rows, this.lines = new s.CircularList(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops()
|
||
}
|
||
getNullCell(e) {
|
||
return e ? (this._nullCell.fg = e.fg, this._nullCell.bg = e.bg, this._nullCell.extended = e.extended) : (this._nullCell.fg = 0, this._nullCell.bg = 0, this._nullCell.extended = new n.ExtendedAttrs), this._nullCell
|
||
}
|
||
getWhitespaceCell(e) {
|
||
return e ? (this._whitespaceCell.fg = e.fg, this._whitespaceCell.bg = e.bg, this._whitespaceCell.extended = e.extended) : (this._whitespaceCell.fg = 0, this._whitespaceCell.bg = 0, this._whitespaceCell.extended = new n.ExtendedAttrs), this._whitespaceCell
|
||
}
|
||
getBlankLine(e, t) {
|
||
return new o.BufferLine(this._bufferService.cols, this.getNullCell(e), t)
|
||
}
|
||
get hasScrollback() {
|
||
return this._hasScrollback && this.lines.maxLength > this._rows
|
||
}
|
||
get isCursorInViewport() {
|
||
const e = this.ybase + this.y - this.ydisp;
|
||
return e >= 0 && e < this._rows
|
||
}
|
||
_getCorrectBufferLength(e) {
|
||
if (!this._hasScrollback) return e;
|
||
const i = e + this._optionsService.rawOptions.scrollback;
|
||
return i > t.MAX_BUFFER_SIZE ? t.MAX_BUFFER_SIZE : i
|
||
}
|
||
fillViewportRows(e) {
|
||
if (0 === this.lines.length) {
|
||
void 0 === e && (e = o.DEFAULT_ATTR_DATA);
|
||
let t = this._rows;
|
||
for (; t--;) this.lines.push(this.getBlankLine(e))
|
||
}
|
||
}
|
||
clear() {
|
||
this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.lines = new s.CircularList(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops()
|
||
}
|
||
resize(e, t) {
|
||
const i = this.getNullCell(o.DEFAULT_ATTR_DATA);
|
||
let s = 0;
|
||
const r = this._getCorrectBufferLength(t);
|
||
if (r > this.lines.maxLength && (this.lines.maxLength = r), this.lines.length > 0) {
|
||
if (this._cols < e)
|
||
for (let t = 0; t < this.lines.length; t++) s += +this.lines.get(t).resize(e, i);
|
||
let n = 0;
|
||
if (this._rows < t)
|
||
for (let s = this._rows; s < t; s++) this.lines.length < t + this.ybase && (this._optionsService.rawOptions.windowsMode || void 0 !== this._optionsService.rawOptions.windowsPty.backend || void 0 !== this._optionsService.rawOptions.windowsPty.buildNumber ? this.lines.push(new o.BufferLine(e, i)) : this.ybase > 0 && this.lines.length <= this.ybase + this.y + n + 1 ? (this.ybase--, n++, this.ydisp > 0 && this.ydisp--) : this.lines.push(new o.BufferLine(e, i)));
|
||
else
|
||
for (let e = this._rows; e > t; e--) this.lines.length > t + this.ybase && (this.lines.length > this.ybase + this.y + 1 ? this.lines.pop() : (this.ybase++, this.ydisp++));
|
||
if (r < this.lines.maxLength) {
|
||
const e = this.lines.length - r;
|
||
e > 0 && (this.lines.trimStart(e), this.ybase = Math.max(this.ybase - e, 0), this.ydisp = Math.max(this.ydisp - e, 0), this.savedY = Math.max(this.savedY - e, 0)), this.lines.maxLength = r
|
||
}
|
||
this.x = Math.min(this.x, e - 1), this.y = Math.min(this.y, t - 1), n && (this.y += n), this.savedX = Math.min(this.savedX, e - 1), this.scrollTop = 0
|
||
}
|
||
if (this.scrollBottom = t - 1, this._isReflowEnabled && (this._reflow(e, t), this._cols > e))
|
||
for (let t = 0; t < this.lines.length; t++) s += +this.lines.get(t).resize(e, i);
|
||
this._cols = e, this._rows = t, this._memoryCleanupQueue.clear(), s > .1 * this.lines.length && (this._memoryCleanupPosition = 0, this._memoryCleanupQueue.enqueue((() => this._batchedMemoryCleanup())))
|
||
}
|
||
_batchedMemoryCleanup() {
|
||
let e = !0;
|
||
this._memoryCleanupPosition >= this.lines.length && (this._memoryCleanupPosition = 0, e = !1);
|
||
let t = 0;
|
||
for (; this._memoryCleanupPosition < this.lines.length;)
|
||
if (t += this.lines.get(this._memoryCleanupPosition++).cleanupMemory(), t > 100) return !0;
|
||
return e
|
||
}
|
||
get _isReflowEnabled() {
|
||
const e = this._optionsService.rawOptions.windowsPty;
|
||
return e && e.buildNumber ? this._hasScrollback && "conpty" === e.backend && e.buildNumber >= 21376 : this._hasScrollback && !this._optionsService.rawOptions.windowsMode
|
||
}
|
||
_reflow(e, t) {
|
||
this._cols !== e && (e > this._cols ? this._reflowLarger(e, t) : this._reflowSmaller(e, t))
|
||
}
|
||
_reflowLarger(e, t) {
|
||
const i = (0, a.reflowLargerGetLinesToRemove)(this.lines, this._cols, e, this.ybase + this.y, this.getNullCell(o.DEFAULT_ATTR_DATA));
|
||
if (i.length > 0) {
|
||
const s = (0, a.reflowLargerCreateNewLayout)(this.lines, i);
|
||
(0, a.reflowLargerApplyNewLayout)(this.lines, s.layout), this._reflowLargerAdjustViewport(e, t, s.countRemoved)
|
||
}
|
||
}
|
||
_reflowLargerAdjustViewport(e, t, i) {
|
||
const s = this.getNullCell(o.DEFAULT_ATTR_DATA);
|
||
let r = i;
|
||
for (; r-- > 0;) 0 === this.ybase ? (this.y > 0 && this.y--, this.lines.length < t && this.lines.push(new o.BufferLine(e, s))) : (this.ydisp === this.ybase && this.ydisp--, this.ybase--);
|
||
this.savedY = Math.max(this.savedY - i, 0)
|
||
}
|
||
_reflowSmaller(e, t) {
|
||
const i = this.getNullCell(o.DEFAULT_ATTR_DATA),
|
||
s = [];
|
||
let r = 0;
|
||
for (let n = this.lines.length - 1; n >= 0; n--) {
|
||
let h = this.lines.get(n);
|
||
if (!h || !h.isWrapped && h.getTrimmedLength() <= e) continue;
|
||
const c = [h];
|
||
for (; h.isWrapped && n > 0;) h = this.lines.get(--n), c.unshift(h);
|
||
const l = this.ybase + this.y;
|
||
if (l >= n && l < n + c.length) continue;
|
||
const d = c[c.length - 1].getTrimmedLength(),
|
||
_ = (0, a.reflowSmallerGetNewLineLengths)(c, this._cols, e),
|
||
u = _.length - c.length;
|
||
let f;
|
||
f = 0 === this.ybase && this.y !== this.lines.length - 1 ? Math.max(0, this.y - this.lines.maxLength + u) : Math.max(0, this.lines.length - this.lines.maxLength + u);
|
||
const v = [];
|
||
for (let e = 0; e < u; e++) {
|
||
const e = this.getBlankLine(o.DEFAULT_ATTR_DATA, !0);
|
||
v.push(e)
|
||
}
|
||
v.length > 0 && (s.push({
|
||
start: n + c.length + r,
|
||
newLines: v
|
||
}), r += v.length), c.push(...v);
|
||
let g = _.length - 1,
|
||
p = _[g];
|
||
0 === p && (g--, p = _[g]);
|
||
let m = c.length - u - 1,
|
||
C = d;
|
||
for (; m >= 0;) {
|
||
const e = Math.min(C, p);
|
||
if (void 0 === c[g]) break;
|
||
if (c[g].copyCellsFrom(c[m], C - e, p - e, e, !0), p -= e, 0 === p && (g--, p = _[g]), C -= e, 0 === C) {
|
||
m--;
|
||
const e = Math.max(m, 0);
|
||
C = (0, a.getWrappedLineTrimmedLength)(c, e, this._cols)
|
||
}
|
||
}
|
||
for (let t = 0; t < c.length; t++) _[t] < e && c[t].setCell(_[t], i);
|
||
let S = u - f;
|
||
for (; S-- > 0;) 0 === this.ybase ? this.y < t - 1 ? (this.y++, this.lines.pop()) : (this.ybase++, this.ydisp++) : this.ybase < Math.min(this.lines.maxLength, this.lines.length + r) - t && (this.ybase === this.ydisp && this.ydisp++, this.ybase++);
|
||
this.savedY = Math.min(this.savedY + u, this.ybase + t - 1)
|
||
}
|
||
if (s.length > 0) {
|
||
const e = [],
|
||
t = [];
|
||
for (let e = 0; e < this.lines.length; e++) t.push(this.lines.get(e));
|
||
const i = this.lines.length;
|
||
let n = i - 1,
|
||
o = 0,
|
||
a = s[o];
|
||
this.lines.length = Math.min(this.lines.maxLength, this.lines.length + r);
|
||
let h = 0;
|
||
for (let c = Math.min(this.lines.maxLength - 1, i + r - 1); c >= 0; c--)
|
||
if (a && a.start > n + h) {
|
||
for (let e = a.newLines.length - 1; e >= 0; e--) this.lines.set(c--, a.newLines[e]);
|
||
c++, e.push({
|
||
index: n + 1,
|
||
amount: a.newLines.length
|
||
}), h += a.newLines.length, a = s[++o]
|
||
} else this.lines.set(c, t[n--]);
|
||
let c = 0;
|
||
for (let t = e.length - 1; t >= 0; t--) e[t].index += c, this.lines.onInsertEmitter.fire(e[t]), c += e[t].amount;
|
||
const l = Math.max(0, i + r - this.lines.maxLength);
|
||
l > 0 && this.lines.onTrimEmitter.fire(l)
|
||
}
|
||
}
|
||
translateBufferLineToString(e, t, i = 0, s) {
|
||
const r = this.lines.get(e);
|
||
return r ? r.translateToString(t, i, s) : ""
|
||
}
|
||
getWrappedRangeForLine(e) {
|
||
let t = e,
|
||
i = e;
|
||
for (; t > 0 && this.lines.get(t).isWrapped;) t--;
|
||
for (; i + 1 < this.lines.length && this.lines.get(i + 1).isWrapped;) i++;
|
||
return {
|
||
first: t,
|
||
last: i
|
||
}
|
||
}
|
||
setupTabStops(e) {
|
||
for (null != e ? this.tabs[e] || (e = this.prevStop(e)) : (this.tabs = {}, e = 0); e < this._cols; e += this._optionsService.rawOptions.tabStopWidth) this.tabs[e] = !0
|
||
}
|
||
prevStop(e) {
|
||
for (null == e && (e = this.x); !this.tabs[--e] && e > 0;);
|
||
return e >= this._cols ? this._cols - 1 : e < 0 ? 0 : e
|
||
}
|
||
nextStop(e) {
|
||
for (null == e && (e = this.x); !this.tabs[++e] && e < this._cols;);
|
||
return e >= this._cols ? this._cols - 1 : e < 0 ? 0 : e
|
||
}
|
||
clearMarkers(e) {
|
||
this._isClearing = !0;
|
||
for (let t = 0; t < this.markers.length; t++) this.markers[t].line === e && (this.markers[t].dispose(), this.markers.splice(t--, 1));
|
||
this._isClearing = !1
|
||
}
|
||
clearAllMarkers() {
|
||
this._isClearing = !0;
|
||
for (let e = 0; e < this.markers.length; e++) this.markers[e].dispose(), this.markers.splice(e--, 1);
|
||
this._isClearing = !1
|
||
}
|
||
addMarker(e) {
|
||
const t = new l.Marker(e);
|
||
return this.markers.push(t), t.register(this.lines.onTrim((e => {
|
||
t.line -= e, t.line < 0 && t.dispose()
|
||
}))), t.register(this.lines.onInsert((e => {
|
||
t.line >= e.index && (t.line += e.amount)
|
||
}))), t.register(this.lines.onDelete((e => {
|
||
t.line >= e.index && t.line < e.index + e.amount && t.dispose(), t.line > e.index && (t.line -= e.amount)
|
||
}))), t.register(t.onDispose((() => this._removeMarker(t)))), t
|
||
}
|
||
_removeMarker(e) {
|
||
this._isClearing || this.markers.splice(this.markers.indexOf(e), 1)
|
||
}
|
||
}
|
||
},
|
||
8437: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferLine = t.DEFAULT_ATTR_DATA = void 0;
|
||
const s = i(3734),
|
||
r = i(511),
|
||
n = i(643),
|
||
o = i(482);
|
||
t.DEFAULT_ATTR_DATA = Object.freeze(new s.AttributeData);
|
||
let a = 0;
|
||
class h {
|
||
constructor(e, t, i = !1) {
|
||
this.isWrapped = i, this._combined = {}, this._extendedAttrs = {}, this._data = new Uint32Array(3 * e);
|
||
const s = t || r.CellData.fromCharData([0, n.NULL_CELL_CHAR, n.NULL_CELL_WIDTH, n.NULL_CELL_CODE]);
|
||
for (let t = 0; t < e; ++t) this.setCell(t, s);
|
||
this.length = e
|
||
}
|
||
get(e) {
|
||
const t = this._data[3 * e + 0],
|
||
i = 2097151 & t;
|
||
return [this._data[3 * e + 1], 2097152 & t ? this._combined[e] : i ? (0, o.stringFromCodePoint)(i) : "", t >> 22, 2097152 & t ? this._combined[e].charCodeAt(this._combined[e].length - 1) : i]
|
||
}
|
||
set(e, t) {
|
||
this._data[3 * e + 1] = t[n.CHAR_DATA_ATTR_INDEX], t[n.CHAR_DATA_CHAR_INDEX].length > 1 ? (this._combined[e] = t[1], this._data[3 * e + 0] = 2097152 | e | t[n.CHAR_DATA_WIDTH_INDEX] << 22) : this._data[3 * e + 0] = t[n.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | t[n.CHAR_DATA_WIDTH_INDEX] << 22
|
||
}
|
||
getWidth(e) {
|
||
return this._data[3 * e + 0] >> 22
|
||
}
|
||
hasWidth(e) {
|
||
return 12582912 & this._data[3 * e + 0]
|
||
}
|
||
getFg(e) {
|
||
return this._data[3 * e + 1]
|
||
}
|
||
getBg(e) {
|
||
return this._data[3 * e + 2]
|
||
}
|
||
hasContent(e) {
|
||
return 4194303 & this._data[3 * e + 0]
|
||
}
|
||
getCodePoint(e) {
|
||
const t = this._data[3 * e + 0];
|
||
return 2097152 & t ? this._combined[e].charCodeAt(this._combined[e].length - 1) : 2097151 & t
|
||
}
|
||
isCombined(e) {
|
||
return 2097152 & this._data[3 * e + 0]
|
||
}
|
||
getString(e) {
|
||
const t = this._data[3 * e + 0];
|
||
return 2097152 & t ? this._combined[e] : 2097151 & t ? (0, o.stringFromCodePoint)(2097151 & t) : ""
|
||
}
|
||
isProtected(e) {
|
||
return 536870912 & this._data[3 * e + 2]
|
||
}
|
||
loadCell(e, t) {
|
||
return a = 3 * e, t.content = this._data[a + 0], t.fg = this._data[a + 1], t.bg = this._data[a + 2], 2097152 & t.content && (t.combinedData = this._combined[e]), 268435456 & t.bg && (t.extended = this._extendedAttrs[e]), t
|
||
}
|
||
setCell(e, t) {
|
||
2097152 & t.content && (this._combined[e] = t.combinedData), 268435456 & t.bg && (this._extendedAttrs[e] = t.extended), this._data[3 * e + 0] = t.content, this._data[3 * e + 1] = t.fg, this._data[3 * e + 2] = t.bg
|
||
}
|
||
setCellFromCodepoint(e, t, i, s) {
|
||
268435456 & s.bg && (this._extendedAttrs[e] = s.extended), this._data[3 * e + 0] = t | i << 22, this._data[3 * e + 1] = s.fg, this._data[3 * e + 2] = s.bg
|
||
}
|
||
addCodepointToCell(e, t, i) {
|
||
let s = this._data[3 * e + 0];
|
||
2097152 & s ? this._combined[e] += (0, o.stringFromCodePoint)(t) : 2097151 & s ? (this._combined[e] = (0, o.stringFromCodePoint)(2097151 & s) + (0, o.stringFromCodePoint)(t), s &= -2097152, s |= 2097152) : s = t | 1 << 22, i && (s &= -12582913, s |= i << 22), this._data[3 * e + 0] = s
|
||
}
|
||
insertCells(e, t, i) {
|
||
if ((e %= this.length) && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length - e) {
|
||
const s = new r.CellData;
|
||
for (let i = this.length - e - t - 1; i >= 0; --i) this.setCell(e + t + i, this.loadCell(e + i, s));
|
||
for (let s = 0; s < t; ++s) this.setCell(e + s, i)
|
||
} else
|
||
for (let t = e; t < this.length; ++t) this.setCell(t, i);
|
||
2 === this.getWidth(this.length - 1) && this.setCellFromCodepoint(this.length - 1, 0, 1, i)
|
||
}
|
||
deleteCells(e, t, i) {
|
||
if (e %= this.length, t < this.length - e) {
|
||
const s = new r.CellData;
|
||
for (let i = 0; i < this.length - e - t; ++i) this.setCell(e + i, this.loadCell(e + t + i, s));
|
||
for (let e = this.length - t; e < this.length; ++e) this.setCell(e, i)
|
||
} else
|
||
for (let t = e; t < this.length; ++t) this.setCell(t, i);
|
||
e && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), 0 !== this.getWidth(e) || this.hasContent(e) || this.setCellFromCodepoint(e, 0, 1, i)
|
||
}
|
||
replaceCells(e, t, i, s = !1) {
|
||
if (s)
|
||
for (e && 2 === this.getWidth(e - 1) && !this.isProtected(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length && 2 === this.getWidth(t - 1) && !this.isProtected(t) && this.setCellFromCodepoint(t, 0, 1, i); e < t && e < this.length;) this.isProtected(e) || this.setCell(e, i), e++;
|
||
else
|
||
for (e && 2 === this.getWidth(e - 1) && this.setCellFromCodepoint(e - 1, 0, 1, i), t < this.length && 2 === this.getWidth(t - 1) && this.setCellFromCodepoint(t, 0, 1, i); e < t && e < this.length;) this.setCell(e++, i)
|
||
}
|
||
resize(e, t) {
|
||
if (e === this.length) return 4 * this._data.length * 2 < this._data.buffer.byteLength;
|
||
const i = 3 * e;
|
||
if (e > this.length) {
|
||
if (this._data.buffer.byteLength >= 4 * i) this._data = new Uint32Array(this._data.buffer, 0, i);
|
||
else {
|
||
const e = new Uint32Array(i);
|
||
e.set(this._data), this._data = e
|
||
}
|
||
for (let i = this.length; i < e; ++i) this.setCell(i, t)
|
||
} else {
|
||
this._data = this._data.subarray(0, i);
|
||
const t = Object.keys(this._combined);
|
||
for (let i = 0; i < t.length; i++) {
|
||
const s = parseInt(t[i], 10);
|
||
s >= e && delete this._combined[s]
|
||
}
|
||
const s = Object.keys(this._extendedAttrs);
|
||
for (let t = 0; t < s.length; t++) {
|
||
const i = parseInt(s[t], 10);
|
||
i >= e && delete this._extendedAttrs[i]
|
||
}
|
||
}
|
||
return this.length = e, 4 * i * 2 < this._data.buffer.byteLength
|
||
}
|
||
cleanupMemory() {
|
||
if (4 * this._data.length * 2 < this._data.buffer.byteLength) {
|
||
const e = new Uint32Array(this._data.length);
|
||
return e.set(this._data), this._data = e, 1
|
||
}
|
||
return 0
|
||
}
|
||
fill(e, t = !1) {
|
||
if (t)
|
||
for (let t = 0; t < this.length; ++t) this.isProtected(t) || this.setCell(t, e);
|
||
else {
|
||
this._combined = {}, this._extendedAttrs = {};
|
||
for (let t = 0; t < this.length; ++t) this.setCell(t, e)
|
||
}
|
||
}
|
||
copyFrom(e) {
|
||
this.length !== e.length ? this._data = new Uint32Array(e._data) : this._data.set(e._data), this.length = e.length, this._combined = {};
|
||
for (const t in e._combined) this._combined[t] = e._combined[t];
|
||
this._extendedAttrs = {};
|
||
for (const t in e._extendedAttrs) this._extendedAttrs[t] = e._extendedAttrs[t];
|
||
this.isWrapped = e.isWrapped
|
||
}
|
||
clone() {
|
||
const e = new h(0);
|
||
e._data = new Uint32Array(this._data), e.length = this.length;
|
||
for (const t in this._combined) e._combined[t] = this._combined[t];
|
||
for (const t in this._extendedAttrs) e._extendedAttrs[t] = this._extendedAttrs[t];
|
||
return e.isWrapped = this.isWrapped, e
|
||
}
|
||
getTrimmedLength() {
|
||
for (let e = this.length - 1; e >= 0; --e)
|
||
if (4194303 & this._data[3 * e + 0]) return e + (this._data[3 * e + 0] >> 22);
|
||
return 0
|
||
}
|
||
getNoBgTrimmedLength() {
|
||
for (let e = this.length - 1; e >= 0; --e)
|
||
if (4194303 & this._data[3 * e + 0] || 50331648 & this._data[3 * e + 2]) return e + (this._data[3 * e + 0] >> 22);
|
||
return 0
|
||
}
|
||
copyCellsFrom(e, t, i, s, r) {
|
||
const n = e._data;
|
||
if (r)
|
||
for (let r = s - 1; r >= 0; r--) {
|
||
for (let e = 0; e < 3; e++) this._data[3 * (i + r) + e] = n[3 * (t + r) + e];
|
||
268435456 & n[3 * (t + r) + 2] && (this._extendedAttrs[i + r] = e._extendedAttrs[t + r])
|
||
} else
|
||
for (let r = 0; r < s; r++) {
|
||
for (let e = 0; e < 3; e++) this._data[3 * (i + r) + e] = n[3 * (t + r) + e];
|
||
268435456 & n[3 * (t + r) + 2] && (this._extendedAttrs[i + r] = e._extendedAttrs[t + r])
|
||
}
|
||
const o = Object.keys(e._combined);
|
||
for (let s = 0; s < o.length; s++) {
|
||
const r = parseInt(o[s], 10);
|
||
r >= t && (this._combined[r - t + i] = e._combined[r])
|
||
}
|
||
}
|
||
translateToString(e, t, i, s) {
|
||
t = t ?? 0, i = i ?? this.length, e && (i = Math.min(i, this.getTrimmedLength())), s && (s.length = 0);
|
||
let r = "";
|
||
for (; t < i;) {
|
||
const e = this._data[3 * t + 0],
|
||
i = 2097151 & e,
|
||
a = 2097152 & e ? this._combined[t] : i ? (0, o.stringFromCodePoint)(i) : n.WHITESPACE_CELL_CHAR;
|
||
if (r += a, s)
|
||
for (let e = 0; e < a.length; ++e) s.push(t);
|
||
t += e >> 22 || 1
|
||
}
|
||
return s && s.push(t), r
|
||
}
|
||
}
|
||
t.BufferLine = h
|
||
},
|
||
4841: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.getRangeLength = void 0, t.getRangeLength = function(e, t) {
|
||
if (e.start.y > e.end.y) throw new Error(`Buffer range end (${e.end.x}, ${e.end.y}) cannot be before start (${e.start.x}, ${e.start.y})`);
|
||
return t * (e.end.y - e.start.y) + (e.end.x - e.start.x + 1)
|
||
}
|
||
},
|
||
4634: (e, t) => {
|
||
function i(e, t, i) {
|
||
if (t === e.length - 1) return e[t].getTrimmedLength();
|
||
const s = !e[t].hasContent(i - 1) && 1 === e[t].getWidth(i - 1),
|
||
r = 2 === e[t + 1].getWidth(0);
|
||
return s && r ? i - 1 : i
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.getWrappedLineTrimmedLength = t.reflowSmallerGetNewLineLengths = t.reflowLargerApplyNewLayout = t.reflowLargerCreateNewLayout = t.reflowLargerGetLinesToRemove = void 0, t.reflowLargerGetLinesToRemove = function(e, t, s, r, n) {
|
||
const o = [];
|
||
for (let a = 0; a < e.length - 1; a++) {
|
||
let h = a,
|
||
c = e.get(++h);
|
||
if (!c.isWrapped) continue;
|
||
const l = [e.get(a)];
|
||
for (; h < e.length && c.isWrapped;) l.push(c), c = e.get(++h);
|
||
if (r >= a && r < h) {
|
||
a += l.length - 1;
|
||
continue
|
||
}
|
||
let d = 0,
|
||
_ = i(l, d, t),
|
||
u = 1,
|
||
f = 0;
|
||
for (; u < l.length;) {
|
||
const e = i(l, u, t),
|
||
r = e - f,
|
||
o = s - _,
|
||
a = Math.min(r, o);
|
||
l[d].copyCellsFrom(l[u], f, _, a, !1), _ += a, _ === s && (d++, _ = 0), f += a, f === e && (u++, f = 0), 0 === _ && 0 !== d && 2 === l[d - 1].getWidth(s - 1) && (l[d].copyCellsFrom(l[d - 1], s - 1, _++, 1, !1), l[d - 1].setCell(s - 1, n))
|
||
}
|
||
l[d].replaceCells(_, s, n);
|
||
let v = 0;
|
||
for (let e = l.length - 1; e > 0 && (e > d || 0 === l[e].getTrimmedLength()); e--) v++;
|
||
v > 0 && (o.push(a + l.length - v), o.push(v)), a += l.length - 1
|
||
}
|
||
return o
|
||
}, t.reflowLargerCreateNewLayout = function(e, t) {
|
||
const i = [];
|
||
let s = 0,
|
||
r = t[s],
|
||
n = 0;
|
||
for (let o = 0; o < e.length; o++)
|
||
if (r === o) {
|
||
const i = t[++s];
|
||
e.onDeleteEmitter.fire({
|
||
index: o - n,
|
||
amount: i
|
||
}), o += i - 1, n += i, r = t[++s]
|
||
} else i.push(o);
|
||
return {
|
||
layout: i,
|
||
countRemoved: n
|
||
}
|
||
}, t.reflowLargerApplyNewLayout = function(e, t) {
|
||
const i = [];
|
||
for (let s = 0; s < t.length; s++) i.push(e.get(t[s]));
|
||
for (let t = 0; t < i.length; t++) e.set(t, i[t]);
|
||
e.length = t.length
|
||
}, t.reflowSmallerGetNewLineLengths = function(e, t, s) {
|
||
const r = [],
|
||
n = e.map(((s, r) => i(e, r, t))).reduce(((e, t) => e + t));
|
||
let o = 0,
|
||
a = 0,
|
||
h = 0;
|
||
for (; h < n;) {
|
||
if (n - h < s) {
|
||
r.push(n - h);
|
||
break
|
||
}
|
||
o += s;
|
||
const c = i(e, a, t);
|
||
o > c && (o -= c, a++);
|
||
const l = 2 === e[a].getWidth(o - 1);
|
||
l && o--;
|
||
const d = l ? s - 1 : s;
|
||
r.push(d), h += d
|
||
}
|
||
return r
|
||
}, t.getWrappedLineTrimmedLength = i
|
||
},
|
||
5295: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferSet = void 0;
|
||
const s = i(8460),
|
||
r = i(844),
|
||
n = i(9092);
|
||
class o extends r.Disposable {
|
||
constructor(e, t) {
|
||
super(), this._optionsService = e, this._bufferService = t, this._onBufferActivate = this.register(new s.EventEmitter), this.onBufferActivate = this._onBufferActivate.event, this.reset(), this.register(this._optionsService.onSpecificOptionChange("scrollback", (() => this.resize(this._bufferService.cols, this._bufferService.rows)))), this.register(this._optionsService.onSpecificOptionChange("tabStopWidth", (() => this.setupTabStops())))
|
||
}
|
||
reset() {
|
||
this._normal = new n.Buffer(!0, this._optionsService, this._bufferService), this._normal.fillViewportRows(), this._alt = new n.Buffer(!1, this._optionsService, this._bufferService), this._activeBuffer = this._normal, this._onBufferActivate.fire({
|
||
activeBuffer: this._normal,
|
||
inactiveBuffer: this._alt
|
||
}), this.setupTabStops()
|
||
}
|
||
get alt() {
|
||
return this._alt
|
||
}
|
||
get active() {
|
||
return this._activeBuffer
|
||
}
|
||
get normal() {
|
||
return this._normal
|
||
}
|
||
activateNormalBuffer() {
|
||
this._activeBuffer !== this._normal && (this._normal.x = this._alt.x, this._normal.y = this._alt.y, this._alt.clearAllMarkers(), this._alt.clear(), this._activeBuffer = this._normal, this._onBufferActivate.fire({
|
||
activeBuffer: this._normal,
|
||
inactiveBuffer: this._alt
|
||
}))
|
||
}
|
||
activateAltBuffer(e) {
|
||
this._activeBuffer !== this._alt && (this._alt.fillViewportRows(e), this._alt.x = this._normal.x, this._alt.y = this._normal.y, this._activeBuffer = this._alt, this._onBufferActivate.fire({
|
||
activeBuffer: this._alt,
|
||
inactiveBuffer: this._normal
|
||
}))
|
||
}
|
||
resize(e, t) {
|
||
this._normal.resize(e, t), this._alt.resize(e, t), this.setupTabStops(e)
|
||
}
|
||
setupTabStops(e) {
|
||
this._normal.setupTabStops(e), this._alt.setupTabStops(e)
|
||
}
|
||
}
|
||
t.BufferSet = o
|
||
},
|
||
511: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CellData = void 0;
|
||
const s = i(482),
|
||
r = i(643),
|
||
n = i(3734);
|
||
class o extends n.AttributeData {
|
||
constructor() {
|
||
super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = ""
|
||
}
|
||
static fromCharData(e) {
|
||
const t = new o;
|
||
return t.setFromCharData(e), t
|
||
}
|
||
isCombined() {
|
||
return 2097152 & this.content
|
||
}
|
||
getWidth() {
|
||
return this.content >> 22
|
||
}
|
||
getChars() {
|
||
return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : ""
|
||
}
|
||
getCode() {
|
||
return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content
|
||
}
|
||
setFromCharData(e) {
|
||
this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0;
|
||
let t = !1;
|
||
if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0;
|
||
else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) {
|
||
const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0);
|
||
if (55296 <= i && i <= 56319) {
|
||
const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1);
|
||
56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0
|
||
} else t = !0
|
||
} else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22;
|
||
t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22)
|
||
}
|
||
getAsCharData() {
|
||
return [this.fg, this.getChars(), this.getWidth(), this.getCode()]
|
||
}
|
||
}
|
||
t.CellData = o
|
||
},
|
||
643: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32
|
||
},
|
||
4863: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Marker = void 0;
|
||
const s = i(8460),
|
||
r = i(844);
|
||
class n {
|
||
get id() {
|
||
return this._id
|
||
}
|
||
constructor(e) {
|
||
this.line = e, this.isDisposed = !1, this._disposables = [], this._id = n._nextId++, this._onDispose = this.register(new s.EventEmitter), this.onDispose = this._onDispose.event
|
||
}
|
||
dispose() {
|
||
this.isDisposed || (this.isDisposed = !0, this.line = -1, this._onDispose.fire(), (0, r.disposeArray)(this._disposables), this._disposables.length = 0)
|
||
}
|
||
register(e) {
|
||
return this._disposables.push(e), e
|
||
}
|
||
}
|
||
t.Marker = n, n._nextId = 1
|
||
},
|
||
7116: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DEFAULT_CHARSET = t.CHARSETS = void 0, t.CHARSETS = {}, t.DEFAULT_CHARSET = t.CHARSETS.B, t.CHARSETS[0] = {
|
||
"`": "◆",
|
||
a: "▒",
|
||
b: "␉",
|
||
c: "␌",
|
||
d: "␍",
|
||
e: "␊",
|
||
f: "°",
|
||
g: "±",
|
||
h: "",
|
||
i: "␋",
|
||
j: "┘",
|
||
k: "┐",
|
||
l: "┌",
|
||
m: "└",
|
||
n: "┼",
|
||
o: "⎺",
|
||
p: "⎻",
|
||
q: "─",
|
||
r: "⎼",
|
||
s: "⎽",
|
||
t: "├",
|
||
u: "┤",
|
||
v: "┴",
|
||
w: "┬",
|
||
x: "│",
|
||
y: "≤",
|
||
z: "≥",
|
||
"{": "π",
|
||
"|": "≠",
|
||
"}": "£",
|
||
"~": "·"
|
||
}, t.CHARSETS.A = {
|
||
"#": "£"
|
||
}, t.CHARSETS.B = void 0, t.CHARSETS[4] = {
|
||
"#": "£",
|
||
"@": "¾",
|
||
"[": "ij",
|
||
"\\": "½",
|
||
"]": "|",
|
||
"{": "¨",
|
||
"|": "f",
|
||
"}": "¼",
|
||
"~": "´"
|
||
}, t.CHARSETS.C = t.CHARSETS[5] = {
|
||
"[": "Ä",
|
||
"\\": "Ö",
|
||
"]": "Å",
|
||
"^": "Ü",
|
||
"`": "é",
|
||
"{": "ä",
|
||
"|": "ö",
|
||
"}": "å",
|
||
"~": "ü"
|
||
}, t.CHARSETS.R = {
|
||
"#": "£",
|
||
"@": "à",
|
||
"[": "°",
|
||
"\\": "ç",
|
||
"]": "§",
|
||
"{": "é",
|
||
"|": "ù",
|
||
"}": "è",
|
||
"~": "¨"
|
||
}, t.CHARSETS.Q = {
|
||
"@": "à",
|
||
"[": "â",
|
||
"\\": "ç",
|
||
"]": "ê",
|
||
"^": "î",
|
||
"`": "ô",
|
||
"{": "é",
|
||
"|": "ù",
|
||
"}": "è",
|
||
"~": "û"
|
||
}, t.CHARSETS.K = {
|
||
"@": "§",
|
||
"[": "Ä",
|
||
"\\": "Ö",
|
||
"]": "Ü",
|
||
"{": "ä",
|
||
"|": "ö",
|
||
"}": "ü",
|
||
"~": "ß"
|
||
}, t.CHARSETS.Y = {
|
||
"#": "£",
|
||
"@": "§",
|
||
"[": "°",
|
||
"\\": "ç",
|
||
"]": "é",
|
||
"`": "ù",
|
||
"{": "à",
|
||
"|": "ò",
|
||
"}": "è",
|
||
"~": "ì"
|
||
}, t.CHARSETS.E = t.CHARSETS[6] = {
|
||
"@": "Ä",
|
||
"[": "Æ",
|
||
"\\": "Ø",
|
||
"]": "Å",
|
||
"^": "Ü",
|
||
"`": "ä",
|
||
"{": "æ",
|
||
"|": "ø",
|
||
"}": "å",
|
||
"~": "ü"
|
||
}, t.CHARSETS.Z = {
|
||
"#": "£",
|
||
"@": "§",
|
||
"[": "¡",
|
||
"\\": "Ñ",
|
||
"]": "¿",
|
||
"{": "°",
|
||
"|": "ñ",
|
||
"}": "ç"
|
||
}, t.CHARSETS.H = t.CHARSETS[7] = {
|
||
"@": "É",
|
||
"[": "Ä",
|
||
"\\": "Ö",
|
||
"]": "Å",
|
||
"^": "Ü",
|
||
"`": "é",
|
||
"{": "ä",
|
||
"|": "ö",
|
||
"}": "å",
|
||
"~": "ü"
|
||
}, t.CHARSETS["="] = {
|
||
"#": "ù",
|
||
"@": "à",
|
||
"[": "é",
|
||
"\\": "ç",
|
||
"]": "ê",
|
||
"^": "î",
|
||
_: "è",
|
||
"`": "ô",
|
||
"{": "ä",
|
||
"|": "ö",
|
||
"}": "ü",
|
||
"~": "û"
|
||
}
|
||
},
|
||
2584: (e, t) => {
|
||
var i, s, r;
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.C1_ESCAPED = t.C1 = t.C0 = void 0,
|
||
function(e) {
|
||
e.NUL = "\0", e.SOH = "", e.STX = "", e.ETX = "", e.EOT = "", e.ENQ = "", e.ACK = "", e.BEL = "", e.BS = "\b", e.HT = "\t", e.LF = "\n", e.VT = "\v", e.FF = "\f", e.CR = "\r", e.SO = "", e.SI = "", e.DLE = "", e.DC1 = "", e.DC2 = "", e.DC3 = "", e.DC4 = "", e.NAK = "", e.SYN = "", e.ETB = "", e.CAN = "", e.EM = "", e.SUB = "", e.ESC = "", e.FS = "", e.GS = "", e.RS = "", e.US = "", e.SP = " ", e.DEL = ""
|
||
}(i || (t.C0 = i = {})),
|
||
function(e) {
|
||
e.PAD = "", e.HOP = "", e.BPH = "", e.NBH = "", e.IND = "", e.NEL = "
", e.SSA = "", e.ESA = "", e.HTS = "", e.HTJ = "", e.VTS = "", e.PLD = "", e.PLU = "", e.RI = "", e.SS2 = "", e.SS3 = "", e.DCS = "", e.PU1 = "", e.PU2 = "", e.STS = "", e.CCH = "", e.MW = "", e.SPA = "", e.EPA = "", e.SOS = "", e.SGCI = "", e.SCI = "", e.CSI = "", e.ST = "", e.OSC = "", e.PM = "", e.APC = ""
|
||
}(s || (t.C1 = s = {})),
|
||
function(e) {
|
||
e.ST = `${i.ESC}\\`
|
||
}(r || (t.C1_ESCAPED = r = {}))
|
||
},
|
||
7399: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.evaluateKeyboardEvent = void 0;
|
||
const s = i(2584),
|
||
r = {
|
||
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: ["'", '"']
|
||
};
|
||
t.evaluateKeyboardEvent = function(e, t, i, n) {
|
||
const o = {
|
||
type: 0,
|
||
cancel: !1,
|
||
key: void 0
|
||
},
|
||
a = (e.shiftKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.ctrlKey ? 4 : 0) | (e.metaKey ? 8 : 0);
|
||
switch (e.keyCode) {
|
||
case 0:
|
||
"UIKeyInputUpArrow" === e.key ? o.key = t ? s.C0.ESC + "OA" : s.C0.ESC + "[A" : "UIKeyInputLeftArrow" === e.key ? o.key = t ? s.C0.ESC + "OD" : s.C0.ESC + "[D" : "UIKeyInputRightArrow" === e.key ? o.key = t ? s.C0.ESC + "OC" : s.C0.ESC + "[C" : "UIKeyInputDownArrow" === e.key && (o.key = t ? s.C0.ESC + "OB" : s.C0.ESC + "[B");
|
||
break;
|
||
case 8:
|
||
o.key = e.ctrlKey ? "\b" : s.C0.DEL, e.altKey && (o.key = s.C0.ESC + o.key);
|
||
break;
|
||
case 9:
|
||
if (e.shiftKey) {
|
||
o.key = s.C0.ESC + "[Z";
|
||
break
|
||
}
|
||
o.key = s.C0.HT, o.cancel = !0;
|
||
break;
|
||
case 13:
|
||
o.key = e.altKey ? s.C0.ESC + s.C0.CR : s.C0.CR, o.cancel = !0;
|
||
break;
|
||
case 27:
|
||
o.key = s.C0.ESC, e.altKey && (o.key = s.C0.ESC + s.C0.ESC), o.cancel = !0;
|
||
break;
|
||
case 37:
|
||
if (e.metaKey) break;
|
||
a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "D", o.key === s.C0.ESC + "[1;3D" && (o.key = s.C0.ESC + (i ? "b" : "[1;5D"))) : o.key = t ? s.C0.ESC + "OD" : s.C0.ESC + "[D";
|
||
break;
|
||
case 39:
|
||
if (e.metaKey) break;
|
||
a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "C", o.key === s.C0.ESC + "[1;3C" && (o.key = s.C0.ESC + (i ? "f" : "[1;5C"))) : o.key = t ? s.C0.ESC + "OC" : s.C0.ESC + "[C";
|
||
break;
|
||
case 38:
|
||
if (e.metaKey) break;
|
||
a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "A", i || o.key !== s.C0.ESC + "[1;3A" || (o.key = s.C0.ESC + "[1;5A")) : o.key = t ? s.C0.ESC + "OA" : s.C0.ESC + "[A";
|
||
break;
|
||
case 40:
|
||
if (e.metaKey) break;
|
||
a ? (o.key = s.C0.ESC + "[1;" + (a + 1) + "B", i || o.key !== s.C0.ESC + "[1;3B" || (o.key = s.C0.ESC + "[1;5B")) : o.key = t ? s.C0.ESC + "OB" : s.C0.ESC + "[B";
|
||
break;
|
||
case 45:
|
||
e.shiftKey || e.ctrlKey || (o.key = s.C0.ESC + "[2~");
|
||
break;
|
||
case 46:
|
||
o.key = a ? s.C0.ESC + "[3;" + (a + 1) + "~" : s.C0.ESC + "[3~";
|
||
break;
|
||
case 36:
|
||
o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "H" : t ? s.C0.ESC + "OH" : s.C0.ESC + "[H";
|
||
break;
|
||
case 35:
|
||
o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "F" : t ? s.C0.ESC + "OF" : s.C0.ESC + "[F";
|
||
break;
|
||
case 33:
|
||
e.shiftKey ? o.type = 2 : e.ctrlKey ? o.key = s.C0.ESC + "[5;" + (a + 1) + "~" : o.key = s.C0.ESC + "[5~";
|
||
break;
|
||
case 34:
|
||
e.shiftKey ? o.type = 3 : e.ctrlKey ? o.key = s.C0.ESC + "[6;" + (a + 1) + "~" : o.key = s.C0.ESC + "[6~";
|
||
break;
|
||
case 112:
|
||
o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "P" : s.C0.ESC + "OP";
|
||
break;
|
||
case 113:
|
||
o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "Q" : s.C0.ESC + "OQ";
|
||
break;
|
||
case 114:
|
||
o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "R" : s.C0.ESC + "OR";
|
||
break;
|
||
case 115:
|
||
o.key = a ? s.C0.ESC + "[1;" + (a + 1) + "S" : s.C0.ESC + "OS";
|
||
break;
|
||
case 116:
|
||
o.key = a ? s.C0.ESC + "[15;" + (a + 1) + "~" : s.C0.ESC + "[15~";
|
||
break;
|
||
case 117:
|
||
o.key = a ? s.C0.ESC + "[17;" + (a + 1) + "~" : s.C0.ESC + "[17~";
|
||
break;
|
||
case 118:
|
||
o.key = a ? s.C0.ESC + "[18;" + (a + 1) + "~" : s.C0.ESC + "[18~";
|
||
break;
|
||
case 119:
|
||
o.key = a ? s.C0.ESC + "[19;" + (a + 1) + "~" : s.C0.ESC + "[19~";
|
||
break;
|
||
case 120:
|
||
o.key = a ? s.C0.ESC + "[20;" + (a + 1) + "~" : s.C0.ESC + "[20~";
|
||
break;
|
||
case 121:
|
||
o.key = a ? s.C0.ESC + "[21;" + (a + 1) + "~" : s.C0.ESC + "[21~";
|
||
break;
|
||
case 122:
|
||
o.key = a ? s.C0.ESC + "[23;" + (a + 1) + "~" : s.C0.ESC + "[23~";
|
||
break;
|
||
case 123:
|
||
o.key = a ? s.C0.ESC + "[24;" + (a + 1) + "~" : s.C0.ESC + "[24~";
|
||
break;
|
||
default:
|
||
if (!e.ctrlKey || e.shiftKey || e.altKey || e.metaKey)
|
||
if (i && !n || !e.altKey || e.metaKey) !i || e.altKey || e.ctrlKey || e.shiftKey || !e.metaKey ? e.key && !e.ctrlKey && !e.altKey && !e.metaKey && e.keyCode >= 48 && 1 === e.key.length ? o.key = e.key : e.key && e.ctrlKey && ("_" === e.key && (o.key = s.C0.US), "@" === e.key && (o.key = s.C0.NUL)) : 65 === e.keyCode && (o.type = 1);
|
||
else {
|
||
const t = r[e.keyCode],
|
||
i = t?.[e.shiftKey ? 1 : 0];
|
||
if (i) o.key = s.C0.ESC + i;
|
||
else if (e.keyCode >= 65 && e.keyCode <= 90) {
|
||
const t = e.ctrlKey ? e.keyCode - 64 : e.keyCode + 32;
|
||
let i = String.fromCharCode(t);
|
||
e.shiftKey && (i = i.toUpperCase()), o.key = s.C0.ESC + i
|
||
} else if (32 === e.keyCode) o.key = s.C0.ESC + (e.ctrlKey ? s.C0.NUL : " ");
|
||
else if ("Dead" === e.key && e.code.startsWith("Key")) {
|
||
let t = e.code.slice(3, 4);
|
||
e.shiftKey || (t = t.toLowerCase()), o.key = s.C0.ESC + t, o.cancel = !0
|
||
}
|
||
}
|
||
else e.keyCode >= 65 && e.keyCode <= 90 ? o.key = String.fromCharCode(e.keyCode - 64) : 32 === e.keyCode ? o.key = s.C0.NUL : e.keyCode >= 51 && e.keyCode <= 55 ? o.key = String.fromCharCode(e.keyCode - 51 + 27) : 56 === e.keyCode ? o.key = s.C0.DEL : 219 === e.keyCode ? o.key = s.C0.ESC : 220 === e.keyCode ? o.key = s.C0.FS : 221 === e.keyCode && (o.key = s.C0.GS)
|
||
}
|
||
return o
|
||
}
|
||
},
|
||
482: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function(e) {
|
||
return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e)
|
||
}, t.utf32ToString = function(e, t = 0, i = e.length) {
|
||
let s = "";
|
||
for (let r = t; r < i; ++r) {
|
||
let t = e[r];
|
||
t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t)
|
||
}
|
||
return s
|
||
}, t.StringToUtf32 = class {
|
||
constructor() {
|
||
this._interim = 0
|
||
}
|
||
clear() {
|
||
this._interim = 0
|
||
}
|
||
decode(e, t) {
|
||
const i = e.length;
|
||
if (!i) return 0;
|
||
let s = 0,
|
||
r = 0;
|
||
if (this._interim) {
|
||
const i = e.charCodeAt(r++);
|
||
56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0
|
||
}
|
||
for (let n = r; n < i; ++n) {
|
||
const r = e.charCodeAt(n);
|
||
if (55296 <= r && r <= 56319) {
|
||
if (++n >= i) return this._interim = r, s;
|
||
const o = e.charCodeAt(n);
|
||
56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o)
|
||
} else 65279 !== r && (t[s++] = r)
|
||
}
|
||
return s
|
||
}
|
||
}, t.Utf8ToUtf32 = class {
|
||
constructor() {
|
||
this.interim = new Uint8Array(3)
|
||
}
|
||
clear() {
|
||
this.interim.fill(0)
|
||
}
|
||
decode(e, t) {
|
||
const i = e.length;
|
||
if (!i) return 0;
|
||
let s, r, n, o, a = 0,
|
||
h = 0,
|
||
c = 0;
|
||
if (this.interim[0]) {
|
||
let s = !1,
|
||
r = this.interim[0];
|
||
r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7;
|
||
let n, o = 0;
|
||
for (;
|
||
(n = 63 & this.interim[++o]) && o < 4;) r <<= 6, r |= n;
|
||
const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4,
|
||
l = h - o;
|
||
for (; c < l;) {
|
||
if (c >= i) return 0;
|
||
if (n = e[c++], 128 != (192 & n)) {
|
||
c--, s = !0;
|
||
break
|
||
}
|
||
this.interim[o++] = n, r <<= 6, r |= 63 & n
|
||
}
|
||
s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0)
|
||
}
|
||
const l = i - 4;
|
||
let d = c;
|
||
for (; d < i;) {
|
||
for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));) t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4;
|
||
if (s = e[d++], s < 128) t[a++] = s;
|
||
else if (192 == (224 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (31 & s) << 6 | 63 & r, h < 128) {
|
||
d--;
|
||
continue
|
||
}
|
||
t[a++] = h
|
||
} else if (224 == (240 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, a;
|
||
if (n = e[d++], 128 != (192 & n)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue;
|
||
t[a++] = h
|
||
} else if (240 == (248 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, a;
|
||
if (n = e[d++], 128 != (192 & n)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a;
|
||
if (o = e[d++], 128 != (192 & o)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue;
|
||
t[a++] = h
|
||
}
|
||
}
|
||
return a
|
||
}
|
||
}
|
||
},
|
||
225: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.UnicodeV6 = void 0;
|
||
const s = i(1480),
|
||
r = [
|
||
[768, 879],
|
||
[1155, 1158],
|
||
[1160, 1161],
|
||
[1425, 1469],
|
||
[1471, 1471],
|
||
[1473, 1474],
|
||
[1476, 1477],
|
||
[1479, 1479],
|
||
[1536, 1539],
|
||
[1552, 1557],
|
||
[1611, 1630],
|
||
[1648, 1648],
|
||
[1750, 1764],
|
||
[1767, 1768],
|
||
[1770, 1773],
|
||
[1807, 1807],
|
||
[1809, 1809],
|
||
[1840, 1866],
|
||
[1958, 1968],
|
||
[2027, 2035],
|
||
[2305, 2306],
|
||
[2364, 2364],
|
||
[2369, 2376],
|
||
[2381, 2381],
|
||
[2385, 2388],
|
||
[2402, 2403],
|
||
[2433, 2433],
|
||
[2492, 2492],
|
||
[2497, 2500],
|
||
[2509, 2509],
|
||
[2530, 2531],
|
||
[2561, 2562],
|
||
[2620, 2620],
|
||
[2625, 2626],
|
||
[2631, 2632],
|
||
[2635, 2637],
|
||
[2672, 2673],
|
||
[2689, 2690],
|
||
[2748, 2748],
|
||
[2753, 2757],
|
||
[2759, 2760],
|
||
[2765, 2765],
|
||
[2786, 2787],
|
||
[2817, 2817],
|
||
[2876, 2876],
|
||
[2879, 2879],
|
||
[2881, 2883],
|
||
[2893, 2893],
|
||
[2902, 2902],
|
||
[2946, 2946],
|
||
[3008, 3008],
|
||
[3021, 3021],
|
||
[3134, 3136],
|
||
[3142, 3144],
|
||
[3146, 3149],
|
||
[3157, 3158],
|
||
[3260, 3260],
|
||
[3263, 3263],
|
||
[3270, 3270],
|
||
[3276, 3277],
|
||
[3298, 3299],
|
||
[3393, 3395],
|
||
[3405, 3405],
|
||
[3530, 3530],
|
||
[3538, 3540],
|
||
[3542, 3542],
|
||
[3633, 3633],
|
||
[3636, 3642],
|
||
[3655, 3662],
|
||
[3761, 3761],
|
||
[3764, 3769],
|
||
[3771, 3772],
|
||
[3784, 3789],
|
||
[3864, 3865],
|
||
[3893, 3893],
|
||
[3895, 3895],
|
||
[3897, 3897],
|
||
[3953, 3966],
|
||
[3968, 3972],
|
||
[3974, 3975],
|
||
[3984, 3991],
|
||
[3993, 4028],
|
||
[4038, 4038],
|
||
[4141, 4144],
|
||
[4146, 4146],
|
||
[4150, 4151],
|
||
[4153, 4153],
|
||
[4184, 4185],
|
||
[4448, 4607],
|
||
[4959, 4959],
|
||
[5906, 5908],
|
||
[5938, 5940],
|
||
[5970, 5971],
|
||
[6002, 6003],
|
||
[6068, 6069],
|
||
[6071, 6077],
|
||
[6086, 6086],
|
||
[6089, 6099],
|
||
[6109, 6109],
|
||
[6155, 6157],
|
||
[6313, 6313],
|
||
[6432, 6434],
|
||
[6439, 6440],
|
||
[6450, 6450],
|
||
[6457, 6459],
|
||
[6679, 6680],
|
||
[6912, 6915],
|
||
[6964, 6964],
|
||
[6966, 6970],
|
||
[6972, 6972],
|
||
[6978, 6978],
|
||
[7019, 7027],
|
||
[7616, 7626],
|
||
[7678, 7679],
|
||
[8203, 8207],
|
||
[8234, 8238],
|
||
[8288, 8291],
|
||
[8298, 8303],
|
||
[8400, 8431],
|
||
[12330, 12335],
|
||
[12441, 12442],
|
||
[43014, 43014],
|
||
[43019, 43019],
|
||
[43045, 43046],
|
||
[64286, 64286],
|
||
[65024, 65039],
|
||
[65056, 65059],
|
||
[65279, 65279],
|
||
[65529, 65531]
|
||
],
|
||
n = [
|
||
[68097, 68099],
|
||
[68101, 68102],
|
||
[68108, 68111],
|
||
[68152, 68154],
|
||
[68159, 68159],
|
||
[119143, 119145],
|
||
[119155, 119170],
|
||
[119173, 119179],
|
||
[119210, 119213],
|
||
[119362, 119364],
|
||
[917505, 917505],
|
||
[917536, 917631],
|
||
[917760, 917999]
|
||
];
|
||
let o;
|
||
t.UnicodeV6 = class {
|
||
constructor() {
|
||
if (this.version = "6", !o) {
|
||
o = new Uint8Array(65536), o.fill(1), o[0] = 0, o.fill(0, 1, 32), o.fill(0, 127, 160), o.fill(2, 4352, 4448), o[9001] = 2, o[9002] = 2, o.fill(2, 11904, 42192), o[12351] = 1, o.fill(2, 44032, 55204), o.fill(2, 63744, 64256), o.fill(2, 65040, 65050), o.fill(2, 65072, 65136), o.fill(2, 65280, 65377), o.fill(2, 65504, 65511);
|
||
for (let e = 0; e < r.length; ++e) o.fill(0, r[e][0], r[e][1] + 1)
|
||
}
|
||
}
|
||
wcwidth(e) {
|
||
return e < 32 ? 0 : e < 127 ? 1 : e < 65536 ? o[e] : function(e, t) {
|
||
let i, s = 0,
|
||
r = t.length - 1;
|
||
if (e < t[0][0] || e > t[r][1]) return !1;
|
||
for (; r >= s;)
|
||
if (i = s + r >> 1, e > t[i][1]) s = i + 1;
|
||
else {
|
||
if (!(e < t[i][0])) return !0;
|
||
r = i - 1
|
||
} return !1
|
||
}(e, n) ? 0 : e >= 131072 && e <= 196605 || e >= 196608 && e <= 262141 ? 2 : 1
|
||
}
|
||
charProperties(e, t) {
|
||
let i = this.wcwidth(e),
|
||
r = 0 === i && 0 !== t;
|
||
if (r) {
|
||
const e = s.UnicodeService.extractWidth(t);
|
||
0 === e ? r = !1 : e > i && (i = e)
|
||
}
|
||
return s.UnicodeService.createPropertyValue(0, i, r)
|
||
}
|
||
}
|
||
},
|
||
5981: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.WriteBuffer = void 0;
|
||
const s = i(8460),
|
||
r = i(844);
|
||
class n extends r.Disposable {
|
||
constructor(e) {
|
||
super(), this._action = e, this._writeBuffer = [], this._callbacks = [], this._pendingData = 0, this._bufferOffset = 0, this._isSyncWriting = !1, this._syncCalls = 0, this._didUserInput = !1, this._onWriteParsed = this.register(new s.EventEmitter), this.onWriteParsed = this._onWriteParsed.event
|
||
}
|
||
handleUserInput() {
|
||
this._didUserInput = !0
|
||
}
|
||
writeSync(e, t) {
|
||
if (void 0 !== t && this._syncCalls > t) return void(this._syncCalls = 0);
|
||
if (this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(void 0), this._syncCalls++, this._isSyncWriting) return;
|
||
let i;
|
||
for (this._isSyncWriting = !0; i = this._writeBuffer.shift();) {
|
||
this._action(i);
|
||
const e = this._callbacks.shift();
|
||
e && e()
|
||
}
|
||
this._pendingData = 0, this._bufferOffset = 2147483647, this._isSyncWriting = !1, this._syncCalls = 0
|
||
}
|
||
write(e, t) {
|
||
if (this._pendingData > 5e7) throw new Error("write data discarded, use flow control to avoid losing data");
|
||
if (!this._writeBuffer.length) {
|
||
if (this._bufferOffset = 0, this._didUserInput) return this._didUserInput = !1, this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(t), void this._innerWrite();
|
||
setTimeout((() => this._innerWrite()))
|
||
}
|
||
this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(t)
|
||
}
|
||
_innerWrite(e = 0, t = !0) {
|
||
const i = e || Date.now();
|
||
for (; this._writeBuffer.length > this._bufferOffset;) {
|
||
const e = this._writeBuffer[this._bufferOffset],
|
||
s = this._action(e, t);
|
||
if (s) {
|
||
const e = e => Date.now() - i >= 12 ? setTimeout((() => this._innerWrite(0, e))) : this._innerWrite(i, e);
|
||
return void s.catch((e => (queueMicrotask((() => {
|
||
throw e
|
||
})), Promise.resolve(!1)))).then(e)
|
||
}
|
||
const r = this._callbacks[this._bufferOffset];
|
||
if (r && r(), this._bufferOffset++, this._pendingData -= e.length, Date.now() - i >= 12) break
|
||
}
|
||
this._writeBuffer.length > this._bufferOffset ? (this._bufferOffset > 50 && (this._writeBuffer = this._writeBuffer.slice(this._bufferOffset), this._callbacks = this._callbacks.slice(this._bufferOffset), this._bufferOffset = 0), setTimeout((() => this._innerWrite()))) : (this._writeBuffer.length = 0, this._callbacks.length = 0, this._pendingData = 0, this._bufferOffset = 0), this._onWriteParsed.fire()
|
||
}
|
||
}
|
||
t.WriteBuffer = n
|
||
},
|
||
5941: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.toRgbString = t.parseColor = void 0;
|
||
const i = /^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,
|
||
s = /^[\da-f]+$/;
|
||
|
||
function r(e, t) {
|
||
const i = e.toString(16),
|
||
s = i.length < 2 ? "0" + i : i;
|
||
switch (t) {
|
||
case 4:
|
||
return i[0];
|
||
case 8:
|
||
return s;
|
||
case 12:
|
||
return (s + s).slice(0, 3);
|
||
default:
|
||
return s + s
|
||
}
|
||
}
|
||
t.parseColor = function(e) {
|
||
if (!e) return;
|
||
let t = e.toLowerCase();
|
||
if (0 === t.indexOf("rgb:")) {
|
||
t = t.slice(4);
|
||
const e = i.exec(t);
|
||
if (e) {
|
||
const t = e[1] ? 15 : e[4] ? 255 : e[7] ? 4095 : 65535;
|
||
return [Math.round(parseInt(e[1] || e[4] || e[7] || e[10], 16) / t * 255), Math.round(parseInt(e[2] || e[5] || e[8] || e[11], 16) / t * 255), Math.round(parseInt(e[3] || e[6] || e[9] || e[12], 16) / t * 255)]
|
||
}
|
||
} else if (0 === t.indexOf("#") && (t = t.slice(1), s.exec(t) && [3, 6, 9, 12].includes(t.length))) {
|
||
const e = t.length / 3,
|
||
i = [0, 0, 0];
|
||
for (let s = 0; s < 3; ++s) {
|
||
const r = parseInt(t.slice(e * s, e * s + e), 16);
|
||
i[s] = 1 === e ? r << 4 : 2 === e ? r : 3 === e ? r >> 4 : r >> 8
|
||
}
|
||
return i
|
||
}
|
||
}, t.toRgbString = function(e, t = 16) {
|
||
const [i, s, n] = e;
|
||
return `rgb:${r(i, t)}/${r(s, t)}/${r(n, t)}`
|
||
}
|
||
},
|
||
5770: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.PAYLOAD_LIMIT = void 0, t.PAYLOAD_LIMIT = 1e7
|
||
},
|
||
6351: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DcsHandler = t.DcsParser = void 0;
|
||
const s = i(482),
|
||
r = i(8742),
|
||
n = i(5770),
|
||
o = [];
|
||
t.DcsParser = class {
|
||
constructor() {
|
||
this._handlers = Object.create(null), this._active = o, this._ident = 0, this._handlerFb = () => {}, this._stack = {
|
||
paused: !1,
|
||
loopPosition: 0,
|
||
fallThrough: !1
|
||
}
|
||
}
|
||
dispose() {
|
||
this._handlers = Object.create(null), this._handlerFb = () => {}, this._active = o
|
||
}
|
||
registerHandler(e, t) {
|
||
void 0 === this._handlers[e] && (this._handlers[e] = []);
|
||
const i = this._handlers[e];
|
||
return i.push(t), {
|
||
dispose: () => {
|
||
const e = i.indexOf(t); - 1 !== e && i.splice(e, 1)
|
||
}
|
||
}
|
||
}
|
||
clearHandler(e) {
|
||
this._handlers[e] && delete this._handlers[e]
|
||
}
|
||
setHandlerFallback(e) {
|
||
this._handlerFb = e
|
||
}
|
||
reset() {
|
||
if (this._active.length)
|
||
for (let e = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; e >= 0; --e) this._active[e].unhook(!1);
|
||
this._stack.paused = !1, this._active = o, this._ident = 0
|
||
}
|
||
hook(e, t) {
|
||
if (this.reset(), this._ident = e, this._active = this._handlers[e] || o, this._active.length)
|
||
for (let e = this._active.length - 1; e >= 0; e--) this._active[e].hook(t);
|
||
else this._handlerFb(this._ident, "HOOK", t)
|
||
}
|
||
put(e, t, i) {
|
||
if (this._active.length)
|
||
for (let s = this._active.length - 1; s >= 0; s--) this._active[s].put(e, t, i);
|
||
else this._handlerFb(this._ident, "PUT", (0, s.utf32ToString)(e, t, i))
|
||
}
|
||
unhook(e, t = !0) {
|
||
if (this._active.length) {
|
||
let i = !1,
|
||
s = this._active.length - 1,
|
||
r = !1;
|
||
if (this._stack.paused && (s = this._stack.loopPosition - 1, i = t, r = this._stack.fallThrough, this._stack.paused = !1), !r && !1 === i) {
|
||
for (; s >= 0 && (i = this._active[s].unhook(e), !0 !== i); s--)
|
||
if (i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !1, i;
|
||
s--
|
||
}
|
||
for (; s >= 0; s--)
|
||
if (i = this._active[s].unhook(!1), i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !0, i
|
||
} else this._handlerFb(this._ident, "UNHOOK", e);
|
||
this._active = o, this._ident = 0
|
||
}
|
||
};
|
||
const a = new r.Params;
|
||
a.addParam(0), t.DcsHandler = class {
|
||
constructor(e) {
|
||
this._handler = e, this._data = "", this._params = a, this._hitLimit = !1
|
||
}
|
||
hook(e) {
|
||
this._params = e.length > 1 || e.params[0] ? e.clone() : a, this._data = "", this._hitLimit = !1
|
||
}
|
||
put(e, t, i) {
|
||
this._hitLimit || (this._data += (0, s.utf32ToString)(e, t, i), this._data.length > n.PAYLOAD_LIMIT && (this._data = "", this._hitLimit = !0))
|
||
}
|
||
unhook(e) {
|
||
let t = !1;
|
||
if (this._hitLimit) t = !1;
|
||
else if (e && (t = this._handler(this._data, this._params), t instanceof Promise)) return t.then((e => (this._params = a, this._data = "", this._hitLimit = !1, e)));
|
||
return this._params = a, this._data = "", this._hitLimit = !1, t
|
||
}
|
||
}
|
||
},
|
||
2015: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.EscapeSequenceParser = t.VT500_TRANSITION_TABLE = t.TransitionTable = void 0;
|
||
const s = i(844),
|
||
r = i(8742),
|
||
n = i(6242),
|
||
o = i(6351);
|
||
class a {
|
||
constructor(e) {
|
||
this.table = new Uint8Array(e)
|
||
}
|
||
setDefault(e, t) {
|
||
this.table.fill(e << 4 | t)
|
||
}
|
||
add(e, t, i, s) {
|
||
this.table[t << 8 | e] = i << 4 | s
|
||
}
|
||
addMany(e, t, i, s) {
|
||
for (let r = 0; r < e.length; r++) this.table[t << 8 | e[r]] = i << 4 | s
|
||
}
|
||
}
|
||
t.TransitionTable = a;
|
||
const h = 160;
|
||
t.VT500_TRANSITION_TABLE = function() {
|
||
const e = new a(4095),
|
||
t = Array.apply(null, Array(256)).map(((e, t) => t)),
|
||
i = (e, i) => t.slice(e, i),
|
||
s = i(32, 127),
|
||
r = i(0, 24);
|
||
r.push(25), r.push.apply(r, i(28, 32));
|
||
const n = i(0, 14);
|
||
let o;
|
||
for (o in e.setDefault(1, 0), e.addMany(s, 0, 2, 0), n) e.addMany([24, 26, 153, 154], o, 3, 0), e.addMany(i(128, 144), o, 3, 0), e.addMany(i(144, 152), o, 3, 0), e.add(156, o, 0, 0), e.add(27, o, 11, 1), e.add(157, o, 4, 8), e.addMany([152, 158, 159], o, 0, 7), e.add(155, o, 11, 3), e.add(144, o, 11, 9);
|
||
return e.addMany(r, 0, 3, 0), e.addMany(r, 1, 3, 1), e.add(127, 1, 0, 1), e.addMany(r, 8, 0, 8), e.addMany(r, 3, 3, 3), e.add(127, 3, 0, 3), e.addMany(r, 4, 3, 4), e.add(127, 4, 0, 4), e.addMany(r, 6, 3, 6), e.addMany(r, 5, 3, 5), e.add(127, 5, 0, 5), e.addMany(r, 2, 3, 2), e.add(127, 2, 0, 2), e.add(93, 1, 4, 8), e.addMany(s, 8, 5, 8), e.add(127, 8, 5, 8), e.addMany([156, 27, 24, 26, 7], 8, 6, 0), e.addMany(i(28, 32), 8, 0, 8), e.addMany([88, 94, 95], 1, 0, 7), e.addMany(s, 7, 0, 7), e.addMany(r, 7, 0, 7), e.add(156, 7, 0, 0), e.add(127, 7, 0, 7), e.add(91, 1, 11, 3), e.addMany(i(64, 127), 3, 7, 0), e.addMany(i(48, 60), 3, 8, 4), e.addMany([60, 61, 62, 63], 3, 9, 4), e.addMany(i(48, 60), 4, 8, 4), e.addMany(i(64, 127), 4, 7, 0), e.addMany([60, 61, 62, 63], 4, 0, 6), e.addMany(i(32, 64), 6, 0, 6), e.add(127, 6, 0, 6), e.addMany(i(64, 127), 6, 0, 0), e.addMany(i(32, 48), 3, 9, 5), e.addMany(i(32, 48), 5, 9, 5), e.addMany(i(48, 64), 5, 0, 6), e.addMany(i(64, 127), 5, 7, 0), e.addMany(i(32, 48), 4, 9, 5), e.addMany(i(32, 48), 1, 9, 2), e.addMany(i(32, 48), 2, 9, 2), e.addMany(i(48, 127), 2, 10, 0), e.addMany(i(48, 80), 1, 10, 0), e.addMany(i(81, 88), 1, 10, 0), e.addMany([89, 90, 92], 1, 10, 0), e.addMany(i(96, 127), 1, 10, 0), e.add(80, 1, 11, 9), e.addMany(r, 9, 0, 9), e.add(127, 9, 0, 9), e.addMany(i(28, 32), 9, 0, 9), e.addMany(i(32, 48), 9, 9, 12), e.addMany(i(48, 60), 9, 8, 10), e.addMany([60, 61, 62, 63], 9, 9, 10), e.addMany(r, 11, 0, 11), e.addMany(i(32, 128), 11, 0, 11), e.addMany(i(28, 32), 11, 0, 11), e.addMany(r, 10, 0, 10), e.add(127, 10, 0, 10), e.addMany(i(28, 32), 10, 0, 10), e.addMany(i(48, 60), 10, 8, 10), e.addMany([60, 61, 62, 63], 10, 0, 11), e.addMany(i(32, 48), 10, 9, 12), e.addMany(r, 12, 0, 12), e.add(127, 12, 0, 12), e.addMany(i(28, 32), 12, 0, 12), e.addMany(i(32, 48), 12, 9, 12), e.addMany(i(48, 64), 12, 0, 11), e.addMany(i(64, 127), 12, 12, 13), e.addMany(i(64, 127), 10, 12, 13), e.addMany(i(64, 127), 9, 12, 13), e.addMany(r, 13, 13, 13), e.addMany(s, 13, 13, 13), e.add(127, 13, 0, 13), e.addMany([27, 156, 24, 26], 13, 14, 0), e.add(h, 0, 2, 0), e.add(h, 8, 5, 8), e.add(h, 6, 0, 6), e.add(h, 11, 0, 11), e.add(h, 13, 13, 13), e
|
||
}();
|
||
class c extends s.Disposable {
|
||
constructor(e = t.VT500_TRANSITION_TABLE) {
|
||
super(), this._transitions = e, this._parseStack = {
|
||
state: 0,
|
||
handlers: [],
|
||
handlerPos: 0,
|
||
transition: 0,
|
||
chunkPos: 0
|
||
}, this.initialState = 0, this.currentState = this.initialState, this._params = new r.Params, this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, this._printHandlerFb = (e, t, i) => {}, this._executeHandlerFb = e => {}, this._csiHandlerFb = (e, t) => {}, this._escHandlerFb = e => {}, this._errorHandlerFb = e => e, this._printHandler = this._printHandlerFb, this._executeHandlers = Object.create(null), this._csiHandlers = Object.create(null), this._escHandlers = Object.create(null), this.register((0, s.toDisposable)((() => {
|
||
this._csiHandlers = Object.create(null), this._executeHandlers = Object.create(null), this._escHandlers = Object.create(null)
|
||
}))), this._oscParser = this.register(new n.OscParser), this._dcsParser = this.register(new o.DcsParser), this._errorHandler = this._errorHandlerFb, this.registerEscHandler({
|
||
final: "\\"
|
||
}, (() => !0))
|
||
}
|
||
_identifier(e, t = [64, 126]) {
|
||
let i = 0;
|
||
if (e.prefix) {
|
||
if (e.prefix.length > 1) throw new Error("only one byte as prefix supported");
|
||
if (i = e.prefix.charCodeAt(0), i && 60 > i || i > 63) throw new Error("prefix must be in range 0x3c .. 0x3f")
|
||
}
|
||
if (e.intermediates) {
|
||
if (e.intermediates.length > 2) throw new Error("only two bytes as intermediates are supported");
|
||
for (let t = 0; t < e.intermediates.length; ++t) {
|
||
const s = e.intermediates.charCodeAt(t);
|
||
if (32 > s || s > 47) throw new Error("intermediate must be in range 0x20 .. 0x2f");
|
||
i <<= 8, i |= s
|
||
}
|
||
}
|
||
if (1 !== e.final.length) throw new Error("final must be a single byte");
|
||
const s = e.final.charCodeAt(0);
|
||
if (t[0] > s || s > t[1]) throw new Error(`final must be in range ${t[0]} .. ${t[1]}`);
|
||
return i <<= 8, i |= s, i
|
||
}
|
||
identToString(e) {
|
||
const t = [];
|
||
for (; e;) t.push(String.fromCharCode(255 & e)), e >>= 8;
|
||
return t.reverse().join("")
|
||
}
|
||
setPrintHandler(e) {
|
||
this._printHandler = e
|
||
}
|
||
clearPrintHandler() {
|
||
this._printHandler = this._printHandlerFb
|
||
}
|
||
registerEscHandler(e, t) {
|
||
const i = this._identifier(e, [48, 126]);
|
||
void 0 === this._escHandlers[i] && (this._escHandlers[i] = []);
|
||
const s = this._escHandlers[i];
|
||
return s.push(t), {
|
||
dispose: () => {
|
||
const e = s.indexOf(t); - 1 !== e && s.splice(e, 1)
|
||
}
|
||
}
|
||
}
|
||
clearEscHandler(e) {
|
||
this._escHandlers[this._identifier(e, [48, 126])] && delete this._escHandlers[this._identifier(e, [48, 126])]
|
||
}
|
||
setEscHandlerFallback(e) {
|
||
this._escHandlerFb = e
|
||
}
|
||
setExecuteHandler(e, t) {
|
||
this._executeHandlers[e.charCodeAt(0)] = t
|
||
}
|
||
clearExecuteHandler(e) {
|
||
this._executeHandlers[e.charCodeAt(0)] && delete this._executeHandlers[e.charCodeAt(0)]
|
||
}
|
||
setExecuteHandlerFallback(e) {
|
||
this._executeHandlerFb = e
|
||
}
|
||
registerCsiHandler(e, t) {
|
||
const i = this._identifier(e);
|
||
void 0 === this._csiHandlers[i] && (this._csiHandlers[i] = []);
|
||
const s = this._csiHandlers[i];
|
||
return s.push(t), {
|
||
dispose: () => {
|
||
const e = s.indexOf(t); - 1 !== e && s.splice(e, 1)
|
||
}
|
||
}
|
||
}
|
||
clearCsiHandler(e) {
|
||
this._csiHandlers[this._identifier(e)] && delete this._csiHandlers[this._identifier(e)]
|
||
}
|
||
setCsiHandlerFallback(e) {
|
||
this._csiHandlerFb = e
|
||
}
|
||
registerDcsHandler(e, t) {
|
||
return this._dcsParser.registerHandler(this._identifier(e), t)
|
||
}
|
||
clearDcsHandler(e) {
|
||
this._dcsParser.clearHandler(this._identifier(e))
|
||
}
|
||
setDcsHandlerFallback(e) {
|
||
this._dcsParser.setHandlerFallback(e)
|
||
}
|
||
registerOscHandler(e, t) {
|
||
return this._oscParser.registerHandler(e, t)
|
||
}
|
||
clearOscHandler(e) {
|
||
this._oscParser.clearHandler(e)
|
||
}
|
||
setOscHandlerFallback(e) {
|
||
this._oscParser.setHandlerFallback(e)
|
||
}
|
||
setErrorHandler(e) {
|
||
this._errorHandler = e
|
||
}
|
||
clearErrorHandler() {
|
||
this._errorHandler = this._errorHandlerFb
|
||
}
|
||
reset() {
|
||
this.currentState = this.initialState, this._oscParser.reset(), this._dcsParser.reset(), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, 0 !== this._parseStack.state && (this._parseStack.state = 2, this._parseStack.handlers = [])
|
||
}
|
||
_preserveStack(e, t, i, s, r) {
|
||
this._parseStack.state = e, this._parseStack.handlers = t, this._parseStack.handlerPos = i, this._parseStack.transition = s, this._parseStack.chunkPos = r
|
||
}
|
||
parse(e, t, i) {
|
||
let s, r = 0,
|
||
n = 0,
|
||
o = 0;
|
||
if (this._parseStack.state)
|
||
if (2 === this._parseStack.state) this._parseStack.state = 0, o = this._parseStack.chunkPos + 1;
|
||
else {
|
||
if (void 0 === i || 1 === this._parseStack.state) throw this._parseStack.state = 1, new Error("improper continuation due to previous async handler, giving up parsing");
|
||
const t = this._parseStack.handlers;
|
||
let n = this._parseStack.handlerPos - 1;
|
||
switch (this._parseStack.state) {
|
||
case 3:
|
||
if (!1 === i && n > -1)
|
||
for (; n >= 0 && (s = t[n](this._params), !0 !== s); n--)
|
||
if (s instanceof Promise) return this._parseStack.handlerPos = n, s;
|
||
this._parseStack.handlers = [];
|
||
break;
|
||
case 4:
|
||
if (!1 === i && n > -1)
|
||
for (; n >= 0 && (s = t[n](), !0 !== s); n--)
|
||
if (s instanceof Promise) return this._parseStack.handlerPos = n, s;
|
||
this._parseStack.handlers = [];
|
||
break;
|
||
case 6:
|
||
if (r = e[this._parseStack.chunkPos], s = this._dcsParser.unhook(24 !== r && 26 !== r, i), s) return s;
|
||
27 === r && (this._parseStack.transition |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0;
|
||
break;
|
||
case 5:
|
||
if (r = e[this._parseStack.chunkPos], s = this._oscParser.end(24 !== r && 26 !== r, i), s) return s;
|
||
27 === r && (this._parseStack.transition |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0
|
||
}
|
||
this._parseStack.state = 0, o = this._parseStack.chunkPos + 1, this.precedingJoinState = 0, this.currentState = 15 & this._parseStack.transition
|
||
} for (let i = o; i < t; ++i) {
|
||
switch (r = e[i], n = this._transitions.table[this.currentState << 8 | (r < 160 ? r : h)], n >> 4) {
|
||
case 2:
|
||
for (let s = i + 1;; ++s) {
|
||
if (s >= t || (r = e[s]) < 32 || r > 126 && r < h) {
|
||
this._printHandler(e, i, s), i = s - 1;
|
||
break
|
||
}
|
||
if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) {
|
||
this._printHandler(e, i, s), i = s - 1;
|
||
break
|
||
}
|
||
if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) {
|
||
this._printHandler(e, i, s), i = s - 1;
|
||
break
|
||
}
|
||
if (++s >= t || (r = e[s]) < 32 || r > 126 && r < h) {
|
||
this._printHandler(e, i, s), i = s - 1;
|
||
break
|
||
}
|
||
}
|
||
break;
|
||
case 3:
|
||
this._executeHandlers[r] ? this._executeHandlers[r]() : this._executeHandlerFb(r), this.precedingJoinState = 0;
|
||
break;
|
||
case 0:
|
||
break;
|
||
case 1:
|
||
if (this._errorHandler({
|
||
position: i,
|
||
code: r,
|
||
currentState: this.currentState,
|
||
collect: this._collect,
|
||
params: this._params,
|
||
abort: !1
|
||
}).abort) return;
|
||
break;
|
||
case 7:
|
||
const o = this._csiHandlers[this._collect << 8 | r];
|
||
let a = o ? o.length - 1 : -1;
|
||
for (; a >= 0 && (s = o[a](this._params), !0 !== s); a--)
|
||
if (s instanceof Promise) return this._preserveStack(3, o, a, n, i), s;
|
||
a < 0 && this._csiHandlerFb(this._collect << 8 | r, this._params), this.precedingJoinState = 0;
|
||
break;
|
||
case 8:
|
||
do {
|
||
switch (r) {
|
||
case 59:
|
||
this._params.addParam(0);
|
||
break;
|
||
case 58:
|
||
this._params.addSubParam(-1);
|
||
break;
|
||
default:
|
||
this._params.addDigit(r - 48)
|
||
}
|
||
} while (++i < t && (r = e[i]) > 47 && r < 60);
|
||
i--;
|
||
break;
|
||
case 9:
|
||
this._collect <<= 8, this._collect |= r;
|
||
break;
|
||
case 10:
|
||
const c = this._escHandlers[this._collect << 8 | r];
|
||
let l = c ? c.length - 1 : -1;
|
||
for (; l >= 0 && (s = c[l](), !0 !== s); l--)
|
||
if (s instanceof Promise) return this._preserveStack(4, c, l, n, i), s;
|
||
l < 0 && this._escHandlerFb(this._collect << 8 | r), this.precedingJoinState = 0;
|
||
break;
|
||
case 11:
|
||
this._params.reset(), this._params.addParam(0), this._collect = 0;
|
||
break;
|
||
case 12:
|
||
this._dcsParser.hook(this._collect << 8 | r, this._params);
|
||
break;
|
||
case 13:
|
||
for (let s = i + 1;; ++s)
|
||
if (s >= t || 24 === (r = e[s]) || 26 === r || 27 === r || r > 127 && r < h) {
|
||
this._dcsParser.put(e, i, s), i = s - 1;
|
||
break
|
||
} break;
|
||
case 14:
|
||
if (s = this._dcsParser.unhook(24 !== r && 26 !== r), s) return this._preserveStack(6, [], 0, n, i), s;
|
||
27 === r && (n |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0;
|
||
break;
|
||
case 4:
|
||
this._oscParser.start();
|
||
break;
|
||
case 5:
|
||
for (let s = i + 1;; s++)
|
||
if (s >= t || (r = e[s]) < 32 || r > 127 && r < h) {
|
||
this._oscParser.put(e, i, s), i = s - 1;
|
||
break
|
||
} break;
|
||
case 6:
|
||
if (s = this._oscParser.end(24 !== r && 26 !== r), s) return this._preserveStack(5, [], 0, n, i), s;
|
||
27 === r && (n |= 1), this._params.reset(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0
|
||
}
|
||
this.currentState = 15 & n
|
||
}
|
||
}
|
||
}
|
||
t.EscapeSequenceParser = c
|
||
},
|
||
6242: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.OscHandler = t.OscParser = void 0;
|
||
const s = i(5770),
|
||
r = i(482),
|
||
n = [];
|
||
t.OscParser = class {
|
||
constructor() {
|
||
this._state = 0, this._active = n, this._id = -1, this._handlers = Object.create(null), this._handlerFb = () => {}, this._stack = {
|
||
paused: !1,
|
||
loopPosition: 0,
|
||
fallThrough: !1
|
||
}
|
||
}
|
||
registerHandler(e, t) {
|
||
void 0 === this._handlers[e] && (this._handlers[e] = []);
|
||
const i = this._handlers[e];
|
||
return i.push(t), {
|
||
dispose: () => {
|
||
const e = i.indexOf(t); - 1 !== e && i.splice(e, 1)
|
||
}
|
||
}
|
||
}
|
||
clearHandler(e) {
|
||
this._handlers[e] && delete this._handlers[e]
|
||
}
|
||
setHandlerFallback(e) {
|
||
this._handlerFb = e
|
||
}
|
||
dispose() {
|
||
this._handlers = Object.create(null), this._handlerFb = () => {}, this._active = n
|
||
}
|
||
reset() {
|
||
if (2 === this._state)
|
||
for (let e = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; e >= 0; --e) this._active[e].end(!1);
|
||
this._stack.paused = !1, this._active = n, this._id = -1, this._state = 0
|
||
}
|
||
_start() {
|
||
if (this._active = this._handlers[this._id] || n, this._active.length)
|
||
for (let e = this._active.length - 1; e >= 0; e--) this._active[e].start();
|
||
else this._handlerFb(this._id, "START")
|
||
}
|
||
_put(e, t, i) {
|
||
if (this._active.length)
|
||
for (let s = this._active.length - 1; s >= 0; s--) this._active[s].put(e, t, i);
|
||
else this._handlerFb(this._id, "PUT", (0, r.utf32ToString)(e, t, i))
|
||
}
|
||
start() {
|
||
this.reset(), this._state = 1
|
||
}
|
||
put(e, t, i) {
|
||
if (3 !== this._state) {
|
||
if (1 === this._state)
|
||
for (; t < i;) {
|
||
const i = e[t++];
|
||
if (59 === i) {
|
||
this._state = 2, this._start();
|
||
break
|
||
}
|
||
if (i < 48 || 57 < i) return void(this._state = 3); - 1 === this._id && (this._id = 0), this._id = 10 * this._id + i - 48
|
||
}
|
||
2 === this._state && i - t > 0 && this._put(e, t, i)
|
||
}
|
||
}
|
||
end(e, t = !0) {
|
||
if (0 !== this._state) {
|
||
if (3 !== this._state)
|
||
if (1 === this._state && this._start(), this._active.length) {
|
||
let i = !1,
|
||
s = this._active.length - 1,
|
||
r = !1;
|
||
if (this._stack.paused && (s = this._stack.loopPosition - 1, i = t, r = this._stack.fallThrough, this._stack.paused = !1), !r && !1 === i) {
|
||
for (; s >= 0 && (i = this._active[s].end(e), !0 !== i); s--)
|
||
if (i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !1, i;
|
||
s--
|
||
}
|
||
for (; s >= 0; s--)
|
||
if (i = this._active[s].end(!1), i instanceof Promise) return this._stack.paused = !0, this._stack.loopPosition = s, this._stack.fallThrough = !0, i
|
||
} else this._handlerFb(this._id, "END", e);
|
||
this._active = n, this._id = -1, this._state = 0
|
||
}
|
||
}
|
||
}, t.OscHandler = class {
|
||
constructor(e) {
|
||
this._handler = e, this._data = "", this._hitLimit = !1
|
||
}
|
||
start() {
|
||
this._data = "", this._hitLimit = !1
|
||
}
|
||
put(e, t, i) {
|
||
this._hitLimit || (this._data += (0, r.utf32ToString)(e, t, i), this._data.length > s.PAYLOAD_LIMIT && (this._data = "", this._hitLimit = !0))
|
||
}
|
||
end(e) {
|
||
let t = !1;
|
||
if (this._hitLimit) t = !1;
|
||
else if (e && (t = this._handler(this._data), t instanceof Promise)) return t.then((e => (this._data = "", this._hitLimit = !1, e)));
|
||
return this._data = "", this._hitLimit = !1, t
|
||
}
|
||
}
|
||
},
|
||
8742: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Params = void 0;
|
||
const i = 2147483647;
|
||
class s {
|
||
static fromArray(e) {
|
||
const t = new s;
|
||
if (!e.length) return t;
|
||
for (let i = Array.isArray(e[0]) ? 1 : 0; i < e.length; ++i) {
|
||
const s = e[i];
|
||
if (Array.isArray(s))
|
||
for (let e = 0; e < s.length; ++e) t.addSubParam(s[e]);
|
||
else t.addParam(s)
|
||
}
|
||
return t
|
||
}
|
||
constructor(e = 32, t = 32) {
|
||
if (this.maxLength = e, this.maxSubParamsLength = t, t > 256) throw new Error("maxSubParamsLength must not be greater than 256");
|
||
this.params = new Int32Array(e), this.length = 0, this._subParams = new Int32Array(t), this._subParamsLength = 0, this._subParamsIdx = new Uint16Array(e), this._rejectDigits = !1, this._rejectSubDigits = !1, this._digitIsSub = !1
|
||
}
|
||
clone() {
|
||
const e = new s(this.maxLength, this.maxSubParamsLength);
|
||
return e.params.set(this.params), e.length = this.length, e._subParams.set(this._subParams), e._subParamsLength = this._subParamsLength, e._subParamsIdx.set(this._subParamsIdx), e._rejectDigits = this._rejectDigits, e._rejectSubDigits = this._rejectSubDigits, e._digitIsSub = this._digitIsSub, e
|
||
}
|
||
toArray() {
|
||
const e = [];
|
||
for (let t = 0; t < this.length; ++t) {
|
||
e.push(this.params[t]);
|
||
const i = this._subParamsIdx[t] >> 8,
|
||
s = 255 & this._subParamsIdx[t];
|
||
s - i > 0 && e.push(Array.prototype.slice.call(this._subParams, i, s))
|
||
}
|
||
return e
|
||
}
|
||
reset() {
|
||
this.length = 0, this._subParamsLength = 0, this._rejectDigits = !1, this._rejectSubDigits = !1, this._digitIsSub = !1
|
||
}
|
||
addParam(e) {
|
||
if (this._digitIsSub = !1, this.length >= this.maxLength) this._rejectDigits = !0;
|
||
else {
|
||
if (e < -1) throw new Error("values lesser than -1 are not allowed");
|
||
this._subParamsIdx[this.length] = this._subParamsLength << 8 | this._subParamsLength, this.params[this.length++] = e > i ? i : e
|
||
}
|
||
}
|
||
addSubParam(e) {
|
||
if (this._digitIsSub = !0, this.length)
|
||
if (this._rejectDigits || this._subParamsLength >= this.maxSubParamsLength) this._rejectSubDigits = !0;
|
||
else {
|
||
if (e < -1) throw new Error("values lesser than -1 are not allowed");
|
||
this._subParams[this._subParamsLength++] = e > i ? i : e, this._subParamsIdx[this.length - 1]++
|
||
}
|
||
}
|
||
hasSubParams(e) {
|
||
return (255 & this._subParamsIdx[e]) - (this._subParamsIdx[e] >> 8) > 0
|
||
}
|
||
getSubParams(e) {
|
||
const t = this._subParamsIdx[e] >> 8,
|
||
i = 255 & this._subParamsIdx[e];
|
||
return i - t > 0 ? this._subParams.subarray(t, i) : null
|
||
}
|
||
getSubParamsAll() {
|
||
const e = {};
|
||
for (let t = 0; t < this.length; ++t) {
|
||
const i = this._subParamsIdx[t] >> 8,
|
||
s = 255 & this._subParamsIdx[t];
|
||
s - i > 0 && (e[t] = this._subParams.slice(i, s))
|
||
}
|
||
return e
|
||
}
|
||
addDigit(e) {
|
||
let t;
|
||
if (this._rejectDigits || !(t = this._digitIsSub ? this._subParamsLength : this.length) || this._digitIsSub && this._rejectSubDigits) return;
|
||
const s = this._digitIsSub ? this._subParams : this.params,
|
||
r = s[t - 1];
|
||
s[t - 1] = ~r ? Math.min(10 * r + e, i) : e
|
||
}
|
||
}
|
||
t.Params = s
|
||
},
|
||
5741: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.AddonManager = void 0, t.AddonManager = class {
|
||
constructor() {
|
||
this._addons = []
|
||
}
|
||
dispose() {
|
||
for (let e = this._addons.length - 1; e >= 0; e--) this._addons[e].instance.dispose()
|
||
}
|
||
loadAddon(e, t) {
|
||
const i = {
|
||
instance: t,
|
||
dispose: t.dispose,
|
||
isDisposed: !1
|
||
};
|
||
this._addons.push(i), t.dispose = () => this._wrappedAddonDispose(i), t.activate(e)
|
||
}
|
||
_wrappedAddonDispose(e) {
|
||
if (e.isDisposed) return;
|
||
let t = -1;
|
||
for (let i = 0; i < this._addons.length; i++)
|
||
if (this._addons[i] === e) {
|
||
t = i;
|
||
break
|
||
} if (-1 === t) throw new Error("Could not dispose an addon that has not been loaded");
|
||
e.isDisposed = !0, e.dispose.apply(e.instance), this._addons.splice(t, 1)
|
||
}
|
||
}
|
||
},
|
||
8771: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferApiView = void 0;
|
||
const s = i(3785),
|
||
r = i(511);
|
||
t.BufferApiView = class {
|
||
constructor(e, t) {
|
||
this._buffer = e, this.type = t
|
||
}
|
||
init(e) {
|
||
return this._buffer = e, this
|
||
}
|
||
get cursorY() {
|
||
return this._buffer.y
|
||
}
|
||
get cursorX() {
|
||
return this._buffer.x
|
||
}
|
||
get viewportY() {
|
||
return this._buffer.ydisp
|
||
}
|
||
get baseY() {
|
||
return this._buffer.ybase
|
||
}
|
||
get length() {
|
||
return this._buffer.lines.length
|
||
}
|
||
getLine(e) {
|
||
const t = this._buffer.lines.get(e);
|
||
if (t) return new s.BufferLineApiView(t)
|
||
}
|
||
getNullCell() {
|
||
return new r.CellData
|
||
}
|
||
}
|
||
},
|
||
3785: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferLineApiView = void 0;
|
||
const s = i(511);
|
||
t.BufferLineApiView = class {
|
||
constructor(e) {
|
||
this._line = e
|
||
}
|
||
get isWrapped() {
|
||
return this._line.isWrapped
|
||
}
|
||
get length() {
|
||
return this._line.length
|
||
}
|
||
getCell(e, t) {
|
||
if (!(e < 0 || e >= this._line.length)) return t ? (this._line.loadCell(e, t), t) : this._line.loadCell(e, new s.CellData)
|
||
}
|
||
translateToString(e, t, i) {
|
||
return this._line.translateToString(e, t, i)
|
||
}
|
||
}
|
||
},
|
||
8285: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferNamespaceApi = void 0;
|
||
const s = i(8771),
|
||
r = i(8460),
|
||
n = i(844);
|
||
class o extends n.Disposable {
|
||
constructor(e) {
|
||
super(), this._core = e, this._onBufferChange = this.register(new r.EventEmitter), this.onBufferChange = this._onBufferChange.event, this._normal = new s.BufferApiView(this._core.buffers.normal, "normal"), this._alternate = new s.BufferApiView(this._core.buffers.alt, "alternate"), this._core.buffers.onBufferActivate((() => this._onBufferChange.fire(this.active)))
|
||
}
|
||
get active() {
|
||
if (this._core.buffers.active === this._core.buffers.normal) return this.normal;
|
||
if (this._core.buffers.active === this._core.buffers.alt) return this.alternate;
|
||
throw new Error("Active buffer is neither normal nor alternate")
|
||
}
|
||
get normal() {
|
||
return this._normal.init(this._core.buffers.normal)
|
||
}
|
||
get alternate() {
|
||
return this._alternate.init(this._core.buffers.alt)
|
||
}
|
||
}
|
||
t.BufferNamespaceApi = o
|
||
},
|
||
7975: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ParserApi = void 0, t.ParserApi = class {
|
||
constructor(e) {
|
||
this._core = e
|
||
}
|
||
registerCsiHandler(e, t) {
|
||
return this._core.registerCsiHandler(e, (e => t(e.toArray())))
|
||
}
|
||
addCsiHandler(e, t) {
|
||
return this.registerCsiHandler(e, t)
|
||
}
|
||
registerDcsHandler(e, t) {
|
||
return this._core.registerDcsHandler(e, ((e, i) => t(e, i.toArray())))
|
||
}
|
||
addDcsHandler(e, t) {
|
||
return this.registerDcsHandler(e, t)
|
||
}
|
||
registerEscHandler(e, t) {
|
||
return this._core.registerEscHandler(e, t)
|
||
}
|
||
addEscHandler(e, t) {
|
||
return this.registerEscHandler(e, t)
|
||
}
|
||
registerOscHandler(e, t) {
|
||
return this._core.registerOscHandler(e, t)
|
||
}
|
||
addOscHandler(e, t) {
|
||
return this.registerOscHandler(e, t)
|
||
}
|
||
}
|
||
},
|
||
7090: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.UnicodeApi = void 0, t.UnicodeApi = class {
|
||
constructor(e) {
|
||
this._core = e
|
||
}
|
||
register(e) {
|
||
this._core.unicodeService.register(e)
|
||
}
|
||
get versions() {
|
||
return this._core.unicodeService.versions
|
||
}
|
||
get activeVersion() {
|
||
return this._core.unicodeService.activeVersion
|
||
}
|
||
set activeVersion(e) {
|
||
this._core.unicodeService.activeVersion = e
|
||
}
|
||
}
|
||
},
|
||
744: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BufferService = t.MINIMUM_ROWS = t.MINIMUM_COLS = void 0;
|
||
const n = i(8460),
|
||
o = i(844),
|
||
a = i(5295),
|
||
h = i(2585);
|
||
t.MINIMUM_COLS = 2, t.MINIMUM_ROWS = 1;
|
||
let c = t.BufferService = class extends o.Disposable {
|
||
get buffer() {
|
||
return this.buffers.active
|
||
}
|
||
constructor(e) {
|
||
super(), this.isUserScrolling = !1, this._onResize = this.register(new n.EventEmitter), this.onResize = this._onResize.event, this._onScroll = this.register(new n.EventEmitter), this.onScroll = this._onScroll.event, this.cols = Math.max(e.rawOptions.cols || 0, t.MINIMUM_COLS), this.rows = Math.max(e.rawOptions.rows || 0, t.MINIMUM_ROWS), this.buffers = this.register(new a.BufferSet(e, this))
|
||
}
|
||
resize(e, t) {
|
||
this.cols = e, this.rows = t, this.buffers.resize(e, t), this._onResize.fire({
|
||
cols: e,
|
||
rows: t
|
||
})
|
||
}
|
||
reset() {
|
||
this.buffers.reset(), this.isUserScrolling = !1
|
||
}
|
||
scroll(e, t = !1) {
|
||
const i = this.buffer;
|
||
let s;
|
||
s = this._cachedBlankLine, s && s.length === this.cols && s.getFg(0) === e.fg && s.getBg(0) === e.bg || (s = i.getBlankLine(e, t), this._cachedBlankLine = s), s.isWrapped = t;
|
||
const r = i.ybase + i.scrollTop,
|
||
n = i.ybase + i.scrollBottom;
|
||
if (0 === i.scrollTop) {
|
||
const e = i.lines.isFull;
|
||
n === i.lines.length - 1 ? e ? i.lines.recycle().copyFrom(s) : i.lines.push(s.clone()) : i.lines.splice(n + 1, 0, s.clone()), e ? this.isUserScrolling && (i.ydisp = Math.max(i.ydisp - 1, 0)) : (i.ybase++, this.isUserScrolling || i.ydisp++)
|
||
} else {
|
||
const e = n - r + 1;
|
||
i.lines.shiftElements(r + 1, e - 1, -1), i.lines.set(n, s.clone())
|
||
}
|
||
this.isUserScrolling || (i.ydisp = i.ybase), this._onScroll.fire(i.ydisp)
|
||
}
|
||
scrollLines(e, t, i) {
|
||
const s = this.buffer;
|
||
if (e < 0) {
|
||
if (0 === s.ydisp) return;
|
||
this.isUserScrolling = !0
|
||
} else e + s.ydisp >= s.ybase && (this.isUserScrolling = !1);
|
||
const r = s.ydisp;
|
||
s.ydisp = Math.max(Math.min(s.ydisp + e, s.ybase), 0), r !== s.ydisp && (t || this._onScroll.fire(s.ydisp))
|
||
}
|
||
};
|
||
t.BufferService = c = s([r(0, h.IOptionsService)], c)
|
||
},
|
||
7994: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CharsetService = void 0, t.CharsetService = class {
|
||
constructor() {
|
||
this.glevel = 0, this._charsets = []
|
||
}
|
||
reset() {
|
||
this.charset = void 0, this._charsets = [], this.glevel = 0
|
||
}
|
||
setgLevel(e) {
|
||
this.glevel = e, this.charset = this._charsets[e]
|
||
}
|
||
setgCharset(e, t) {
|
||
this._charsets[e] = t, this.glevel === e && (this.charset = t)
|
||
}
|
||
}
|
||
},
|
||
1753: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CoreMouseService = void 0;
|
||
const n = i(2585),
|
||
o = i(8460),
|
||
a = i(844),
|
||
h = {
|
||
NONE: {
|
||
events: 0,
|
||
restrict: () => !1
|
||
},
|
||
X10: {
|
||
events: 1,
|
||
restrict: e => 4 !== e.button && 1 === e.action && (e.ctrl = !1, e.alt = !1, e.shift = !1, !0)
|
||
},
|
||
VT200: {
|
||
events: 19,
|
||
restrict: e => 32 !== e.action
|
||
},
|
||
DRAG: {
|
||
events: 23,
|
||
restrict: e => 32 !== e.action || 3 !== e.button
|
||
},
|
||
ANY: {
|
||
events: 31,
|
||
restrict: e => !0
|
||
}
|
||
};
|
||
|
||
function c(e, t) {
|
||
let i = (e.ctrl ? 16 : 0) | (e.shift ? 4 : 0) | (e.alt ? 8 : 0);
|
||
return 4 === e.button ? (i |= 64, i |= e.action) : (i |= 3 & e.button, 4 & e.button && (i |= 64), 8 & e.button && (i |= 128), 32 === e.action ? i |= 32 : 0 !== e.action || t || (i |= 3)), i
|
||
}
|
||
const l = String.fromCharCode,
|
||
d = {
|
||
DEFAULT: e => {
|
||
const t = [c(e, !1) + 32, e.col + 32, e.row + 32];
|
||
return t[0] > 255 || t[1] > 255 || t[2] > 255 ? "" : `[M${l(t[0])}${l(t[1])}${l(t[2])}`
|
||
},
|
||
SGR: e => {
|
||
const t = 0 === e.action && 4 !== e.button ? "m" : "M";
|
||
return `[<${c(e, !0)};${e.col};${e.row}${t}`
|
||
},
|
||
SGR_PIXELS: e => {
|
||
const t = 0 === e.action && 4 !== e.button ? "m" : "M";
|
||
return `[<${c(e, !0)};${e.x};${e.y}${t}`
|
||
}
|
||
};
|
||
let _ = t.CoreMouseService = class extends a.Disposable {
|
||
constructor(e, t) {
|
||
super(), this._bufferService = e, this._coreService = t, this._protocols = {}, this._encodings = {}, this._activeProtocol = "", this._activeEncoding = "", this._lastEvent = null, this._onProtocolChange = this.register(new o.EventEmitter), this.onProtocolChange = this._onProtocolChange.event;
|
||
for (const e of Object.keys(h)) this.addProtocol(e, h[e]);
|
||
for (const e of Object.keys(d)) this.addEncoding(e, d[e]);
|
||
this.reset()
|
||
}
|
||
addProtocol(e, t) {
|
||
this._protocols[e] = t
|
||
}
|
||
addEncoding(e, t) {
|
||
this._encodings[e] = t
|
||
}
|
||
get activeProtocol() {
|
||
return this._activeProtocol
|
||
}
|
||
get areMouseEventsActive() {
|
||
return 0 !== this._protocols[this._activeProtocol].events
|
||
}
|
||
set activeProtocol(e) {
|
||
if (!this._protocols[e]) throw new Error(`unknown protocol "${e}"`);
|
||
this._activeProtocol = e, this._onProtocolChange.fire(this._protocols[e].events)
|
||
}
|
||
get activeEncoding() {
|
||
return this._activeEncoding
|
||
}
|
||
set activeEncoding(e) {
|
||
if (!this._encodings[e]) throw new Error(`unknown encoding "${e}"`);
|
||
this._activeEncoding = e
|
||
}
|
||
reset() {
|
||
this.activeProtocol = "NONE", this.activeEncoding = "DEFAULT", this._lastEvent = null
|
||
}
|
||
triggerMouseEvent(e) {
|
||
if (e.col < 0 || e.col >= this._bufferService.cols || e.row < 0 || e.row >= this._bufferService.rows) return !1;
|
||
if (4 === e.button && 32 === e.action) return !1;
|
||
if (3 === e.button && 32 !== e.action) return !1;
|
||
if (4 !== e.button && (2 === e.action || 3 === e.action)) return !1;
|
||
if (e.col++, e.row++, 32 === e.action && this._lastEvent && this._equalEvents(this._lastEvent, e, "SGR_PIXELS" === this._activeEncoding)) return !1;
|
||
if (!this._protocols[this._activeProtocol].restrict(e)) return !1;
|
||
const t = this._encodings[this._activeEncoding](e);
|
||
return t && ("DEFAULT" === this._activeEncoding ? this._coreService.triggerBinaryEvent(t) : this._coreService.triggerDataEvent(t, !0)), this._lastEvent = e, !0
|
||
}
|
||
explainEvents(e) {
|
||
return {
|
||
down: !!(1 & e),
|
||
up: !!(2 & e),
|
||
drag: !!(4 & e),
|
||
move: !!(8 & e),
|
||
wheel: !!(16 & e)
|
||
}
|
||
}
|
||
_equalEvents(e, t, i) {
|
||
if (i) {
|
||
if (e.x !== t.x) return !1;
|
||
if (e.y !== t.y) return !1
|
||
} else {
|
||
if (e.col !== t.col) return !1;
|
||
if (e.row !== t.row) return !1
|
||
}
|
||
return e.button === t.button && e.action === t.action && e.ctrl === t.ctrl && e.alt === t.alt && e.shift === t.shift
|
||
}
|
||
};
|
||
t.CoreMouseService = _ = s([r(0, n.IBufferService), r(1, n.ICoreService)], _)
|
||
},
|
||
6975: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CoreService = void 0;
|
||
const n = i(1439),
|
||
o = i(8460),
|
||
a = i(844),
|
||
h = i(2585),
|
||
c = Object.freeze({
|
||
insertMode: !1
|
||
}),
|
||
l = Object.freeze({
|
||
applicationCursorKeys: !1,
|
||
applicationKeypad: !1,
|
||
bracketedPasteMode: !1,
|
||
origin: !1,
|
||
reverseWraparound: !1,
|
||
sendFocus: !1,
|
||
wraparound: !0
|
||
});
|
||
let d = t.CoreService = class extends a.Disposable {
|
||
constructor(e, t, i) {
|
||
super(), this._bufferService = e, this._logService = t, this._optionsService = i, this.isCursorInitialized = !1, this.isCursorHidden = !1, this._onData = this.register(new o.EventEmitter), this.onData = this._onData.event, this._onUserInput = this.register(new o.EventEmitter), this.onUserInput = this._onUserInput.event, this._onBinary = this.register(new o.EventEmitter), this.onBinary = this._onBinary.event, this._onRequestScrollToBottom = this.register(new o.EventEmitter), this.onRequestScrollToBottom = this._onRequestScrollToBottom.event, this.modes = (0, n.clone)(c), this.decPrivateModes = (0, n.clone)(l)
|
||
}
|
||
reset() {
|
||
this.modes = (0, n.clone)(c), this.decPrivateModes = (0, n.clone)(l)
|
||
}
|
||
triggerDataEvent(e, t = !1) {
|
||
if (this._optionsService.rawOptions.disableStdin) return;
|
||
const i = this._bufferService.buffer;
|
||
t && this._optionsService.rawOptions.scrollOnUserInput && i.ybase !== i.ydisp && this._onRequestScrollToBottom.fire(), t && this._onUserInput.fire(), this._logService.debug(`sending data "${e}"`, (() => e.split("").map((e => e.charCodeAt(0))))), this._onData.fire(e)
|
||
}
|
||
triggerBinaryEvent(e) {
|
||
this._optionsService.rawOptions.disableStdin || (this._logService.debug(`sending binary "${e}"`, (() => e.split("").map((e => e.charCodeAt(0))))), this._onBinary.fire(e))
|
||
}
|
||
};
|
||
t.CoreService = d = s([r(0, h.IBufferService), r(1, h.ILogService), r(2, h.IOptionsService)], d)
|
||
},
|
||
9074: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DecorationService = void 0;
|
||
const s = i(8055),
|
||
r = i(8460),
|
||
n = i(844),
|
||
o = i(6106);
|
||
let a = 0,
|
||
h = 0;
|
||
class c extends n.Disposable {
|
||
get decorations() {
|
||
return this._decorations.values()
|
||
}
|
||
constructor() {
|
||
super(), this._decorations = new o.SortedList((e => e?.marker.line)), this._onDecorationRegistered = this.register(new r.EventEmitter), this.onDecorationRegistered = this._onDecorationRegistered.event, this._onDecorationRemoved = this.register(new r.EventEmitter), this.onDecorationRemoved = this._onDecorationRemoved.event, this.register((0, n.toDisposable)((() => this.reset())))
|
||
}
|
||
registerDecoration(e) {
|
||
if (e.marker.isDisposed) return;
|
||
const t = new l(e);
|
||
if (t) {
|
||
const e = t.marker.onDispose((() => t.dispose()));
|
||
t.onDispose((() => {
|
||
t && (this._decorations.delete(t) && this._onDecorationRemoved.fire(t), e.dispose())
|
||
})), this._decorations.insert(t), this._onDecorationRegistered.fire(t)
|
||
}
|
||
return t
|
||
}
|
||
reset() {
|
||
for (const e of this._decorations.values()) e.dispose();
|
||
this._decorations.clear()
|
||
}* getDecorationsAtCell(e, t, i) {
|
||
let s = 0,
|
||
r = 0;
|
||
for (const n of this._decorations.getKeyIterator(t)) s = n.options.x ?? 0, r = s + (n.options.width ?? 1), e >= s && e < r && (!i || (n.options.layer ?? "bottom") === i) && (yield n)
|
||
}
|
||
forEachDecorationAtCell(e, t, i, s) {
|
||
this._decorations.forEachByKey(t, (t => {
|
||
a = t.options.x ?? 0, h = a + (t.options.width ?? 1), e >= a && e < h && (!i || (t.options.layer ?? "bottom") === i) && s(t)
|
||
}))
|
||
}
|
||
}
|
||
t.DecorationService = c;
|
||
class l extends n.Disposable {
|
||
get isDisposed() {
|
||
return this._isDisposed
|
||
}
|
||
get backgroundColorRGB() {
|
||
return null === this._cachedBg && (this.options.backgroundColor ? this._cachedBg = s.css.toColor(this.options.backgroundColor) : this._cachedBg = void 0), this._cachedBg
|
||
}
|
||
get foregroundColorRGB() {
|
||
return null === this._cachedFg && (this.options.foregroundColor ? this._cachedFg = s.css.toColor(this.options.foregroundColor) : this._cachedFg = void 0), this._cachedFg
|
||
}
|
||
constructor(e) {
|
||
super(), this.options = e, this.onRenderEmitter = this.register(new r.EventEmitter), this.onRender = this.onRenderEmitter.event, this._onDispose = this.register(new r.EventEmitter), this.onDispose = this._onDispose.event, this._cachedBg = null, this._cachedFg = null, this.marker = e.marker, this.options.overviewRulerOptions && !this.options.overviewRulerOptions.position && (this.options.overviewRulerOptions.position = "full")
|
||
}
|
||
dispose() {
|
||
this._onDispose.fire(), super.dispose()
|
||
}
|
||
}
|
||
},
|
||
4348: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.InstantiationService = t.ServiceCollection = void 0;
|
||
const s = i(2585),
|
||
r = i(8343);
|
||
class n {
|
||
constructor(...e) {
|
||
this._entries = new Map;
|
||
for (const [t, i] of e) this.set(t, i)
|
||
}
|
||
set(e, t) {
|
||
const i = this._entries.get(e);
|
||
return this._entries.set(e, t), i
|
||
}
|
||
forEach(e) {
|
||
for (const [t, i] of this._entries.entries()) e(t, i)
|
||
}
|
||
has(e) {
|
||
return this._entries.has(e)
|
||
}
|
||
get(e) {
|
||
return this._entries.get(e)
|
||
}
|
||
}
|
||
t.ServiceCollection = n, t.InstantiationService = class {
|
||
constructor() {
|
||
this._services = new n, this._services.set(s.IInstantiationService, this)
|
||
}
|
||
setService(e, t) {
|
||
this._services.set(e, t)
|
||
}
|
||
getService(e) {
|
||
return this._services.get(e)
|
||
}
|
||
createInstance(e, ...t) {
|
||
const i = (0, r.getServiceDependencies)(e).sort(((e, t) => e.index - t.index)),
|
||
s = [];
|
||
for (const t of i) {
|
||
const i = this._services.get(t.id);
|
||
if (!i) throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`);
|
||
s.push(i)
|
||
}
|
||
const n = i.length > 0 ? i[0].index : t.length;
|
||
if (t.length !== n) throw new Error(`[createInstance] First service dependency of ${e.name} at position ${n + 1} conflicts with ${t.length} static arguments`);
|
||
return new e(...[...t, ...s])
|
||
}
|
||
}
|
||
},
|
||
7866: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.traceCall = t.setTraceLogger = t.LogService = void 0;
|
||
const n = i(844),
|
||
o = i(2585),
|
||
a = {
|
||
trace: o.LogLevelEnum.TRACE,
|
||
debug: o.LogLevelEnum.DEBUG,
|
||
info: o.LogLevelEnum.INFO,
|
||
warn: o.LogLevelEnum.WARN,
|
||
error: o.LogLevelEnum.ERROR,
|
||
off: o.LogLevelEnum.OFF
|
||
};
|
||
let h, c = t.LogService = class extends n.Disposable {
|
||
get logLevel() {
|
||
return this._logLevel
|
||
}
|
||
constructor(e) {
|
||
super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this
|
||
}
|
||
_updateLogLevel() {
|
||
this._logLevel = a[this._optionsService.rawOptions.logLevel]
|
||
}
|
||
_evalLazyOptionalParams(e) {
|
||
for (let t = 0; t < e.length; t++) "function" == typeof e[t] && (e[t] = e[t]())
|
||
}
|
||
_log(e, t, i) {
|
||
this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i)
|
||
}
|
||
trace(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t)
|
||
}
|
||
debug(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t)
|
||
}
|
||
info(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t)
|
||
}
|
||
warn(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t)
|
||
}
|
||
error(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t)
|
||
}
|
||
};
|
||
t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function(e) {
|
||
h = e
|
||
}, t.traceCall = function(e, t, i) {
|
||
if ("function" != typeof i.value) throw new Error("not supported");
|
||
const s = i.value;
|
||
i.value = function(...e) {
|
||
if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e);
|
||
h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`);
|
||
const t = s.apply(this, e);
|
||
return h.trace(`GlyphRenderer#${s.name} return`, t), t
|
||
}
|
||
}
|
||
},
|
||
7302: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.OptionsService = t.DEFAULT_OPTIONS = void 0;
|
||
const s = i(8460),
|
||
r = i(844),
|
||
n = i(6114);
|
||
t.DEFAULT_OPTIONS = {
|
||
cols: 80,
|
||
rows: 24,
|
||
cursorBlink: !1,
|
||
cursorStyle: "block",
|
||
cursorWidth: 1,
|
||
cursorInactiveStyle: "outline",
|
||
customGlyphs: !0,
|
||
drawBoldTextInBrightColors: !0,
|
||
documentOverride: null,
|
||
fastScrollModifier: "alt",
|
||
fastScrollSensitivity: 5,
|
||
fontFamily: "courier-new, courier, monospace",
|
||
fontSize: 15,
|
||
fontWeight: "normal",
|
||
fontWeightBold: "bold",
|
||
ignoreBracketedPasteMode: !1,
|
||
lineHeight: 1,
|
||
letterSpacing: 0,
|
||
linkHandler: null,
|
||
logLevel: "info",
|
||
logger: null,
|
||
scrollback: 1e3,
|
||
scrollOnUserInput: !0,
|
||
scrollSensitivity: 1,
|
||
screenReaderMode: !1,
|
||
smoothScrollDuration: 0,
|
||
macOptionIsMeta: !1,
|
||
macOptionClickForcesSelection: !1,
|
||
minimumContrastRatio: 1,
|
||
disableStdin: !1,
|
||
allowProposedApi: !1,
|
||
allowTransparency: !1,
|
||
tabStopWidth: 8,
|
||
theme: {},
|
||
rescaleOverlappingGlyphs: !1,
|
||
rightClickSelectsWord: n.isMac,
|
||
windowOptions: {},
|
||
windowsMode: !1,
|
||
windowsPty: {},
|
||
wordSeparator: " ()[]{}',\"`",
|
||
altClickMovesCursor: !0,
|
||
convertEol: !1,
|
||
termName: "xterm",
|
||
cancelEvents: !1,
|
||
overviewRulerWidth: 0
|
||
};
|
||
const o = ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"];
|
||
class a extends r.Disposable {
|
||
constructor(e) {
|
||
super(), this._onOptionChange = this.register(new s.EventEmitter), this.onOptionChange = this._onOptionChange.event;
|
||
const i = {
|
||
...t.DEFAULT_OPTIONS
|
||
};
|
||
for (const t in e)
|
||
if (t in i) try {
|
||
const s = e[t];
|
||
i[t] = this._sanitizeAndValidateOption(t, s)
|
||
} catch (e) {
|
||
console.error(e)
|
||
}
|
||
this.rawOptions = i, this.options = {
|
||
...i
|
||
}, this._setupOptions(), this.register((0, r.toDisposable)((() => {
|
||
this.rawOptions.linkHandler = null, this.rawOptions.documentOverride = null
|
||
})))
|
||
}
|
||
onSpecificOptionChange(e, t) {
|
||
return this.onOptionChange((i => {
|
||
i === e && t(this.rawOptions[e])
|
||
}))
|
||
}
|
||
onMultipleOptionChange(e, t) {
|
||
return this.onOptionChange((i => {
|
||
-1 !== e.indexOf(i) && t()
|
||
}))
|
||
}
|
||
_setupOptions() {
|
||
const e = e => {
|
||
if (!(e in t.DEFAULT_OPTIONS)) throw new Error(`No option with key "${e}"`);
|
||
return this.rawOptions[e]
|
||
},
|
||
i = (e, i) => {
|
||
if (!(e in t.DEFAULT_OPTIONS)) throw new Error(`No option with key "${e}"`);
|
||
i = this._sanitizeAndValidateOption(e, i), this.rawOptions[e] !== i && (this.rawOptions[e] = i, this._onOptionChange.fire(e))
|
||
};
|
||
for (const t in this.rawOptions) {
|
||
const s = {
|
||
get: e.bind(this, t),
|
||
set: i.bind(this, t)
|
||
};
|
||
Object.defineProperty(this.options, t, s)
|
||
}
|
||
}
|
||
_sanitizeAndValidateOption(e, i) {
|
||
switch (e) {
|
||
case "cursorStyle":
|
||
if (i || (i = t.DEFAULT_OPTIONS[e]), ! function(e) {
|
||
return "block" === e || "underline" === e || "bar" === e
|
||
}(i)) throw new Error(`"${i}" is not a valid value for ${e}`);
|
||
break;
|
||
case "wordSeparator":
|
||
i || (i = t.DEFAULT_OPTIONS[e]);
|
||
break;
|
||
case "fontWeight":
|
||
case "fontWeightBold":
|
||
if ("number" == typeof i && 1 <= i && i <= 1e3) break;
|
||
i = o.includes(i) ? i : t.DEFAULT_OPTIONS[e];
|
||
break;
|
||
case "cursorWidth":
|
||
i = Math.floor(i);
|
||
case "lineHeight":
|
||
case "tabStopWidth":
|
||
if (i < 1) throw new Error(`${e} cannot be less than 1, value: ${i}`);
|
||
break;
|
||
case "minimumContrastRatio":
|
||
i = Math.max(1, Math.min(21, Math.round(10 * i) / 10));
|
||
break;
|
||
case "scrollback":
|
||
if ((i = Math.min(i, 4294967295)) < 0) throw new Error(`${e} cannot be less than 0, value: ${i}`);
|
||
break;
|
||
case "fastScrollSensitivity":
|
||
case "scrollSensitivity":
|
||
if (i <= 0) throw new Error(`${e} cannot be less than or equal to 0, value: ${i}`);
|
||
break;
|
||
case "rows":
|
||
case "cols":
|
||
if (!i && 0 !== i) throw new Error(`${e} must be numeric, value: ${i}`);
|
||
break;
|
||
case "windowsPty":
|
||
i = i ?? {}
|
||
}
|
||
return i
|
||
}
|
||
}
|
||
t.OptionsService = a
|
||
},
|
||
2660: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.OscLinkService = void 0;
|
||
const n = i(2585);
|
||
let o = t.OscLinkService = class {
|
||
constructor(e) {
|
||
this._bufferService = e, this._nextId = 1, this._entriesWithId = new Map, this._dataByLinkId = new Map
|
||
}
|
||
registerLink(e) {
|
||
const t = this._bufferService.buffer;
|
||
if (void 0 === e.id) {
|
||
const i = t.addMarker(t.ybase + t.y),
|
||
s = {
|
||
data: e,
|
||
id: this._nextId++,
|
||
lines: [i]
|
||
};
|
||
return i.onDispose((() => this._removeMarkerFromLink(s, i))), this._dataByLinkId.set(s.id, s), s.id
|
||
}
|
||
const i = e,
|
||
s = this._getEntryIdKey(i),
|
||
r = this._entriesWithId.get(s);
|
||
if (r) return this.addLineToLink(r.id, t.ybase + t.y), r.id;
|
||
const n = t.addMarker(t.ybase + t.y),
|
||
o = {
|
||
id: this._nextId++,
|
||
key: this._getEntryIdKey(i),
|
||
data: i,
|
||
lines: [n]
|
||
};
|
||
return n.onDispose((() => this._removeMarkerFromLink(o, n))), this._entriesWithId.set(o.key, o), this._dataByLinkId.set(o.id, o), o.id
|
||
}
|
||
addLineToLink(e, t) {
|
||
const i = this._dataByLinkId.get(e);
|
||
if (i && i.lines.every((e => e.line !== t))) {
|
||
const e = this._bufferService.buffer.addMarker(t);
|
||
i.lines.push(e), e.onDispose((() => this._removeMarkerFromLink(i, e)))
|
||
}
|
||
}
|
||
getLinkData(e) {
|
||
return this._dataByLinkId.get(e)?.data
|
||
}
|
||
_getEntryIdKey(e) {
|
||
return `${e.id};;${e.uri}`
|
||
}
|
||
_removeMarkerFromLink(e, t) {
|
||
const i = e.lines.indexOf(t); - 1 !== i && (e.lines.splice(i, 1), 0 === e.lines.length && (void 0 !== e.data.id && this._entriesWithId.delete(e.key), this._dataByLinkId.delete(e.id)))
|
||
}
|
||
};
|
||
t.OscLinkService = o = s([r(0, n.IBufferService)], o)
|
||
},
|
||
8343: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0;
|
||
const i = "di$target",
|
||
s = "di$dependencies";
|
||
t.serviceRegistry = new Map, t.getServiceDependencies = function(e) {
|
||
return e[s] || []
|
||
}, t.createDecorator = function(e) {
|
||
if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e);
|
||
const r = function(e, t, n) {
|
||
if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter");
|
||
! function(e, t, r) {
|
||
t[i] === t ? t[s].push({
|
||
id: e,
|
||
index: r
|
||
}) : (t[s] = [{
|
||
id: e,
|
||
index: r
|
||
}], t[i] = t)
|
||
}(r, e, n)
|
||
};
|
||
return r.toString = () => e, t.serviceRegistry.set(e, r), r
|
||
}
|
||
},
|
||
2585: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0;
|
||
const s = i(8343);
|
||
var r;
|
||
t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"),
|
||
function(e) {
|
||
e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF"
|
||
}(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService")
|
||
},
|
||
1480: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.UnicodeService = void 0;
|
||
const s = i(8460),
|
||
r = i(225);
|
||
class n {
|
||
static extractShouldJoin(e) {
|
||
return !!(1 & e)
|
||
}
|
||
static extractWidth(e) {
|
||
return e >> 1 & 3
|
||
}
|
||
static extractCharKind(e) {
|
||
return e >> 3
|
||
}
|
||
static createPropertyValue(e, t, i = !1) {
|
||
return (16777215 & e) << 3 | (3 & t) << 1 | (i ? 1 : 0)
|
||
}
|
||
constructor() {
|
||
this._providers = Object.create(null), this._active = "", this._onChange = new s.EventEmitter, this.onChange = this._onChange.event;
|
||
const e = new r.UnicodeV6;
|
||
this.register(e), this._active = e.version, this._activeProvider = e
|
||
}
|
||
dispose() {
|
||
this._onChange.dispose()
|
||
}
|
||
get versions() {
|
||
return Object.keys(this._providers)
|
||
}
|
||
get activeVersion() {
|
||
return this._active
|
||
}
|
||
set activeVersion(e) {
|
||
if (!this._providers[e]) throw new Error(`unknown Unicode version "${e}"`);
|
||
this._active = e, this._activeProvider = this._providers[e], this._onChange.fire(e)
|
||
}
|
||
register(e) {
|
||
this._providers[e.version] = e
|
||
}
|
||
wcwidth(e) {
|
||
return this._activeProvider.wcwidth(e)
|
||
}
|
||
getStringCellWidth(e) {
|
||
let t = 0,
|
||
i = 0;
|
||
const s = e.length;
|
||
for (let r = 0; r < s; ++r) {
|
||
let o = e.charCodeAt(r);
|
||
if (55296 <= o && o <= 56319) {
|
||
if (++r >= s) return t + this.wcwidth(o);
|
||
const i = e.charCodeAt(r);
|
||
56320 <= i && i <= 57343 ? o = 1024 * (o - 55296) + i - 56320 + 65536 : t += this.wcwidth(i)
|
||
}
|
||
const a = this.charProperties(o, i);
|
||
let h = n.extractWidth(a);
|
||
n.extractShouldJoin(a) && (h -= n.extractWidth(i)), t += h, i = a
|
||
}
|
||
return t
|
||
}
|
||
charProperties(e, t) {
|
||
return this._activeProvider.charProperties(e, t)
|
||
}
|
||
}
|
||
t.UnicodeService = n
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
exports: {}
|
||
};
|
||
return e[s].call(n.exports, n, n.exports, i), n.exports
|
||
}
|
||
var s = {};
|
||
return (() => {
|
||
var e = s;
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.Terminal = void 0;
|
||
const t = i(9042),
|
||
r = i(3236),
|
||
n = i(844),
|
||
o = i(5741),
|
||
a = i(8285),
|
||
h = i(7975),
|
||
c = i(7090),
|
||
l = ["cols", "rows"];
|
||
class d extends n.Disposable {
|
||
constructor(e) {
|
||
super(), this._core = this.register(new r.Terminal(e)), this._addonManager = this.register(new o.AddonManager), this._publicOptions = {
|
||
...this._core.options
|
||
};
|
||
const t = e => this._core.options[e],
|
||
i = (e, t) => {
|
||
this._checkReadonlyOptions(e), this._core.options[e] = t
|
||
};
|
||
for (const e in this._core.options) {
|
||
const s = {
|
||
get: t.bind(this, e),
|
||
set: i.bind(this, e)
|
||
};
|
||
Object.defineProperty(this._publicOptions, e, s)
|
||
}
|
||
}
|
||
_checkReadonlyOptions(e) {
|
||
if (l.includes(e)) throw new Error(`Option "${e}" can only be set in the constructor`)
|
||
}
|
||
_checkProposedApi() {
|
||
if (!this._core.optionsService.rawOptions.allowProposedApi) throw new Error("You must set the allowProposedApi option to true to use proposed API")
|
||
}
|
||
get onBell() {
|
||
return this._core.onBell
|
||
}
|
||
get onBinary() {
|
||
return this._core.onBinary
|
||
}
|
||
get onCursorMove() {
|
||
return this._core.onCursorMove
|
||
}
|
||
get onData() {
|
||
return this._core.onData
|
||
}
|
||
get onKey() {
|
||
return this._core.onKey
|
||
}
|
||
get onLineFeed() {
|
||
return this._core.onLineFeed
|
||
}
|
||
get onRender() {
|
||
return this._core.onRender
|
||
}
|
||
get onResize() {
|
||
return this._core.onResize
|
||
}
|
||
get onScroll() {
|
||
return this._core.onScroll
|
||
}
|
||
get onSelectionChange() {
|
||
return this._core.onSelectionChange
|
||
}
|
||
get onTitleChange() {
|
||
return this._core.onTitleChange
|
||
}
|
||
get onWriteParsed() {
|
||
return this._core.onWriteParsed
|
||
}
|
||
get element() {
|
||
return this._core.element
|
||
}
|
||
get parser() {
|
||
return this._parser || (this._parser = new h.ParserApi(this._core)), this._parser
|
||
}
|
||
get unicode() {
|
||
return this._checkProposedApi(), new c.UnicodeApi(this._core)
|
||
}
|
||
get textarea() {
|
||
return this._core.textarea
|
||
}
|
||
get rows() {
|
||
return this._core.rows
|
||
}
|
||
get cols() {
|
||
return this._core.cols
|
||
}
|
||
get buffer() {
|
||
return this._buffer || (this._buffer = this.register(new a.BufferNamespaceApi(this._core))), this._buffer
|
||
}
|
||
get markers() {
|
||
return this._checkProposedApi(), this._core.markers
|
||
}
|
||
get modes() {
|
||
const e = this._core.coreService.decPrivateModes;
|
||
let t = "none";
|
||
switch (this._core.coreMouseService.activeProtocol) {
|
||
case "X10":
|
||
t = "x10";
|
||
break;
|
||
case "VT200":
|
||
t = "vt200";
|
||
break;
|
||
case "DRAG":
|
||
t = "drag";
|
||
break;
|
||
case "ANY":
|
||
t = "any"
|
||
}
|
||
return {
|
||
applicationCursorKeysMode: e.applicationCursorKeys,
|
||
applicationKeypadMode: e.applicationKeypad,
|
||
bracketedPasteMode: e.bracketedPasteMode,
|
||
insertMode: this._core.coreService.modes.insertMode,
|
||
mouseTrackingMode: t,
|
||
originMode: e.origin,
|
||
reverseWraparoundMode: e.reverseWraparound,
|
||
sendFocusMode: e.sendFocus,
|
||
wraparoundMode: e.wraparound
|
||
}
|
||
}
|
||
get options() {
|
||
return this._publicOptions
|
||
}
|
||
set options(e) {
|
||
for (const t in e) this._publicOptions[t] = e[t]
|
||
}
|
||
blur() {
|
||
this._core.blur()
|
||
}
|
||
focus() {
|
||
this._core.focus()
|
||
}
|
||
input(e, t = !0) {
|
||
this._core.input(e, t)
|
||
}
|
||
resize(e, t) {
|
||
this._verifyIntegers(e, t), this._core.resize(e, t)
|
||
}
|
||
open(e) {
|
||
this._core.open(e)
|
||
}
|
||
attachCustomKeyEventHandler(e) {
|
||
this._core.attachCustomKeyEventHandler(e)
|
||
}
|
||
attachCustomWheelEventHandler(e) {
|
||
this._core.attachCustomWheelEventHandler(e)
|
||
}
|
||
registerLinkProvider(e) {
|
||
return this._core.registerLinkProvider(e)
|
||
}
|
||
registerCharacterJoiner(e) {
|
||
return this._checkProposedApi(), this._core.registerCharacterJoiner(e)
|
||
}
|
||
deregisterCharacterJoiner(e) {
|
||
this._checkProposedApi(), this._core.deregisterCharacterJoiner(e)
|
||
}
|
||
registerMarker(e = 0) {
|
||
return this._verifyIntegers(e), this._core.registerMarker(e)
|
||
}
|
||
registerDecoration(e) {
|
||
return this._checkProposedApi(), this._verifyPositiveIntegers(e.x ?? 0, e.width ?? 0, e.height ?? 0), this._core.registerDecoration(e)
|
||
}
|
||
hasSelection() {
|
||
return this._core.hasSelection()
|
||
}
|
||
select(e, t, i) {
|
||
this._verifyIntegers(e, t, i), this._core.select(e, t, i)
|
||
}
|
||
getSelection() {
|
||
return this._core.getSelection()
|
||
}
|
||
getSelectionPosition() {
|
||
return this._core.getSelectionPosition()
|
||
}
|
||
clearSelection() {
|
||
this._core.clearSelection()
|
||
}
|
||
selectAll() {
|
||
this._core.selectAll()
|
||
}
|
||
selectLines(e, t) {
|
||
this._verifyIntegers(e, t), this._core.selectLines(e, t)
|
||
}
|
||
dispose() {
|
||
super.dispose()
|
||
}
|
||
scrollLines(e) {
|
||
this._verifyIntegers(e), this._core.scrollLines(e)
|
||
}
|
||
scrollPages(e) {
|
||
this._verifyIntegers(e), this._core.scrollPages(e)
|
||
}
|
||
scrollToTop() {
|
||
this._core.scrollToTop()
|
||
}
|
||
scrollToBottom() {
|
||
this._core.scrollToBottom()
|
||
}
|
||
scrollToLine(e) {
|
||
this._verifyIntegers(e), this._core.scrollToLine(e)
|
||
}
|
||
clear() {
|
||
this._core.clear()
|
||
}
|
||
write(e, t) {
|
||
this._core.write(e, t)
|
||
}
|
||
writeln(e, t) {
|
||
this._core.write(e), this._core.write("\r\n", t)
|
||
}
|
||
paste(e) {
|
||
this._core.paste(e)
|
||
}
|
||
refresh(e, t) {
|
||
this._verifyIntegers(e, t), this._core.refresh(e, t)
|
||
}
|
||
reset() {
|
||
this._core.reset()
|
||
}
|
||
clearTextureAtlas() {
|
||
this._core.clearTextureAtlas()
|
||
}
|
||
loadAddon(e) {
|
||
this._addonManager.loadAddon(this, e)
|
||
}
|
||
static get strings() {
|
||
return t
|
||
}
|
||
_verifyIntegers(...e) {
|
||
for (const t of e)
|
||
if (t === 1 / 0 || isNaN(t) || t % 1 != 0) throw new Error("This API only accepts integers")
|
||
}
|
||
_verifyPositiveIntegers(...e) {
|
||
for (const t of e)
|
||
if (t && (t === 1 / 0 || isNaN(t) || t % 1 != 0 || t < 0)) throw new Error("This API only accepts positive integers")
|
||
}
|
||
}
|
||
e.Terminal = d
|
||
})(), s
|
||
})(), e.exports = t()
|
||
},
|
||
880: e => {
|
||
var t;
|
||
self, t = () => (() => {
|
||
"use strict";
|
||
var e = {
|
||
903: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.BaseRenderLayer = void 0;
|
||
const s = i(274),
|
||
r = i(627),
|
||
n = i(237),
|
||
o = i(860),
|
||
a = i(374),
|
||
h = i(296),
|
||
c = i(345),
|
||
l = i(859),
|
||
d = i(399),
|
||
_ = i(855);
|
||
class u extends l.Disposable {
|
||
get canvas() {
|
||
return this._canvas
|
||
}
|
||
get cacheCanvas() {
|
||
return this._charAtlas?.pages[0].canvas
|
||
}
|
||
constructor(e, t, i, r, n, o, a, d, _, u) {
|
||
super(), this._terminal = e, this._container = t, this._alpha = n, this._themeService = o, this._bufferService = a, this._optionsService = d, this._decorationService = _, this._coreBrowserService = u, this._deviceCharWidth = 0, this._deviceCharHeight = 0, this._deviceCellWidth = 0, this._deviceCellHeight = 0, this._deviceCharLeft = 0, this._deviceCharTop = 0, this._selectionModel = (0, h.createSelectionRenderModel)(), this._bitmapGenerator = [], this._charAtlasDisposable = this.register(new l.MutableDisposable), this._onAddTextureAtlasCanvas = this.register(new c.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._cellColorResolver = new s.CellColorResolver(this._terminal, this._optionsService, this._selectionModel, this._decorationService, this._coreBrowserService, this._themeService), this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${i}-layer`), this._canvas.style.zIndex = r.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this._refreshCharAtlas(this._themeService.colors), this.register(this._themeService.onChangeColors((e => {
|
||
this._refreshCharAtlas(e), this.reset(), this.handleSelectionChanged(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode)
|
||
}))), this.register((0, l.toDisposable)((() => {
|
||
this._canvas.remove()
|
||
})))
|
||
}
|
||
_initCanvas() {
|
||
this._ctx = (0, a.throwIfFalsy)(this._canvas.getContext("2d", {
|
||
alpha: this._alpha
|
||
})), this._alpha || this._clearAll()
|
||
}
|
||
handleBlur() {}
|
||
handleFocus() {}
|
||
handleCursorMove() {}
|
||
handleGridChanged(e, t) {}
|
||
handleSelectionChanged(e, t, i = !1) {
|
||
this._selectionModel.update(this._terminal._core, e, t, i)
|
||
}
|
||
_setTransparency(e) {
|
||
if (e === this._alpha) return;
|
||
const t = this._canvas;
|
||
this._alpha = e, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, t), this._refreshCharAtlas(this._themeService.colors), this.handleGridChanged(0, this._bufferService.rows - 1)
|
||
}
|
||
_refreshCharAtlas(e) {
|
||
if (!(this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0)) {
|
||
this._charAtlas = (0, r.acquireTextureAtlas)(this._terminal, this._optionsService.rawOptions, e, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr), this._charAtlasDisposable.value = (0, c.forwardEvent)(this._charAtlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), this._charAtlas.warmUp();
|
||
for (let e = 0; e < this._charAtlas.pages.length; e++) this._bitmapGenerator[e] = new f(this._charAtlas.pages[e].canvas)
|
||
}
|
||
}
|
||
resize(e) {
|
||
this._deviceCellWidth = e.device.cell.width, this._deviceCellHeight = e.device.cell.height, this._deviceCharWidth = e.device.char.width, this._deviceCharHeight = e.device.char.height, this._deviceCharLeft = e.device.char.left, this._deviceCharTop = e.device.char.top, this._canvas.width = e.device.canvas.width, this._canvas.height = e.device.canvas.height, this._canvas.style.width = `${e.css.canvas.width}px`, this._canvas.style.height = `${e.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(this._themeService.colors)
|
||
}
|
||
clearTextureAtlas() {
|
||
this._charAtlas?.clearTexture()
|
||
}
|
||
_fillCells(e, t, i, s) {
|
||
this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight)
|
||
}
|
||
_fillMiddleLineAtCells(e, t, i = 1) {
|
||
const s = Math.ceil(.5 * this._deviceCellHeight);
|
||
this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight - s - this._coreBrowserService.dpr, i * this._deviceCellWidth, this._coreBrowserService.dpr)
|
||
}
|
||
_fillBottomLineAtCells(e, t, i = 1, s = 0) {
|
||
this._ctx.fillRect(e * this._deviceCellWidth, (t + 1) * this._deviceCellHeight + s - this._coreBrowserService.dpr - 1, i * this._deviceCellWidth, this._coreBrowserService.dpr)
|
||
}
|
||
_curlyUnderlineAtCell(e, t, i = 1) {
|
||
this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle;
|
||
const s = this._coreBrowserService.dpr;
|
||
this._ctx.lineWidth = s;
|
||
for (let r = 0; r < i; r++) {
|
||
const i = (e + r) * this._deviceCellWidth,
|
||
n = (e + r + .5) * this._deviceCellWidth,
|
||
o = (e + r + 1) * this._deviceCellWidth,
|
||
a = (t + 1) * this._deviceCellHeight - s - 1,
|
||
h = a - s,
|
||
c = a + s;
|
||
this._ctx.moveTo(i, a), this._ctx.bezierCurveTo(i, h, n, h, n, a), this._ctx.bezierCurveTo(n, c, o, c, o, a)
|
||
}
|
||
this._ctx.stroke(), this._ctx.restore()
|
||
}
|
||
_dottedUnderlineAtCell(e, t, i = 1) {
|
||
this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle;
|
||
const s = this._coreBrowserService.dpr;
|
||
this._ctx.lineWidth = s, this._ctx.setLineDash([2 * s, s]);
|
||
const r = e * this._deviceCellWidth,
|
||
n = (t + 1) * this._deviceCellHeight - s - 1;
|
||
this._ctx.moveTo(r, n);
|
||
for (let t = 0; t < i; t++) {
|
||
const s = (e + i + t) * this._deviceCellWidth;
|
||
this._ctx.lineTo(s, n)
|
||
}
|
||
this._ctx.stroke(), this._ctx.closePath(), this._ctx.restore()
|
||
}
|
||
_dashedUnderlineAtCell(e, t, i = 1) {
|
||
this._ctx.save(), this._ctx.beginPath(), this._ctx.strokeStyle = this._ctx.fillStyle;
|
||
const s = this._coreBrowserService.dpr;
|
||
this._ctx.lineWidth = s, this._ctx.setLineDash([4 * s, 3 * s]);
|
||
const r = e * this._deviceCellWidth,
|
||
n = (e + i) * this._deviceCellWidth,
|
||
o = (t + 1) * this._deviceCellHeight - s - 1;
|
||
this._ctx.moveTo(r, o), this._ctx.lineTo(n, o), this._ctx.stroke(), this._ctx.closePath(), this._ctx.restore()
|
||
}
|
||
_fillLeftLineAtCell(e, t, i) {
|
||
this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, this._coreBrowserService.dpr * i, this._deviceCellHeight)
|
||
}
|
||
_strokeRectAtCell(e, t, i, s) {
|
||
const r = this._coreBrowserService.dpr;
|
||
this._ctx.lineWidth = r, this._ctx.strokeRect(e * this._deviceCellWidth + r / 2, t * this._deviceCellHeight + r / 2, i * this._deviceCellWidth - r, s * this._deviceCellHeight - r)
|
||
}
|
||
_clearAll() {
|
||
this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height))
|
||
}
|
||
_clearCells(e, t, i, s) {
|
||
this._alpha ? this._ctx.clearRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(e * this._deviceCellWidth, t * this._deviceCellHeight, i * this._deviceCellWidth, s * this._deviceCellHeight))
|
||
}
|
||
_fillCharTrueColor(e, t, i) {
|
||
this._ctx.font = this._getFont(!1, !1), this._ctx.textBaseline = n.TEXT_BASELINE, this._clipRow(i);
|
||
let s = !1;
|
||
!1 !== this._optionsService.rawOptions.customGlyphs && (s = (0, o.tryDrawCustomChar)(this._ctx, e.getChars(), t * this._deviceCellWidth, i * this._deviceCellHeight, this._deviceCellWidth, this._deviceCellHeight, this._optionsService.rawOptions.fontSize, this._coreBrowserService.dpr)), s || this._ctx.fillText(e.getChars(), t * this._deviceCellWidth + this._deviceCharLeft, i * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight)
|
||
}
|
||
_drawChars(e, t, i) {
|
||
const s = e.getChars(),
|
||
r = e.getCode(),
|
||
n = e.getWidth();
|
||
if (this._cellColorResolver.resolve(e, t, this._bufferService.buffer.ydisp + i, this._deviceCellWidth), !this._charAtlas) return;
|
||
let o;
|
||
if (o = s && s.length > 1 ? this._charAtlas.getRasterizedGlyphCombinedChar(s, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, !0) : this._charAtlas.getRasterizedGlyph(e.getCode() || _.WHITESPACE_CELL_CODE, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, !0), !o.size.x || !o.size.y) return;
|
||
this._ctx.save(), this._clipRow(i), this._bitmapGenerator[o.texturePage] && this._charAtlas.pages[o.texturePage].canvas !== this._bitmapGenerator[o.texturePage].canvas && (this._bitmapGenerator[o.texturePage]?.bitmap?.close(), delete this._bitmapGenerator[o.texturePage]), this._charAtlas.pages[o.texturePage].version !== this._bitmapGenerator[o.texturePage]?.version && (this._bitmapGenerator[o.texturePage] || (this._bitmapGenerator[o.texturePage] = new f(this._charAtlas.pages[o.texturePage].canvas)), this._bitmapGenerator[o.texturePage].refresh(), this._bitmapGenerator[o.texturePage].version = this._charAtlas.pages[o.texturePage].version);
|
||
let h = o.size.x;
|
||
this._optionsService.rawOptions.rescaleOverlappingGlyphs && (0, a.allowRescaling)(r, n, o.size.x, this._deviceCellWidth) && (h = this._deviceCellWidth - 1), this._ctx.drawImage(this._bitmapGenerator[o.texturePage]?.bitmap || this._charAtlas.pages[o.texturePage].canvas, o.texturePosition.x, o.texturePosition.y, o.size.x, o.size.y, t * this._deviceCellWidth + this._deviceCharLeft - o.offset.x, i * this._deviceCellHeight + this._deviceCharTop - o.offset.y, h, o.size.y), this._ctx.restore()
|
||
}
|
||
_clipRow(e) {
|
||
this._ctx.beginPath(), this._ctx.rect(0, e * this._deviceCellHeight, this._bufferService.cols * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip()
|
||
}
|
||
_getFont(e, t) {
|
||
return `${t ? "italic" : ""} ${e ? this._optionsService.rawOptions.fontWeightBold : this._optionsService.rawOptions.fontWeight} ${this._optionsService.rawOptions.fontSize * this._coreBrowserService.dpr}px ${this._optionsService.rawOptions.fontFamily}`
|
||
}
|
||
}
|
||
t.BaseRenderLayer = u;
|
||
class f {
|
||
get bitmap() {
|
||
return this._bitmap
|
||
}
|
||
constructor(e) {
|
||
this.canvas = e, this._state = 0, this._commitTimeout = void 0, this._bitmap = void 0, this.version = -1
|
||
}
|
||
refresh() {
|
||
this._bitmap?.close(), this._bitmap = void 0, d.isSafari || (void 0 === this._commitTimeout && (this._commitTimeout = window.setTimeout((() => this._generate()), 100)), 1 === this._state && (this._state = 2))
|
||
}
|
||
_generate() {
|
||
0 === this._state && (this._bitmap?.close(), this._bitmap = void 0, this._state = 1, window.createImageBitmap(this.canvas).then((e => {
|
||
2 === this._state ? this.refresh() : this._bitmap = e, this._state = 0
|
||
})), this._commitTimeout && (this._commitTimeout = void 0))
|
||
}
|
||
}
|
||
},
|
||
949: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CanvasRenderer = void 0;
|
||
const s = i(627),
|
||
r = i(56),
|
||
n = i(374),
|
||
o = i(345),
|
||
a = i(859),
|
||
h = i(873),
|
||
c = i(43),
|
||
l = i(630),
|
||
d = i(744);
|
||
class _ extends a.Disposable {
|
||
constructor(e, t, i, _, u, f, v, g, p, m, C) {
|
||
super(), this._terminal = e, this._screenElement = t, this._bufferService = _, this._charSizeService = u, this._optionsService = f, this._coreBrowserService = p, this._themeService = C, this._observerDisposable = this.register(new a.MutableDisposable), this._onRequestRedraw = this.register(new o.EventEmitter), this.onRequestRedraw = this._onRequestRedraw.event, this._onChangeTextureAtlas = this.register(new o.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new o.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event;
|
||
const S = this._optionsService.rawOptions.allowTransparency;
|
||
this._renderLayers = [new d.TextRenderLayer(this._terminal, this._screenElement, 0, S, this._bufferService, this._optionsService, v, m, this._coreBrowserService, C), new l.SelectionRenderLayer(this._terminal, this._screenElement, 1, this._bufferService, this._coreBrowserService, m, this._optionsService, C), new c.LinkRenderLayer(this._terminal, this._screenElement, 2, i, this._bufferService, this._optionsService, m, this._coreBrowserService, C), new h.CursorRenderLayer(this._terminal, this._screenElement, 3, this._onRequestRedraw, this._bufferService, this._optionsService, g, this._coreBrowserService, m, C)];
|
||
for (const e of this._renderLayers)(0, o.forwardEvent)(e.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas);
|
||
this.dimensions = (0, n.createRenderDimensions)(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._observerDisposable.value = (0, r.observeDevicePixelDimensions)(this._renderLayers[0].canvas, this._coreBrowserService.window, ((e, t) => this._setCanvasDevicePixelDimensions(e, t))), this.register(this._coreBrowserService.onWindowChange((e => {
|
||
this._observerDisposable.value = (0, r.observeDevicePixelDimensions)(this._renderLayers[0].canvas, e, ((e, t) => this._setCanvasDevicePixelDimensions(e, t)))
|
||
}))), this.register((0, a.toDisposable)((() => {
|
||
for (const e of this._renderLayers) e.dispose();
|
||
(0, s.removeTerminalFromCache)(this._terminal)
|
||
})))
|
||
}
|
||
get textureAtlas() {
|
||
return this._renderLayers[0].cacheCanvas
|
||
}
|
||
handleDevicePixelRatioChange() {
|
||
this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._bufferService.cols, this._bufferService.rows))
|
||
}
|
||
handleResize(e, t) {
|
||
this._updateDimensions();
|
||
for (const e of this._renderLayers) e.resize(this.dimensions);
|
||
this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px`
|
||
}
|
||
handleCharSizeChanged() {
|
||
this.handleResize(this._bufferService.cols, this._bufferService.rows)
|
||
}
|
||
handleBlur() {
|
||
this._runOperation((e => e.handleBlur()))
|
||
}
|
||
handleFocus() {
|
||
this._runOperation((e => e.handleFocus()))
|
||
}
|
||
handleSelectionChanged(e, t, i = !1) {
|
||
this._runOperation((s => s.handleSelectionChanged(e, t, i))), this._themeService.colors.selectionForeground && this._onRequestRedraw.fire({
|
||
start: 0,
|
||
end: this._bufferService.rows - 1
|
||
})
|
||
}
|
||
handleCursorMove() {
|
||
this._runOperation((e => e.handleCursorMove()))
|
||
}
|
||
clear() {
|
||
this._runOperation((e => e.reset()))
|
||
}
|
||
_runOperation(e) {
|
||
for (const t of this._renderLayers) e(t)
|
||
}
|
||
renderRows(e, t) {
|
||
for (const i of this._renderLayers) i.handleGridChanged(e, t)
|
||
}
|
||
clearTextureAtlas() {
|
||
for (const e of this._renderLayers) e.clearTextureAtlas()
|
||
}
|
||
_updateDimensions() {
|
||
if (!this._charSizeService.hasValidSize) return;
|
||
const e = this._coreBrowserService.dpr;
|
||
this.dimensions.device.char.width = Math.floor(this._charSizeService.width * e), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = 1 === this._optionsService.rawOptions.lineHeight ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._bufferService.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._bufferService.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows, this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols
|
||
}
|
||
_setCanvasDevicePixelDimensions(e, t) {
|
||
this.dimensions.device.canvas.height = t, this.dimensions.device.canvas.width = e;
|
||
for (const e of this._renderLayers) e.resize(this.dimensions);
|
||
this._requestRedrawViewport()
|
||
}
|
||
_requestRedrawViewport() {
|
||
this._onRequestRedraw.fire({
|
||
start: 0,
|
||
end: this._bufferService.rows - 1
|
||
})
|
||
}
|
||
}
|
||
t.CanvasRenderer = _
|
||
},
|
||
873: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CursorRenderLayer = void 0;
|
||
const s = i(457),
|
||
r = i(859),
|
||
n = i(399),
|
||
o = i(782),
|
||
a = i(903);
|
||
class h extends a.BaseRenderLayer {
|
||
constructor(e, t, i, s, n, a, h, c, l, d) {
|
||
super(e, t, "cursor", i, !0, d, n, a, l, c), this._onRequestRedraw = s, this._coreService = h, this._cursorBlinkStateManager = this.register(new r.MutableDisposable), this._cell = new o.CellData, this._state = {
|
||
x: 0,
|
||
y: 0,
|
||
isFocused: !1,
|
||
style: "",
|
||
width: 0
|
||
}, this._cursorRenderers = {
|
||
bar: this._renderBarCursor.bind(this),
|
||
block: this._renderBlockCursor.bind(this),
|
||
underline: this._renderUnderlineCursor.bind(this),
|
||
outline: this._renderOutlineCursor.bind(this)
|
||
}, this.register(a.onOptionChange((() => this._handleOptionsChanged()))), this._handleOptionsChanged()
|
||
}
|
||
resize(e) {
|
||
super.resize(e), this._state = {
|
||
x: 0,
|
||
y: 0,
|
||
isFocused: !1,
|
||
style: "",
|
||
width: 0
|
||
}
|
||
}
|
||
reset() {
|
||
this._clearCursor(), this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._handleOptionsChanged()
|
||
}
|
||
handleBlur() {
|
||
this._cursorBlinkStateManager.value?.pause(), this._onRequestRedraw.fire({
|
||
start: this._bufferService.buffer.y,
|
||
end: this._bufferService.buffer.y
|
||
})
|
||
}
|
||
handleFocus() {
|
||
this._cursorBlinkStateManager.value?.resume(), this._onRequestRedraw.fire({
|
||
start: this._bufferService.buffer.y,
|
||
end: this._bufferService.buffer.y
|
||
})
|
||
}
|
||
_handleOptionsChanged() {
|
||
this._optionsService.rawOptions.cursorBlink ? this._cursorBlinkStateManager.value || (this._cursorBlinkStateManager.value = new s.CursorBlinkStateManager((() => this._render(!0)), this._coreBrowserService)) : this._cursorBlinkStateManager.clear(), this._onRequestRedraw.fire({
|
||
start: this._bufferService.buffer.y,
|
||
end: this._bufferService.buffer.y
|
||
})
|
||
}
|
||
handleCursorMove() {
|
||
this._cursorBlinkStateManager.value?.restartBlinkAnimation()
|
||
}
|
||
handleGridChanged(e, t) {
|
||
!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isPaused ? this._render(!1) : this._cursorBlinkStateManager.value.restartBlinkAnimation()
|
||
}
|
||
_render(e) {
|
||
if (!this._coreService.isCursorInitialized || this._coreService.isCursorHidden) return void this._clearCursor();
|
||
const t = this._bufferService.buffer.ybase + this._bufferService.buffer.y,
|
||
i = t - this._bufferService.buffer.ydisp;
|
||
if (i < 0 || i >= this._bufferService.rows) return void this._clearCursor();
|
||
const s = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1);
|
||
if (this._bufferService.buffer.lines.get(t).loadCell(s, this._cell), void 0 !== this._cell.content) {
|
||
if (!this._coreBrowserService.isFocused) {
|
||
this._clearCursor(), this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css;
|
||
const e = this._optionsService.rawOptions.cursorStyle,
|
||
t = this._optionsService.rawOptions.cursorInactiveStyle;
|
||
return t && "none" !== t && this._cursorRenderers[t](s, i, this._cell), this._ctx.restore(), this._state.x = s, this._state.y = i, this._state.isFocused = !1, this._state.style = e, void(this._state.width = this._cell.getWidth())
|
||
}
|
||
if (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible) {
|
||
if (this._state) {
|
||
if (this._state.x === s && this._state.y === i && this._state.isFocused === this._coreBrowserService.isFocused && this._state.style === this._optionsService.rawOptions.cursorStyle && this._state.width === this._cell.getWidth()) return;
|
||
this._clearCursor()
|
||
}
|
||
this._ctx.save(), this._cursorRenderers[this._optionsService.rawOptions.cursorStyle || "block"](s, i, this._cell), this._ctx.restore(), this._state.x = s, this._state.y = i, this._state.isFocused = !1, this._state.style = this._optionsService.rawOptions.cursorStyle, this._state.width = this._cell.getWidth()
|
||
} else this._clearCursor()
|
||
}
|
||
}
|
||
_clearCursor() {
|
||
this._state && (n.isFirefox || this._coreBrowserService.dpr < 1 ? this._clearAll() : this._clearCells(this._state.x, this._state.y, this._state.width, 1), this._state = {
|
||
x: 0,
|
||
y: 0,
|
||
isFocused: !1,
|
||
style: "",
|
||
width: 0
|
||
})
|
||
}
|
||
_renderBarCursor(e, t, i) {
|
||
this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillLeftLineAtCell(e, t, this._optionsService.rawOptions.cursorWidth), this._ctx.restore()
|
||
}
|
||
_renderBlockCursor(e, t, i) {
|
||
this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillCells(e, t, i.getWidth(), 1), this._ctx.fillStyle = this._themeService.colors.cursorAccent.css, this._fillCharTrueColor(i, e, t), this._ctx.restore()
|
||
}
|
||
_renderUnderlineCursor(e, t, i) {
|
||
this._ctx.save(), this._ctx.fillStyle = this._themeService.colors.cursor.css, this._fillBottomLineAtCells(e, t), this._ctx.restore()
|
||
}
|
||
_renderOutlineCursor(e, t, i) {
|
||
this._ctx.save(), this._ctx.strokeStyle = this._themeService.colors.cursor.css, this._strokeRectAtCell(e, t, i.getWidth(), 1), this._ctx.restore()
|
||
}
|
||
}
|
||
t.CursorRenderLayer = h
|
||
},
|
||
574: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.GridCache = void 0, t.GridCache = class {
|
||
constructor() {
|
||
this.cache = []
|
||
}
|
||
resize(e, t) {
|
||
for (let i = 0; i < e; i++) {
|
||
this.cache.length <= i && this.cache.push([]);
|
||
for (let e = this.cache[i].length; e < t; e++) this.cache[i].push(void 0);
|
||
this.cache[i].length = t
|
||
}
|
||
this.cache.length = e
|
||
}
|
||
clear() {
|
||
for (let e = 0; e < this.cache.length; e++)
|
||
for (let t = 0; t < this.cache[e].length; t++) this.cache[e][t] = void 0
|
||
}
|
||
}
|
||
},
|
||
43: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.LinkRenderLayer = void 0;
|
||
const s = i(197),
|
||
r = i(237),
|
||
n = i(903);
|
||
class o extends n.BaseRenderLayer {
|
||
constructor(e, t, i, s, r, n, o, a, h) {
|
||
super(e, t, "link", i, !0, h, r, n, o, a), this.register(s.onShowLinkUnderline((e => this._handleShowLinkUnderline(e)))), this.register(s.onHideLinkUnderline((e => this._handleHideLinkUnderline(e))))
|
||
}
|
||
resize(e) {
|
||
super.resize(e), this._state = void 0
|
||
}
|
||
reset() {
|
||
this._clearCurrentLink()
|
||
}
|
||
_clearCurrentLink() {
|
||
if (this._state) {
|
||
this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1);
|
||
const e = this._state.y2 - this._state.y1 - 1;
|
||
e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0
|
||
}
|
||
}
|
||
_handleShowLinkUnderline(e) {
|
||
if (e.fg === r.INVERTED_DEFAULT_COLOR ? this._ctx.fillStyle = this._themeService.colors.background.css : e.fg && (0, s.is256Color)(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, 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 (let t = e.y1 + 1; t < e.y2; t++) this._fillBottomLineAtCells(0, t, e.cols);
|
||
this._fillBottomLineAtCells(0, e.y2, e.x2)
|
||
}
|
||
this._state = e
|
||
}
|
||
_handleHideLinkUnderline(e) {
|
||
this._clearCurrentLink()
|
||
}
|
||
}
|
||
t.LinkRenderLayer = o
|
||
},
|
||
630: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.SelectionRenderLayer = void 0;
|
||
const s = i(903);
|
||
class r extends s.BaseRenderLayer {
|
||
constructor(e, t, i, s, r, n, o, a) {
|
||
super(e, t, "selection", i, !0, a, s, o, n, r), this._clearState()
|
||
}
|
||
_clearState() {
|
||
this._state = {
|
||
start: void 0,
|
||
end: void 0,
|
||
columnSelectMode: void 0,
|
||
ydisp: void 0
|
||
}
|
||
}
|
||
resize(e) {
|
||
super.resize(e), this._selectionModel.selectionStart && this._selectionModel.selectionEnd && (this._clearState(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode))
|
||
}
|
||
reset() {
|
||
this._state.start && this._state.end && (this._clearState(), this._clearAll())
|
||
}
|
||
handleBlur() {
|
||
this.reset(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode)
|
||
}
|
||
handleFocus() {
|
||
this.reset(), this._redrawSelection(this._selectionModel.selectionStart, this._selectionModel.selectionEnd, this._selectionModel.columnSelectMode)
|
||
}
|
||
handleSelectionChanged(e, t, i) {
|
||
super.handleSelectionChanged(e, t, i), this._redrawSelection(e, t, i)
|
||
}
|
||
_redrawSelection(e, t, i) {
|
||
if (!this._didStateChange(e, t, i, this._bufferService.buffer.ydisp)) return;
|
||
if (this._clearAll(), !e || !t) return void this._clearState();
|
||
const s = e[1] - this._bufferService.buffer.ydisp,
|
||
r = t[1] - this._bufferService.buffer.ydisp,
|
||
n = Math.max(s, 0),
|
||
o = Math.min(r, this._bufferService.rows - 1);
|
||
if (n >= this._bufferService.rows || o < 0) this._state.ydisp = this._bufferService.buffer.ydisp;
|
||
else {
|
||
if (this._ctx.fillStyle = (this._coreBrowserService.isFocused ? this._themeService.colors.selectionBackgroundTransparent : this._themeService.colors.selectionInactiveBackgroundTransparent).css, i) {
|
||
const i = e[0],
|
||
s = t[0] - i,
|
||
r = o - n + 1;
|
||
this._fillCells(i, n, s, r)
|
||
} else {
|
||
const i = s === n ? e[0] : 0,
|
||
a = n === r ? t[0] : this._bufferService.cols;
|
||
this._fillCells(i, n, a - i, 1);
|
||
const h = Math.max(o - n - 1, 0);
|
||
if (this._fillCells(0, n + 1, this._bufferService.cols, h), n !== o) {
|
||
const e = r === o ? t[0] : this._bufferService.cols;
|
||
this._fillCells(0, o, e, 1)
|
||
}
|
||
}
|
||
this._state.start = [e[0], e[1]], this._state.end = [t[0], t[1]], this._state.columnSelectMode = i, this._state.ydisp = this._bufferService.buffer.ydisp
|
||
}
|
||
}
|
||
_didStateChange(e, t, i, s) {
|
||
return !this._areCoordinatesEqual(e, this._state.start) || !this._areCoordinatesEqual(t, this._state.end) || i !== this._state.columnSelectMode || s !== this._state.ydisp
|
||
}
|
||
_areCoordinatesEqual(e, t) {
|
||
return !(!e || !t) && e[0] === t[0] && e[1] === t[1]
|
||
}
|
||
}
|
||
t.SelectionRenderLayer = r
|
||
},
|
||
744: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TextRenderLayer = void 0;
|
||
const s = i(577),
|
||
r = i(147),
|
||
n = i(782),
|
||
o = i(855),
|
||
a = i(903),
|
||
h = i(574);
|
||
class c extends a.BaseRenderLayer {
|
||
constructor(e, t, i, s, r, o, a, c, l, d) {
|
||
super(e, t, "text", i, s, d, r, o, c, l), this._characterJoinerService = a, this._characterWidth = 0, this._characterFont = "", this._characterOverlapCache = {}, this._workCell = new n.CellData, this._state = new h.GridCache, this.register(o.onSpecificOptionChange("allowTransparency", (e => this._setTransparency(e))))
|
||
}
|
||
resize(e) {
|
||
super.resize(e);
|
||
const t = this._getFont(!1, !1);
|
||
this._characterWidth === e.device.char.width && this._characterFont === t || (this._characterWidth = e.device.char.width, this._characterFont = t, this._characterOverlapCache = {}), this._state.clear(), this._state.resize(this._bufferService.cols, this._bufferService.rows)
|
||
}
|
||
reset() {
|
||
this._state.clear(), this._clearAll()
|
||
}
|
||
_forEachCell(e, t, i) {
|
||
for (let r = e; r <= t; r++) {
|
||
const e = r + this._bufferService.buffer.ydisp,
|
||
t = this._bufferService.buffer.lines.get(e),
|
||
n = this._characterJoinerService.getJoinedCharacters(e);
|
||
for (let e = 0; e < this._bufferService.cols; e++) {
|
||
t.loadCell(e, this._workCell);
|
||
let a = this._workCell,
|
||
h = !1,
|
||
c = e;
|
||
if (0 !== a.getWidth()) {
|
||
if (n.length > 0 && e === n[0][0]) {
|
||
h = !0;
|
||
const e = n.shift();
|
||
a = new s.JoinedCellData(this._workCell, t.translateToString(!0, e[0], e[1]), e[1] - e[0]), c = e[1] - 1
|
||
}!h && this._isOverlapping(a) && c < t.length - 1 && t.getCodePoint(c + 1) === o.NULL_CELL_CODE && (a.content &= -12582913, a.content |= 2 << 22), i(a, e, r), e = c
|
||
}
|
||
}
|
||
}
|
||
}
|
||
_drawBackground(e, t) {
|
||
const i = this._ctx,
|
||
s = this._bufferService.cols;
|
||
let n = 0,
|
||
o = 0,
|
||
a = null;
|
||
i.save(), this._forEachCell(e, t, ((e, t, h) => {
|
||
let c = null;
|
||
e.isInverse() ? c = e.isFgDefault() ? this._themeService.colors.foreground.css : e.isFgRGB() ? `rgb(${r.AttributeData.toColorRGB(e.getFgColor()).join(",")})` : this._themeService.colors.ansi[e.getFgColor()].css : e.isBgRGB() ? c = `rgb(${r.AttributeData.toColorRGB(e.getBgColor()).join(",")})` : e.isBgPalette() && (c = this._themeService.colors.ansi[e.getBgColor()].css);
|
||
let l = !1;
|
||
this._decorationService.forEachDecorationAtCell(t, this._bufferService.buffer.ydisp + h, void 0, (e => {
|
||
"top" !== e.options.layer && l || (e.backgroundColorRGB && (c = e.backgroundColorRGB.css), l = "top" === e.options.layer)
|
||
})), null === a && (n = t, o = h), h !== o ? (i.fillStyle = a || "", this._fillCells(n, o, s - n, 1), n = t, o = h) : a !== c && (i.fillStyle = a || "", this._fillCells(n, o, t - n, 1), n = t, o = h), a = c
|
||
})), null !== a && (i.fillStyle = a, this._fillCells(n, o, s - n, 1)), i.restore()
|
||
}
|
||
_drawForeground(e, t) {
|
||
this._forEachCell(e, t, ((e, t, i) => this._drawChars(e, t, i)))
|
||
}
|
||
handleGridChanged(e, t) {
|
||
0 !== this._state.cache.length && (this._charAtlas && this._charAtlas.beginFrame(), this._clearCells(0, e, this._bufferService.cols, t - e + 1), this._drawBackground(e, t), this._drawForeground(e, t))
|
||
}
|
||
_isOverlapping(e) {
|
||
if (1 !== e.getWidth()) return !1;
|
||
if (e.getCode() < 256) return !1;
|
||
const t = e.getChars();
|
||
if (this._characterOverlapCache.hasOwnProperty(t)) return this._characterOverlapCache[t];
|
||
this._ctx.save(), this._ctx.font = this._characterFont;
|
||
const i = Math.floor(this._ctx.measureText(t).width) > this._characterWidth;
|
||
return this._ctx.restore(), this._characterOverlapCache[t] = i, i
|
||
}
|
||
}
|
||
t.TextRenderLayer = c
|
||
},
|
||
274: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CellColorResolver = void 0;
|
||
const s = i(855),
|
||
r = i(160),
|
||
n = i(374);
|
||
let o, a = 0,
|
||
h = 0,
|
||
c = !1,
|
||
l = !1,
|
||
d = !1,
|
||
_ = 0;
|
||
t.CellColorResolver = class {
|
||
constructor(e, t, i, s, r, n) {
|
||
this._terminal = e, this._optionService = t, this._selectionRenderModel = i, this._decorationService = s, this._coreBrowserService = r, this._themeService = n, this.result = {
|
||
fg: 0,
|
||
bg: 0,
|
||
ext: 0
|
||
}
|
||
}
|
||
resolve(e, t, i, u) {
|
||
if (this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = 268435456 & e.bg ? e.extended.ext : 0, h = 0, a = 0, l = !1, c = !1, d = !1, o = this._themeService.colors, _ = 0, e.getCode() !== s.NULL_CELL_CODE && 4 === e.extended.underlineStyle) {
|
||
const e = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15));
|
||
_ = t * u % (2 * Math.round(e))
|
||
}
|
||
if (this._decorationService.forEachDecorationAtCell(t, i, "bottom", (e => {
|
||
e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0)
|
||
})), d = this._selectionRenderModel.isCellSelected(this._terminal, t, i), d) {
|
||
if (67108864 & this.result.fg || 50331648 & this.result.bg) {
|
||
if (67108864 & this.result.fg) switch (50331648 & this.result.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
h = this._themeService.colors.ansi[255 & this.result.fg].rgba;
|
||
break;
|
||
case 50331648:
|
||
h = (16777215 & this.result.fg) << 8 | 255;
|
||
break;
|
||
default:
|
||
h = this._themeService.colors.foreground.rgba
|
||
} else switch (50331648 & this.result.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
h = this._themeService.colors.ansi[255 & this.result.bg].rgba;
|
||
break;
|
||
case 50331648:
|
||
h = (16777215 & this.result.bg) << 8 | 255
|
||
}
|
||
h = r.rgba.blend(h, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215
|
||
} else h = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215;
|
||
if (l = !0, o.selectionForeground && (a = o.selectionForeground.rgba >> 8 & 16777215, c = !0), (0, n.treatGlyphAsBackgroundColor)(e.getCode())) {
|
||
if (67108864 & this.result.fg && !(50331648 & this.result.bg)) a = (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215;
|
||
else {
|
||
if (67108864 & this.result.fg) switch (50331648 & this.result.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
a = this._themeService.colors.ansi[255 & this.result.bg].rgba;
|
||
break;
|
||
case 50331648:
|
||
a = (16777215 & this.result.bg) << 8 | 255
|
||
} else switch (50331648 & this.result.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
a = this._themeService.colors.ansi[255 & this.result.fg].rgba;
|
||
break;
|
||
case 50331648:
|
||
a = (16777215 & this.result.fg) << 8 | 255;
|
||
break;
|
||
default:
|
||
a = this._themeService.colors.foreground.rgba
|
||
}
|
||
a = r.rgba.blend(a, 4294967040 & (this._coreBrowserService.isFocused ? o.selectionBackgroundOpaque : o.selectionInactiveBackgroundOpaque).rgba | 128) >> 8 & 16777215
|
||
}
|
||
c = !0
|
||
}
|
||
}
|
||
this._decorationService.forEachDecorationAtCell(t, i, "top", (e => {
|
||
e.backgroundColorRGB && (h = e.backgroundColorRGB.rgba >> 8 & 16777215, l = !0), e.foregroundColorRGB && (a = e.foregroundColorRGB.rgba >> 8 & 16777215, c = !0)
|
||
})), l && (h = d ? -16777216 & e.bg & -134217729 | h | 50331648 : -16777216 & e.bg | h | 50331648), c && (a = -16777216 & e.fg & -67108865 | a | 50331648), 67108864 & this.result.fg && (l && !c && (a = 50331648 & this.result.bg ? -134217728 & this.result.fg | 67108863 & this.result.bg : -134217728 & this.result.fg | 16777215 & o.background.rgba >> 8 | 50331648, c = !0), !l && c && (h = 50331648 & this.result.fg ? -67108864 & this.result.bg | 67108863 & this.result.fg : -67108864 & this.result.bg | 16777215 & o.foreground.rgba >> 8 | 50331648, l = !0)), o = void 0, this.result.bg = l ? h : this.result.bg, this.result.fg = c ? a : this.result.fg, this.result.ext &= 536870911, this.result.ext |= _ << 29 & 3758096384
|
||
}
|
||
}
|
||
},
|
||
627: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.removeTerminalFromCache = t.acquireTextureAtlas = void 0;
|
||
const s = i(509),
|
||
r = i(197),
|
||
n = [];
|
||
t.acquireTextureAtlas = function(e, t, i, o, a, h, c, l) {
|
||
const d = (0, r.generateConfig)(o, a, h, c, t, i, l);
|
||
for (let t = 0; t < n.length; t++) {
|
||
const i = n[t],
|
||
s = i.ownedBy.indexOf(e);
|
||
if (s >= 0) {
|
||
if ((0, r.configEquals)(i.config, d)) return i.atlas;
|
||
1 === i.ownedBy.length ? (i.atlas.dispose(), n.splice(t, 1)) : i.ownedBy.splice(s, 1);
|
||
break
|
||
}
|
||
}
|
||
for (let t = 0; t < n.length; t++) {
|
||
const i = n[t];
|
||
if ((0, r.configEquals)(i.config, d)) return i.ownedBy.push(e), i.atlas
|
||
}
|
||
const _ = e._core,
|
||
u = {
|
||
atlas: new s.TextureAtlas(document, d, _.unicodeService),
|
||
config: d,
|
||
ownedBy: [e]
|
||
};
|
||
return n.push(u), u.atlas
|
||
}, t.removeTerminalFromCache = function(e) {
|
||
for (let t = 0; t < n.length; t++) {
|
||
const i = n[t].ownedBy.indexOf(e);
|
||
if (-1 !== i) {
|
||
1 === n[t].ownedBy.length ? (n[t].atlas.dispose(), n.splice(t, 1)) : n[t].ownedBy.splice(i, 1);
|
||
break
|
||
}
|
||
}
|
||
}
|
||
},
|
||
197: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.is256Color = t.configEquals = t.generateConfig = void 0;
|
||
const s = i(160);
|
||
t.generateConfig = function(e, t, i, r, n, o, a) {
|
||
const h = {
|
||
foreground: o.foreground,
|
||
background: o.background,
|
||
cursor: s.NULL_COLOR,
|
||
cursorAccent: s.NULL_COLOR,
|
||
selectionForeground: s.NULL_COLOR,
|
||
selectionBackgroundTransparent: s.NULL_COLOR,
|
||
selectionBackgroundOpaque: s.NULL_COLOR,
|
||
selectionInactiveBackgroundTransparent: s.NULL_COLOR,
|
||
selectionInactiveBackgroundOpaque: s.NULL_COLOR,
|
||
ansi: o.ansi.slice(),
|
||
contrastCache: o.contrastCache,
|
||
halfContrastCache: o.halfContrastCache
|
||
};
|
||
return {
|
||
customGlyphs: n.customGlyphs,
|
||
devicePixelRatio: a,
|
||
letterSpacing: n.letterSpacing,
|
||
lineHeight: n.lineHeight,
|
||
deviceCellWidth: e,
|
||
deviceCellHeight: t,
|
||
deviceCharWidth: i,
|
||
deviceCharHeight: r,
|
||
fontFamily: n.fontFamily,
|
||
fontSize: n.fontSize,
|
||
fontWeight: n.fontWeight,
|
||
fontWeightBold: n.fontWeightBold,
|
||
allowTransparency: n.allowTransparency,
|
||
drawBoldTextInBrightColors: n.drawBoldTextInBrightColors,
|
||
minimumContrastRatio: n.minimumContrastRatio,
|
||
colors: h
|
||
}
|
||
}, t.configEquals = function(e, t) {
|
||
for (let i = 0; i < e.colors.ansi.length; i++)
|
||
if (e.colors.ansi[i].rgba !== t.colors.ansi[i].rgba) return !1;
|
||
return e.devicePixelRatio === t.devicePixelRatio && e.customGlyphs === t.customGlyphs && e.lineHeight === t.lineHeight && e.letterSpacing === t.letterSpacing && e.fontFamily === t.fontFamily && e.fontSize === t.fontSize && e.fontWeight === t.fontWeight && e.fontWeightBold === t.fontWeightBold && e.allowTransparency === t.allowTransparency && e.deviceCharWidth === t.deviceCharWidth && e.deviceCharHeight === t.deviceCharHeight && e.drawBoldTextInBrightColors === t.drawBoldTextInBrightColors && e.minimumContrastRatio === t.minimumContrastRatio && e.colors.foreground.rgba === t.colors.foreground.rgba && e.colors.background.rgba === t.colors.background.rgba
|
||
}, t.is256Color = function(e) {
|
||
return 16777216 == (50331648 & e) || 33554432 == (50331648 & e)
|
||
}
|
||
},
|
||
237: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TEXT_BASELINE = t.DIM_OPACITY = t.INVERTED_DEFAULT_COLOR = void 0;
|
||
const s = i(399);
|
||
t.INVERTED_DEFAULT_COLOR = 257, t.DIM_OPACITY = .5, t.TEXT_BASELINE = s.isFirefox || s.isLegacyEdge ? "bottom" : "ideographic"
|
||
},
|
||
457: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CursorBlinkStateManager = void 0, t.CursorBlinkStateManager = class {
|
||
constructor(e, t) {
|
||
this._renderCallback = e, this._coreBrowserService = t, this.isCursorVisible = !0, this._coreBrowserService.isFocused && this._restartInterval()
|
||
}
|
||
get isPaused() {
|
||
return !(this._blinkStartTimeout || this._blinkInterval)
|
||
}
|
||
dispose() {
|
||
this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0)
|
||
}
|
||
restartBlinkAnimation() {
|
||
this.isPaused || (this._animationTimeRestarted = Date.now(), this.isCursorVisible = !0, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._renderCallback(), this._animationFrame = void 0
|
||
}))))
|
||
}
|
||
_restartInterval(e = 600) {
|
||
this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout((() => {
|
||
if (this._animationTimeRestarted) {
|
||
const e = 600 - (Date.now() - this._animationTimeRestarted);
|
||
if (this._animationTimeRestarted = void 0, e > 0) return void this._restartInterval(e)
|
||
}
|
||
this.isCursorVisible = !1, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._renderCallback(), this._animationFrame = void 0
|
||
})), this._blinkInterval = this._coreBrowserService.window.setInterval((() => {
|
||
if (this._animationTimeRestarted) {
|
||
const e = 600 - (Date.now() - this._animationTimeRestarted);
|
||
return this._animationTimeRestarted = void 0, void this._restartInterval(e)
|
||
}
|
||
this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame((() => {
|
||
this._renderCallback(), this._animationFrame = void 0
|
||
}))
|
||
}), 600)
|
||
}), e)
|
||
}
|
||
pause() {
|
||
this.isCursorVisible = !0, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0)
|
||
}
|
||
resume() {
|
||
this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this.restartBlinkAnimation()
|
||
}
|
||
}
|
||
},
|
||
860: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.tryDrawCustomChar = t.powerlineDefinitions = t.boxDrawingDefinitions = t.blockElementDefinitions = void 0;
|
||
const s = i(374);
|
||
t.blockElementDefinitions = {
|
||
"▀": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"▁": [{
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"▂": [{
|
||
x: 0,
|
||
y: 6,
|
||
w: 8,
|
||
h: 2
|
||
}],
|
||
"▃": [{
|
||
x: 0,
|
||
y: 5,
|
||
w: 8,
|
||
h: 3
|
||
}],
|
||
"▄": [{
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"▅": [{
|
||
x: 0,
|
||
y: 3,
|
||
w: 8,
|
||
h: 5
|
||
}],
|
||
"▆": [{
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 6
|
||
}],
|
||
"▇": [{
|
||
x: 0,
|
||
y: 1,
|
||
w: 8,
|
||
h: 7
|
||
}],
|
||
"█": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 8
|
||
}],
|
||
"▉": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 7,
|
||
h: 8
|
||
}],
|
||
"▊": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 6,
|
||
h: 8
|
||
}],
|
||
"▋": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 5,
|
||
h: 8
|
||
}],
|
||
"▌": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}],
|
||
"▍": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 3,
|
||
h: 8
|
||
}],
|
||
"▎": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 2,
|
||
h: 8
|
||
}],
|
||
"▏": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"▐": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}],
|
||
"▔": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"▕": [{
|
||
x: 7,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"▖": [{
|
||
x: 0,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▗": [{
|
||
x: 4,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▘": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▙": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"▚": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}, {
|
||
x: 4,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▛": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}, {
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▜": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 4
|
||
}, {
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}],
|
||
"▝": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▞": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 4
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 4,
|
||
h: 4
|
||
}],
|
||
"▟": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 4,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 4
|
||
}],
|
||
"🭰": [{
|
||
x: 1,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭱": [{
|
||
x: 2,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭲": [{
|
||
x: 3,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭳": [{
|
||
x: 4,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭴": [{
|
||
x: 5,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭵": [{
|
||
x: 6,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}],
|
||
"🭶": [{
|
||
x: 0,
|
||
y: 1,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭷": [{
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭸": [{
|
||
x: 0,
|
||
y: 3,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭹": [{
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭺": [{
|
||
x: 0,
|
||
y: 5,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭻": [{
|
||
x: 0,
|
||
y: 6,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭼": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭽": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭾": [{
|
||
x: 7,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🭿": [{
|
||
x: 7,
|
||
y: 0,
|
||
w: 1,
|
||
h: 8
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🮀": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🮁": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 8,
|
||
h: 1
|
||
}, {
|
||
x: 0,
|
||
y: 7,
|
||
w: 8,
|
||
h: 1
|
||
}],
|
||
"🮂": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 2
|
||
}],
|
||
"🮃": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 3
|
||
}],
|
||
"🮄": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 5
|
||
}],
|
||
"🮅": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 6
|
||
}],
|
||
"🮆": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 8,
|
||
h: 7
|
||
}],
|
||
"🮇": [{
|
||
x: 6,
|
||
y: 0,
|
||
w: 2,
|
||
h: 8
|
||
}],
|
||
"🮈": [{
|
||
x: 5,
|
||
y: 0,
|
||
w: 3,
|
||
h: 8
|
||
}],
|
||
"🮉": [{
|
||
x: 3,
|
||
y: 0,
|
||
w: 5,
|
||
h: 8
|
||
}],
|
||
"🮊": [{
|
||
x: 2,
|
||
y: 0,
|
||
w: 6,
|
||
h: 8
|
||
}],
|
||
"🮋": [{
|
||
x: 1,
|
||
y: 0,
|
||
w: 7,
|
||
h: 8
|
||
}],
|
||
"🮕": [{
|
||
x: 0,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 2,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 2,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}],
|
||
"🮖": [{
|
||
x: 2,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 0,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 2,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 2,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 6,
|
||
y: 4,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}, {
|
||
x: 4,
|
||
y: 6,
|
||
w: 2,
|
||
h: 2
|
||
}],
|
||
"🮗": [{
|
||
x: 0,
|
||
y: 2,
|
||
w: 8,
|
||
h: 2
|
||
}, {
|
||
x: 0,
|
||
y: 6,
|
||
w: 8,
|
||
h: 2
|
||
}]
|
||
};
|
||
const r = {
|
||
"░": [
|
||
[1, 0, 0, 0],
|
||
[0, 0, 0, 0],
|
||
[0, 0, 1, 0],
|
||
[0, 0, 0, 0]
|
||
],
|
||
"▒": [
|
||
[1, 0],
|
||
[0, 0],
|
||
[0, 1],
|
||
[0, 0]
|
||
],
|
||
"▓": [
|
||
[0, 1],
|
||
[1, 1],
|
||
[1, 0],
|
||
[1, 1]
|
||
]
|
||
};
|
||
t.boxDrawingDefinitions = {
|
||
"─": {
|
||
1: "M0,.5 L1,.5"
|
||
},
|
||
"━": {
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"│": {
|
||
1: "M.5,0 L.5,1"
|
||
},
|
||
"┃": {
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"┌": {
|
||
1: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┏": {
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┐": {
|
||
1: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"┓": {
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"└": {
|
||
1: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┗": {
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┘": {
|
||
1: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"┛": {
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"├": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L1,.5"
|
||
},
|
||
"┣": {
|
||
3: "M.5,0 L.5,1 M.5,.5 L1,.5"
|
||
},
|
||
"┤": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L0,.5"
|
||
},
|
||
"┫": {
|
||
3: "M.5,0 L.5,1 M.5,.5 L0,.5"
|
||
},
|
||
"┬": {
|
||
1: "M0,.5 L1,.5 M.5,.5 L.5,1"
|
||
},
|
||
"┳": {
|
||
3: "M0,.5 L1,.5 M.5,.5 L.5,1"
|
||
},
|
||
"┴": {
|
||
1: "M0,.5 L1,.5 M.5,.5 L.5,0"
|
||
},
|
||
"┻": {
|
||
3: "M0,.5 L1,.5 M.5,.5 L.5,0"
|
||
},
|
||
"┼": {
|
||
1: "M0,.5 L1,.5 M.5,0 L.5,1"
|
||
},
|
||
"╋": {
|
||
3: "M0,.5 L1,.5 M.5,0 L.5,1"
|
||
},
|
||
"╴": {
|
||
1: "M.5,.5 L0,.5"
|
||
},
|
||
"╸": {
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"╵": {
|
||
1: "M.5,.5 L.5,0"
|
||
},
|
||
"╹": {
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"╶": {
|
||
1: "M.5,.5 L1,.5"
|
||
},
|
||
"╺": {
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"╷": {
|
||
1: "M.5,.5 L.5,1"
|
||
},
|
||
"╻": {
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"═": {
|
||
1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"║": {
|
||
1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1`
|
||
},
|
||
"╒": {
|
||
1: (e, t) => `M.5,1 L.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╓": {
|
||
1: (e, t) => `M${.5 - e},1 L${.5 - e},.5 L1,.5 M${.5 + e},.5 L${.5 + e},1`
|
||
},
|
||
"╔": {
|
||
1: (e, t) => `M1,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1`
|
||
},
|
||
"╕": {
|
||
1: (e, t) => `M0,${.5 - t} L.5,${.5 - t} L.5,1 M0,${.5 + t} L.5,${.5 + t}`
|
||
},
|
||
"╖": {
|
||
1: (e, t) => `M${.5 + e},1 L${.5 + e},.5 L0,.5 M${.5 - e},.5 L${.5 - e},1`
|
||
},
|
||
"╗": {
|
||
1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},1`
|
||
},
|
||
"╘": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 + t} L1,${.5 + t} M.5,${.5 - t} L1,${.5 - t}`
|
||
},
|
||
"╙": {
|
||
1: (e, t) => `M1,.5 L${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0`
|
||
},
|
||
"╚": {
|
||
1: (e, t) => `M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0 M1,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},0`
|
||
},
|
||
"╛": {
|
||
1: (e, t) => `M0,${.5 + t} L.5,${.5 + t} L.5,0 M0,${.5 - t} L.5,${.5 - t}`
|
||
},
|
||
"╜": {
|
||
1: (e, t) => `M0,.5 L${.5 + e},.5 L${.5 + e},0 M${.5 - e},.5 L${.5 - e},0`
|
||
},
|
||
"╝": {
|
||
1: (e, t) => `M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M0,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},0`
|
||
},
|
||
"╞": {
|
||
1: (e, t) => `M.5,0 L.5,1 M.5,${.5 - t} L1,${.5 - t} M.5,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╟": {
|
||
1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1 M${.5 + e},.5 L1,.5`
|
||
},
|
||
"╠": {
|
||
1: (e, t) => `M${.5 - e},0 L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0`
|
||
},
|
||
"╡": {
|
||
1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L.5,${.5 - t} M0,${.5 + t} L.5,${.5 + t}`
|
||
},
|
||
"╢": {
|
||
1: (e, t) => `M0,.5 L${.5 - e},.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1`
|
||
},
|
||
"╣": {
|
||
1: (e, t) => `M${.5 + e},0 L${.5 + e},1 M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0`
|
||
},
|
||
"╤": {
|
||
1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t} M.5,${.5 + t} L.5,1`
|
||
},
|
||
"╥": {
|
||
1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},1 M${.5 + e},.5 L${.5 + e},1`
|
||
},
|
||
"╦": {
|
||
1: (e, t) => `M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1`
|
||
},
|
||
"╧": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 - t} M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╨": {
|
||
1: (e, t) => `M0,.5 L1,.5 M${.5 - e},.5 L${.5 - e},0 M${.5 + e},.5 L${.5 + e},0`
|
||
},
|
||
"╩": {
|
||
1: (e, t) => `M0,${.5 + t} L1,${.5 + t} M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0`
|
||
},
|
||
"╪": {
|
||
1: (e, t) => `M.5,0 L.5,1 M0,${.5 - t} L1,${.5 - t} M0,${.5 + t} L1,${.5 + t}`
|
||
},
|
||
"╫": {
|
||
1: (e, t) => `M0,.5 L1,.5 M${.5 - e},0 L${.5 - e},1 M${.5 + e},0 L${.5 + e},1`
|
||
},
|
||
"╬": {
|
||
1: (e, t) => `M0,${.5 + t} L${.5 - e},${.5 + t} L${.5 - e},1 M1,${.5 + t} L${.5 + e},${.5 + t} L${.5 + e},1 M0,${.5 - t} L${.5 - e},${.5 - t} L${.5 - e},0 M1,${.5 - t} L${.5 + e},${.5 - t} L${.5 + e},0`
|
||
},
|
||
"╱": {
|
||
1: "M1,0 L0,1"
|
||
},
|
||
"╲": {
|
||
1: "M0,0 L1,1"
|
||
},
|
||
"╳": {
|
||
1: "M1,0 L0,1 M0,0 L1,1"
|
||
},
|
||
"╼": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"╽": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"╾": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"╿": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┍": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┎": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┑": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┒": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┕": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┖": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┙": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┚": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┝": {
|
||
1: "M.5,0 L.5,1",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┞": {
|
||
1: "M0.5,1 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┟": {
|
||
1: "M.5,0 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┠": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"┡": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┢": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┥": {
|
||
1: "M.5,0 L.5,1",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┦": {
|
||
1: "M0,.5 L.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┧": {
|
||
1: "M.5,0 L.5,.5 L0,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┨": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"┩": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"┪": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"┭": {
|
||
1: "M0.5,1 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┮": {
|
||
1: "M0,.5 L.5,.5 L.5,1",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┯": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"┰": {
|
||
1: "M0,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"┱": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"┲": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"┵": {
|
||
1: "M.5,0 L.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┶": {
|
||
1: "M.5,0 L.5,.5 L0,.5",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┷": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"┸": {
|
||
1: "M0,.5 L1,.5",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"┹": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"┺": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"┽": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L1,.5",
|
||
3: "M.5,.5 L0,.5"
|
||
},
|
||
"┾": {
|
||
1: "M.5,0 L.5,1 M.5,.5 L0,.5",
|
||
3: "M.5,.5 L1,.5"
|
||
},
|
||
"┿": {
|
||
1: "M.5,0 L.5,1",
|
||
3: "M0,.5 L1,.5"
|
||
},
|
||
"╀": {
|
||
1: "M0,.5 L1,.5 M.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0"
|
||
},
|
||
"╁": {
|
||
1: "M.5,.5 L.5,0 M0,.5 L1,.5",
|
||
3: "M.5,.5 L.5,1"
|
||
},
|
||
"╂": {
|
||
1: "M0,.5 L1,.5",
|
||
3: "M.5,0 L.5,1"
|
||
},
|
||
"╃": {
|
||
1: "M0.5,1 L.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,.5 L0,.5"
|
||
},
|
||
"╄": {
|
||
1: "M0,.5 L.5,.5 L.5,1",
|
||
3: "M.5,0 L.5,.5 L1,.5"
|
||
},
|
||
"╅": {
|
||
1: "M.5,0 L.5,.5 L1,.5",
|
||
3: "M0,.5 L.5,.5 L.5,1"
|
||
},
|
||
"╆": {
|
||
1: "M.5,0 L.5,.5 L0,.5",
|
||
3: "M0.5,1 L.5,.5 L1,.5"
|
||
},
|
||
"╇": {
|
||
1: "M.5,.5 L.5,1",
|
||
3: "M.5,.5 L.5,0 M0,.5 L1,.5"
|
||
},
|
||
"╈": {
|
||
1: "M.5,.5 L.5,0",
|
||
3: "M0,.5 L1,.5 M.5,.5 L.5,1"
|
||
},
|
||
"╉": {
|
||
1: "M.5,.5 L1,.5",
|
||
3: "M.5,0 L.5,1 M.5,.5 L0,.5"
|
||
},
|
||
"╊": {
|
||
1: "M.5,.5 L0,.5",
|
||
3: "M.5,0 L.5,1 M.5,.5 L1,.5"
|
||
},
|
||
"╌": {
|
||
1: "M.1,.5 L.4,.5 M.6,.5 L.9,.5"
|
||
},
|
||
"╍": {
|
||
3: "M.1,.5 L.4,.5 M.6,.5 L.9,.5"
|
||
},
|
||
"┄": {
|
||
1: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"
|
||
},
|
||
"┅": {
|
||
3: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"
|
||
},
|
||
"┈": {
|
||
1: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"
|
||
},
|
||
"┉": {
|
||
3: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"
|
||
},
|
||
"╎": {
|
||
1: "M.5,.1 L.5,.4 M.5,.6 L.5,.9"
|
||
},
|
||
"╏": {
|
||
3: "M.5,.1 L.5,.4 M.5,.6 L.5,.9"
|
||
},
|
||
"┆": {
|
||
1: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"
|
||
},
|
||
"┇": {
|
||
3: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"
|
||
},
|
||
"┊": {
|
||
1: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"
|
||
},
|
||
"┋": {
|
||
3: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"
|
||
},
|
||
"╭": {
|
||
1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,1,.5`
|
||
},
|
||
"╮": {
|
||
1: (e, t) => `M.5,1 L.5,${.5 + t / .15 * .5} C.5,${.5 + t / .15 * .5},.5,.5,0,.5`
|
||
},
|
||
"╯": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,0,.5`
|
||
},
|
||
"╰": {
|
||
1: (e, t) => `M.5,0 L.5,${.5 - t / .15 * .5} C.5,${.5 - t / .15 * .5},.5,.5,1,.5`
|
||
}
|
||
}, t.powerlineDefinitions = {
|
||
"": {
|
||
d: "M0,0 L1,.5 L0,1",
|
||
type: 0,
|
||
rightPadding: 2
|
||
},
|
||
"": {
|
||
d: "M-1,-.5 L1,.5 L-1,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M1,0 L0,.5 L1,1",
|
||
type: 0,
|
||
leftPadding: 2
|
||
},
|
||
"": {
|
||
d: "M2,-.5 L0,.5 L2,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0",
|
||
type: 0,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0",
|
||
type: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0",
|
||
type: 0,
|
||
leftPadding: 1
|
||
},
|
||
"": {
|
||
d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0",
|
||
type: 1,
|
||
leftPadding: 1
|
||
},
|
||
"": {
|
||
d: "M-.5,-.5 L1.5,1.5 L-.5,1.5",
|
||
type: 0
|
||
},
|
||
"": {
|
||
d: "M-.5,-.5 L1.5,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M1.5,-.5 L-.5,1.5 L1.5,1.5",
|
||
type: 0
|
||
},
|
||
"": {
|
||
d: "M1.5,-.5 L-.5,1.5 L-.5,-.5",
|
||
type: 0
|
||
},
|
||
"": {
|
||
d: "M1.5,-.5 L-.5,1.5",
|
||
type: 1,
|
||
leftPadding: 1,
|
||
rightPadding: 1
|
||
},
|
||
"": {
|
||
d: "M-.5,-.5 L1.5,1.5 L1.5,-.5",
|
||
type: 0
|
||
}
|
||
}, t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.powerlineDefinitions[""] = t.powerlineDefinitions[""], t.tryDrawCustomChar = function(e, i, o, c, l, d, _, u) {
|
||
const f = t.blockElementDefinitions[i];
|
||
if (f) return function(e, t, i, s, r, n) {
|
||
for (let o = 0; o < t.length; o++) {
|
||
const a = t[o],
|
||
h = r / 8,
|
||
c = n / 8;
|
||
e.fillRect(i + a.x * h, s + a.y * c, a.w * h, a.h * c)
|
||
}
|
||
}(e, f, o, c, l, d), !0;
|
||
const v = r[i];
|
||
if (v) return function(e, t, i, r, o, a) {
|
||
let h = n.get(t);
|
||
h || (h = new Map, n.set(t, h));
|
||
const c = e.fillStyle;
|
||
if ("string" != typeof c) throw new Error(`Unexpected fillStyle type "${c}"`);
|
||
let l = h.get(c);
|
||
if (!l) {
|
||
const i = t[0].length,
|
||
r = t.length,
|
||
n = e.canvas.ownerDocument.createElement("canvas");
|
||
n.width = i, n.height = r;
|
||
const o = (0, s.throwIfFalsy)(n.getContext("2d")),
|
||
a = new ImageData(i, r);
|
||
let d, _, u, f;
|
||
if (c.startsWith("#")) d = parseInt(c.slice(1, 3), 16), _ = parseInt(c.slice(3, 5), 16), u = parseInt(c.slice(5, 7), 16), f = c.length > 7 && parseInt(c.slice(7, 9), 16) || 1;
|
||
else {
|
||
if (!c.startsWith("rgba")) throw new Error(`Unexpected fillStyle color format "${c}" when drawing pattern glyph`);
|
||
[d, _, u, f] = c.substring(5, c.length - 1).split(",").map((e => parseFloat(e)))
|
||
}
|
||
for (let e = 0; e < r; e++)
|
||
for (let s = 0; s < i; s++) a.data[4 * (e * i + s)] = d, a.data[4 * (e * i + s) + 1] = _, a.data[4 * (e * i + s) + 2] = u, a.data[4 * (e * i + s) + 3] = t[e][s] * (255 * f);
|
||
o.putImageData(a, 0, 0), l = (0, s.throwIfFalsy)(e.createPattern(n, null)), h.set(c, l)
|
||
}
|
||
e.fillStyle = l, e.fillRect(i, r, o, a)
|
||
}(e, v, o, c, l, d), !0;
|
||
const g = t.boxDrawingDefinitions[i];
|
||
if (g) return function(e, t, i, s, r, n, o) {
|
||
e.strokeStyle = e.fillStyle;
|
||
for (const [c, l] of Object.entries(t)) {
|
||
let t;
|
||
e.beginPath(), e.lineWidth = o * Number.parseInt(c), t = "function" == typeof l ? l(.15, .15 / n * r) : l;
|
||
for (const c of t.split(" ")) {
|
||
const t = c[0],
|
||
l = a[t];
|
||
if (!l) {
|
||
console.error(`Could not find drawing instructions for "${t}"`);
|
||
continue
|
||
}
|
||
const d = c.substring(1).split(",");
|
||
d[0] && d[1] && l(e, h(d, r, n, i, s, !0, o))
|
||
}
|
||
e.stroke(), e.closePath()
|
||
}
|
||
}(e, g, o, c, l, d, u), !0;
|
||
const p = t.powerlineDefinitions[i];
|
||
return !!p && (function(e, t, i, s, r, n, o, c) {
|
||
const l = new Path2D;
|
||
l.rect(i, s, r, n), e.clip(l), e.beginPath();
|
||
const d = o / 12;
|
||
e.lineWidth = c * d;
|
||
for (const o of t.d.split(" ")) {
|
||
const l = o[0],
|
||
_ = a[l];
|
||
if (!_) {
|
||
console.error(`Could not find drawing instructions for "${l}"`);
|
||
continue
|
||
}
|
||
const u = o.substring(1).split(",");
|
||
u[0] && u[1] && _(e, h(u, r, n, i, s, !1, c, (t.leftPadding ?? 0) * (d / 2), (t.rightPadding ?? 0) * (d / 2)))
|
||
}
|
||
1 === t.type ? (e.strokeStyle = e.fillStyle, e.stroke()) : e.fill(), e.closePath()
|
||
}(e, p, o, c, l, d, _, u), !0)
|
||
};
|
||
const n = new Map;
|
||
|
||
function o(e, t, i = 0) {
|
||
return Math.max(Math.min(e, t), i)
|
||
}
|
||
const a = {
|
||
C: (e, t) => e.bezierCurveTo(t[0], t[1], t[2], t[3], t[4], t[5]),
|
||
L: (e, t) => e.lineTo(t[0], t[1]),
|
||
M: (e, t) => e.moveTo(t[0], t[1])
|
||
};
|
||
|
||
function h(e, t, i, s, r, n, a, h = 0, c = 0) {
|
||
const l = e.map((e => parseFloat(e) || parseInt(e)));
|
||
if (l.length < 2) throw new Error("Too few arguments for instruction");
|
||
for (let e = 0; e < l.length; e += 2) l[e] *= t - h * a - c * a, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, t, 0)), l[e] += s + h * a;
|
||
for (let e = 1; e < l.length; e += 2) l[e] *= i, n && 0 !== l[e] && (l[e] = o(Math.round(l[e] + .5) - .5, i, 0)), l[e] += r;
|
||
return l
|
||
}
|
||
},
|
||
56: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.observeDevicePixelDimensions = void 0;
|
||
const s = i(859);
|
||
t.observeDevicePixelDimensions = function(e, t, i) {
|
||
let r = new t.ResizeObserver((t => {
|
||
const s = t.find((t => t.target === e));
|
||
if (!s) return;
|
||
if (!("devicePixelContentBoxSize" in s)) return r?.disconnect(), void(r = void 0);
|
||
const n = s.devicePixelContentBoxSize[0].inlineSize,
|
||
o = s.devicePixelContentBoxSize[0].blockSize;
|
||
n > 0 && o > 0 && i(n, o)
|
||
}));
|
||
try {
|
||
r.observe(e, {
|
||
box: ["device-pixel-content-box"]
|
||
})
|
||
} catch {
|
||
r.disconnect(), r = void 0
|
||
}
|
||
return (0, s.toDisposable)((() => r?.disconnect()))
|
||
}
|
||
},
|
||
374: (e, t) => {
|
||
function i(e) {
|
||
return 57508 <= e && e <= 57558
|
||
}
|
||
|
||
function s(e) {
|
||
return e >= 128512 && e <= 128591 || e >= 127744 && e <= 128511 || e >= 128640 && e <= 128767 || e >= 9728 && e <= 9983 || e >= 9984 && e <= 10175 || e >= 65024 && e <= 65039 || e >= 129280 && e <= 129535 || e >= 127462 && e <= 127487
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.computeNextVariantOffset = t.createRenderDimensions = t.treatGlyphAsBackgroundColor = t.allowRescaling = t.isEmoji = t.isRestrictedPowerlineGlyph = t.isPowerlineGlyph = t.throwIfFalsy = void 0, t.throwIfFalsy = function(e) {
|
||
if (!e) throw new Error("value must not be falsy");
|
||
return e
|
||
}, t.isPowerlineGlyph = i, t.isRestrictedPowerlineGlyph = function(e) {
|
||
return 57520 <= e && e <= 57527
|
||
}, t.isEmoji = s, t.allowRescaling = function(e, t, r, n) {
|
||
return 1 === t && r > Math.ceil(1.5 * n) && void 0 !== e && e > 255 && !s(e) && !i(e) && ! function(e) {
|
||
return 57344 <= e && e <= 63743
|
||
}(e)
|
||
}, t.treatGlyphAsBackgroundColor = function(e) {
|
||
return i(e) || function(e) {
|
||
return 9472 <= e && e <= 9631
|
||
}(e)
|
||
}, t.createRenderDimensions = function() {
|
||
return {
|
||
css: {
|
||
canvas: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
cell: {
|
||
width: 0,
|
||
height: 0
|
||
}
|
||
},
|
||
device: {
|
||
canvas: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
cell: {
|
||
width: 0,
|
||
height: 0
|
||
},
|
||
char: {
|
||
width: 0,
|
||
height: 0,
|
||
left: 0,
|
||
top: 0
|
||
}
|
||
}
|
||
}
|
||
}, t.computeNextVariantOffset = function(e, t, i = 0) {
|
||
return (e - (2 * Math.round(t) - i)) % (2 * Math.round(t))
|
||
}
|
||
},
|
||
296: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.createSelectionRenderModel = void 0;
|
||
class i {
|
||
constructor() {
|
||
this.clear()
|
||
}
|
||
clear() {
|
||
this.hasSelection = !1, this.columnSelectMode = !1, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0
|
||
}
|
||
update(e, t, i, s = !1) {
|
||
if (this.selectionStart = t, this.selectionEnd = i, !t || !i || t[0] === i[0] && t[1] === i[1]) return void this.clear();
|
||
const r = e.buffers.active.ydisp,
|
||
n = t[1] - r,
|
||
o = i[1] - r,
|
||
a = Math.max(n, 0),
|
||
h = Math.min(o, e.rows - 1);
|
||
a >= e.rows || h < 0 ? this.clear() : (this.hasSelection = !0, this.columnSelectMode = s, this.viewportStartRow = n, this.viewportEndRow = o, this.viewportCappedStartRow = a, this.viewportCappedEndRow = h, this.startCol = t[0], this.endCol = i[0])
|
||
}
|
||
isCellSelected(e, t, i) {
|
||
return !!this.hasSelection && (i -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && i >= this.viewportCappedStartRow && t < this.endCol && i <= this.viewportCappedEndRow : t < this.startCol && i >= this.viewportCappedStartRow && t >= this.endCol && i <= this.viewportCappedEndRow : i > this.viewportStartRow && i < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && i === this.viewportStartRow && t >= this.startCol)
|
||
}
|
||
}
|
||
t.createSelectionRenderModel = function() {
|
||
return new i
|
||
}
|
||
},
|
||
509: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.TextureAtlas = void 0;
|
||
const s = i(237),
|
||
r = i(860),
|
||
n = i(374),
|
||
o = i(160),
|
||
a = i(345),
|
||
h = i(485),
|
||
c = i(385),
|
||
l = i(147),
|
||
d = i(855),
|
||
_ = {
|
||
texturePage: 0,
|
||
texturePosition: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
texturePositionClipSpace: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
offset: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
size: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
sizeClipSpace: {
|
||
x: 0,
|
||
y: 0
|
||
}
|
||
};
|
||
let u;
|
||
class f {
|
||
get pages() {
|
||
return this._pages
|
||
}
|
||
constructor(e, t, i) {
|
||
this._document = e, this._config = t, this._unicodeService = i, this._didWarmUp = !1, this._cacheMap = new h.FourKeyMap, this._cacheMapCombined = new h.FourKeyMap, this._pages = [], this._activePages = [], this._workBoundingBox = {
|
||
top: 0,
|
||
left: 0,
|
||
bottom: 0,
|
||
right: 0
|
||
}, this._workAttributeData = new l.AttributeData, this._textureSize = 512, this._onAddTextureAtlasCanvas = new a.EventEmitter, this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event, this._onRemoveTextureAtlasCanvas = new a.EventEmitter, this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event, this._requestClearModel = !1, this._createNewPage(), this._tmpCanvas = p(e, 4 * this._config.deviceCellWidth + 4, this._config.deviceCellHeight + 4), this._tmpCtx = (0, n.throwIfFalsy)(this._tmpCanvas.getContext("2d", {
|
||
alpha: this._config.allowTransparency,
|
||
willReadFrequently: !0
|
||
}))
|
||
}
|
||
dispose() {
|
||
for (const e of this.pages) e.canvas.remove();
|
||
this._onAddTextureAtlasCanvas.dispose()
|
||
}
|
||
warmUp() {
|
||
this._didWarmUp || (this._doWarmUp(), this._didWarmUp = !0)
|
||
}
|
||
_doWarmUp() {
|
||
const e = new c.IdleTaskQueue;
|
||
for (let t = 33; t < 126; t++) e.enqueue((() => {
|
||
if (!this._cacheMap.get(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT)) {
|
||
const e = this._drawToCache(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT);
|
||
this._cacheMap.set(t, d.DEFAULT_COLOR, d.DEFAULT_COLOR, d.DEFAULT_EXT, e)
|
||
}
|
||
}))
|
||
}
|
||
beginFrame() {
|
||
return this._requestClearModel
|
||
}
|
||
clearTexture() {
|
||
if (0 !== this._pages[0].currentRow.x || 0 !== this._pages[0].currentRow.y) {
|
||
for (const e of this._pages) e.clear();
|
||
this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = !1
|
||
}
|
||
}
|
||
_createNewPage() {
|
||
if (f.maxAtlasPages && this._pages.length >= Math.max(4, f.maxAtlasPages)) {
|
||
const e = this._pages.filter((e => 2 * e.canvas.width <= (f.maxTextureSize || 4096))).sort(((e, t) => t.canvas.width !== e.canvas.width ? t.canvas.width - e.canvas.width : t.percentageUsed - e.percentageUsed));
|
||
let t = -1,
|
||
i = 0;
|
||
for (let s = 0; s < e.length; s++)
|
||
if (e[s].canvas.width !== i) t = s, i = e[s].canvas.width;
|
||
else if (s - t == 3) break;
|
||
const s = e.slice(t, t + 4),
|
||
r = s.map((e => e.glyphs[0].texturePage)).sort(((e, t) => e > t ? 1 : -1)),
|
||
n = this.pages.length - s.length,
|
||
o = this._mergePages(s, n);
|
||
o.version++;
|
||
for (let e = r.length - 1; e >= 0; e--) this._deletePage(r[e]);
|
||
this.pages.push(o), this._requestClearModel = !0, this._onAddTextureAtlasCanvas.fire(o.canvas)
|
||
}
|
||
const e = new v(this._document, this._textureSize);
|
||
return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e
|
||
}
|
||
_mergePages(e, t) {
|
||
const i = 2 * e[0].canvas.width,
|
||
s = new v(this._document, i, e);
|
||
for (const [r, n] of e.entries()) {
|
||
const e = r * n.canvas.width % i,
|
||
o = Math.floor(r / 2) * n.canvas.height;
|
||
s.ctx.drawImage(n.canvas, e, o);
|
||
for (const s of n.glyphs) s.texturePage = t, s.sizeClipSpace.x = s.size.x / i, s.sizeClipSpace.y = s.size.y / i, s.texturePosition.x += e, s.texturePosition.y += o, s.texturePositionClipSpace.x = s.texturePosition.x / i, s.texturePositionClipSpace.y = s.texturePosition.y / i;
|
||
this._onRemoveTextureAtlasCanvas.fire(n.canvas);
|
||
const a = this._activePages.indexOf(n); - 1 !== a && this._activePages.splice(a, 1)
|
||
}
|
||
return s
|
||
}
|
||
_deletePage(e) {
|
||
this._pages.splice(e, 1);
|
||
for (let t = e; t < this._pages.length; t++) {
|
||
const e = this._pages[t];
|
||
for (const t of e.glyphs) t.texturePage--;
|
||
e.version++
|
||
}
|
||
}
|
||
getRasterizedGlyphCombinedChar(e, t, i, s, r) {
|
||
return this._getFromCacheMap(this._cacheMapCombined, e, t, i, s, r)
|
||
}
|
||
getRasterizedGlyph(e, t, i, s, r) {
|
||
return this._getFromCacheMap(this._cacheMap, e, t, i, s, r)
|
||
}
|
||
_getFromCacheMap(e, t, i, s, r, n = !1) {
|
||
return u = e.get(t, i, s, r), u || (u = this._drawToCache(t, i, s, r, n), e.set(t, i, s, r, u)), u
|
||
}
|
||
_getColorFromAnsiIndex(e) {
|
||
if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e);
|
||
return this._config.colors.ansi[e]
|
||
}
|
||
_getBackgroundColor(e, t, i, s) {
|
||
if (this._config.allowTransparency) return o.NULL_COLOR;
|
||
let r;
|
||
switch (e) {
|
||
case 16777216:
|
||
case 33554432:
|
||
r = this._getColorFromAnsiIndex(t);
|
||
break;
|
||
case 50331648:
|
||
const e = l.AttributeData.toColorRGB(t);
|
||
r = o.channels.toColor(e[0], e[1], e[2]);
|
||
break;
|
||
default:
|
||
r = i ? o.color.opaque(this._config.colors.foreground) : this._config.colors.background
|
||
}
|
||
return r
|
||
}
|
||
_getForegroundColor(e, t, i, r, n, a, h, c, d, _) {
|
||
const u = this._getMinimumContrastColor(e, t, i, r, n, a, h, d, c, _);
|
||
if (u) return u;
|
||
let f;
|
||
switch (n) {
|
||
case 16777216:
|
||
case 33554432:
|
||
this._config.drawBoldTextInBrightColors && d && a < 8 && (a += 8), f = this._getColorFromAnsiIndex(a);
|
||
break;
|
||
case 50331648:
|
||
const e = l.AttributeData.toColorRGB(a);
|
||
f = o.channels.toColor(e[0], e[1], e[2]);
|
||
break;
|
||
default:
|
||
f = h ? this._config.colors.background : this._config.colors.foreground
|
||
}
|
||
return this._config.allowTransparency && (f = o.color.opaque(f)), c && (f = o.color.multiplyOpacity(f, s.DIM_OPACITY)), f
|
||
}
|
||
_resolveBackgroundRgba(e, t, i) {
|
||
switch (e) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return this._getColorFromAnsiIndex(t).rgba;
|
||
case 50331648:
|
||
return t << 8;
|
||
default:
|
||
return i ? this._config.colors.foreground.rgba : this._config.colors.background.rgba
|
||
}
|
||
}
|
||
_resolveForegroundRgba(e, t, i, s) {
|
||
switch (e) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return this._config.drawBoldTextInBrightColors && s && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba;
|
||
case 50331648:
|
||
return t << 8;
|
||
default:
|
||
return i ? this._config.colors.background.rgba : this._config.colors.foreground.rgba
|
||
}
|
||
}
|
||
_getMinimumContrastColor(e, t, i, s, r, n, a, h, c, l) {
|
||
if (1 === this._config.minimumContrastRatio || l) return;
|
||
const d = this._getContrastCache(c),
|
||
_ = d.getColor(e, s);
|
||
if (void 0 !== _) return _ || void 0;
|
||
const u = this._resolveBackgroundRgba(t, i, a),
|
||
f = this._resolveForegroundRgba(r, n, a, h),
|
||
v = o.rgba.ensureContrastRatio(u, f, this._config.minimumContrastRatio / (c ? 2 : 1));
|
||
if (!v) return void d.setColor(e, s, null);
|
||
const g = o.channels.toColor(v >> 24 & 255, v >> 16 & 255, v >> 8 & 255);
|
||
return d.setColor(e, s, g), g
|
||
}
|
||
_getContrastCache(e) {
|
||
return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache
|
||
}
|
||
_drawToCache(e, t, i, o, a = !1) {
|
||
const h = "number" == typeof e ? String.fromCharCode(e) : e,
|
||
c = Math.min(this._config.deviceCellWidth * Math.max(h.length, 2) + 4, this._textureSize);
|
||
this._tmpCanvas.width < c && (this._tmpCanvas.width = c);
|
||
const d = Math.min(this._config.deviceCellHeight + 8, this._textureSize);
|
||
if (this._tmpCanvas.height < d && (this._tmpCanvas.height = d), this._tmpCtx.save(), this._workAttributeData.fg = i, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = o, this._workAttributeData.isInvisible()) return _;
|
||
const u = !!this._workAttributeData.isBold(),
|
||
v = !!this._workAttributeData.isInverse(),
|
||
p = !!this._workAttributeData.isDim(),
|
||
m = !!this._workAttributeData.isItalic(),
|
||
C = !!this._workAttributeData.isUnderline(),
|
||
S = !!this._workAttributeData.isStrikethrough(),
|
||
b = !!this._workAttributeData.isOverline();
|
||
let w = this._workAttributeData.getFgColor(),
|
||
y = this._workAttributeData.getFgColorMode(),
|
||
L = this._workAttributeData.getBgColor(),
|
||
x = this._workAttributeData.getBgColorMode();
|
||
if (v) {
|
||
const e = w;
|
||
w = L, L = e;
|
||
const t = y;
|
||
y = x, x = t
|
||
}
|
||
const E = this._getBackgroundColor(x, L, v, p);
|
||
this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over";
|
||
const R = u ? this._config.fontWeightBold : this._config.fontWeight,
|
||
M = m ? "italic" : "";
|
||
this._tmpCtx.font = `${M} ${R} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = s.TEXT_BASELINE;
|
||
const A = 1 === h.length && (0, n.isPowerlineGlyph)(h.charCodeAt(0)),
|
||
D = 1 === h.length && (0, n.isRestrictedPowerlineGlyph)(h.charCodeAt(0)),
|
||
k = this._getForegroundColor(t, x, L, i, y, w, v, p, u, (0, n.treatGlyphAsBackgroundColor)(h.charCodeAt(0)));
|
||
this._tmpCtx.fillStyle = k.css;
|
||
const T = D ? 0 : 4;
|
||
let B = !1;
|
||
!1 !== this._config.customGlyphs && (B = (0, r.tryDrawCustomChar)(this._tmpCtx, h, T, T, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.fontSize, this._config.devicePixelRatio));
|
||
let O, P = !A;
|
||
if (O = "number" == typeof e ? this._unicodeService.wcwidth(e) : this._unicodeService.getStringCellWidth(e), C) {
|
||
this._tmpCtx.save();
|
||
const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)),
|
||
t = e % 2 == 1 ? .5 : 0;
|
||
if (this._tmpCtx.lineWidth = e, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle;
|
||
else if (this._workAttributeData.isUnderlineColorRGB()) P = !1, this._tmpCtx.strokeStyle = `rgb(${l.AttributeData.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`;
|
||
else {
|
||
P = !1;
|
||
let e = this._workAttributeData.getUnderlineColor();
|
||
this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && e < 8 && (e += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(e).css
|
||
}
|
||
this._tmpCtx.beginPath();
|
||
const i = T,
|
||
s = Math.ceil(T + this._config.deviceCharHeight) - t - (a ? 2 * e : 0),
|
||
r = s + e,
|
||
o = s + 2 * e;
|
||
let c = this._workAttributeData.getUnderlineVariantOffset();
|
||
for (let a = 0; a < O; a++) {
|
||
this._tmpCtx.save();
|
||
const h = i + a * this._config.deviceCellWidth,
|
||
l = i + (a + 1) * this._config.deviceCellWidth,
|
||
d = h + this._config.deviceCellWidth / 2;
|
||
switch (this._workAttributeData.extended.underlineStyle) {
|
||
case 2:
|
||
this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s), this._tmpCtx.moveTo(h, o), this._tmpCtx.lineTo(l, o);
|
||
break;
|
||
case 3:
|
||
const i = e <= 1 ? o : Math.ceil(T + this._config.deviceCharHeight - e / 2) - t,
|
||
a = e <= 1 ? s : Math.ceil(T + this._config.deviceCharHeight + e / 2) - t,
|
||
_ = new Path2D;
|
||
_.rect(h, s, this._config.deviceCellWidth, o - s), this._tmpCtx.clip(_), this._tmpCtx.moveTo(h - this._config.deviceCellWidth / 2, r), this._tmpCtx.bezierCurveTo(h - this._config.deviceCellWidth / 2, a, h, a, h, r), this._tmpCtx.bezierCurveTo(h, i, d, i, d, r), this._tmpCtx.bezierCurveTo(d, a, l, a, l, r), this._tmpCtx.bezierCurveTo(l, i, l + this._config.deviceCellWidth / 2, i, l + this._config.deviceCellWidth / 2, r);
|
||
break;
|
||
case 4:
|
||
const u = 0 === c ? 0 : c >= e ? 2 * e - c : e - c;
|
||
0 == !(c >= e) || 0 === u ? (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h + u, s), this._tmpCtx.lineTo(l, s)) : (this._tmpCtx.setLineDash([Math.round(e), Math.round(e)]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(h + u, s), this._tmpCtx.moveTo(h + u + e, s), this._tmpCtx.lineTo(l, s)), c = (0, n.computeNextVariantOffset)(l - h, e, c);
|
||
break;
|
||
case 5:
|
||
const f = .6,
|
||
v = .3,
|
||
g = l - h,
|
||
p = Math.floor(f * g),
|
||
m = Math.floor(v * g),
|
||
C = g - p - m;
|
||
this._tmpCtx.setLineDash([p, m, C]), this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s);
|
||
break;
|
||
default:
|
||
this._tmpCtx.moveTo(h, s), this._tmpCtx.lineTo(l, s)
|
||
}
|
||
this._tmpCtx.stroke(), this._tmpCtx.restore()
|
||
}
|
||
if (this._tmpCtx.restore(), !B && this._config.fontSize >= 12 && !this._config.allowTransparency && " " !== h) {
|
||
this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic";
|
||
const t = this._tmpCtx.measureText(h);
|
||
if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in t && t.actualBoundingBoxDescent > 0) {
|
||
this._tmpCtx.save();
|
||
const t = new Path2D;
|
||
t.rect(i, s - Math.ceil(e / 2), this._config.deviceCellWidth * O, o - s + Math.ceil(e / 2)), this._tmpCtx.clip(t), this._tmpCtx.lineWidth = 3 * this._config.devicePixelRatio, this._tmpCtx.strokeStyle = E.css, this._tmpCtx.strokeText(h, T, T + this._config.deviceCharHeight), this._tmpCtx.restore()
|
||
}
|
||
}
|
||
}
|
||
if (b) {
|
||
const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)),
|
||
t = e % 2 == 1 ? .5 : 0;
|
||
this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + t), this._tmpCtx.stroke()
|
||
}
|
||
if (B || this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight), "_" === h && !this._config.allowTransparency) {
|
||
let e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P);
|
||
if (e)
|
||
for (let t = 1; t <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = E.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(h, T, T + this._config.deviceCharHeight - t), e = g(this._tmpCtx.getImageData(T, T, this._config.deviceCellWidth, this._config.deviceCellHeight), E, k, P), e); t++);
|
||
}
|
||
if (S) {
|
||
const e = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)),
|
||
t = this._tmpCtx.lineWidth % 2 == 1 ? .5 : 0;
|
||
this._tmpCtx.lineWidth = e, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(T, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.lineTo(T + this._config.deviceCharWidth * O, T + Math.floor(this._config.deviceCharHeight / 2) - t), this._tmpCtx.stroke()
|
||
}
|
||
this._tmpCtx.restore();
|
||
const I = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height);
|
||
let F;
|
||
if (F = this._config.allowTransparency ? function(e) {
|
||
for (let t = 0; t < e.data.length; t += 4)
|
||
if (e.data[t + 3] > 0) return !1;
|
||
return !0
|
||
}(I) : g(I, E, k, P), F) return _;
|
||
const H = this._findGlyphBoundingBox(I, this._workBoundingBox, c, D, B, T);
|
||
let $, W;
|
||
for (;;) {
|
||
if (0 === this._activePages.length) {
|
||
const e = this._createNewPage();
|
||
$ = e, W = e.currentRow, W.height = H.size.y;
|
||
break
|
||
}
|
||
$ = this._activePages[this._activePages.length - 1], W = $.currentRow;
|
||
for (const e of this._activePages) H.size.y <= e.currentRow.height && ($ = e, W = e.currentRow);
|
||
for (let e = this._activePages.length - 1; e >= 0; e--)
|
||
for (const t of this._activePages[e].fixedRows) t.height <= W.height && H.size.y <= t.height && ($ = this._activePages[e], W = t);
|
||
if (W.y + H.size.y >= $.canvas.height || W.height > H.size.y + 2) {
|
||
let e = !1;
|
||
if ($.currentRow.y + $.currentRow.height + H.size.y >= $.canvas.height) {
|
||
let t;
|
||
for (const e of this._activePages)
|
||
if (e.currentRow.y + e.currentRow.height + H.size.y < e.canvas.height) {
|
||
t = e;
|
||
break
|
||
} if (t) $ = t;
|
||
else if (f.maxAtlasPages && this._pages.length >= f.maxAtlasPages && W.y + H.size.y <= $.canvas.height && W.height >= H.size.y && W.x + H.size.x <= $.canvas.width) e = !0;
|
||
else {
|
||
const t = this._createNewPage();
|
||
$ = t, W = t.currentRow, W.height = H.size.y, e = !0
|
||
}
|
||
}
|
||
e || ($.currentRow.height > 0 && $.fixedRows.push($.currentRow), W = {
|
||
x: 0,
|
||
y: $.currentRow.y + $.currentRow.height,
|
||
height: H.size.y
|
||
}, $.fixedRows.push(W), $.currentRow = {
|
||
x: 0,
|
||
y: W.y + W.height,
|
||
height: 0
|
||
})
|
||
}
|
||
if (W.x + H.size.x <= $.canvas.width) break;
|
||
W === $.currentRow ? (W.x = 0, W.y += W.height, W.height = 0) : $.fixedRows.splice($.fixedRows.indexOf(W), 1)
|
||
}
|
||
return H.texturePage = this._pages.indexOf($), H.texturePosition.x = W.x, H.texturePosition.y = W.y, H.texturePositionClipSpace.x = W.x / $.canvas.width, H.texturePositionClipSpace.y = W.y / $.canvas.height, H.sizeClipSpace.x /= $.canvas.width, H.sizeClipSpace.y /= $.canvas.height, W.height = Math.max(W.height, H.size.y), W.x += H.size.x, $.ctx.putImageData(I, H.texturePosition.x - this._workBoundingBox.left, H.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, H.size.x, H.size.y), $.addGlyph(H), $.version++, H
|
||
}
|
||
_findGlyphBoundingBox(e, t, i, s, r, n) {
|
||
t.top = 0;
|
||
const o = s ? this._config.deviceCellHeight : this._tmpCanvas.height,
|
||
a = s ? this._config.deviceCellWidth : i;
|
||
let h = !1;
|
||
for (let i = 0; i < o; i++) {
|
||
for (let s = 0; s < a; s++) {
|
||
const r = i * this._tmpCanvas.width * 4 + 4 * s + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.top = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
t.left = 0, h = !1;
|
||
for (let i = 0; i < n + a; i++) {
|
||
for (let s = 0; s < o; s++) {
|
||
const r = s * this._tmpCanvas.width * 4 + 4 * i + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.left = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
t.right = a, h = !1;
|
||
for (let i = n + a - 1; i >= n; i--) {
|
||
for (let s = 0; s < o; s++) {
|
||
const r = s * this._tmpCanvas.width * 4 + 4 * i + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.right = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
t.bottom = o, h = !1;
|
||
for (let i = o - 1; i >= 0; i--) {
|
||
for (let s = 0; s < a; s++) {
|
||
const r = i * this._tmpCanvas.width * 4 + 4 * s + 3;
|
||
if (0 !== e.data[r]) {
|
||
t.bottom = i, h = !0;
|
||
break
|
||
}
|
||
}
|
||
if (h) break
|
||
}
|
||
return {
|
||
texturePage: 0,
|
||
texturePosition: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
texturePositionClipSpace: {
|
||
x: 0,
|
||
y: 0
|
||
},
|
||
size: {
|
||
x: t.right - t.left + 1,
|
||
y: t.bottom - t.top + 1
|
||
},
|
||
sizeClipSpace: {
|
||
x: t.right - t.left + 1,
|
||
y: t.bottom - t.top + 1
|
||
},
|
||
offset: {
|
||
x: -t.left + n + (s || r ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0),
|
||
y: -t.top + n + (s || r ? 1 === this._config.lineHeight ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
t.TextureAtlas = f;
|
||
class v {
|
||
get percentageUsed() {
|
||
return this._usedPixels / (this.canvas.width * this.canvas.height)
|
||
}
|
||
get glyphs() {
|
||
return this._glyphs
|
||
}
|
||
addGlyph(e) {
|
||
this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y
|
||
}
|
||
constructor(e, t, i) {
|
||
if (this._usedPixels = 0, this._glyphs = [], this.version = 0, this.currentRow = {
|
||
x: 0,
|
||
y: 0,
|
||
height: 0
|
||
}, this.fixedRows = [], i)
|
||
for (const e of i) this._glyphs.push(...e.glyphs), this._usedPixels += e._usedPixels;
|
||
this.canvas = p(e, t, t), this.ctx = (0, n.throwIfFalsy)(this.canvas.getContext("2d", {
|
||
alpha: !0
|
||
}))
|
||
}
|
||
clear() {
|
||
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++
|
||
}
|
||
}
|
||
|
||
function g(e, t, i, s) {
|
||
const r = t.rgba >>> 24,
|
||
n = t.rgba >>> 16 & 255,
|
||
o = t.rgba >>> 8 & 255,
|
||
a = i.rgba >>> 24,
|
||
h = i.rgba >>> 16 & 255,
|
||
c = i.rgba >>> 8 & 255,
|
||
l = Math.floor((Math.abs(r - a) + Math.abs(n - h) + Math.abs(o - c)) / 12);
|
||
let d = !0;
|
||
for (let t = 0; t < e.data.length; t += 4) e.data[t] === r && e.data[t + 1] === n && e.data[t + 2] === o || s && Math.abs(e.data[t] - r) + Math.abs(e.data[t + 1] - n) + Math.abs(e.data[t + 2] - o) < l ? e.data[t + 3] = 0 : d = !1;
|
||
return d
|
||
}
|
||
|
||
function p(e, t, i) {
|
||
const s = e.createElement("canvas");
|
||
return s.width = t, s.height = i, s
|
||
}
|
||
},
|
||
577: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CharacterJoinerService = t.JoinedCellData = void 0;
|
||
const n = i(147),
|
||
o = i(855),
|
||
a = i(782),
|
||
h = i(97);
|
||
class c extends n.AttributeData {
|
||
constructor(e, t, i) {
|
||
super(), this.content = 0, this.combinedData = "", this.fg = e.fg, this.bg = e.bg, this.combinedData = t, this._width = i
|
||
}
|
||
isCombined() {
|
||
return 2097152
|
||
}
|
||
getWidth() {
|
||
return this._width
|
||
}
|
||
getChars() {
|
||
return this.combinedData
|
||
}
|
||
getCode() {
|
||
return 2097151
|
||
}
|
||
setFromCharData(e) {
|
||
throw new Error("not implemented")
|
||
}
|
||
getAsCharData() {
|
||
return [this.fg, this.getChars(), this.getWidth(), this.getCode()]
|
||
}
|
||
}
|
||
t.JoinedCellData = c;
|
||
let l = t.CharacterJoinerService = class e {
|
||
constructor(e) {
|
||
this._bufferService = e, this._characterJoiners = [], this._nextCharacterJoinerId = 0, this._workCell = new a.CellData
|
||
}
|
||
register(e) {
|
||
const t = {
|
||
id: this._nextCharacterJoinerId++,
|
||
handler: e
|
||
};
|
||
return this._characterJoiners.push(t), t.id
|
||
}
|
||
deregister(e) {
|
||
for (let t = 0; t < this._characterJoiners.length; t++)
|
||
if (this._characterJoiners[t].id === e) return this._characterJoiners.splice(t, 1), !0;
|
||
return !1
|
||
}
|
||
getJoinedCharacters(e) {
|
||
if (0 === this._characterJoiners.length) return [];
|
||
const t = this._bufferService.buffer.lines.get(e);
|
||
if (!t || 0 === t.length) return [];
|
||
const i = [],
|
||
s = t.translateToString(!0);
|
||
let r = 0,
|
||
n = 0,
|
||
a = 0,
|
||
h = t.getFg(0),
|
||
c = t.getBg(0);
|
||
for (let e = 0; e < t.getTrimmedLength(); e++)
|
||
if (t.loadCell(e, this._workCell), 0 !== this._workCell.getWidth()) {
|
||
if (this._workCell.fg !== h || this._workCell.bg !== c) {
|
||
if (e - r > 1) {
|
||
const e = this._getJoinedRanges(s, a, n, t, r);
|
||
for (let t = 0; t < e.length; t++) i.push(e[t])
|
||
}
|
||
r = e, a = n, h = this._workCell.fg, c = this._workCell.bg
|
||
}
|
||
n += this._workCell.getChars().length || o.WHITESPACE_CELL_CHAR.length
|
||
} if (this._bufferService.cols - r > 1) {
|
||
const e = this._getJoinedRanges(s, a, n, t, r);
|
||
for (let t = 0; t < e.length; t++) i.push(e[t])
|
||
}
|
||
return i
|
||
}
|
||
_getJoinedRanges(t, i, s, r, n) {
|
||
const o = t.substring(i, s);
|
||
let a = [];
|
||
try {
|
||
a = this._characterJoiners[0].handler(o)
|
||
} catch (e) {
|
||
console.error(e)
|
||
}
|
||
for (let t = 1; t < this._characterJoiners.length; t++) try {
|
||
const i = this._characterJoiners[t].handler(o);
|
||
for (let t = 0; t < i.length; t++) e._mergeRanges(a, i[t])
|
||
} catch (e) {
|
||
console.error(e)
|
||
}
|
||
return this._stringRangesToCellRanges(a, r, n), a
|
||
}
|
||
_stringRangesToCellRanges(e, t, i) {
|
||
let s = 0,
|
||
r = !1,
|
||
n = 0,
|
||
a = e[s];
|
||
if (a) {
|
||
for (let h = i; h < this._bufferService.cols; h++) {
|
||
const i = t.getWidth(h),
|
||
c = t.getString(h).length || o.WHITESPACE_CELL_CHAR.length;
|
||
if (0 !== i) {
|
||
if (!r && a[0] <= n && (a[0] = h, r = !0), a[1] <= n) {
|
||
if (a[1] = h, a = e[++s], !a) break;
|
||
a[0] <= n ? (a[0] = h, r = !0) : r = !1
|
||
}
|
||
n += c
|
||
}
|
||
}
|
||
a && (a[1] = this._bufferService.cols)
|
||
}
|
||
}
|
||
static _mergeRanges(e, t) {
|
||
let i = !1;
|
||
for (let s = 0; s < e.length; s++) {
|
||
const r = e[s];
|
||
if (i) {
|
||
if (t[1] <= r[0]) return e[s - 1][1] = t[1], e;
|
||
if (t[1] <= r[1]) return e[s - 1][1] = Math.max(t[1], r[1]), e.splice(s, 1), e;
|
||
e.splice(s, 1), s--
|
||
} else {
|
||
if (t[1] <= r[0]) return e.splice(s, 0, t), e;
|
||
if (t[1] <= r[1]) return r[0] = Math.min(t[0], r[0]), e;
|
||
t[0] < r[1] && (r[0] = Math.min(t[0], r[0]), i = !0)
|
||
}
|
||
}
|
||
return i ? e[e.length - 1][1] = t[1] : e.push(t), e
|
||
}
|
||
};
|
||
t.CharacterJoinerService = l = s([r(0, h.IBufferService)], l)
|
||
},
|
||
160: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.contrastRatio = t.toPaddedHex = t.rgba = t.rgb = t.css = t.color = t.channels = t.NULL_COLOR = void 0;
|
||
let i = 0,
|
||
s = 0,
|
||
r = 0,
|
||
n = 0;
|
||
var o, a, h, c, l;
|
||
|
||
function d(e) {
|
||
const t = e.toString(16);
|
||
return t.length < 2 ? "0" + t : t
|
||
}
|
||
|
||
function _(e, t) {
|
||
return e < t ? (t + .05) / (e + .05) : (e + .05) / (t + .05)
|
||
}
|
||
t.NULL_COLOR = {
|
||
css: "#00000000",
|
||
rgba: 0
|
||
},
|
||
function(e) {
|
||
e.toCss = function(e, t, i, s) {
|
||
return void 0 !== s ? `#${d(e)}${d(t)}${d(i)}${d(s)}` : `#${d(e)}${d(t)}${d(i)}`
|
||
}, e.toRgba = function(e, t, i, s = 255) {
|
||
return (e << 24 | t << 16 | i << 8 | s) >>> 0
|
||
}, e.toColor = function(t, i, s, r) {
|
||
return {
|
||
css: e.toCss(t, i, s, r),
|
||
rgba: e.toRgba(t, i, s, r)
|
||
}
|
||
}
|
||
}(o || (t.channels = o = {})),
|
||
function(e) {
|
||
function t(e, t) {
|
||
return n = Math.round(255 * t), [i, s, r] = l.toChannels(e.rgba), {
|
||
css: o.toCss(i, s, r, n),
|
||
rgba: o.toRgba(i, s, r, n)
|
||
}
|
||
}
|
||
e.blend = function(e, t) {
|
||
if (n = (255 & t.rgba) / 255, 1 === n) return {
|
||
css: t.css,
|
||
rgba: t.rgba
|
||
};
|
||
const a = t.rgba >> 24 & 255,
|
||
h = t.rgba >> 16 & 255,
|
||
c = t.rgba >> 8 & 255,
|
||
l = e.rgba >> 24 & 255,
|
||
d = e.rgba >> 16 & 255,
|
||
_ = e.rgba >> 8 & 255;
|
||
return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), {
|
||
css: o.toCss(i, s, r),
|
||
rgba: o.toRgba(i, s, r)
|
||
}
|
||
}, e.isOpaque = function(e) {
|
||
return !(255 & ~e.rgba)
|
||
}, e.ensureContrastRatio = function(e, t, i) {
|
||
const s = l.ensureContrastRatio(e.rgba, t.rgba, i);
|
||
if (s) return o.toColor(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255)
|
||
}, e.opaque = function(e) {
|
||
const t = (255 | e.rgba) >>> 0;
|
||
return [i, s, r] = l.toChannels(t), {
|
||
css: o.toCss(i, s, r),
|
||
rgba: t
|
||
}
|
||
}, e.opacity = t, e.multiplyOpacity = function(e, i) {
|
||
return n = 255 & e.rgba, t(e, n * i / 255)
|
||
}, e.toColorRGB = function(e) {
|
||
return [e.rgba >> 24 & 255, e.rgba >> 16 & 255, e.rgba >> 8 & 255]
|
||
}
|
||
}(a || (t.color = a = {})),
|
||
function(e) {
|
||
let t, a;
|
||
try {
|
||
const e = document.createElement("canvas");
|
||
e.width = 1, e.height = 1;
|
||
const i = e.getContext("2d", {
|
||
willReadFrequently: !0
|
||
});
|
||
i && (t = i, t.globalCompositeOperation = "copy", a = t.createLinearGradient(0, 0, 1, 1))
|
||
} catch {}
|
||
e.toColor = function(e) {
|
||
if (e.match(/#[\da-f]{3,8}/i)) switch (e.length) {
|
||
case 4:
|
||
return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), o.toColor(i, s, r);
|
||
case 5:
|
||
return i = parseInt(e.slice(1, 2).repeat(2), 16), s = parseInt(e.slice(2, 3).repeat(2), 16), r = parseInt(e.slice(3, 4).repeat(2), 16), n = parseInt(e.slice(4, 5).repeat(2), 16), o.toColor(i, s, r, n);
|
||
case 7:
|
||
return {
|
||
css: e, rgba: (parseInt(e.slice(1), 16) << 8 | 255) >>> 0
|
||
};
|
||
case 9:
|
||
return {
|
||
css: e, rgba: parseInt(e.slice(1), 16) >>> 0
|
||
}
|
||
}
|
||
const h = e.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);
|
||
if (h) return i = parseInt(h[1]), s = parseInt(h[2]), r = parseInt(h[3]), n = Math.round(255 * (void 0 === h[5] ? 1 : parseFloat(h[5]))), o.toColor(i, s, r, n);
|
||
if (!t || !a) throw new Error("css.toColor: Unsupported css format");
|
||
if (t.fillStyle = a, t.fillStyle = e, "string" != typeof t.fillStyle) throw new Error("css.toColor: Unsupported css format");
|
||
if (t.fillRect(0, 0, 1, 1), [i, s, r, n] = t.getImageData(0, 0, 1, 1).data, 255 !== n) throw new Error("css.toColor: Unsupported css format");
|
||
return {
|
||
rgba: o.toRgba(i, s, r, n),
|
||
css: e
|
||
}
|
||
}
|
||
}(h || (t.css = h = {})),
|
||
function(e) {
|
||
function t(e, t, i) {
|
||
const s = e / 255,
|
||
r = t / 255,
|
||
n = i / 255;
|
||
return .2126 * (s <= .03928 ? s / 12.92 : Math.pow((s + .055) / 1.055, 2.4)) + .7152 * (r <= .03928 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4)) + .0722 * (n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4))
|
||
}
|
||
e.relativeLuminance = function(e) {
|
||
return t(e >> 16 & 255, e >> 8 & 255, 255 & e)
|
||
}, e.relativeLuminance2 = t
|
||
}(c || (t.rgb = c = {})),
|
||
function(e) {
|
||
function t(e, t, i) {
|
||
const s = e >> 24 & 255,
|
||
r = e >> 16 & 255,
|
||
n = e >> 8 & 255;
|
||
let o = t >> 24 & 255,
|
||
a = t >> 16 & 255,
|
||
h = t >> 8 & 255,
|
||
l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
for (; l < i && (o > 0 || a > 0 || h > 0);) o -= Math.max(0, Math.ceil(.1 * o)), a -= Math.max(0, Math.ceil(.1 * a)), h -= Math.max(0, Math.ceil(.1 * h)), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
return (o << 24 | a << 16 | h << 8 | 255) >>> 0
|
||
}
|
||
|
||
function a(e, t, i) {
|
||
const s = e >> 24 & 255,
|
||
r = e >> 16 & 255,
|
||
n = e >> 8 & 255;
|
||
let o = t >> 24 & 255,
|
||
a = t >> 16 & 255,
|
||
h = t >> 8 & 255,
|
||
l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
for (; l < i && (o < 255 || a < 255 || h < 255);) o = Math.min(255, o + Math.ceil(.1 * (255 - o))), a = Math.min(255, a + Math.ceil(.1 * (255 - a))), h = Math.min(255, h + Math.ceil(.1 * (255 - h))), l = _(c.relativeLuminance2(o, a, h), c.relativeLuminance2(s, r, n));
|
||
return (o << 24 | a << 16 | h << 8 | 255) >>> 0
|
||
}
|
||
e.blend = function(e, t) {
|
||
if (n = (255 & t) / 255, 1 === n) return t;
|
||
const a = t >> 24 & 255,
|
||
h = t >> 16 & 255,
|
||
c = t >> 8 & 255,
|
||
l = e >> 24 & 255,
|
||
d = e >> 16 & 255,
|
||
_ = e >> 8 & 255;
|
||
return i = l + Math.round((a - l) * n), s = d + Math.round((h - d) * n), r = _ + Math.round((c - _) * n), o.toRgba(i, s, r)
|
||
}, e.ensureContrastRatio = function(e, i, s) {
|
||
const r = c.relativeLuminance(e >> 8),
|
||
n = c.relativeLuminance(i >> 8);
|
||
if (_(r, n) < s) {
|
||
if (n < r) {
|
||
const n = t(e, i, s),
|
||
o = _(r, c.relativeLuminance(n >> 8));
|
||
if (o < s) {
|
||
const t = a(e, i, s);
|
||
return o > _(r, c.relativeLuminance(t >> 8)) ? n : t
|
||
}
|
||
return n
|
||
}
|
||
const o = a(e, i, s),
|
||
h = _(r, c.relativeLuminance(o >> 8));
|
||
if (h < s) {
|
||
const n = t(e, i, s);
|
||
return h > _(r, c.relativeLuminance(n >> 8)) ? o : n
|
||
}
|
||
return o
|
||
}
|
||
}, e.reduceLuminance = t, e.increaseLuminance = a, e.toChannels = function(e) {
|
||
return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
|
||
}
|
||
}(l || (t.rgba = l = {})), t.toPaddedHex = d, t.contrastRatio = _
|
||
},
|
||
345: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.runAndSubscribe = t.forwardEvent = t.EventEmitter = void 0, t.EventEmitter = class {
|
||
constructor() {
|
||
this._listeners = [], this._disposed = !1
|
||
}
|
||
get event() {
|
||
return this._event || (this._event = e => (this._listeners.push(e), {
|
||
dispose: () => {
|
||
if (!this._disposed)
|
||
for (let t = 0; t < this._listeners.length; t++)
|
||
if (this._listeners[t] === e) return void this._listeners.splice(t, 1)
|
||
}
|
||
})), this._event
|
||
}
|
||
fire(e, t) {
|
||
const i = [];
|
||
for (let e = 0; e < this._listeners.length; e++) i.push(this._listeners[e]);
|
||
for (let s = 0; s < i.length; s++) i[s].call(void 0, e, t)
|
||
}
|
||
dispose() {
|
||
this.clearListeners(), this._disposed = !0
|
||
}
|
||
clearListeners() {
|
||
this._listeners && (this._listeners.length = 0)
|
||
}
|
||
}, t.forwardEvent = function(e, t) {
|
||
return e((e => t.fire(e)))
|
||
}, t.runAndSubscribe = function(e, t) {
|
||
return t(void 0), e((e => t(e)))
|
||
}
|
||
},
|
||
859: (e, t) => {
|
||
function i(e) {
|
||
for (const t of e) t.dispose();
|
||
e.length = 0
|
||
}
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.getDisposeArrayDisposable = t.disposeArray = t.toDisposable = t.MutableDisposable = t.Disposable = void 0, t.Disposable = class {
|
||
constructor() {
|
||
this._disposables = [], this._isDisposed = !1
|
||
}
|
||
dispose() {
|
||
this._isDisposed = !0;
|
||
for (const e of this._disposables) e.dispose();
|
||
this._disposables.length = 0
|
||
}
|
||
register(e) {
|
||
return this._disposables.push(e), e
|
||
}
|
||
unregister(e) {
|
||
const t = this._disposables.indexOf(e); - 1 !== t && this._disposables.splice(t, 1)
|
||
}
|
||
}, t.MutableDisposable = class {
|
||
constructor() {
|
||
this._isDisposed = !1
|
||
}
|
||
get value() {
|
||
return this._isDisposed ? void 0 : this._value
|
||
}
|
||
set value(e) {
|
||
this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e)
|
||
}
|
||
clear() {
|
||
this.value = void 0
|
||
}
|
||
dispose() {
|
||
this._isDisposed = !0, this._value?.dispose(), this._value = void 0
|
||
}
|
||
}, t.toDisposable = function(e) {
|
||
return {
|
||
dispose: e
|
||
}
|
||
}, t.disposeArray = i, t.getDisposeArrayDisposable = function(e) {
|
||
return {
|
||
dispose: () => i(e)
|
||
}
|
||
}
|
||
},
|
||
485: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.FourKeyMap = t.TwoKeyMap = void 0;
|
||
class i {
|
||
constructor() {
|
||
this._data = {}
|
||
}
|
||
set(e, t, i) {
|
||
this._data[e] || (this._data[e] = {}), this._data[e][t] = i
|
||
}
|
||
get(e, t) {
|
||
return this._data[e] ? this._data[e][t] : void 0
|
||
}
|
||
clear() {
|
||
this._data = {}
|
||
}
|
||
}
|
||
t.TwoKeyMap = i, t.FourKeyMap = class {
|
||
constructor() {
|
||
this._data = new i
|
||
}
|
||
set(e, t, s, r, n) {
|
||
this._data.get(e, t) || this._data.set(e, t, new i), this._data.get(e, t).set(s, r, n)
|
||
}
|
||
get(e, t, i, s) {
|
||
return this._data.get(e, t)?.get(i, s)
|
||
}
|
||
clear() {
|
||
this._data.clear()
|
||
}
|
||
}
|
||
},
|
||
399: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.isChromeOS = t.isLinux = t.isWindows = t.isIphone = t.isIpad = t.isMac = t.getSafariVersion = t.isSafari = t.isLegacyEdge = t.isFirefox = t.isNode = void 0, t.isNode = "undefined" != typeof process && "title" in process;
|
||
const i = t.isNode ? "node" : navigator.userAgent,
|
||
s = t.isNode ? "node" : navigator.platform;
|
||
t.isFirefox = i.includes("Firefox"), t.isLegacyEdge = i.includes("Edge"), t.isSafari = /^((?!chrome|android).)*safari/i.test(i), t.getSafariVersion = function() {
|
||
if (!t.isSafari) return 0;
|
||
const e = i.match(/Version\/(\d+)/);
|
||
return null === e || e.length < 2 ? 0 : parseInt(e[1])
|
||
}, t.isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(s), t.isIpad = "iPad" === s, t.isIphone = "iPhone" === s, t.isWindows = ["Windows", "Win16", "Win32", "WinCE"].includes(s), t.isLinux = s.indexOf("Linux") >= 0, t.isChromeOS = /\bCrOS\b/.test(i)
|
||
},
|
||
385: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.DebouncedIdleTask = t.IdleTaskQueue = t.PriorityTaskQueue = void 0;
|
||
const s = i(399);
|
||
class r {
|
||
constructor() {
|
||
this._tasks = [], this._i = 0
|
||
}
|
||
enqueue(e) {
|
||
this._tasks.push(e), this._start()
|
||
}
|
||
flush() {
|
||
for (; this._i < this._tasks.length;) this._tasks[this._i]() || this._i++;
|
||
this.clear()
|
||
}
|
||
clear() {
|
||
this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0
|
||
}
|
||
_start() {
|
||
this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this)))
|
||
}
|
||
_process(e) {
|
||
this._idleCallback = void 0;
|
||
let t = 0,
|
||
i = 0,
|
||
s = e.timeRemaining(),
|
||
r = 0;
|
||
for (; this._i < this._tasks.length;) {
|
||
if (t = Date.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, Date.now() - t), i = Math.max(t, i), r = e.timeRemaining(), 1.5 * i > r) return s - t < -20 && console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(s - t))}ms`), void this._start();
|
||
s = r
|
||
}
|
||
this.clear()
|
||
}
|
||
}
|
||
class n extends r {
|
||
_requestCallback(e) {
|
||
return setTimeout((() => e(this._createDeadline(16))))
|
||
}
|
||
_cancelCallback(e) {
|
||
clearTimeout(e)
|
||
}
|
||
_createDeadline(e) {
|
||
const t = Date.now() + e;
|
||
return {
|
||
timeRemaining: () => Math.max(0, t - Date.now())
|
||
}
|
||
}
|
||
}
|
||
t.PriorityTaskQueue = n, t.IdleTaskQueue = !s.isNode && "requestIdleCallback" in window ? class extends r {
|
||
_requestCallback(e) {
|
||
return requestIdleCallback(e)
|
||
}
|
||
_cancelCallback(e) {
|
||
cancelIdleCallback(e)
|
||
}
|
||
} : n, t.DebouncedIdleTask = class {
|
||
constructor() {
|
||
this._queue = new t.IdleTaskQueue
|
||
}
|
||
set(e) {
|
||
this._queue.clear(), this._queue.enqueue(e)
|
||
}
|
||
flush() {
|
||
this._queue.flush()
|
||
}
|
||
}
|
||
},
|
||
147: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.ExtendedAttrs = t.AttributeData = void 0;
|
||
class i {
|
||
constructor() {
|
||
this.fg = 0, this.bg = 0, this.extended = new s
|
||
}
|
||
static toColorRGB(e) {
|
||
return [e >>> 16 & 255, e >>> 8 & 255, 255 & e]
|
||
}
|
||
static fromColorRGB(e) {
|
||
return (255 & e[0]) << 16 | (255 & e[1]) << 8 | 255 & e[2]
|
||
}
|
||
clone() {
|
||
const e = new i;
|
||
return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e
|
||
}
|
||
isInverse() {
|
||
return 67108864 & this.fg
|
||
}
|
||
isBold() {
|
||
return 134217728 & this.fg
|
||
}
|
||
isUnderline() {
|
||
return this.hasExtendedAttrs() && 0 !== this.extended.underlineStyle ? 1 : 268435456 & this.fg
|
||
}
|
||
isBlink() {
|
||
return 536870912 & this.fg
|
||
}
|
||
isInvisible() {
|
||
return 1073741824 & this.fg
|
||
}
|
||
isItalic() {
|
||
return 67108864 & this.bg
|
||
}
|
||
isDim() {
|
||
return 134217728 & this.bg
|
||
}
|
||
isStrikethrough() {
|
||
return 2147483648 & this.fg
|
||
}
|
||
isProtected() {
|
||
return 536870912 & this.bg
|
||
}
|
||
isOverline() {
|
||
return 1073741824 & this.bg
|
||
}
|
||
getFgColorMode() {
|
||
return 50331648 & this.fg
|
||
}
|
||
getBgColorMode() {
|
||
return 50331648 & this.bg
|
||
}
|
||
isFgRGB() {
|
||
return !(50331648 & ~this.fg)
|
||
}
|
||
isBgRGB() {
|
||
return !(50331648 & ~this.bg)
|
||
}
|
||
isFgPalette() {
|
||
return 16777216 == (50331648 & this.fg) || 33554432 == (50331648 & this.fg)
|
||
}
|
||
isBgPalette() {
|
||
return 16777216 == (50331648 & this.bg) || 33554432 == (50331648 & this.bg)
|
||
}
|
||
isFgDefault() {
|
||
return !(50331648 & this.fg)
|
||
}
|
||
isBgDefault() {
|
||
return !(50331648 & this.bg)
|
||
}
|
||
isAttributeDefault() {
|
||
return 0 === this.fg && 0 === this.bg
|
||
}
|
||
getFgColor() {
|
||
switch (50331648 & this.fg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.fg;
|
||
case 50331648:
|
||
return 16777215 & this.fg;
|
||
default:
|
||
return -1
|
||
}
|
||
}
|
||
getBgColor() {
|
||
switch (50331648 & this.bg) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.bg;
|
||
case 50331648:
|
||
return 16777215 & this.bg;
|
||
default:
|
||
return -1
|
||
}
|
||
}
|
||
hasExtendedAttrs() {
|
||
return 268435456 & this.bg
|
||
}
|
||
updateExtended() {
|
||
this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456
|
||
}
|
||
getUnderlineColor() {
|
||
if (268435456 & this.bg && ~this.extended.underlineColor) switch (50331648 & this.extended.underlineColor) {
|
||
case 16777216:
|
||
case 33554432:
|
||
return 255 & this.extended.underlineColor;
|
||
case 50331648:
|
||
return 16777215 & this.extended.underlineColor;
|
||
default:
|
||
return this.getFgColor()
|
||
}
|
||
return this.getFgColor()
|
||
}
|
||
getUnderlineColorMode() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? 50331648 & this.extended.underlineColor : this.getFgColorMode()
|
||
}
|
||
isUnderlineColorRGB() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & ~this.extended.underlineColor) : this.isFgRGB()
|
||
}
|
||
isUnderlineColorPalette() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? 16777216 == (50331648 & this.extended.underlineColor) || 33554432 == (50331648 & this.extended.underlineColor) : this.isFgPalette()
|
||
}
|
||
isUnderlineColorDefault() {
|
||
return 268435456 & this.bg && ~this.extended.underlineColor ? !(50331648 & this.extended.underlineColor) : this.isFgDefault()
|
||
}
|
||
getUnderlineStyle() {
|
||
return 268435456 & this.fg ? 268435456 & this.bg ? this.extended.underlineStyle : 1 : 0
|
||
}
|
||
getUnderlineVariantOffset() {
|
||
return this.extended.underlineVariantOffset
|
||
}
|
||
}
|
||
t.AttributeData = i;
|
||
class s {
|
||
get ext() {
|
||
return this._urlId ? -469762049 & this._ext | this.underlineStyle << 26 : this._ext
|
||
}
|
||
set ext(e) {
|
||
this._ext = e
|
||
}
|
||
get underlineStyle() {
|
||
return this._urlId ? 5 : (469762048 & this._ext) >> 26
|
||
}
|
||
set underlineStyle(e) {
|
||
this._ext &= -469762049, this._ext |= e << 26 & 469762048
|
||
}
|
||
get underlineColor() {
|
||
return 67108863 & this._ext
|
||
}
|
||
set underlineColor(e) {
|
||
this._ext &= -67108864, this._ext |= 67108863 & e
|
||
}
|
||
get urlId() {
|
||
return this._urlId
|
||
}
|
||
set urlId(e) {
|
||
this._urlId = e
|
||
}
|
||
get underlineVariantOffset() {
|
||
const e = (3758096384 & this._ext) >> 29;
|
||
return e < 0 ? 4294967288 ^ e : e
|
||
}
|
||
set underlineVariantOffset(e) {
|
||
this._ext &= 536870911, this._ext |= e << 29 & 3758096384
|
||
}
|
||
constructor(e = 0, t = 0) {
|
||
this._ext = 0, this._urlId = 0, this._ext = e, this._urlId = t
|
||
}
|
||
clone() {
|
||
return new s(this._ext, this._urlId)
|
||
}
|
||
isEmpty() {
|
||
return 0 === this.underlineStyle && 0 === this._urlId
|
||
}
|
||
}
|
||
t.ExtendedAttrs = s
|
||
},
|
||
782: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.CellData = void 0;
|
||
const s = i(133),
|
||
r = i(855),
|
||
n = i(147);
|
||
class o extends n.AttributeData {
|
||
constructor() {
|
||
super(...arguments), this.content = 0, this.fg = 0, this.bg = 0, this.extended = new n.ExtendedAttrs, this.combinedData = ""
|
||
}
|
||
static fromCharData(e) {
|
||
const t = new o;
|
||
return t.setFromCharData(e), t
|
||
}
|
||
isCombined() {
|
||
return 2097152 & this.content
|
||
}
|
||
getWidth() {
|
||
return this.content >> 22
|
||
}
|
||
getChars() {
|
||
return 2097152 & this.content ? this.combinedData : 2097151 & this.content ? (0, s.stringFromCodePoint)(2097151 & this.content) : ""
|
||
}
|
||
getCode() {
|
||
return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : 2097151 & this.content
|
||
}
|
||
setFromCharData(e) {
|
||
this.fg = e[r.CHAR_DATA_ATTR_INDEX], this.bg = 0;
|
||
let t = !1;
|
||
if (e[r.CHAR_DATA_CHAR_INDEX].length > 2) t = !0;
|
||
else if (2 === e[r.CHAR_DATA_CHAR_INDEX].length) {
|
||
const i = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0);
|
||
if (55296 <= i && i <= 56319) {
|
||
const s = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(1);
|
||
56320 <= s && s <= 57343 ? this.content = 1024 * (i - 55296) + s - 56320 + 65536 | e[r.CHAR_DATA_WIDTH_INDEX] << 22 : t = !0
|
||
} else t = !0
|
||
} else this.content = e[r.CHAR_DATA_CHAR_INDEX].charCodeAt(0) | e[r.CHAR_DATA_WIDTH_INDEX] << 22;
|
||
t && (this.combinedData = e[r.CHAR_DATA_CHAR_INDEX], this.content = 2097152 | e[r.CHAR_DATA_WIDTH_INDEX] << 22)
|
||
}
|
||
getAsCharData() {
|
||
return [this.fg, this.getChars(), this.getWidth(), this.getCode()]
|
||
}
|
||
}
|
||
t.CellData = o
|
||
},
|
||
855: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.WHITESPACE_CELL_CODE = t.WHITESPACE_CELL_WIDTH = t.WHITESPACE_CELL_CHAR = t.NULL_CELL_CODE = t.NULL_CELL_WIDTH = t.NULL_CELL_CHAR = t.CHAR_DATA_CODE_INDEX = t.CHAR_DATA_WIDTH_INDEX = t.CHAR_DATA_CHAR_INDEX = t.CHAR_DATA_ATTR_INDEX = t.DEFAULT_EXT = t.DEFAULT_ATTR = t.DEFAULT_COLOR = void 0, t.DEFAULT_COLOR = 0, t.DEFAULT_ATTR = 256 | t.DEFAULT_COLOR << 9, t.DEFAULT_EXT = 0, t.CHAR_DATA_ATTR_INDEX = 0, t.CHAR_DATA_CHAR_INDEX = 1, t.CHAR_DATA_WIDTH_INDEX = 2, t.CHAR_DATA_CODE_INDEX = 3, t.NULL_CELL_CHAR = "", t.NULL_CELL_WIDTH = 1, t.NULL_CELL_CODE = 0, t.WHITESPACE_CELL_CHAR = " ", t.WHITESPACE_CELL_WIDTH = 1, t.WHITESPACE_CELL_CODE = 32
|
||
},
|
||
133: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.Utf8ToUtf32 = t.StringToUtf32 = t.utf32ToString = t.stringFromCodePoint = void 0, t.stringFromCodePoint = function(e) {
|
||
return e > 65535 ? (e -= 65536, String.fromCharCode(55296 + (e >> 10)) + String.fromCharCode(e % 1024 + 56320)) : String.fromCharCode(e)
|
||
}, t.utf32ToString = function(e, t = 0, i = e.length) {
|
||
let s = "";
|
||
for (let r = t; r < i; ++r) {
|
||
let t = e[r];
|
||
t > 65535 ? (t -= 65536, s += String.fromCharCode(55296 + (t >> 10)) + String.fromCharCode(t % 1024 + 56320)) : s += String.fromCharCode(t)
|
||
}
|
||
return s
|
||
}, t.StringToUtf32 = class {
|
||
constructor() {
|
||
this._interim = 0
|
||
}
|
||
clear() {
|
||
this._interim = 0
|
||
}
|
||
decode(e, t) {
|
||
const i = e.length;
|
||
if (!i) return 0;
|
||
let s = 0,
|
||
r = 0;
|
||
if (this._interim) {
|
||
const i = e.charCodeAt(r++);
|
||
56320 <= i && i <= 57343 ? t[s++] = 1024 * (this._interim - 55296) + i - 56320 + 65536 : (t[s++] = this._interim, t[s++] = i), this._interim = 0
|
||
}
|
||
for (let n = r; n < i; ++n) {
|
||
const r = e.charCodeAt(n);
|
||
if (55296 <= r && r <= 56319) {
|
||
if (++n >= i) return this._interim = r, s;
|
||
const o = e.charCodeAt(n);
|
||
56320 <= o && o <= 57343 ? t[s++] = 1024 * (r - 55296) + o - 56320 + 65536 : (t[s++] = r, t[s++] = o)
|
||
} else 65279 !== r && (t[s++] = r)
|
||
}
|
||
return s
|
||
}
|
||
}, t.Utf8ToUtf32 = class {
|
||
constructor() {
|
||
this.interim = new Uint8Array(3)
|
||
}
|
||
clear() {
|
||
this.interim.fill(0)
|
||
}
|
||
decode(e, t) {
|
||
const i = e.length;
|
||
if (!i) return 0;
|
||
let s, r, n, o, a = 0,
|
||
h = 0,
|
||
c = 0;
|
||
if (this.interim[0]) {
|
||
let s = !1,
|
||
r = this.interim[0];
|
||
r &= 192 == (224 & r) ? 31 : 224 == (240 & r) ? 15 : 7;
|
||
let n, o = 0;
|
||
for (;
|
||
(n = 63 & this.interim[++o]) && o < 4;) r <<= 6, r |= n;
|
||
const h = 192 == (224 & this.interim[0]) ? 2 : 224 == (240 & this.interim[0]) ? 3 : 4,
|
||
l = h - o;
|
||
for (; c < l;) {
|
||
if (c >= i) return 0;
|
||
if (n = e[c++], 128 != (192 & n)) {
|
||
c--, s = !0;
|
||
break
|
||
}
|
||
this.interim[o++] = n, r <<= 6, r |= 63 & n
|
||
}
|
||
s || (2 === h ? r < 128 ? c-- : t[a++] = r : 3 === h ? r < 2048 || r >= 55296 && r <= 57343 || 65279 === r || (t[a++] = r) : r < 65536 || r > 1114111 || (t[a++] = r)), this.interim.fill(0)
|
||
}
|
||
const l = i - 4;
|
||
let d = c;
|
||
for (; d < i;) {
|
||
for (; !(!(d < l) || 128 & (s = e[d]) || 128 & (r = e[d + 1]) || 128 & (n = e[d + 2]) || 128 & (o = e[d + 3]));) t[a++] = s, t[a++] = r, t[a++] = n, t[a++] = o, d += 4;
|
||
if (s = e[d++], s < 128) t[a++] = s;
|
||
else if (192 == (224 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (31 & s) << 6 | 63 & r, h < 128) {
|
||
d--;
|
||
continue
|
||
}
|
||
t[a++] = h
|
||
} else if (224 == (240 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, a;
|
||
if (n = e[d++], 128 != (192 & n)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (15 & s) << 12 | (63 & r) << 6 | 63 & n, h < 2048 || h >= 55296 && h <= 57343 || 65279 === h) continue;
|
||
t[a++] = h
|
||
} else if (240 == (248 & s)) {
|
||
if (d >= i) return this.interim[0] = s, a;
|
||
if (r = e[d++], 128 != (192 & r)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, a;
|
||
if (n = e[d++], 128 != (192 & n)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (d >= i) return this.interim[0] = s, this.interim[1] = r, this.interim[2] = n, a;
|
||
if (o = e[d++], 128 != (192 & o)) {
|
||
d--;
|
||
continue
|
||
}
|
||
if (h = (7 & s) << 18 | (63 & r) << 12 | (63 & n) << 6 | 63 & o, h < 65536 || h > 1114111) continue;
|
||
t[a++] = h
|
||
}
|
||
}
|
||
return a
|
||
}
|
||
}
|
||
},
|
||
776: function(e, t, i) {
|
||
var s = this && this.__decorate || function(e, t, i, s) {
|
||
var r, n = arguments.length,
|
||
o = n < 3 ? t : null === s ? s = Object.getOwnPropertyDescriptor(t, i) : s;
|
||
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) o = Reflect.decorate(e, t, i, s);
|
||
else
|
||
for (var a = e.length - 1; a >= 0; a--)(r = e[a]) && (o = (n < 3 ? r(o) : n > 3 ? r(t, i, o) : r(t, i)) || o);
|
||
return n > 3 && o && Object.defineProperty(t, i, o), o
|
||
},
|
||
r = this && this.__param || function(e, t) {
|
||
return function(i, s) {
|
||
t(i, s, e)
|
||
}
|
||
};
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.traceCall = t.setTraceLogger = t.LogService = void 0;
|
||
const n = i(859),
|
||
o = i(97),
|
||
a = {
|
||
trace: o.LogLevelEnum.TRACE,
|
||
debug: o.LogLevelEnum.DEBUG,
|
||
info: o.LogLevelEnum.INFO,
|
||
warn: o.LogLevelEnum.WARN,
|
||
error: o.LogLevelEnum.ERROR,
|
||
off: o.LogLevelEnum.OFF
|
||
};
|
||
let h, c = t.LogService = class extends n.Disposable {
|
||
get logLevel() {
|
||
return this._logLevel
|
||
}
|
||
constructor(e) {
|
||
super(), this._optionsService = e, this._logLevel = o.LogLevelEnum.OFF, this._updateLogLevel(), this.register(this._optionsService.onSpecificOptionChange("logLevel", (() => this._updateLogLevel()))), h = this
|
||
}
|
||
_updateLogLevel() {
|
||
this._logLevel = a[this._optionsService.rawOptions.logLevel]
|
||
}
|
||
_evalLazyOptionalParams(e) {
|
||
for (let t = 0; t < e.length; t++) "function" == typeof e[t] && (e[t] = e[t]())
|
||
}
|
||
_log(e, t, i) {
|
||
this._evalLazyOptionalParams(i), e.call(console, (this._optionsService.options.logger ? "" : "xterm.js: ") + t, ...i)
|
||
}
|
||
trace(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.TRACE && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, t)
|
||
}
|
||
debug(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.DEBUG && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, t)
|
||
}
|
||
info(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.INFO && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, t)
|
||
}
|
||
warn(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.WARN && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, t)
|
||
}
|
||
error(e, ...t) {
|
||
this._logLevel <= o.LogLevelEnum.ERROR && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, t)
|
||
}
|
||
};
|
||
t.LogService = c = s([r(0, o.IOptionsService)], c), t.setTraceLogger = function(e) {
|
||
h = e
|
||
}, t.traceCall = function(e, t, i) {
|
||
if ("function" != typeof i.value) throw new Error("not supported");
|
||
const s = i.value;
|
||
i.value = function(...e) {
|
||
if (h.logLevel !== o.LogLevelEnum.TRACE) return s.apply(this, e);
|
||
h.trace(`GlyphRenderer#${s.name}(${e.map((e => JSON.stringify(e))).join(", ")})`);
|
||
const t = s.apply(this, e);
|
||
return h.trace(`GlyphRenderer#${s.name} return`, t), t
|
||
}
|
||
}
|
||
},
|
||
726: (e, t) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.createDecorator = t.getServiceDependencies = t.serviceRegistry = void 0;
|
||
const i = "di$target",
|
||
s = "di$dependencies";
|
||
t.serviceRegistry = new Map, t.getServiceDependencies = function(e) {
|
||
return e[s] || []
|
||
}, t.createDecorator = function(e) {
|
||
if (t.serviceRegistry.has(e)) return t.serviceRegistry.get(e);
|
||
const r = function(e, t, n) {
|
||
if (3 !== arguments.length) throw new Error("@IServiceName-decorator can only be used to decorate a parameter");
|
||
! function(e, t, r) {
|
||
t[i] === t ? t[s].push({
|
||
id: e,
|
||
index: r
|
||
}) : (t[s] = [{
|
||
id: e,
|
||
index: r
|
||
}], t[i] = t)
|
||
}(r, e, n)
|
||
};
|
||
return r.toString = () => e, t.serviceRegistry.set(e, r), r
|
||
}
|
||
},
|
||
97: (e, t, i) => {
|
||
Object.defineProperty(t, "__esModule", {
|
||
value: !0
|
||
}), t.IDecorationService = t.IUnicodeService = t.IOscLinkService = t.IOptionsService = t.ILogService = t.LogLevelEnum = t.IInstantiationService = t.ICharsetService = t.ICoreService = t.ICoreMouseService = t.IBufferService = void 0;
|
||
const s = i(726);
|
||
var r;
|
||
t.IBufferService = (0, s.createDecorator)("BufferService"), t.ICoreMouseService = (0, s.createDecorator)("CoreMouseService"), t.ICoreService = (0, s.createDecorator)("CoreService"), t.ICharsetService = (0, s.createDecorator)("CharsetService"), t.IInstantiationService = (0, s.createDecorator)("InstantiationService"),
|
||
function(e) {
|
||
e[e.TRACE = 0] = "TRACE", e[e.DEBUG = 1] = "DEBUG", e[e.INFO = 2] = "INFO", e[e.WARN = 3] = "WARN", e[e.ERROR = 4] = "ERROR", e[e.OFF = 5] = "OFF"
|
||
}(r || (t.LogLevelEnum = r = {})), t.ILogService = (0, s.createDecorator)("LogService"), t.IOptionsService = (0, s.createDecorator)("OptionsService"), t.IOscLinkService = (0, s.createDecorator)("OscLinkService"), t.IUnicodeService = (0, s.createDecorator)("UnicodeService"), t.IDecorationService = (0, s.createDecorator)("DecorationService")
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
exports: {}
|
||
};
|
||
return e[s].call(n.exports, n, n.exports, i), n.exports
|
||
}
|
||
var s = {};
|
||
return (() => {
|
||
var e = s;
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
}), e.CanvasAddon = void 0;
|
||
const t = i(345),
|
||
r = i(859),
|
||
n = i(776),
|
||
o = i(949);
|
||
class a extends r.Disposable {
|
||
constructor() {
|
||
super(...arguments), this._onChangeTextureAtlas = this.register(new t.EventEmitter), this.onChangeTextureAtlas = this._onChangeTextureAtlas.event, this._onAddTextureAtlasCanvas = this.register(new t.EventEmitter), this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event
|
||
}
|
||
get textureAtlas() {
|
||
return this._renderer?.textureAtlas
|
||
}
|
||
activate(e) {
|
||
const i = e._core;
|
||
if (!e.element) return void this.register(i.onWillOpen((() => this.activate(e))));
|
||
this._terminal = e;
|
||
const s = i.coreService,
|
||
a = i.optionsService,
|
||
h = i.screenElement,
|
||
c = i.linkifier,
|
||
l = i,
|
||
d = l._bufferService,
|
||
_ = l._renderService,
|
||
u = l._characterJoinerService,
|
||
f = l._charSizeService,
|
||
v = l._coreBrowserService,
|
||
g = l._decorationService,
|
||
p = l._logService,
|
||
m = l._themeService;
|
||
(0, n.setTraceLogger)(p), this._renderer = new o.CanvasRenderer(e, h, c, d, f, a, u, s, v, g, m), this.register((0, t.forwardEvent)(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this.register((0, t.forwardEvent)(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), _.setRenderer(this._renderer), _.handleResize(d.cols, d.rows), this.register((0, r.toDisposable)((() => {
|
||
_.setRenderer(this._terminal._core._createRenderer()), _.handleResize(e.cols, e.rows), this._renderer?.dispose(), this._renderer = void 0
|
||
})))
|
||
}
|
||
clearTextureAtlas() {
|
||
this._renderer?.clearTextureAtlas()
|
||
}
|
||
}
|
||
e.CanvasAddon = a
|
||
})(), s
|
||
})(), e.exports = t()
|
||
}
|
||
},
|
||
t = {};
|
||
|
||
function i(s) {
|
||
var r = t[s];
|
||
if (void 0 !== r) return r.exports;
|
||
var n = t[s] = {
|
||
id: s,
|
||
exports: {}
|
||
};
|
||
return e[s].call(n.exports, n, n.exports, i), n.exports
|
||
}
|
||
i.n = e => {
|
||
var t = e && e.__esModule ? () => e.default : () => e;
|
||
return i.d(t, {
|
||
a: t
|
||
}), t
|
||
}, i.d = (e, t) => {
|
||
for (var s in t) i.o(t, s) && !i.o(e, s) && Object.defineProperty(e, s, {
|
||
enumerable: !0,
|
||
get: t[s]
|
||
})
|
||
}, i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), i.nc = void 0, (() => {
|
||
"use strict";
|
||
var e = i(72),
|
||
t = i.n(e),
|
||
s = i(825),
|
||
r = i.n(s),
|
||
n = i(659),
|
||
o = i.n(n),
|
||
a = i(56),
|
||
h = i.n(a),
|
||
c = i(540),
|
||
l = i.n(c),
|
||
d = i(113),
|
||
_ = i.n(d),
|
||
u = i(100),
|
||
f = {};
|
||
f.styleTagTransform = _(), f.setAttributes = h(), f.insert = o().bind(null, "head"), f.domAPI = r(), f.insertStyleElement = l(), t()(u.A, f), u.A && u.A.locals && u.A.locals;
|
||
var v = i(856),
|
||
g = i(616),
|
||
p = i(180),
|
||
m = i(880),
|
||
C = i(544),
|
||
S = i(832),
|
||
b = i(372);
|
||
class w {
|
||
constructor(e, t) {
|
||
this.element = e, this.ping = t.ping, this.websocket_url = e.dataset.sessionWebsocketUrl, this.instance = void 0;
|
||
const i = e.dataset.fontSize;
|
||
this.terminal = new v.Terminal({
|
||
allowProposedApi: !0,
|
||
fontSize: i,
|
||
scrollback: 0,
|
||
fontFamily: "'Roboto Mono', Monaco, 'Courier New', monospace"
|
||
}), this.fitAddon = new g.FitAddon, this.terminal.loadAddon(this.fitAddon), this.webglAddon = new p.WebglAddon, this.terminal.loadAddon(this.webglAddon), this.canvasAddon = new m.CanvasAddon, this.terminal.loadAddon(this.canvasAddon), this.unicode11Addon = new C.Unicode11Addon, this.terminal.loadAddon(this.unicode11Addon), this.weblinksAddon = new S.WebLinksAddon, this.terminal.loadAddon(this.weblinksAddon), this.terminal.unicode.activeVersion = "11";
|
||
const s = new b.ClipboardAddon;
|
||
this.terminal.loadAddon(s), this.terminal.open(e), this.socket = null, this.bufferedBytes = 0, this.refreshBytes = 0, this.size = null, this.terminal.element.querySelector(".xterm-screen").addEventListener("blur", (e => {
|
||
this.onBlur()
|
||
}), !0), this.terminal.element.querySelector(".xterm-screen").addEventListener("focus", (e => {
|
||
this.onFocus()
|
||
}), !0), this.terminal.onResize((e => {
|
||
this.size = {
|
||
width: e.cols,
|
||
height: e.rows
|
||
}, this.sendSize()
|
||
})), this.terminal.onData((e => {
|
||
this.socket.send(JSON.stringify(["stdin", e]))
|
||
})), window.onresize = () => {
|
||
this.fit()
|
||
}
|
||
}
|
||
sendSize() {
|
||
if (this.size) {
|
||
const e = JSON.stringify(["resize", this.size]);
|
||
this.socket && this.socket.send(e)
|
||
}
|
||
}
|
||
sendPing() {
|
||
const e = (new Date).getTime(),
|
||
t = JSON.stringify(["ping", "" + e]);
|
||
this.socket && this.socket.send(t)
|
||
}
|
||
onPong(e) {
|
||
const t = (new Date).getTime() - parseInt(e);
|
||
console.log("ping=" + t + "ms")
|
||
}
|
||
onFocus() {
|
||
const e = JSON.stringify(["focus"]);
|
||
this.socket && this.socket.send(e)
|
||
}
|
||
onBlur() {
|
||
const e = JSON.stringify(["blur"]);
|
||
this.socket && this.socket.send(e)
|
||
}
|
||
fit() {
|
||
this.fitAddon.fit(this.element)
|
||
}
|
||
async connect() {
|
||
this.ping && await fetch(this.ping, {
|
||
method: "GET",
|
||
mode: "no-cors"
|
||
}), this.fit();
|
||
const e = this.fitAddon.proposeDimensions();
|
||
this.socket = new WebSocket(this.websocket_url + "?width=" + e.cols + "&height=" + e.rows), this.socket.binaryType = "arraybuffer", this.socket.addEventListener("open", (e => {
|
||
this.element.classList.add("-connected"), this.fit(), this.sendSize(), setTimeout((() => {
|
||
this.sendPing()
|
||
}), 3), document.querySelector("body").classList.add("-loaded")
|
||
})), this.socket.addEventListener("close", (e => {
|
||
console.log("CLOSED"), document.querySelector("body").classList.add("-closed")
|
||
})), this.socket.addEventListener("message", (e => {
|
||
if ("string" == typeof e.data) {
|
||
const t = JSON.parse(e.data),
|
||
i = t[0],
|
||
s = t[1];
|
||
switch (i) {
|
||
case "log":
|
||
console.log("LOG", s);
|
||
break;
|
||
case "pong":
|
||
this.onPong(s);
|
||
break;
|
||
case "instance_id":
|
||
this.instance = s;
|
||
break;
|
||
case "open_url":
|
||
const e = s.url,
|
||
t = s.new_tab;
|
||
window.open(e, t ? "_blank" : "_self");
|
||
break;
|
||
case "deliver_file_start":
|
||
const i = s,
|
||
r = this.instance ? `?instance=${this.instance}` : "",
|
||
n = `${window.location.origin}/download/${i}${r}`;
|
||
window.open(n, "_blank")
|
||
}
|
||
} else {
|
||
const t = new Uint8Array(e.data);
|
||
this.bufferedBytes += t.length, this.refreshBytes += t.length, this.terminal.write(t, (() => {
|
||
this.bufferedBytes -= t.length
|
||
})), t.length > 10 && document.querySelector("body").classList.add("-first-byte")
|
||
}
|
||
}))
|
||
}
|
||
}
|
||
window.onload = e => {
|
||
const t = document.querySelectorAll(".textual-terminal"),
|
||
i = new URLSearchParams(window.location.search),
|
||
s = i.get("delay"),
|
||
r = i.get("ping");
|
||
s && document.querySelector("#start").classList.add("-delay"), t.forEach((e => {
|
||
const t = new w(e, {
|
||
ping: r
|
||
});
|
||
t.fit(), s || t.connect()
|
||
}))
|
||
}
|
||
})()
|
||
})(); |