@difizen/libro-terminal 0.1.14 → 0.1.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAU,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAM3E,CAAC;AAEF,qBACa,2BACX,YAAW,mBAAmB,EAAE,sBAAsB;IAEjC,WAAW,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC5C,OAAO,EAAE,eAAe,CAAC;IAClD,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAS1D,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;CAuBlD"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAU,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAU3E,CAAC;AAEF,qBACa,2BACX,YAAW,mBAAmB,EAAE,sBAAsB;IAEjC,WAAW,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC5C,OAAO,EAAE,eAAe,CAAC;IAClD,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAS1D,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;CAqClD"}
package/es/command.js CHANGED
@@ -24,6 +24,10 @@ export var TerminalCommands = {
24
24
  id: 'libro-terminal-open',
25
25
  label: '新建终端',
26
26
  keybind: 'ctrl+`'
27
+ },
28
+ CloseTerminal: {
29
+ id: 'libro-terminal-close',
30
+ label: '关闭终端'
27
31
  }
28
32
  };
29
33
  export var TerminalCommandContribution = (_dec = singleton({
@@ -52,16 +56,14 @@ export var TerminalCommandContribution = (_dec = singleton({
52
56
  var _this = this;
53
57
  commands.registerCommand(TerminalCommands['OpenTerminal'], {
54
58
  execute: function () {
55
- var _execute = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
59
+ var _execute = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(name) {
56
60
  var terminalView, slot;
57
61
  return _regeneratorRuntime().wrap(function _callee$(_context) {
58
62
  while (1) switch (_context.prev = _context.next) {
59
63
  case 0:
60
64
  _context.prev = 0;
61
65
  _context.next = 3;
62
- return _this.viewManager.getOrCreateView(LibroTerminalView, {
63
- id: _this.manager.newTerminalName()
64
- });
66
+ return _this.viewManager.getOrCreateView(LibroTerminalView, _this.manager.getTerminalArgs(name));
65
67
  case 3:
66
68
  terminalView = _context.sent;
67
69
  _context.next = 6;
@@ -85,12 +87,43 @@ export var TerminalCommandContribution = (_dec = singleton({
85
87
  }
86
88
  }, _callee, null, [[0, 10]]);
87
89
  }));
88
- function execute() {
90
+ function execute(_x) {
89
91
  return _execute.apply(this, arguments);
90
92
  }
91
93
  return execute;
92
94
  }()
93
95
  });
96
+ commands.registerCommand(TerminalCommands['CloseTerminal'], {
97
+ execute: function () {
98
+ var _execute2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name) {
99
+ var terminalView;
100
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
101
+ while (1) switch (_context2.prev = _context2.next) {
102
+ case 0:
103
+ _context2.prev = 0;
104
+ _context2.next = 3;
105
+ return _this.viewManager.getOrCreateView(LibroTerminalView, _this.manager.getTerminalArgs(name));
106
+ case 3:
107
+ terminalView = _context2.sent;
108
+ terminalView.dispose();
109
+ _context2.next = 10;
110
+ break;
111
+ case 7:
112
+ _context2.prev = 7;
113
+ _context2.t0 = _context2["catch"](0);
114
+ console.error(_context2.t0);
115
+ case 10:
116
+ case "end":
117
+ return _context2.stop();
118
+ }
119
+ }, _callee2, null, [[0, 7]]);
120
+ }));
121
+ function execute(_x2) {
122
+ return _execute2.apply(this, arguments);
123
+ }
124
+ return execute;
125
+ }()
126
+ });
94
127
  }
95
128
  }]);
96
129
  return TerminalCommandContribution;
package/es/manager.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare class TerminalManager implements Disposable, Disposed {
14
14
  protected _ready: Promise<void>;
15
15
  protected _runningChanged: Emitter<TerminalModel[]>;
16
16
  protected _connectionFailure: Emitter<Error>;
17
+ terminalOptionsCache: Map<any, any>;
17
18
  protected _names: string[];
18
19
  protected get _models(): TerminalModel[];
19
20
  terminalRestAPI: TerminalRestAPI;
@@ -56,6 +57,7 @@ export declare class TerminalManager implements Disposable, Disposed {
56
57
  * @returns A new iterator over the running terminals.
57
58
  */
58
59
  running(): IterableIterator<TerminalModel>;
60
+ get runningModels(): string[];
59
61
  /**
60
62
  * Force a refresh of the running terminals.
61
63
  *
@@ -101,6 +103,6 @@ export declare class TerminalManager implements Disposable, Disposed {
101
103
  */
102
104
  protected _onDisposed(terminalConnection: TerminalConnection): void;
103
105
  getOrCreate: (options: TerminalOption) => Promise<TerminalConnection>;
104
- newTerminalName: () => string;
106
+ getTerminalArgs: (name?: string) => any;
105
107
  }
106
108
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAgB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,OAAO,EAAU,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,qBACa,eAAgB,YAAW,UAAU,EAAE,QAAQ;IAC1D,QAAQ,UAAS;IACjB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAC5B,SAAS,CAAC,oBAAoB,0BAAiC;IAC/D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,eAAe,2BAAkC;IAC3D,SAAS,CAAC,kBAAkB,iBAAwB;IAEpD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,SAAS,KAAK,OAAO,IAAI,aAAa,EAAE,CAIvC;IAEwB,eAAe,EAAE,eAAe,CAAC;IAG1D,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;OAEG;gBACmC,gBAAgB,EAAE,gBAAgB;IAwBxE;;OAEG;IACH,IAAI,cAAc,8CAEjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAE3C;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,CAEpC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;IAoBf,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB;IAaxD;;;;OAIG;IACH,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAI1C;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMpE;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCrC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAOlE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAQnE,WAAW,YAAmB,cAAc,iCAoB1C;IACF,eAAe,eAEb;CACH"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAgB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,OAAO,EAAU,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,qBACa,eAAgB,YAAW,UAAU,EAAE,QAAQ;IAC1D,QAAQ,UAAS;IACjB,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAC5B,SAAS,CAAC,oBAAoB,0BAAiC;IAC/D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,CAAC,eAAe,2BAAkC;IAC3D,SAAS,CAAC,kBAAkB,iBAAwB;IAGpD,oBAAoB,gBAAa;IAKjC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAEhC,SAAS,KAAK,OAAO,IAAI,aAAa,EAAE,CAIvC;IAEwB,eAAe,EAAE,eAAe,CAAC;IAG1D,yBAAyB,EAAE,yBAAyB,CAAC;IACrD,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC;;OAEG;gBACmC,gBAAgB,EAAE,gBAAgB;IAwBxE;;OAEG;IACH,IAAI,cAAc,8CAEjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAE3C;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,CAEpC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;IAoBf,SAAS,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB;IAaxD;;;;OAIG;IACH,OAAO,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAI1C,IAAI,aAAa,aAEhB;IAED;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMpE;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCrC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAOlE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAQnE,WAAW,YAAmB,cAAc,iCAoB1C;IAGF,eAAe,UAAW,MAAM,SAW9B;CACH"}
package/es/manager.js CHANGED
@@ -1,5 +1,5 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
2
+ var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
3
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -19,12 +19,13 @@ function _initializerWarningHelper(descriptor, context) { throw new Error('Decor
19
19
 
20
20
  import { Poll } from '@difizen/libro-common';
21
21
  import { NetworkError, ServerConnection } from '@difizen/libro-kernel';
22
+ import { prop } from '@difizen/mana-app';
22
23
  import { singleton } from '@difizen/mana-app';
23
24
  import { Emitter, inject } from '@difizen/mana-app';
24
25
  import { v4 } from 'uuid';
25
26
  import { TerminalConnectionFactory } from "./protocol.js";
26
27
  import { TerminalRestAPI } from "./restapi.js";
27
- export var TerminalManager = (_dec = singleton(), _dec2 = inject(TerminalRestAPI), _dec3 = inject(TerminalConnectionFactory), _dec(_class = (_class2 = /*#__PURE__*/function () {
28
+ export var TerminalManager = (_dec = singleton(), _dec2 = prop(), _dec3 = inject(TerminalRestAPI), _dec4 = inject(TerminalConnectionFactory), _dec(_class = (_class2 = /*#__PURE__*/function () {
28
29
  /**
29
30
  * Construct a new terminal manager.
30
31
  */
@@ -36,11 +37,13 @@ export var TerminalManager = (_dec = singleton(), _dec2 = inject(TerminalRestAPI
36
37
  this._terminalConnections = new Set();
37
38
  this._runningChanged = new Emitter();
38
39
  this._connectionFailure = new Emitter();
40
+ // 缓存创建terminal的参数
41
+ this.terminalOptionsCache = new Map();
39
42
  // As an optimization, we unwrap the models to just store the names.
40
- this._names = [];
41
- _initializerDefineProperty(this, "terminalRestAPI", _descriptor, this);
43
+ _initializerDefineProperty(this, "_names", _descriptor, this);
44
+ _initializerDefineProperty(this, "terminalRestAPI", _descriptor2, this);
42
45
  // @inject(ServerConnection) serverConnection: ServerConnection;
43
- _initializerDefineProperty(this, "terminalConnectionFactory", _descriptor2, this);
46
+ _initializerDefineProperty(this, "terminalConnectionFactory", _descriptor3, this);
44
47
  this.getOrCreate = /*#__PURE__*/function () {
45
48
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
46
49
  var name, cwd, connection, models;
@@ -99,8 +102,21 @@ export var TerminalManager = (_dec = singleton(), _dec2 = inject(TerminalRestAPI
99
102
  return _ref.apply(this, arguments);
100
103
  };
101
104
  }();
102
- this.newTerminalName = function () {
103
- return v4();
105
+ // 新建和打开一个已有Terminal,二者所需参数不一样
106
+ this.getTerminalArgs = function (name) {
107
+ // 通过缓存值作为option创建终端
108
+ if (_this.terminalOptionsCache.has(name)) {
109
+ return _this.terminalOptionsCache.get(name);
110
+ }
111
+ if (name) {
112
+ return {
113
+ name: name
114
+ };
115
+ } else {
116
+ return {
117
+ id: v4()
118
+ };
119
+ }
104
120
  };
105
121
  this.serverConnection = serverConnection;
106
122
  //
@@ -246,6 +262,11 @@ export var TerminalManager = (_dec = singleton(), _dec2 = inject(TerminalRestAPI
246
262
  value: function running() {
247
263
  return this._models[Symbol.iterator]();
248
264
  }
265
+ }, {
266
+ key: "runningModels",
267
+ get: function get() {
268
+ return this._names;
269
+ }
249
270
 
250
271
  /**
251
272
  * Force a refresh of the running terminals.
@@ -474,12 +495,19 @@ export var TerminalManager = (_dec = singleton(), _dec2 = inject(TerminalRestAPI
474
495
  }
475
496
  }]);
476
497
  return TerminalManager;
477
- }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "terminalRestAPI", [_dec2], {
498
+ }(), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "_names", [_dec2], {
499
+ configurable: true,
500
+ enumerable: true,
501
+ writable: true,
502
+ initializer: function initializer() {
503
+ return [];
504
+ }
505
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "terminalRestAPI", [_dec3], {
478
506
  configurable: true,
479
507
  enumerable: true,
480
508
  writable: true,
481
509
  initializer: null
482
- }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "terminalConnectionFactory", [_dec3], {
510
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "terminalConnectionFactory", [_dec4], {
483
511
  configurable: true,
484
512
  enumerable: true,
485
513
  writable: true,
package/es/view.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.tsx"],"names":[],"mappings":"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"}
package/es/view.js CHANGED
@@ -211,6 +211,7 @@ export var LibroTerminalView = (_dec = transient(), _dec2 = view('libro-terminal
211
211
  _this.fitAddon.fit();
212
212
  };
213
213
  _this.onViewResize = function () {
214
+ var _this$container;
214
215
  // todo 这里为什么没有触发isAttached
215
216
  // if (!this.isVisible || !this.isAttached) {
216
217
  // return;
@@ -219,20 +220,29 @@ export var LibroTerminalView = (_dec = transient(), _dec2 = view('libro-terminal
219
220
  if (!_this.isVisible) {
220
221
  return;
221
222
  }
223
+ if ((_this$container = _this.container) !== null && _this$container !== void 0 && _this$container.current) {
224
+ if (_this.container.current.offsetHeight === 0) {
225
+ return;
226
+ }
227
+ if (_this.container.current.offsetWidth === 0) {
228
+ return;
229
+ }
230
+ }
231
+
232
+ // 触发term的resize 事件
222
233
  _this.processResize();
223
234
  };
224
235
  _this.processResize = function () {
225
236
  _this.open();
226
237
  _this.resizeTerminal();
227
- _this.setSessionSize();
228
238
  };
229
239
  _this.open = function () {
230
240
  try {
231
- var _this$container;
241
+ var _this$container2;
232
242
  if (_this.termOpened) {
233
243
  return;
234
244
  }
235
- var node = (_this$container = _this.container) === null || _this$container === void 0 ? void 0 : _this$container.current;
245
+ var node = (_this$container2 = _this.container) === null || _this$container2 === void 0 ? void 0 : _this$container2.current;
236
246
  if (node) {
237
247
  _this.term.open(node);
238
248
  }
@@ -343,6 +353,7 @@ export var LibroTerminalView = (_dec = transient(), _dec2 = view('libro-terminal
343
353
  // bind onSizeChanged
344
354
  _this.toDispose.push(_this.term.onResize(function (data) {
345
355
  _this.onSizeChangedEmitter.fire(data);
356
+ _this.setSessionSize();
346
357
  }));
347
358
 
348
359
  // bind ondata
@@ -380,6 +391,7 @@ export var LibroTerminalView = (_dec = transient(), _dec2 = view('libro-terminal
380
391
  value: function afterRestore() {
381
392
  var _this2 = this;
382
393
  this.initConnection().then(function (connection) {
394
+ _this2.terminalManager.terminalOptionsCache.set(connection.name, _this2.options);
383
395
  _this2._isReady = true;
384
396
  _this2.connection = connection;
385
397
  _this2.onReadyEmitter.fire(true);
@@ -453,6 +465,7 @@ export var LibroTerminalView = (_dec = transient(), _dec2 = view('libro-terminal
453
465
  console.error("Terminal not shut down: ".concat(reason));
454
466
  });
455
467
  }
468
+ this.terminalManager.terminalOptionsCache.delete(this.name);
456
469
  _get(_getPrototypeOf(LibroTerminalView.prototype), "dispose", this).call(this);
457
470
  }
458
471
  }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@difizen/libro-terminal",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "libro"
@@ -31,9 +31,9 @@
31
31
  "src"
32
32
  ],
33
33
  "dependencies": {
34
- "@difizen/libro-core": "^0.1.14",
35
- "@difizen/libro-common": "^0.1.14",
36
- "@difizen/libro-kernel": "^0.1.14",
34
+ "@difizen/libro-core": "^0.1.16",
35
+ "@difizen/libro-common": "^0.1.16",
36
+ "@difizen/libro-kernel": "^0.1.16",
37
37
  "@ant-design/icons": "^5.1.0",
38
38
  "@difizen/mana-app": "latest",
39
39
  "lodash.throttle": "^4.1.1",
package/src/command.ts CHANGED
@@ -15,6 +15,10 @@ export const TerminalCommands: Record<string, Command & { keybind?: string }> =
15
15
  label: '新建终端',
16
16
  keybind: 'ctrl+`',
17
17
  },
18
+ CloseTerminal: {
19
+ id: 'libro-terminal-close',
20
+ label: '关闭终端',
21
+ },
18
22
  };
19
23
 
20
24
  @singleton({ contrib: [CommandContribution, KeybindingContribution] })
@@ -36,15 +40,14 @@ export class TerminalCommandContribution
36
40
 
37
41
  registerCommands(commands: CommandRegistry): void {
38
42
  commands.registerCommand(TerminalCommands['OpenTerminal'], {
39
- execute: async () => {
43
+ execute: async (name?: string) => {
40
44
  try {
41
45
  const terminalView =
42
46
  await this.viewManager.getOrCreateView<LibroTerminalView>(
43
47
  LibroTerminalView,
44
- {
45
- id: this.manager.newTerminalName(),
46
- },
48
+ this.manager.getTerminalArgs(name),
47
49
  );
50
+
48
51
  const slot = await this.config.get(terminalDefaultSlot);
49
52
  if (slot) {
50
53
  this.slotManager.addView(terminalView, slot, {
@@ -56,5 +59,20 @@ export class TerminalCommandContribution
56
59
  }
57
60
  },
58
61
  });
62
+ commands.registerCommand(TerminalCommands['CloseTerminal'], {
63
+ execute: async (name: string) => {
64
+ try {
65
+ const terminalView =
66
+ await this.viewManager.getOrCreateView<LibroTerminalView>(
67
+ LibroTerminalView,
68
+ this.manager.getTerminalArgs(name),
69
+ );
70
+
71
+ terminalView.dispose();
72
+ } catch (e) {
73
+ console.error(e);
74
+ }
75
+ },
76
+ });
59
77
  }
60
78
  }
package/src/manager.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  import { Poll } from '@difizen/libro-common';
5
5
  import { NetworkError, ServerConnection } from '@difizen/libro-kernel';
6
6
  import type { Disposable, Disposed, Event } from '@difizen/mana-app';
7
+ import { prop } from '@difizen/mana-app';
7
8
  import { singleton } from '@difizen/mana-app';
8
9
  import { Emitter, inject } from '@difizen/mana-app';
9
10
  import { v4 } from 'uuid';
@@ -22,8 +23,15 @@ export class TerminalManager implements Disposable, Disposed {
22
23
  protected _ready: Promise<void>;
23
24
  protected _runningChanged = new Emitter<TerminalModel[]>();
24
25
  protected _connectionFailure = new Emitter<Error>();
26
+
27
+ // 缓存创建terminal的参数
28
+ terminalOptionsCache = new Map();
29
+
25
30
  // As an optimization, we unwrap the models to just store the names.
31
+
32
+ @prop()
26
33
  protected _names: string[] = [];
34
+
27
35
  protected get _models(): TerminalModel[] {
28
36
  return this._names.map((name) => {
29
37
  return { name };
@@ -143,6 +151,10 @@ export class TerminalManager implements Disposable, Disposed {
143
151
  return this._models[Symbol.iterator]();
144
152
  }
145
153
 
154
+ get runningModels() {
155
+ return this._names;
156
+ }
157
+
146
158
  /**
147
159
  * Force a refresh of the running terminals.
148
160
  *
@@ -284,7 +296,18 @@ export class TerminalManager implements Disposable, Disposed {
284
296
  }
285
297
  return connection;
286
298
  };
287
- newTerminalName = () => {
288
- return v4();
299
+
300
+ // 新建和打开一个已有Terminal,二者所需参数不一样
301
+ getTerminalArgs = (name?: string) => {
302
+ // 通过缓存值作为option创建终端
303
+ if (this.terminalOptionsCache.has(name)) {
304
+ return this.terminalOptionsCache.get(name);
305
+ }
306
+
307
+ if (name) {
308
+ return { name: name };
309
+ } else {
310
+ return { id: v4() };
311
+ }
289
312
  };
290
313
  }
package/src/view.tsx CHANGED
@@ -182,6 +182,7 @@ export class LibroTerminalView extends BaseStatefulView {
182
182
  this.toDispose.push(
183
183
  this.term.onResize((data) => {
184
184
  this.onSizeChangedEmitter.fire(data);
185
+ this.setSessionSize();
185
186
  }),
186
187
  );
187
188
 
@@ -221,6 +222,7 @@ export class LibroTerminalView extends BaseStatefulView {
221
222
  override afterRestore() {
222
223
  this.initConnection()
223
224
  .then((connection) => {
225
+ this.terminalManager.terminalOptionsCache.set(connection.name, this.options);
224
226
  this._isReady = true;
225
227
  this.connection = connection;
226
228
  this.onReadyEmitter.fire(true);
@@ -265,6 +267,9 @@ export class LibroTerminalView extends BaseStatefulView {
265
267
  console.error(`Terminal not shut down: ${reason}`);
266
268
  });
267
269
  }
270
+
271
+ this.terminalManager.terminalOptionsCache.delete(this.name);
272
+
268
273
  super.dispose();
269
274
  }
270
275
 
@@ -455,13 +460,22 @@ export class LibroTerminalView extends BaseStatefulView {
455
460
  if (!this.isVisible) {
456
461
  return;
457
462
  }
463
+ if (this.container?.current) {
464
+ if (this.container.current.offsetHeight === 0) {
465
+ return;
466
+ }
467
+ if (this.container.current.offsetWidth === 0) {
468
+ return;
469
+ }
470
+ }
471
+
472
+ // 触发term的resize 事件
458
473
  this.processResize();
459
474
  };
460
475
 
461
476
  protected processResize = () => {
462
477
  this.open();
463
478
  this.resizeTerminal();
464
- this.setSessionSize();
465
479
  };
466
480
 
467
481
  protected open = (): void => {