@difizen/libro-lab 0.1.17 → 0.1.19

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.
@@ -6,6 +6,7 @@ export declare const LabCommands: {
6
6
  Save: {
7
7
  id: string;
8
8
  label: string;
9
+ keybind: string;
9
10
  };
10
11
  CreateFile: {
11
12
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lab-command.d.ts","sourceRoot":"","sources":["../../src/command/lab-command.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6IvB,CAAC"}
1
+ {"version":3,"file":"lab-command.d.ts","sourceRoot":"","sources":["../../src/command/lab-command.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8IvB,CAAC"}
@@ -8,8 +8,9 @@ export var LabCommands = {
8
8
  // label: '新建终端',
9
9
  // },
10
10
  Save: {
11
- id: 'libro-lab-header-menu-file-save',
12
- label: '保存'
11
+ id: 'libro-lab-save',
12
+ label: '保存',
13
+ keybind: 'ctrlcmd+s'
13
14
  },
14
15
  CreateFile: {
15
16
  id: 'libro-lab-header-menu-file-create',
@@ -1,6 +1,8 @@
1
1
  import { LibroService } from '@difizen/libro-jupyter';
2
2
  import { TerminalManager } from '@difizen/libro-terminal';
3
3
  import type { MenuRegistry } from '@difizen/mana-app';
4
+ import type { KeybindingRegistry } from '@difizen/mana-app';
5
+ import { KeybindingContribution } from '@difizen/mana-app';
4
6
  import { CommandContribution, CommandRegistry, MenuContribution, ViewManager } from '@difizen/mana-app';
5
7
  import { LayoutService } from '../layout/layout-service.js';
6
8
  export declare namespace LabMenus {
@@ -11,12 +13,13 @@ export declare namespace LabMenus {
11
13
  const TERMINAL: string[];
12
14
  const HELP: string[];
13
15
  }
14
- export declare class LabMenu implements MenuContribution, CommandContribution {
16
+ export declare class LabMenu implements MenuContribution, CommandContribution, KeybindingContribution {
15
17
  protected commandRegistry: CommandRegistry;
16
18
  protected libroService: LibroService;
17
19
  protected layoutService: LayoutService;
18
20
  terminalManager: TerminalManager;
19
21
  viewManager: ViewManager;
22
+ registerKeybindings(keybindings: KeybindingRegistry): void;
20
23
  registerMenus(menu: MenuRegistry): void;
21
24
  registerCommands(commands: CommandRegistry): void;
22
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lab-menu-contribution.d.ts","sourceRoot":"","sources":["../../src/command/lab-menu-contribution.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAoB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,eAAe,EAGf,gBAAgB,EAEhB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,yBAAiB,QAAQ,CAAC;IACjB,MAAM,IAAI,UAA+B,CAAC;IAC1C,MAAM,IAAI,UAA+B,CAAC;IAC1C,MAAM,IAAI,UAA+B,CAAC;IAC1C,MAAM,GAAG,UAA8B,CAAC;IACxC,MAAM,QAAQ,UAAmC,CAAC;IAClD,MAAM,IAAI,UAA+B,CAAC;CAClD;AAED,qBACa,OAAQ,YAAW,gBAAgB,EAAE,mBAAmB;IAC1C,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC9C,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACrC,WAAW,EAAE,WAAW,CAAC;IAE9C,aAAa,CAAC,IAAI,EAAE,YAAY;IAkLhC,gBAAgB,CAAC,QAAQ,EAAE,eAAe;CAgmB3C"}
1
+ {"version":3,"file":"lab-menu-contribution.d.ts","sourceRoot":"","sources":["../../src/command/lab-menu-contribution.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAoB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EACL,mBAAmB,EACnB,eAAe,EAGf,gBAAgB,EAEhB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D,yBAAiB,QAAQ,CAAC;IACjB,MAAM,IAAI,UAA+B,CAAC;IAC1C,MAAM,IAAI,UAA+B,CAAC;IAC1C,MAAM,IAAI,UAA+B,CAAC;IAC1C,MAAM,GAAG,UAA8B,CAAC;IACxC,MAAM,QAAQ,UAAmC,CAAC;IAClD,MAAM,IAAI,UAA+B,CAAC;CAClD;AAED,qBACa,OACX,YAAW,gBAAgB,EAAE,mBAAmB,EAAE,sBAAsB;IAE/C,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC9C,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACrC,WAAW,EAAE,WAAW,CAAC;IAE9C,mBAAmB,CAAC,WAAW,EAAE,kBAAkB;IAOnD,aAAa,CAAC,IAAI,EAAE,YAAY;IAkLhC,gBAAgB,CAAC,QAAQ,EAAE,eAAe;CAknB3C"}
@@ -19,7 +19,10 @@ function _applyDecoratedDescriptor(target, property, decorators, descriptor, con
19
19
  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }
20
20
  import { LibroJupyterView, LibroService, NotebookCommands } from '@difizen/libro-jupyter';
21
21
  import { TerminalCommands, TerminalManager } from '@difizen/libro-terminal';
22
+ import { KeybindingContribution } from '@difizen/mana-app';
23
+ import { Saveable } from '@difizen/mana-app';
22
24
  import { CommandContribution, CommandRegistry, inject, MAIN_MENU_BAR, MenuContribution, singleton, ViewManager } from '@difizen/mana-app';
25
+ import { LibroLabLayoutSlots } from "../layout/index.js";
23
26
  import { LayoutService } from "../layout/layout-service.js";
24
27
  import { LabCommands } from "./lab-command.js";
25
28
  export var LabMenus;
@@ -32,7 +35,7 @@ export var LabMenus;
32
35
  var HELP = _LabMenus.HELP = [].concat(_toConsumableArray(MAIN_MENU_BAR), ['6_help']);
33
36
  })(LabMenus || (LabMenus = {}));
34
37
  export var LabMenu = (_dec = singleton({
35
- contrib: [MenuContribution, CommandContribution]
38
+ contrib: [MenuContribution, CommandContribution, KeybindingContribution]
36
39
  }), _dec2 = inject(CommandRegistry), _dec3 = inject(LibroService), _dec4 = inject(LayoutService), _dec5 = inject(TerminalManager), _dec6 = inject(ViewManager), _dec(_class = (_class2 = /*#__PURE__*/function () {
37
40
  function LabMenu() {
38
41
  _classCallCheck(this, LabMenu);
@@ -43,6 +46,14 @@ export var LabMenu = (_dec = singleton({
43
46
  _initializerDefineProperty(this, "viewManager", _descriptor5, this);
44
47
  }
45
48
  _createClass(LabMenu, [{
49
+ key: "registerKeybindings",
50
+ value: function registerKeybindings(keybindings) {
51
+ keybindings.registerKeybinding({
52
+ command: LabCommands.Save.id,
53
+ keybinding: LabCommands.Save.keybind
54
+ });
55
+ }
56
+ }, {
46
57
  key: "registerMenus",
47
58
  value: function registerMenus(menu) {
48
59
  menu.registerSubmenu(LabMenus.FILE, {
@@ -274,12 +285,19 @@ export var LabMenu = (_dec = singleton({
274
285
  return execute;
275
286
  }()
276
287
  });
277
- commands.registerCommand(LabCommands.Save, {
288
+ commands.registerCommand(LabCommands.Save);
289
+ commands.registerHandler(LabCommands.Save.id, {
278
290
  execute: function () {
279
291
  var _execute2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
292
+ var contentActive;
280
293
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
281
294
  while (1) switch (_context2.prev = _context2.next) {
282
295
  case 0:
296
+ contentActive = _this.layoutService.getActiveView(LibroLabLayoutSlots.content);
297
+ if (contentActive && Saveable.is(contentActive)) {
298
+ contentActive.save();
299
+ }
300
+ case 2:
283
301
  case "end":
284
302
  return _context2.stop();
285
303
  }
@@ -289,7 +307,18 @@ export var LabMenu = (_dec = singleton({
289
307
  return _execute2.apply(this, arguments);
290
308
  }
291
309
  return execute;
292
- }()
310
+ }(),
311
+ isEnabled: function isEnabled() {
312
+ var _contentActive$contai;
313
+ var contentActive = _this.layoutService.getActiveView(LibroLabLayoutSlots.content);
314
+ if (contentActive && (_contentActive$contai = contentActive.container) !== null && _contentActive$contai !== void 0 && _contentActive$contai.current) {
315
+ var contentHost = contentActive.container.current;
316
+ if (contentHost.contains(document.activeElement)) {
317
+ return true;
318
+ }
319
+ }
320
+ return false;
321
+ }
293
322
  });
294
323
  commands.registerCommandWithContext(LabCommands.UndoCellAction, this, {
295
324
  execute: function () {
@@ -1,7 +1,6 @@
1
1
  /// <reference types="react" resolution-mode="require"/>
2
2
  import { LibroKernelManager, LibroSessionManager } from '@difizen/libro-kernel';
3
- import type { ILanguageServerManager } from '@difizen/libro-lsp';
4
- import { ILSPDocumentConnectionManager } from '@difizen/libro-lsp';
3
+ import { LibroLanguageClientManager } from '@difizen/libro-language-client';
5
4
  import { TerminalManager } from '@difizen/libro-terminal';
6
5
  import { BaseView, CommandRegistry, ViewManager } from '@difizen/mana-app';
7
6
  import type { SaveableTabView } from '../index.js';
@@ -15,10 +14,9 @@ export declare class KernelAndTerminalPanelView extends BaseView {
15
14
  libroKernelManager: LibroKernelManager;
16
15
  libroSessionManager: LibroSessionManager;
17
16
  terminalManager: TerminalManager;
18
- lspConnectionManager: ILSPDocumentConnectionManager;
19
- lspManager: ILanguageServerManager;
17
+ libroLanguageClientManager: LibroLanguageClientManager;
20
18
  commandRegistry: CommandRegistry;
21
- constructor(libroKernelManager: LibroKernelManager, libroSessionManager: LibroSessionManager, terminalManager: TerminalManager, lspDocumentConnectionManager: ILSPDocumentConnectionManager, commandRegistry: CommandRegistry);
19
+ constructor(libroKernelManager: LibroKernelManager, libroSessionManager: LibroSessionManager, terminalManager: TerminalManager, libroLanguageClientManager: LibroLanguageClientManager, commandRegistry: CommandRegistry);
22
20
  getAllOpenedTabView(): SaveableTabView;
23
21
  refresh(): void;
24
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kernel-and-terminal-panel-view.d.ts","sourceRoot":"","sources":["../../src/kernel-and-terminal-panel/kernel-and-terminal-panel-view.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAqB,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAoB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACL,QAAQ,EACR,eAAe,EAMf,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAQ5D,OAAO,cAAc,CAAC;AA0JtB,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAE7E,qBAEa,0BAA2B,SAAQ,QAAQ;IAC7C,IAAI,yBAAe;IACP,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACjC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAE9D,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,6BAA6B,CAAC;IACpD,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,EAAE,eAAe,CAAC;gBAGH,kBAAkB,EAAE,kBAAkB,EACrC,mBAAmB,EAAE,mBAAmB,EAC5C,eAAe,EAAE,eAAe,EAEzD,4BAA4B,EAAE,6BAA6B,EAClC,eAAe,EAAE,eAAe;IAc3D,mBAAmB,IAAI,eAAe;IAMtC,OAAO;CAKR"}
1
+ {"version":3,"file":"kernel-and-terminal-panel-view.d.ts","sourceRoot":"","sources":["../../src/kernel-and-terminal-panel/kernel-and-terminal-panel-view.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAoB,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EACL,QAAQ,EACR,eAAe,EAMf,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAQ5D,OAAO,cAAc,CAAC;AAsJtB,eAAO,MAAM,4BAA4B,mCAAmC,CAAC;AAE7E,qBAEa,0BAA2B,SAAQ,QAAQ;IAC7C,IAAI,yBAAe;IACP,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACjC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAE9D,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,eAAe,CAAC;IACjC,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,eAAe,EAAE,eAAe,CAAC;gBAGH,kBAAkB,EAAE,kBAAkB,EACrC,mBAAmB,EAAE,mBAAmB,EAC5C,eAAe,EAAE,eAAe,EAEzD,0BAA0B,EAAE,0BAA0B,EAC7B,eAAe,EAAE,eAAe;IAa3D,mBAAmB,IAAI,eAAe;IAMtC,OAAO;CAKR"}
@@ -30,7 +30,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
30
30
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
31
31
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
32
32
  import { LibroKernelManager, LibroSessionManager } from '@difizen/libro-kernel';
33
- import { ILSPDocumentConnectionManager } from '@difizen/libro-lsp';
33
+ import { LibroLanguageClientManager } from '@difizen/libro-language-client';
34
34
  import { TerminalCommands, TerminalManager } from '@difizen/libro-terminal';
35
35
  import { BaseView, CommandRegistry, inject, singleton, useInject, view, ViewInstance, ViewManager } from '@difizen/mana-app';
36
36
  import { useEffect, useState } from 'react';
@@ -47,8 +47,7 @@ var PanelRender = function PanelRender() {
47
47
  var libroKernelManager = instance.libroKernelManager,
48
48
  libroSessionManager = instance.libroSessionManager,
49
49
  terminalManager = instance.terminalManager,
50
- lspManager = instance.lspManager,
51
- lspConnectionManager = instance.lspConnectionManager,
50
+ libroLanguageClientManager = instance.libroLanguageClientManager,
52
51
  commandRegistry = instance.commandRegistry;
53
52
  var _useState = useState(),
54
53
  _useState2 = _slicedToArray(_useState, 2),
@@ -58,17 +57,12 @@ var PanelRender = function PanelRender() {
58
57
  _useState4 = _slicedToArray(_useState3, 2),
59
58
  terminalItems = _useState4[0],
60
59
  setTerminalItems = _useState4[1];
61
-
62
- // const lspManager = useInject<ILSPDocumentConnectionManager>(
63
- // DocumentConnectionManager,
64
- // ).languageServerManager;
65
-
66
60
  var _useState5 = useState(),
67
61
  _useState6 = _slicedToArray(_useState5, 2),
68
62
  lspItems = _useState6[0],
69
63
  setLSPItems = _useState6[1];
70
- lspManager.sessionsChanged(function () {
71
- var sessions = lspManager.sessions;
64
+ libroLanguageClientManager.sessionsChanged(function () {
65
+ var sessions = libroLanguageClientManager.sessions;
72
66
  var items = [];
73
67
  sessions.forEach(function (session, key) {
74
68
  items.push({
@@ -80,7 +74,7 @@ var PanelRender = function PanelRender() {
80
74
  while (1) switch (_context.prev = _context.next) {
81
75
  case 0:
82
76
  _context.next = 2;
83
- return lspConnectionManager.disconnectServer(key);
77
+ return libroLanguageClientManager.closeLanguageClient(key);
84
78
  case 2:
85
79
  return _context.abrupt("return", _context.sent);
86
80
  case 3:
@@ -282,7 +276,7 @@ var PanelRender = function PanelRender() {
282
276
  while (1) switch (_context7.prev = _context7.next) {
283
277
  case 0:
284
278
  _context7.next = 2;
285
- return lspConnectionManager.disconnectAllServers();
279
+ return libroLanguageClientManager.closeAllLanguageClient();
286
280
  case 2:
287
281
  return _context7.abrupt("return", _context7.sent);
288
282
  case 3:
@@ -298,7 +292,7 @@ export var KernelAndTerminalPanelViewId = 'libro-kernel-and-terminal-view';
298
292
  export var KernelAndTerminalPanelView = (_dec = singleton(), _dec2 = view(KernelAndTerminalPanelViewId), _dec3 = inject(ViewManager), _dec4 = inject(LayoutService), _dec(_class = _dec2(_class = (_class2 = /*#__PURE__*/function (_BaseView) {
299
293
  _inherits(KernelAndTerminalPanelView, _BaseView);
300
294
  var _super = _createSuper(KernelAndTerminalPanelView);
301
- function KernelAndTerminalPanelView(libroKernelManager, libroSessionManager, terminalManager, lspDocumentConnectionManager, commandRegistry) {
295
+ function KernelAndTerminalPanelView(libroKernelManager, libroSessionManager, terminalManager, libroLanguageClientManager, commandRegistry) {
302
296
  var _this;
303
297
  _classCallCheck(this, KernelAndTerminalPanelView);
304
298
  _this = _super.call(this);
@@ -310,13 +304,12 @@ export var KernelAndTerminalPanelView = (_dec = singleton(), _dec2 = view(Kernel
310
304
  _this.libroKernelManager = libroKernelManager;
311
305
  _this.libroSessionManager = libroSessionManager;
312
306
  _this.terminalManager = terminalManager;
313
- _this.lspConnectionManager = lspDocumentConnectionManager;
314
- _this.lspManager = lspDocumentConnectionManager.languageServerManager;
307
+ _this.libroLanguageClientManager = libroLanguageClientManager;
315
308
  _this.commandRegistry = commandRegistry;
316
309
  return _this;
317
310
  }
318
311
  KernelAndTerminalPanelView = inject(CommandRegistry)(KernelAndTerminalPanelView, undefined, 4) || KernelAndTerminalPanelView;
319
- KernelAndTerminalPanelView = inject(ILSPDocumentConnectionManager)(KernelAndTerminalPanelView, undefined, 3) || KernelAndTerminalPanelView;
312
+ KernelAndTerminalPanelView = inject(LibroLanguageClientManager)(KernelAndTerminalPanelView, undefined, 3) || KernelAndTerminalPanelView;
320
313
  KernelAndTerminalPanelView = inject(TerminalManager)(KernelAndTerminalPanelView, undefined, 2) || KernelAndTerminalPanelView;
321
314
  KernelAndTerminalPanelView = inject(LibroSessionManager)(KernelAndTerminalPanelView, undefined, 1) || KernelAndTerminalPanelView;
322
315
  KernelAndTerminalPanelView = inject(LibroKernelManager)(KernelAndTerminalPanelView, undefined, 0) || KernelAndTerminalPanelView;
@@ -330,7 +323,7 @@ export var KernelAndTerminalPanelView = (_dec = singleton(), _dec2 = view(Kernel
330
323
  value: function refresh() {
331
324
  this.libroSessionManager.refreshRunning();
332
325
  this.terminalManager.refreshRunning();
333
- this.lspManager.refreshRunning();
326
+ this.libroLanguageClientManager.refreshRunning();
334
327
  }
335
328
  }]);
336
329
  return KernelAndTerminalPanelView;
@@ -1 +1 @@
1
- {"version":3,"file":"panel-command.d.ts","sourceRoot":"","sources":["../../src/kernel-and-terminal-panel/panel-command.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EAInB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AAEF,qBAGa,wBACX,YAAW,mBAAmB,EAAE,mBAAmB;IAEnD,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,0BAA0B,EAAE,0BAA0B,CAAC;gBAEtB,WAAW,EAAE,WAAW;IAIzD,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAahD,oBAAoB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CAQ7D"}
1
+ {"version":3,"file":"panel-command.d.ts","sourceRoot":"","sources":["../../src/kernel-and-terminal-panel/panel-command.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EAGnB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AAEF,qBAGa,wBACX,YAAW,mBAAmB,EAAE,mBAAmB;IAEnD,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,0BAA0B,EAAE,0BAA0B,CAAC;gBAEtB,WAAW,EAAE,WAAW;IAIzD,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAahD,oBAAoB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CAQ7D"}
@@ -13,7 +13,7 @@ function _applyDecoratedDescriptor(target, property, decorators, descriptor, con
13
13
  function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }
14
14
  import { ReloadOutlined } from '@ant-design/icons';
15
15
  import { ViewManager } from '@difizen/mana-app';
16
- import { CommandContribution, inject, MenuContribution, singleton, ToolbarContribution } from '@difizen/mana-app';
16
+ import { CommandContribution, inject, singleton, ToolbarContribution } from '@difizen/mana-app';
17
17
  import { KernelAndTerminalPanelView } from "./kernel-and-terminal-panel-view.js";
18
18
  import { jsx as _jsx } from "react/jsx-runtime";
19
19
  export var PanelCommand = {
@@ -23,7 +23,7 @@ export var PanelCommand = {
23
23
  }
24
24
  };
25
25
  export var PanelCommandContribution = (_dec = singleton({
26
- contrib: [CommandContribution, MenuContribution, ToolbarContribution]
26
+ contrib: [CommandContribution, ToolbarContribution]
27
27
  }), _dec2 = inject(KernelAndTerminalPanelView), _dec(_class = (_class2 = /*#__PURE__*/function () {
28
28
  function PanelCommandContribution(viewManager) {
29
29
  _classCallCheck(this, PanelCommandContribution);
@@ -1,6 +1,7 @@
1
1
  import { LibroService } from '@difizen/libro-jupyter';
2
2
  import type { View, ViewOpenHandlerOptions, ViewOpenOption } from '@difizen/mana-app';
3
3
  import { SlotViewManager } from '@difizen/mana-app';
4
+ import type { Disposable } from '@difizen/mana-common';
4
5
  import type { LibroLabLayoutSlotsType, StatusType } from './protocol.js';
5
6
  export type VisibilityMap = Record<LibroLabLayoutSlotsType, boolean>;
6
7
  export declare class LayoutService {
@@ -15,7 +16,7 @@ export declare class LayoutService {
15
16
  addView(view: View, option?: ViewOpenHandlerOptions): Promise<void>;
16
17
  getAllSlotView(slot: LibroLabLayoutSlotsType): View | undefined;
17
18
  getActiveView(slot: LibroLabLayoutSlotsType): View | undefined;
18
- onSlotActiveChange(slot: LibroLabLayoutSlotsType, handler: () => void): import("@difizen/mana-app").Disposable | undefined;
19
+ onSlotActiveChange(slot: LibroLabLayoutSlotsType, handler: () => void): Disposable | undefined;
19
20
  shouldRenderNavigatorContent(): boolean;
20
21
  onOpenSlotActiveChange(): Promise<void>;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layout-service.d.ts","sourceRoot":"","sources":["../../src/layout/layout-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAKL,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGzE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AACrE,qBACa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IACpD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;gBAGnB,eAAe,EAAE,eAAe,EACnC,YAAY,EAAE,YAAY;IAWlD,WAAW,EAAE,UAAU,CAAa;IAGpC,aAAa,EAAE,aAAa,CAS1B;IAEF,aAAa,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO;IAIrD,cAAc,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO;IAI9D,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,MAAM,EAAE,cAAc,GAAG,SAAS;IAa9B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzE,cAAc,CAAC,IAAI,EAAE,uBAAuB;IAI5C,aAAa,CAAC,IAAI,EAAE,uBAAuB;IAU3C,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,IAAI;IAUrE,4BAA4B,IAAI,OAAO;IAWjC,sBAAsB;CAoB7B"}
1
+ {"version":3,"file":"layout-service.d.ts","sourceRoot":"","sources":["../../src/layout/layout-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAKL,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGzE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AACrE,qBACa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IACpD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;gBAGnB,eAAe,EAAE,eAAe,EACnC,YAAY,EAAE,YAAY;IAWlD,WAAW,EAAE,UAAU,CAAa;IAGpC,aAAa,EAAE,aAAa,CAS1B;IAEF,aAAa,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO;IAIrD,cAAc,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO;IAI9D,SAAS,CAAC,WAAW,CACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,GAAG,SAAS,EACtB,MAAM,EAAE,cAAc,GAAG,SAAS;IAa9B,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzE,cAAc,CAAC,IAAI,EAAE,uBAAuB;IAI5C,aAAa,CAAC,IAAI,EAAE,uBAAuB;IAU3C,kBAAkB,CAChB,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,MAAM,IAAI,GAClB,UAAU,GAAG,SAAS;IAUzB,4BAA4B,IAAI,OAAO;IAWjC,sBAAsB;CAoB7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@difizen/libro-lab",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "libro",
@@ -34,15 +34,16 @@
34
34
  ],
35
35
  "dependencies": {
36
36
  "@ant-design/icons": "^5.1.0",
37
- "@difizen/libro-core": "^0.1.17",
38
- "@difizen/libro-jupyter": "^0.1.17",
39
- "@difizen/libro-kernel": "^0.1.17",
40
- "@difizen/libro-prompt-cell": "^0.1.17",
41
- "@difizen/libro-terminal": "^0.1.17",
42
- "@difizen/libro-lsp": "^0.1.17",
43
- "@difizen/libro-toc": "^0.1.17",
44
- "@difizen/libro-cofine-editor-core": "^0.1.17",
37
+ "@difizen/libro-core": "^0.1.19",
38
+ "@difizen/libro-jupyter": "^0.1.19",
39
+ "@difizen/libro-kernel": "^0.1.19",
40
+ "@difizen/libro-prompt-cell": "^0.1.19",
41
+ "@difizen/libro-terminal": "^0.1.19",
42
+ "@difizen/libro-toc": "^0.1.19",
43
+ "@difizen/libro-cofine-editor-core": "^0.1.19",
44
+ "@difizen/libro-language-client": "^0.1.19",
45
45
  "@difizen/mana-app": "latest",
46
+ "@difizen/mana-common": "latest",
46
47
  "@difizen/mana-react": "latest",
47
48
  "classnames": "^2.3.2",
48
49
  "uuid": "^9.0.0",
@@ -8,8 +8,9 @@ export const LabCommands = {
8
8
  // label: '新建终端',
9
9
  // },
10
10
  Save: {
11
- id: 'libro-lab-header-menu-file-save',
11
+ id: 'libro-lab-save',
12
12
  label: '保存',
13
+ keybind: 'ctrlcmd+s',
13
14
  },
14
15
  CreateFile: {
15
16
  id: 'libro-lab-header-menu-file-create',
@@ -6,6 +6,9 @@ import {
6
6
  } from '@difizen/libro-jupyter';
7
7
  import { TerminalCommands, TerminalManager } from '@difizen/libro-terminal';
8
8
  import type { MenuRegistry } from '@difizen/mana-app';
9
+ import type { KeybindingRegistry } from '@difizen/mana-app';
10
+ import { KeybindingContribution } from '@difizen/mana-app';
11
+ import { Saveable } from '@difizen/mana-app';
9
12
  import {
10
13
  CommandContribution,
11
14
  CommandRegistry,
@@ -16,6 +19,7 @@ import {
16
19
  ViewManager,
17
20
  } from '@difizen/mana-app';
18
21
 
22
+ import { LibroLabLayoutSlots } from '../layout/index.js';
19
23
  import { LayoutService } from '../layout/layout-service.js';
20
24
 
21
25
  import { LabCommands } from './lab-command.js';
@@ -29,14 +33,23 @@ export namespace LabMenus {
29
33
  export const HELP = [...MAIN_MENU_BAR, '6_help'];
30
34
  }
31
35
 
32
- @singleton({ contrib: [MenuContribution, CommandContribution] })
33
- export class LabMenu implements MenuContribution, CommandContribution {
36
+ @singleton({ contrib: [MenuContribution, CommandContribution, KeybindingContribution] })
37
+ export class LabMenu
38
+ implements MenuContribution, CommandContribution, KeybindingContribution
39
+ {
34
40
  @inject(CommandRegistry) protected commandRegistry: CommandRegistry;
35
41
  @inject(LibroService) protected libroService: LibroService;
36
42
  @inject(LayoutService) protected layoutService: LayoutService;
37
43
  @inject(TerminalManager) terminalManager: TerminalManager;
38
44
  @inject(ViewManager) viewManager: ViewManager;
39
45
 
46
+ registerKeybindings(keybindings: KeybindingRegistry) {
47
+ keybindings.registerKeybinding({
48
+ command: LabCommands.Save.id,
49
+ keybinding: LabCommands.Save.keybind,
50
+ });
51
+ }
52
+
40
53
  registerMenus(menu: MenuRegistry) {
41
54
  menu.registerSubmenu(LabMenus.FILE, { label: '文件' });
42
55
  menu.registerSubmenu(LabMenus.EDIT, { label: '编辑' });
@@ -240,9 +253,27 @@ export class LabMenu implements MenuContribution, CommandContribution {
240
253
  //TODO: 关于
241
254
  },
242
255
  });
243
- commands.registerCommand(LabCommands.Save, {
256
+ commands.registerCommand(LabCommands.Save);
257
+ commands.registerHandler(LabCommands.Save.id, {
244
258
  execute: async () => {
245
- //TODO: 保存
259
+ const contentActive = this.layoutService.getActiveView(
260
+ LibroLabLayoutSlots.content,
261
+ );
262
+ if (contentActive && Saveable.is(contentActive)) {
263
+ contentActive.save();
264
+ }
265
+ },
266
+ isEnabled: () => {
267
+ const contentActive = this.layoutService.getActiveView(
268
+ LibroLabLayoutSlots.content,
269
+ );
270
+ if (contentActive && contentActive.container?.current) {
271
+ const contentHost = contentActive.container.current;
272
+ if (contentHost.contains(document.activeElement)) {
273
+ return true;
274
+ }
275
+ }
276
+ return false;
246
277
  },
247
278
  });
248
279
  commands.registerCommandWithContext(LabCommands.UndoCellAction, this, {
@@ -137,8 +137,8 @@ export class CodeEditorViewer extends BaseView implements NavigatableView, Savea
137
137
  uri,
138
138
  value: content,
139
139
  };
140
-
141
140
  this.e2Editor = editorPorvider.create(this.codeRef.current, options);
141
+
142
142
  this.toDispose.push(
143
143
  getOrigin(this.e2Editor.codeEditor).onDidChangeModelContent(() => {
144
144
  this.dirty = true;
@@ -1,6 +1,5 @@
1
1
  import { LibroKernelManager, LibroSessionManager } from '@difizen/libro-kernel';
2
- import type { ILanguageServerManager, TLanguageServerId } from '@difizen/libro-lsp';
3
- import { ILSPDocumentConnectionManager } from '@difizen/libro-lsp';
2
+ import { LibroLanguageClientManager } from '@difizen/libro-language-client';
4
3
  import { TerminalCommands, TerminalManager } from '@difizen/libro-terminal';
5
4
  import {
6
5
  BaseView,
@@ -35,8 +34,7 @@ const PanelRender: React.FC = () => {
35
34
  libroKernelManager,
36
35
  libroSessionManager,
37
36
  terminalManager,
38
- lspManager,
39
- lspConnectionManager,
37
+ libroLanguageClientManager,
40
38
  commandRegistry,
41
39
  } = instance;
42
40
 
@@ -48,14 +46,10 @@ const PanelRender: React.FC = () => {
48
46
  LibroPanelCollapseItem[] | undefined
49
47
  >();
50
48
 
51
- // const lspManager = useInject<ILSPDocumentConnectionManager>(
52
- // DocumentConnectionManager,
53
- // ).languageServerManager;
54
-
55
49
  const [lspItems, setLSPItems] = useState<LibroPanelCollapseItem[] | undefined>();
56
50
 
57
- lspManager.sessionsChanged(() => {
58
- const sessions = lspManager.sessions;
51
+ libroLanguageClientManager.sessionsChanged(() => {
52
+ const sessions = libroLanguageClientManager.sessions;
59
53
 
60
54
  const items = [] as LibroPanelCollapseItem[];
61
55
 
@@ -63,8 +57,7 @@ const PanelRender: React.FC = () => {
63
57
  items.push({
64
58
  id: key,
65
59
  name: `${key} (${session.spec.languages.join('/')})`,
66
- shutdown: async () =>
67
- await lspConnectionManager.disconnectServer(key as TLanguageServerId),
60
+ shutdown: async () => await libroLanguageClientManager.closeLanguageClient(key),
68
61
  });
69
62
  });
70
63
 
@@ -173,7 +166,9 @@ const PanelRender: React.FC = () => {
173
166
  <LibroCollapse
174
167
  type={LibroPanelCollapseItemType.LSP}
175
168
  items={lspItems}
176
- shutdownAll={async () => await lspConnectionManager.disconnectAllServers()}
169
+ shutdownAll={async () =>
170
+ await libroLanguageClientManager.closeAllLanguageClient()
171
+ }
177
172
  />
178
173
  </div>
179
174
  );
@@ -191,16 +186,15 @@ export class KernelAndTerminalPanelView extends BaseView {
191
186
  libroKernelManager: LibroKernelManager;
192
187
  libroSessionManager: LibroSessionManager;
193
188
  terminalManager: TerminalManager;
194
- lspConnectionManager: ILSPDocumentConnectionManager;
195
- lspManager: ILanguageServerManager;
189
+ libroLanguageClientManager: LibroLanguageClientManager;
196
190
  commandRegistry: CommandRegistry;
197
191
 
198
192
  constructor(
199
193
  @inject(LibroKernelManager) libroKernelManager: LibroKernelManager,
200
194
  @inject(LibroSessionManager) libroSessionManager: LibroSessionManager,
201
195
  @inject(TerminalManager) terminalManager: TerminalManager,
202
- @inject(ILSPDocumentConnectionManager)
203
- lspDocumentConnectionManager: ILSPDocumentConnectionManager,
196
+ @inject(LibroLanguageClientManager)
197
+ libroLanguageClientManager: LibroLanguageClientManager,
204
198
  @inject(CommandRegistry) commandRegistry: CommandRegistry,
205
199
  ) {
206
200
  super();
@@ -210,8 +204,7 @@ export class KernelAndTerminalPanelView extends BaseView {
210
204
  this.libroKernelManager = libroKernelManager;
211
205
  this.libroSessionManager = libroSessionManager;
212
206
  this.terminalManager = terminalManager;
213
- this.lspConnectionManager = lspDocumentConnectionManager;
214
- this.lspManager = lspDocumentConnectionManager.languageServerManager;
207
+ this.libroLanguageClientManager = libroLanguageClientManager;
215
208
  this.commandRegistry = commandRegistry;
216
209
  }
217
210
 
@@ -224,6 +217,6 @@ export class KernelAndTerminalPanelView extends BaseView {
224
217
  refresh() {
225
218
  this.libroSessionManager.refreshRunning();
226
219
  this.terminalManager.refreshRunning();
227
- this.lspManager.refreshRunning();
220
+ this.libroLanguageClientManager.refreshRunning();
228
221
  }
229
222
  }
@@ -4,7 +4,6 @@ import { ViewManager } from '@difizen/mana-app';
4
4
  import {
5
5
  CommandContribution,
6
6
  inject,
7
- MenuContribution,
8
7
  singleton,
9
8
  ToolbarContribution,
10
9
  } from '@difizen/mana-app';
@@ -19,7 +18,7 @@ export const PanelCommand = {
19
18
  };
20
19
 
21
20
  @singleton({
22
- contrib: [CommandContribution, MenuContribution, ToolbarContribution],
21
+ contrib: [CommandContribution, ToolbarContribution],
23
22
  })
24
23
  export class PanelCommandContribution
25
24
  implements CommandContribution, ToolbarContribution
@@ -9,6 +9,7 @@ import {
9
9
  singleton,
10
10
  SlotViewManager,
11
11
  } from '@difizen/mana-app';
12
+ import type { Disposable } from '@difizen/mana-common';
12
13
 
13
14
  import type { LibroLabLayoutSlotsType, StatusType } from './protocol.js';
14
15
  import { LibroLabLayoutSlots } from './protocol.js';
@@ -92,7 +93,10 @@ export class LayoutService {
92
93
  return undefined;
93
94
  }
94
95
 
95
- onSlotActiveChange(slot: LibroLabLayoutSlotsType, handler: () => void) {
96
+ onSlotActiveChange(
97
+ slot: LibroLabLayoutSlotsType,
98
+ handler: () => void,
99
+ ): Disposable | undefined {
96
100
  if (this.isAreaVisible(slot)) {
97
101
  const slotView = this.slotViewManager.getSlotView(slot);
98
102
  if (slotView instanceof DefaultSlotView) {