@jsenv/terminal-recorder 1.4.6 → 1.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/js/terminal_recorder.js +24 -33
  2. package/package.json +5 -5
  3. package/src/.jsenv/chrome@128.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-fit/lib/addon-fit.js +2 -0
  4. package/src/.jsenv/chrome@128.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-fit/lib/addon-fit.js.map +64 -0
  5. package/src/.jsenv/chrome@128.00/terminal_recorder.js +26 -35
  6. package/src/.jsenv/chrome@128.00/terminal_recorder.js.map +2 -2
  7. package/src/client/terminal_recorder.js +25 -34
  8. package/src/client/xterm_dev.html +1 -1
  9. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-serialize/lib/addon-serialize.js +0 -2
  10. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-serialize/lib/addon-serialize.js.map +0 -434
  11. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-serialize/lib/addon-serialize.mjs +0 -749
  12. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-serialize/lib/addon-serialize.mjs.map +0 -477
  13. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-webgl/lib/addon-webgl.js +0 -2
  14. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/addon-webgl/lib/addon-webgl.js.map +0 -1134
  15. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/xterm/css/xterm.css +0 -204
  16. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/xterm/lib/xterm.js +0 -2
  17. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/node_modules/@xterm/xterm/lib/xterm.js.map +0 -2558
  18. package/src/.jsenv/chrome@127.00/@fs/Users/damien.maillard/dev/perso/jsenv-core/packages/internal/plugin-supervisor/src/client/supervisor.js +0 -1342
  19. package/src/.jsenv/chrome@127.00/gif_encoder.js +0 -400
  20. package/src/.jsenv/chrome@127.00/gif_encoder.js.map +0 -11
  21. package/src/.jsenv/chrome@127.00/lzw_encoder.js +0 -253
  22. package/src/.jsenv/chrome@127.00/neuquant.js +0 -498
  23. package/src/.jsenv/chrome@127.00/terminal_recorder.js +0 -380
  24. package/src/.jsenv/chrome@127.00/terminal_recorder.js.map +0 -11
  25. package/src/.jsenv/chrome@127.00/xterm.html +0 -46
  26. package/src/.jsenv/chrome@127.00/xterm.html@L14C5-L18C14.js +0 -5
  27. package/src/.jsenv/chrome@127.00/xterm.html@L19C5-L24C14.js +0 -7
  28. package/src/.jsenv/chrome@127.00/xterm.html@L19C5-L24C14.js.map +0 -11
@@ -1,3 +1,5 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FitAddon=t():e.FitAddon=t();}(self,(()=>(()=>{var e={};return (()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.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 r=0===this._terminal.options.scrollback?0:e.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),o=parseInt(i.getPropertyValue("height")),s=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),l=o-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),a=s-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-r;return {cols:Math.max(2,Math.floor(a/t.css.cell.width)),rows:Math.max(1,Math.floor(l/t.css.cell.height))}}};})(),e})()));
2
+
1
3
  !function (e, t) {
2
4
  "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.SerializeAddon = t() : e.SerializeAddon = t();
3
5
  }(window, () => (() => {
@@ -1916,6 +1918,7 @@ https://github.com/xtermjs/xterm.js/blob/master/typings/xterm.d.ts
1916
1918
 
1917
1919
 
1918
1920
  const { Terminal } = window;
1921
+ const { FitAddon } = window.FitAddon;
1919
1922
  const { WebglAddon } = window.WebglAddon;
1920
1923
  const { SerializeAddon } = window.SerializeAddon;
1921
1924
 
@@ -1972,47 +1975,35 @@ const initTerminal = ({
1972
1975
  brightBlue: "#87CEEB",
1973
1976
  },
1974
1977
  });
1975
- term.loadAddon(
1976
- new WebglAddon(
1977
- // we pass true to enable preserveDrawingBuffer
1978
- // it's not actually useful thanks to term.write callback +
1979
- // call on _innerRefresh() before context.drawImage
1980
- // but let's keep it nevertheless
1981
- true,
1982
- ),
1983
- );
1984
1978
  const serializeAddon = new SerializeAddon();
1985
1979
  term.loadAddon(serializeAddon);
1986
-
1987
- const terminalElement = document.getElementById("terminal");
1980
+ const fitAddon = new FitAddon();
1981
+ term.loadAddon(fitAddon);
1982
+ const webglAddon = new WebglAddon(
1983
+ // we pass true to enable preserveDrawingBuffer
1984
+ // it's not actually useful thanks to term.write callback +
1985
+ // call on _innerRefresh() before context.drawImage
1986
+ // but let's keep it nevertheless
1987
+ true,
1988
+ );
1989
+ term.loadAddon(webglAddon);
1990
+ const terminalElement = document.querySelector("#terminal");
1988
1991
  term.open(terminalElement);
1992
+ fitAddon.fit();
1989
1993
 
1990
- const canvasPromise = (async () => {
1991
- const canvas = document.querySelector("#canvas");
1992
- if (!canvas) {
1993
- throw new Error('Cannot find <canvas id="canvas"> in the document');
1994
- }
1995
- let xtermCanvas = document.querySelector(
1996
- "#terminal canvas.xterm-link-layer + canvas",
1997
- );
1998
- if (!xtermCanvas) {
1999
- await new Promise((resolve) => setTimeout(resolve, 100));
2000
- xtermCanvas = document.querySelector(
2001
- "#terminal canvas.xterm-link-layer + canvas",
2002
- );
2003
- if (!xtermCanvas) {
2004
- throw new Error(
2005
- "Cannot find xterm canvas (canvas.xterm-link-layer + canvas)",
2006
- );
2007
- }
2008
- }
2009
- return { canvas, xtermCanvas };
2010
- })();
1994
+ const canvas = document.querySelector("#canvas");
1995
+ if (!canvas) {
1996
+ throw new Error('Cannot find <canvas id="canvas"> in the document');
1997
+ }
1998
+ const xTermCanvasSelector = "#terminal canvas.xterm-link-layer + canvas";
1999
+ const xtermCanvas = document.querySelector(xTermCanvasSelector);
2000
+ if (!xtermCanvas) {
2001
+ throw new Error(`Cannot find xterm canvas (${xTermCanvasSelector})`);
2002
+ }
2011
2003
 
2012
2004
  return {
2013
2005
  term,
2014
2006
  startRecording: async () => {
2015
- const { canvas, xtermCanvas } = await canvasPromise;
2016
2007
  const context = canvas.getContext("2d", { willReadFrequently: true });
2017
2008
  context.imageSmoothingEnabled = true;
2018
2009
  const headerHeight = 40;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/terminal-recorder",
3
- "version": "1.4.6",
3
+ "version": "1.4.8",
4
4
  "description": "Record terminal output as .svg, .gif, .webm, .mp4",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,13 +33,12 @@
33
33
  ],
34
34
  "scripts": {
35
35
  "dev": "node ./scripts/dev.mjs",
36
- "test": "node ./scripts/test.mjs",
37
36
  "build": "node ./scripts/build.mjs",
38
37
  "prepublishOnly": "npm run build"
39
38
  },
40
39
  "dependencies": {
41
40
  "@jsenv/humanize": "1.2.8",
42
- "@jsenv/server": "15.3.0",
41
+ "@jsenv/server": "15.3.1",
43
42
  "@playwright/browser-chromium": "1.46.0",
44
43
  "ansi-regex": "6.0.1",
45
44
  "he": "1.2.0",
@@ -49,8 +48,9 @@
49
48
  "webm-to-mp4": "1.0.0"
50
49
  },
51
50
  "devDependencies": {
51
+ "@xterm/addon-fit": "0.10.0",
52
52
  "@xterm/addon-serialize": "0.13.0",
53
- "@xterm/xterm": "5.5.0",
54
- "@xterm/addon-webgl": "0.18.0"
53
+ "@xterm/addon-webgl": "0.18.0",
54
+ "@xterm/xterm": "5.5.0"
55
55
  }
56
56
  }
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FitAddon=t():e.FitAddon=t()}(self,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.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 r=0===this._terminal.options.scrollback?0:e.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),o=parseInt(i.getPropertyValue("height")),s=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),l=o-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),a=s-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-r;return{cols:Math.max(2,Math.floor(a/t.css.cell.width)),rows:Math.max(1,Math.floor(l/t.css.cell.height))}}}})(),e})()));
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24tZml0LmpzIiwibWFwcGluZ3MiOiJDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxJQUNRLG1CQUFYRyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sR0FBSUgsR0FDZSxpQkFBWkMsUUFDZEEsUUFBa0IsU0FBSUQsSUFFdEJELEVBQWUsU0FBSUMsR0FDcEIsQ0FURCxDQVNHSyxNQUFNLEksbUhDZVQsaUJBR1MsUUFBQUMsQ0FBU0MsR0FDZEMsS0FBS0MsVUFBWUYsQ0FDbkIsQ0FFTyxPQUFBRyxHQUFpQixDQUVqQixHQUFBQyxHQUNMLE1BQU1DLEVBQU9KLEtBQUtLLG9CQUNsQixJQUFLRCxJQUFTSixLQUFLQyxXQUFhSyxNQUFNRixFQUFLRyxPQUFTRCxNQUFNRixFQUFLSSxNQUM3RCxPQUlGLE1BQU1DLEVBQVFULEtBQUtDLFVBQWtCUyxNQUdqQ1YsS0FBS0MsVUFBVU8sT0FBU0osRUFBS0ksTUFBUVIsS0FBS0MsVUFBVU0sT0FBU0gsRUFBS0csT0FDcEVFLEVBQUtFLGVBQWVDLFFBQ3BCWixLQUFLQyxVQUFVWSxPQUFPVCxFQUFLRyxLQUFNSCxFQUFLSSxNQUUxQyxDQUVPLGlCQUFBSCxHQUNMLElBQUtMLEtBQUtDLFVBQ1IsT0FHRixJQUFLRCxLQUFLQyxVQUFVYSxVQUFZZCxLQUFLQyxVQUFVYSxRQUFRQyxjQUNyRCxPQUlGLE1BQU1OLEVBQVFULEtBQUtDLFVBQWtCUyxNQUMvQk4sRUFBMEJLLEVBQUtFLGVBQWVLLFdBRXBELEdBQTRCLElBQXhCWixFQUFLYSxJQUFJQyxLQUFLQyxPQUF3QyxJQUF6QmYsRUFBS2EsSUFBSUMsS0FBS0UsT0FDN0MsT0FHRixNQUFNQyxFQUF1RCxJQUF0Q3JCLEtBQUtDLFVBQVVxQixRQUFRQyxXQUM1QyxFQUFJZCxFQUFLZSxTQUFTQyxlQUVkQyxFQUFxQkMsT0FBT0MsaUJBQWlCNUIsS0FBS0MsVUFBVWEsUUFBUUMsZUFDcEVjLEVBQXNCQyxTQUFTSixFQUFtQkssaUJBQWlCLFdBQ25FQyxFQUFxQkMsS0FBS0MsSUFBSSxFQUFHSixTQUFTSixFQUFtQkssaUJBQWlCLFdBQzlFSSxFQUFlUixPQUFPQyxpQkFBaUI1QixLQUFLQyxVQUFVYSxTQVN0RHNCLEVBQWtCUCxHQVBqQkMsU0FBU0ssRUFBYUosaUJBQWlCLGdCQUNwQ0QsU0FBU0ssRUFBYUosaUJBQWlCLG9CQU8zQ00sRUFBaUJMLEdBTmRGLFNBQVNLLEVBQWFKLGlCQUFpQixrQkFDeENELFNBQVNLLEVBQWFKLGlCQUFpQixrQkFLaUJWLEVBS2hFLE1BSmlCLENBQ2ZkLEtBQU0wQixLQUFLQyxJQS9ESSxFQStEY0QsS0FBS0ssTUFBTUQsRUFBaUJqQyxFQUFLYSxJQUFJQyxLQUFLQyxRQUN2RVgsS0FBTXlCLEtBQUtDLElBL0RJLEVBK0RjRCxLQUFLSyxNQUFNRixFQUFrQmhDLEVBQUthLElBQUlDLEtBQUtFLFNBRzVFLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9GaXRBZGRvbi93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vRml0QWRkb24vc3JjL0ZpdEFkZG9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIkZpdEFkZG9uXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkZpdEFkZG9uXCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSB4dGVybS5qcyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogQGxpY2Vuc2UgTUlUXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUZXJtaW5hbCwgSVRlcm1pbmFsQWRkb24gfSBmcm9tICdAeHRlcm0veHRlcm0nO1xuaW1wb3J0IHR5cGUgeyBGaXRBZGRvbiBhcyBJRml0QXBpIH0gZnJvbSAnQHh0ZXJtL2FkZG9uLWZpdCc7XG5pbXBvcnQgeyBJUmVuZGVyRGltZW5zaW9ucyB9IGZyb20gJ2Jyb3dzZXIvcmVuZGVyZXIvc2hhcmVkL1R5cGVzJztcblxuaW50ZXJmYWNlIElUZXJtaW5hbERpbWVuc2lvbnMge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByb3dzIGluIHRoZSB0ZXJtaW5hbC5cbiAgICovXG4gIHJvd3M6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSB0ZXJtaW5hbC5cbiAgICovXG4gIGNvbHM6IG51bWJlcjtcbn1cblxuY29uc3QgTUlOSU1VTV9DT0xTID0gMjtcbmNvbnN0IE1JTklNVU1fUk9XUyA9IDE7XG5cbmV4cG9ydCBjbGFzcyBGaXRBZGRvbiBpbXBsZW1lbnRzIElUZXJtaW5hbEFkZG9uICwgSUZpdEFwaSB7XG4gIHByaXZhdGUgX3Rlcm1pbmFsOiBUZXJtaW5hbCB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgYWN0aXZhdGUodGVybWluYWw6IFRlcm1pbmFsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVybWluYWwgPSB0ZXJtaW5hbDtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge31cblxuICBwdWJsaWMgZml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRpbXMgPSB0aGlzLnByb3Bvc2VEaW1lbnNpb25zKCk7XG4gICAgaWYgKCFkaW1zIHx8ICF0aGlzLl90ZXJtaW5hbCB8fCBpc05hTihkaW1zLmNvbHMpIHx8IGlzTmFOKGRpbXMucm93cykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBSZW1vdmUgcmVsaWFuY2Ugb24gcHJpdmF0ZSBBUElcbiAgICBjb25zdCBjb3JlID0gKHRoaXMuX3Rlcm1pbmFsIGFzIGFueSkuX2NvcmU7XG5cbiAgICAvLyBGb3JjZSBhIGZ1bGwgcmVuZGVyXG4gICAgaWYgKHRoaXMuX3Rlcm1pbmFsLnJvd3MgIT09IGRpbXMucm93cyB8fCB0aGlzLl90ZXJtaW5hbC5jb2xzICE9PSBkaW1zLmNvbHMpIHtcbiAgICAgIGNvcmUuX3JlbmRlclNlcnZpY2UuY2xlYXIoKTtcbiAgICAgIHRoaXMuX3Rlcm1pbmFsLnJlc2l6ZShkaW1zLmNvbHMsIGRpbXMucm93cyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb3Bvc2VEaW1lbnNpb25zKCk6IElUZXJtaW5hbERpbWVuc2lvbnMgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fdGVybWluYWwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl90ZXJtaW5hbC5lbGVtZW50IHx8ICF0aGlzLl90ZXJtaW5hbC5lbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogUmVtb3ZlIHJlbGlhbmNlIG9uIHByaXZhdGUgQVBJXG4gICAgY29uc3QgY29yZSA9ICh0aGlzLl90ZXJtaW5hbCBhcyBhbnkpLl9jb3JlO1xuICAgIGNvbnN0IGRpbXM6IElSZW5kZXJEaW1lbnNpb25zID0gY29yZS5fcmVuZGVyU2VydmljZS5kaW1lbnNpb25zO1xuXG4gICAgaWYgKGRpbXMuY3NzLmNlbGwud2lkdGggPT09IDAgfHwgZGltcy5jc3MuY2VsbC5oZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLl90ZXJtaW5hbC5vcHRpb25zLnNjcm9sbGJhY2sgPT09IDAgP1xuICAgICAgMCA6IGNvcmUudmlld3BvcnQuc2Nyb2xsQmFyV2lkdGg7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl90ZXJtaW5hbC5lbGVtZW50LnBhcmVudEVsZW1lbnQpO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnRIZWlnaHQgPSBwYXJzZUludChwYXJlbnRFbGVtZW50U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0JykpO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnRXaWR0aCA9IE1hdGgubWF4KDAsIHBhcnNlSW50KHBhcmVudEVsZW1lbnRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCd3aWR0aCcpKSk7XG4gICAgY29uc3QgZWxlbWVudFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fdGVybWluYWwuZWxlbWVudCk7XG4gICAgY29uc3QgZWxlbWVudFBhZGRpbmcgPSB7XG4gICAgICB0b3A6IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpKSxcbiAgICAgIGJvdHRvbTogcGFyc2VJbnQoZWxlbWVudFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJykpLFxuICAgICAgcmlnaHQ6IHBhcnNlSW50KGVsZW1lbnRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXJpZ2h0JykpLFxuICAgICAgbGVmdDogcGFyc2VJbnQoZWxlbWVudFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpKVxuICAgIH07XG4gICAgY29uc3QgZWxlbWVudFBhZGRpbmdWZXIgPSBlbGVtZW50UGFkZGluZy50b3AgKyBlbGVtZW50UGFkZGluZy5ib3R0b207XG4gICAgY29uc3QgZWxlbWVudFBhZGRpbmdIb3IgPSBlbGVtZW50UGFkZGluZy5yaWdodCArIGVsZW1lbnRQYWRkaW5nLmxlZnQ7XG4gICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0ID0gcGFyZW50RWxlbWVudEhlaWdodCAtIGVsZW1lbnRQYWRkaW5nVmVyO1xuICAgIGNvbnN0IGF2YWlsYWJsZVdpZHRoID0gcGFyZW50RWxlbWVudFdpZHRoIC0gZWxlbWVudFBhZGRpbmdIb3IgLSBzY3JvbGxiYXJXaWR0aDtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHtcbiAgICAgIGNvbHM6IE1hdGgubWF4KE1JTklNVU1fQ09MUywgTWF0aC5mbG9vcihhdmFpbGFibGVXaWR0aCAvIGRpbXMuY3NzLmNlbGwud2lkdGgpKSxcbiAgICAgIHJvd3M6IE1hdGgubWF4KE1JTklNVU1fUk9XUywgTWF0aC5mbG9vcihhdmFpbGFibGVIZWlnaHQgLyBkaW1zLmNzcy5jZWxsLmhlaWdodCkpXG4gICAgfTtcbiAgICByZXR1cm4gZ2VvbWV0cnk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwiYWN0aXZhdGUiLCJ0ZXJtaW5hbCIsInRoaXMiLCJfdGVybWluYWwiLCJkaXNwb3NlIiwiZml0IiwiZGltcyIsInByb3Bvc2VEaW1lbnNpb25zIiwiaXNOYU4iLCJjb2xzIiwicm93cyIsImNvcmUiLCJfY29yZSIsIl9yZW5kZXJTZXJ2aWNlIiwiY2xlYXIiLCJyZXNpemUiLCJlbGVtZW50IiwicGFyZW50RWxlbWVudCIsImRpbWVuc2lvbnMiLCJjc3MiLCJjZWxsIiwid2lkdGgiLCJoZWlnaHQiLCJzY3JvbGxiYXJXaWR0aCIsIm9wdGlvbnMiLCJzY3JvbGxiYWNrIiwidmlld3BvcnQiLCJzY3JvbGxCYXJXaWR0aCIsInBhcmVudEVsZW1lbnRTdHlsZSIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJwYXJlbnRFbGVtZW50SGVpZ2h0IiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicGFyZW50RWxlbWVudFdpZHRoIiwiTWF0aCIsIm1heCIsImVsZW1lbnRTdHlsZSIsImF2YWlsYWJsZUhlaWdodCIsImF2YWlsYWJsZVdpZHRoIiwiZmxvb3IiXSwic291cmNlUm9vdCI6IiJ9
@@ -0,0 +1,64 @@
1
+ {
2
+ "version": 3,
3
+ "file": "addon-fit.js",
4
+ "mappings": "CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAkB,SAAID,IAEtBD,EAAe,SAAIC,GACpB,CATD,CASGK,MAAM,I,mHCeT,iBAGS,QAAAC,CAASC,GACdC,KAAKC,UAAYF,CACnB,CAEO,OAAAG,GAAiB,CAEjB,GAAAC,GACL,MAAMC,EAAOJ,KAAKK,oBAClB,IAAKD,IAASJ,KAAKC,WAAaK,MAAMF,EAAKG,OAASD,MAAMF,EAAKI,MAC7D,OAIF,MAAMC,EAAQT,KAAKC,UAAkBS,MAGjCV,KAAKC,UAAUO,OAASJ,EAAKI,MAAQR,KAAKC,UAAUM,OAASH,EAAKG,OACpEE,EAAKE,eAAeC,QACpBZ,KAAKC,UAAUY,OAAOT,EAAKG,KAAMH,EAAKI,MAE1C,CAEO,iBAAAH,GACL,IAAKL,KAAKC,UACR,OAGF,IAAKD,KAAKC,UAAUa,UAAYd,KAAKC,UAAUa,QAAQC,cACrD,OAIF,MAAMN,EAAQT,KAAKC,UAAkBS,MAC/BN,EAA0BK,EAAKE,eAAeK,WAEpD,GAA4B,IAAxBZ,EAAKa,IAAIC,KAAKC,OAAwC,IAAzBf,EAAKa,IAAIC,KAAKE,OAC7C,OAGF,MAAMC,EAAuD,IAAtCrB,KAAKC,UAAUqB,QAAQC,WAC5C,EAAId,EAAKe,SAASC,eAEdC,EAAqBC,OAAOC,iBAAiB5B,KAAKC,UAAUa,QAAQC,eACpEc,EAAsBC,SAASJ,EAAmBK,iBAAiB,WACnEC,EAAqBC,KAAKC,IAAI,EAAGJ,SAASJ,EAAmBK,iBAAiB,WAC9EI,EAAeR,OAAOC,iBAAiB5B,KAAKC,UAAUa,SAStDsB,EAAkBP,GAPjBC,SAASK,EAAaJ,iBAAiB,gBACpCD,SAASK,EAAaJ,iBAAiB,oBAO3CM,EAAiBL,GANdF,SAASK,EAAaJ,iBAAiB,kBACxCD,SAASK,EAAaJ,iBAAiB,kBAKiBV,EAKhE,MAJiB,CACfd,KAAM0B,KAAKC,IA/DI,EA+DcD,KAAKK,MAAMD,EAAiBjC,EAAKa,IAAIC,KAAKC,QACvEX,KAAMyB,KAAKC,IA/DI,EA+DcD,KAAKK,MAAMF,EAAkBhC,EAAKa,IAAIC,KAAKE,SAG5E,E",
5
+ "sources": [
6
+ "webpack://FitAddon/webpack/universalModuleDefinition",
7
+ "webpack://FitAddon/src/FitAddon.ts"
8
+ ],
9
+ "sourcesContent": [
10
+ "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"FitAddon\"] = factory();\n\telse\n\t\troot[\"FitAddon\"] = factory();\n})(self, () => {\nreturn ",
11
+ "/**\n * Copyright (c) 2017 The xterm.js authors. All rights reserved.\n * @license MIT\n */\n\nimport type { Terminal, ITerminalAddon } from '@xterm/xterm';\nimport type { FitAddon as IFitApi } from '@xterm/addon-fit';\nimport { IRenderDimensions } from 'browser/renderer/shared/Types';\n\ninterface ITerminalDimensions {\n /**\n * The number of rows in the terminal.\n */\n rows: number;\n\n /**\n * The number of columns in the terminal.\n */\n cols: number;\n}\n\nconst MINIMUM_COLS = 2;\nconst MINIMUM_ROWS = 1;\n\nexport class FitAddon implements ITerminalAddon , IFitApi {\n private _terminal: Terminal | undefined;\n\n public activate(terminal: Terminal): void {\n this._terminal = terminal;\n }\n\n public dispose(): void {}\n\n public fit(): void {\n const dims = this.proposeDimensions();\n if (!dims || !this._terminal || isNaN(dims.cols) || isNaN(dims.rows)) {\n return;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n\n // Force a full render\n if (this._terminal.rows !== dims.rows || this._terminal.cols !== dims.cols) {\n core._renderService.clear();\n this._terminal.resize(dims.cols, dims.rows);\n }\n }\n\n public proposeDimensions(): ITerminalDimensions | undefined {\n if (!this._terminal) {\n return undefined;\n }\n\n if (!this._terminal.element || !this._terminal.element.parentElement) {\n return undefined;\n }\n\n // TODO: Remove reliance on private API\n const core = (this._terminal as any)._core;\n const dims: IRenderDimensions = core._renderService.dimensions;\n\n if (dims.css.cell.width === 0 || dims.css.cell.height === 0) {\n return undefined;\n }\n\n const scrollbarWidth = this._terminal.options.scrollback === 0 ?\n 0 : core.viewport.scrollBarWidth;\n\n const parentElementStyle = window.getComputedStyle(this._terminal.element.parentElement);\n const parentElementHeight = parseInt(parentElementStyle.getPropertyValue('height'));\n const parentElementWidth = Math.max(0, parseInt(parentElementStyle.getPropertyValue('width')));\n const elementStyle = window.getComputedStyle(this._terminal.element);\n const elementPadding = {\n top: parseInt(elementStyle.getPropertyValue('padding-top')),\n bottom: parseInt(elementStyle.getPropertyValue('padding-bottom')),\n right: parseInt(elementStyle.getPropertyValue('padding-right')),\n left: parseInt(elementStyle.getPropertyValue('padding-left'))\n };\n const elementPaddingVer = elementPadding.top + elementPadding.bottom;\n const elementPaddingHor = elementPadding.right + elementPadding.left;\n const availableHeight = parentElementHeight - elementPaddingVer;\n const availableWidth = parentElementWidth - elementPaddingHor - scrollbarWidth;\n const geometry = {\n cols: Math.max(MINIMUM_COLS, Math.floor(availableWidth / dims.css.cell.width)),\n rows: Math.max(MINIMUM_ROWS, Math.floor(availableHeight / dims.css.cell.height))\n };\n return geometry;\n }\n}\n"
12
+ ],
13
+ "names": [
14
+ "root",
15
+ "factory",
16
+ "exports",
17
+ "module",
18
+ "define",
19
+ "amd",
20
+ "self",
21
+ "activate",
22
+ "terminal",
23
+ "this",
24
+ "_terminal",
25
+ "dispose",
26
+ "fit",
27
+ "dims",
28
+ "proposeDimensions",
29
+ "isNaN",
30
+ "cols",
31
+ "rows",
32
+ "core",
33
+ "_core",
34
+ "_renderService",
35
+ "clear",
36
+ "resize",
37
+ "element",
38
+ "parentElement",
39
+ "dimensions",
40
+ "css",
41
+ "cell",
42
+ "width",
43
+ "height",
44
+ "scrollbarWidth",
45
+ "options",
46
+ "scrollback",
47
+ "viewport",
48
+ "scrollBarWidth",
49
+ "parentElementStyle",
50
+ "window",
51
+ "getComputedStyle",
52
+ "parentElementHeight",
53
+ "parseInt",
54
+ "getPropertyValue",
55
+ "parentElementWidth",
56
+ "Math",
57
+ "max",
58
+ "elementStyle",
59
+ "availableHeight",
60
+ "availableWidth",
61
+ "floor"
62
+ ],
63
+ "sourceRoot": ""
64
+ }