@theia/core 1.28.0-next.7 → 1.28.0

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 (206) hide show
  1. package/README.md +6 -6
  2. package/i18n/nls.cs.json +33 -2
  3. package/i18n/nls.de.json +33 -2
  4. package/i18n/nls.es.json +33 -2
  5. package/i18n/nls.fr.json +33 -2
  6. package/i18n/nls.hu.json +33 -2
  7. package/i18n/nls.it.json +33 -2
  8. package/i18n/nls.ja.json +33 -2
  9. package/i18n/nls.json +35 -4
  10. package/i18n/nls.pl.json +33 -2
  11. package/i18n/nls.pt-br.json +33 -2
  12. package/i18n/nls.pt-pt.json +33 -2
  13. package/i18n/nls.ru.json +33 -2
  14. package/i18n/nls.zh-cn.json +33 -2
  15. package/lib/browser/common-frontend-contribution.d.ts +1 -1
  16. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  17. package/lib/browser/common-frontend-contribution.js +6 -5
  18. package/lib/browser/common-frontend-contribution.js.map +1 -1
  19. package/lib/browser/context-key-service.d.ts +3 -1
  20. package/lib/browser/context-key-service.d.ts.map +1 -1
  21. package/lib/browser/context-menu-renderer.d.ts +5 -0
  22. package/lib/browser/context-menu-renderer.d.ts.map +1 -1
  23. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  24. package/lib/browser/frontend-application-module.js +2 -0
  25. package/lib/browser/frontend-application-module.js.map +1 -1
  26. package/lib/browser/frontend-application.d.ts +3 -2
  27. package/lib/browser/frontend-application.d.ts.map +1 -1
  28. package/lib/browser/frontend-application.js.map +1 -1
  29. package/lib/browser/keybinding.d.ts.map +1 -1
  30. package/lib/browser/keybinding.js +9 -7
  31. package/lib/browser/keybinding.js.map +1 -1
  32. package/lib/browser/keybinding.spec.js +13 -3
  33. package/lib/browser/keybinding.spec.js.map +1 -1
  34. package/lib/browser/menu/browser-context-menu-renderer.d.ts +1 -1
  35. package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
  36. package/lib/browser/menu/browser-context-menu-renderer.js +2 -2
  37. package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
  38. package/lib/browser/menu/browser-menu-plugin.d.ts +23 -24
  39. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  40. package/lib/browser/menu/browser-menu-plugin.js +62 -79
  41. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  42. package/lib/browser/resource-context-key.d.ts +1 -0
  43. package/lib/browser/resource-context-key.d.ts.map +1 -1
  44. package/lib/browser/resource-context-key.js +8 -6
  45. package/lib/browser/resource-context-key.js.map +1 -1
  46. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  47. package/lib/browser/shell/shell-layout-restorer.js +2 -1
  48. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  49. package/lib/browser/shell/side-panel-toolbar.d.ts.map +1 -1
  50. package/lib/browser/shell/side-panel-toolbar.js +0 -1
  51. package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
  52. package/lib/browser/shell/tab-bar-toolbar/index.d.ts +4 -0
  53. package/lib/browser/shell/tab-bar-toolbar/index.d.ts.map +1 -0
  54. package/lib/browser/shell/tab-bar-toolbar/index.js +31 -0
  55. package/lib/browser/shell/tab-bar-toolbar/index.js.map +1 -0
  56. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +16 -0
  57. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -0
  58. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +36 -0
  59. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -0
  60. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +51 -0
  61. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -0
  62. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +173 -0
  63. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -0
  64. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts +119 -0
  65. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts.map +1 -0
  66. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +67 -0
  67. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -0
  68. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +53 -0
  69. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -0
  70. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +264 -0
  71. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -0
  72. package/lib/browser/shell/{tab-bar-toolbar.spec.d.ts → tab-bar-toolbar/tab-bar-toolbar.spec.d.ts} +0 -0
  73. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.d.ts.map +1 -0
  74. package/lib/browser/shell/{tab-bar-toolbar.spec.js → tab-bar-toolbar/tab-bar-toolbar.spec.js} +3 -3
  75. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js.map +1 -0
  76. package/lib/browser/view-container.d.ts.map +1 -1
  77. package/lib/browser/view-container.js +1 -10
  78. package/lib/browser/view-container.js.map +1 -1
  79. package/lib/browser/widget-manager.d.ts.map +1 -1
  80. package/lib/browser/widget-manager.js +2 -1
  81. package/lib/browser/widget-manager.js.map +1 -1
  82. package/lib/browser/widget-manager.spec.js +13 -0
  83. package/lib/browser/widget-manager.spec.js.map +1 -1
  84. package/lib/browser/window/default-window-service.d.ts +2 -1
  85. package/lib/browser/window/default-window-service.d.ts.map +1 -1
  86. package/lib/browser/window/default-window-service.js +9 -4
  87. package/lib/browser/window/default-window-service.js.map +1 -1
  88. package/lib/browser/window/window-service.d.ts +2 -1
  89. package/lib/browser/window/window-service.d.ts.map +1 -1
  90. package/lib/browser/window/window-service.js.map +1 -1
  91. package/lib/common/color.d.ts +3 -0
  92. package/lib/common/color.d.ts.map +1 -1
  93. package/lib/common/frontend-application-state.d.ts +14 -0
  94. package/lib/common/frontend-application-state.d.ts.map +1 -1
  95. package/lib/common/frontend-application-state.js +16 -0
  96. package/lib/common/frontend-application-state.js.map +1 -1
  97. package/lib/common/menu/action-menu-node.d.ts +20 -0
  98. package/lib/common/menu/action-menu-node.d.ts.map +1 -0
  99. package/lib/common/menu/action-menu-node.js +57 -0
  100. package/lib/common/menu/action-menu-node.js.map +1 -0
  101. package/lib/common/menu/composite-menu-node.d.ts +52 -0
  102. package/lib/common/menu/composite-menu-node.d.ts.map +1 -0
  103. package/lib/common/menu/composite-menu-node.js +102 -0
  104. package/lib/common/menu/composite-menu-node.js.map +1 -0
  105. package/lib/common/menu/index.d.ts +6 -0
  106. package/lib/common/menu/index.d.ts.map +1 -0
  107. package/lib/common/menu/index.js +33 -0
  108. package/lib/common/menu/index.js.map +1 -0
  109. package/lib/common/menu/menu-adapter.d.ts +36 -0
  110. package/lib/common/menu/menu-adapter.d.ts.map +1 -0
  111. package/lib/common/menu/menu-adapter.js +101 -0
  112. package/lib/common/menu/menu-adapter.js.map +1 -0
  113. package/lib/common/{menu.d.ts → menu/menu-model-registry.d.ts} +22 -124
  114. package/lib/common/menu/menu-model-registry.d.ts.map +1 -0
  115. package/lib/common/{menu.js → menu/menu-model-registry.js} +71 -147
  116. package/lib/common/menu/menu-model-registry.js.map +1 -0
  117. package/lib/common/menu/menu-types.d.ts +120 -0
  118. package/lib/common/menu/menu-types.d.ts.map +1 -0
  119. package/lib/common/menu/menu-types.js +84 -0
  120. package/lib/common/menu/menu-types.js.map +1 -0
  121. package/lib/common/{menu.spec.d.ts → menu/menu.spec.d.ts} +0 -0
  122. package/lib/common/menu/menu.spec.d.ts.map +1 -0
  123. package/lib/common/{menu.spec.js → menu/menu.spec.js} +3 -3
  124. package/lib/common/menu/menu.spec.js.map +1 -0
  125. package/lib/common/message-rpc/rpc-message-encoder.d.ts +12 -11
  126. package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -1
  127. package/lib/common/message-rpc/rpc-message-encoder.js +21 -12
  128. package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -1
  129. package/lib/common/messaging/abstract-connection-provider.d.ts +1 -1
  130. package/lib/common/messaging/abstract-connection-provider.js +3 -3
  131. package/lib/common/quick-pick-service.d.ts +1 -0
  132. package/lib/common/quick-pick-service.d.ts.map +1 -1
  133. package/lib/common/quick-pick-service.js.map +1 -1
  134. package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -2
  135. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  136. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +14 -5
  137. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  138. package/lib/electron-browser/menu/electron-main-menu-factory.js +71 -82
  139. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  140. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  141. package/lib/electron-browser/menu/electron-menu-contribution.js +6 -0
  142. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  143. package/lib/electron-browser/messaging/electron-ws-connection-provider.js +1 -1
  144. package/lib/electron-browser/window/electron-window-service.js +1 -1
  145. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  146. package/lib/electron-common/messaging/electron-messages.d.ts +3 -14
  147. package/lib/electron-common/messaging/electron-messages.d.ts.map +1 -1
  148. package/lib/electron-common/messaging/electron-messages.js +3 -16
  149. package/lib/electron-common/messaging/electron-messages.js.map +1 -1
  150. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +3 -3
  151. package/lib/electron-main/messaging/electron-messaging-contribution.js +6 -6
  152. package/package.json +7 -6
  153. package/src/browser/common-frontend-contribution.ts +6 -5
  154. package/src/browser/context-key-service.ts +1 -1
  155. package/src/browser/context-menu-renderer.ts +5 -0
  156. package/src/browser/frontend-application-module.ts +7 -1
  157. package/src/browser/frontend-application.ts +3 -2
  158. package/src/browser/keybinding.spec.ts +13 -3
  159. package/src/browser/keybinding.ts +8 -9
  160. package/src/browser/menu/browser-context-menu-renderer.ts +2 -2
  161. package/src/browser/menu/browser-menu-plugin.ts +74 -86
  162. package/src/browser/resource-context-key.ts +9 -6
  163. package/src/browser/shell/shell-layout-restorer.ts +2 -1
  164. package/src/browser/shell/side-panel-toolbar.ts +0 -1
  165. package/src/browser/shell/tab-bar-toolbar/index.ts +19 -0
  166. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.ts +31 -0
  167. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +170 -0
  168. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +186 -0
  169. package/src/browser/shell/{tab-bar-toolbar.spec.ts → tab-bar-toolbar/tab-bar-toolbar.spec.ts} +2 -2
  170. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +261 -0
  171. package/src/browser/style/alert-messages.css +6 -0
  172. package/src/browser/view-container.ts +1 -10
  173. package/src/browser/widget-manager.spec.ts +14 -0
  174. package/src/browser/widget-manager.ts +2 -1
  175. package/src/browser/window/default-window-service.ts +9 -4
  176. package/src/browser/window/window-service.ts +2 -1
  177. package/src/common/color.ts +3 -0
  178. package/src/common/frontend-application-state.ts +15 -0
  179. package/src/common/menu/action-menu-node.ts +65 -0
  180. package/src/common/menu/composite-menu-node.ts +121 -0
  181. package/src/common/menu/index.ts +21 -0
  182. package/src/common/menu/menu-adapter.ts +103 -0
  183. package/src/common/{menu.ts → menu/menu-model-registry.ts} +61 -222
  184. package/src/common/menu/menu-types.ts +183 -0
  185. package/src/common/{menu.spec.ts → menu/menu.spec.ts} +3 -2
  186. package/src/common/message-rpc/rpc-message-encoder.ts +24 -13
  187. package/src/common/messaging/abstract-connection-provider.ts +4 -4
  188. package/src/common/quick-pick-service.ts +1 -0
  189. package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -2
  190. package/src/electron-browser/menu/electron-main-menu-factory.ts +82 -96
  191. package/src/electron-browser/menu/electron-menu-contribution.ts +8 -0
  192. package/src/electron-browser/messaging/electron-ws-connection-provider.ts +1 -1
  193. package/src/electron-browser/window/electron-window-service.ts +1 -1
  194. package/src/electron-common/messaging/electron-messages.ts +4 -15
  195. package/src/electron-main/messaging/electron-messaging-contribution.ts +8 -8
  196. package/lib/browser/shell/tab-bar-toolbar.d.ts +0 -186
  197. package/lib/browser/shell/tab-bar-toolbar.d.ts.map +0 -1
  198. package/lib/browser/shell/tab-bar-toolbar.js +0 -362
  199. package/lib/browser/shell/tab-bar-toolbar.js.map +0 -1
  200. package/lib/browser/shell/tab-bar-toolbar.spec.d.ts.map +0 -1
  201. package/lib/browser/shell/tab-bar-toolbar.spec.js.map +0 -1
  202. package/lib/common/menu.d.ts.map +0 -1
  203. package/lib/common/menu.js.map +0 -1
  204. package/lib/common/menu.spec.d.ts.map +0 -1
  205. package/lib/common/menu.spec.js.map +0 -1
  206. package/src/browser/shell/tab-bar-toolbar.tsx +0 -495
@@ -0,0 +1,52 @@
1
+ import { Disposable } from '../disposable';
2
+ import { CompoundMenuNode, CompoundMenuNodeMetadata, CompoundMenuNodeRole, MenuNode, SubMenuOptions } from './menu-types';
3
+ /**
4
+ * Node representing a (sub)menu in the menu tree structure.
5
+ */
6
+ export declare class CompositeMenuNode implements MenuNode, CompoundMenuNode, CompoundMenuNodeMetadata {
7
+ readonly id: string;
8
+ label?: string | undefined;
9
+ readonly parent?: (MenuNode & CompoundMenuNode) | undefined;
10
+ protected readonly _children: MenuNode[];
11
+ iconClass?: string;
12
+ order?: string;
13
+ readonly when?: string;
14
+ readonly _role?: CompoundMenuNodeRole;
15
+ constructor(id: string, label?: string | undefined, options?: SubMenuOptions, parent?: (MenuNode & CompoundMenuNode) | undefined);
16
+ get icon(): string | undefined;
17
+ get children(): ReadonlyArray<MenuNode>;
18
+ get role(): CompoundMenuNodeRole;
19
+ /**
20
+ * Inserts the given node at the position indicated by `sortString`.
21
+ *
22
+ * @returns a disposable which, when called, will remove the given node again.
23
+ */
24
+ addNode(node: MenuNode): Disposable;
25
+ /**
26
+ * Removes the first node with the given id.
27
+ *
28
+ * @param id node id.
29
+ */
30
+ removeNode(id: string): void;
31
+ get sortString(): string;
32
+ get isSubmenu(): boolean;
33
+ /** @deprecated @since 1.28 use CompoundMenuNode.isNavigationGroup instead */
34
+ static isNavigationGroup: typeof CompoundMenuNode.isNavigationGroup;
35
+ }
36
+ export declare class CompositeMenuNodeWrapper implements MenuNode, CompoundMenuNodeMetadata {
37
+ protected readonly wrapped: Readonly<CompositeMenuNode>;
38
+ readonly parent: MenuNode & CompoundMenuNode;
39
+ protected readonly options?: SubMenuOptions | undefined;
40
+ constructor(wrapped: Readonly<CompositeMenuNode>, parent: MenuNode & CompoundMenuNode, options?: SubMenuOptions | undefined);
41
+ get id(): string;
42
+ get label(): string | undefined;
43
+ get sortString(): string;
44
+ get isSubmenu(): boolean;
45
+ get role(): CompoundMenuNodeRole;
46
+ get icon(): string | undefined;
47
+ get iconClass(): string | undefined;
48
+ get order(): string | undefined;
49
+ get when(): string | undefined;
50
+ get children(): ReadonlyArray<MenuNode>;
51
+ }
52
+ //# sourceMappingURL=composite-menu-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-menu-node.d.ts","sourceRoot":"","sources":["../../../src/common/menu/composite-menu-node.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1H;;GAEG;AACH,qBAAa,iBAAkB,YAAW,QAAQ,EAAE,gBAAgB,EAAE,wBAAwB;aAQtE,EAAE,EAAE,MAAM;IACnB,KAAK,CAAC;IAEb,QAAQ,CAAC,MAAM,CAAC;IAVpB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAM;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;gBAGlB,EAAE,EAAE,MAAM,EACnB,KAAK,CAAC,oBAAQ,EACrB,OAAO,CAAC,EAAE,cAAc,EACf,MAAM,CAAC,2CAA6B;IAUjD,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,CAEtC;IAED,IAAI,IAAI,IAAI,oBAAoB,CAAmG;IAEnI;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAa1C;;;;OAIG;IACI,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAUnC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,6EAA6E;IAC7E,MAAM,CAAC,iBAAiB,4CAAsC;CACjE;AAED,qBAAa,wBAAyB,YAAW,QAAQ,EAAE,wBAAwB;IACnE,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,gBAAgB;IAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAA/G,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAW,MAAM,EAAE,QAAQ,GAAG,gBAAgB,EAAqB,OAAO,CAAC,4BAAgB;IAE9J,IAAI,EAAE,IAAI,MAAM,CAA4B;IAE5C,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAA+B;IAE9D,IAAI,UAAU,IAAI,MAAM,CAAkC;IAE1D,IAAI,SAAS,IAAI,OAAO,CAAgC;IAExD,IAAI,IAAI,IAAI,oBAAoB,CAAoD;IAEpF,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAA2B;IAEzD,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAA8D;IAEjG,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAAsD;IAErF,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAAoD;IAElF,IAAI,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAkC;CAC5E"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2022 Ericsson and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CompositeMenuNodeWrapper = exports.CompositeMenuNode = void 0;
19
+ const menu_types_1 = require("./menu-types");
20
+ /**
21
+ * Node representing a (sub)menu in the menu tree structure.
22
+ */
23
+ class CompositeMenuNode {
24
+ constructor(id, label, options, parent) {
25
+ this.id = id;
26
+ this.label = label;
27
+ this.parent = parent;
28
+ this._children = [];
29
+ if (options) {
30
+ this.iconClass = options.iconClass;
31
+ this.order = options.order;
32
+ this.when = options.when;
33
+ this._role = options === null || options === void 0 ? void 0 : options.role;
34
+ }
35
+ }
36
+ get icon() {
37
+ return this.iconClass;
38
+ }
39
+ get children() {
40
+ return this._children;
41
+ }
42
+ get role() { var _a; return (_a = this._role) !== null && _a !== void 0 ? _a : (this.label ? 0 /* Submenu */ : 1 /* Group */); }
43
+ /**
44
+ * Inserts the given node at the position indicated by `sortString`.
45
+ *
46
+ * @returns a disposable which, when called, will remove the given node again.
47
+ */
48
+ addNode(node) {
49
+ this._children.push(node);
50
+ this._children.sort(menu_types_1.CompoundMenuNode.sortChildren);
51
+ return {
52
+ dispose: () => {
53
+ const idx = this._children.indexOf(node);
54
+ if (idx >= 0) {
55
+ this._children.splice(idx, 1);
56
+ }
57
+ }
58
+ };
59
+ }
60
+ /**
61
+ * Removes the first node with the given id.
62
+ *
63
+ * @param id node id.
64
+ */
65
+ removeNode(id) {
66
+ const node = this._children.find(n => n.id === id);
67
+ if (node) {
68
+ const idx = this._children.indexOf(node);
69
+ if (idx >= 0) {
70
+ this._children.splice(idx, 1);
71
+ }
72
+ }
73
+ }
74
+ get sortString() {
75
+ return this.order || this.id;
76
+ }
77
+ get isSubmenu() {
78
+ return Boolean(this.label);
79
+ }
80
+ }
81
+ exports.CompositeMenuNode = CompositeMenuNode;
82
+ /** @deprecated @since 1.28 use CompoundMenuNode.isNavigationGroup instead */
83
+ CompositeMenuNode.isNavigationGroup = menu_types_1.CompoundMenuNode.isNavigationGroup;
84
+ class CompositeMenuNodeWrapper {
85
+ constructor(wrapped, parent, options) {
86
+ this.wrapped = wrapped;
87
+ this.parent = parent;
88
+ this.options = options;
89
+ }
90
+ get id() { return this.wrapped.id; }
91
+ get label() { return this.wrapped.label; }
92
+ get sortString() { return this.order || this.id; }
93
+ get isSubmenu() { return Boolean(this.label); }
94
+ get role() { var _a, _b; return (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.role) !== null && _b !== void 0 ? _b : this.wrapped.role; }
95
+ get icon() { return this.iconClass; }
96
+ get iconClass() { var _a, _b; return (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.iconClass) !== null && _b !== void 0 ? _b : this.wrapped.iconClass; }
97
+ get order() { var _a, _b; return (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.order) !== null && _b !== void 0 ? _b : this.wrapped.order; }
98
+ get when() { var _a, _b; return (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.when) !== null && _b !== void 0 ? _b : this.wrapped.when; }
99
+ get children() { return this.wrapped.children; }
100
+ }
101
+ exports.CompositeMenuNodeWrapper = CompositeMenuNodeWrapper;
102
+ //# sourceMappingURL=composite-menu-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-menu-node.js","sourceRoot":"","sources":["../../../src/common/menu/composite-menu-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from './action-menu-node';
2
+ export * from './composite-menu-node';
3
+ export * from './menu-adapter';
4
+ export * from './menu-model-registry';
5
+ export * from './menu-types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/menu/index.ts"],"names":[],"mappings":"AAgBA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2022 Ericsson and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
25
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ __exportStar(require("./action-menu-node"), exports);
29
+ __exportStar(require("./composite-menu-node"), exports);
30
+ __exportStar(require("./menu-adapter"), exports);
31
+ __exportStar(require("./menu-model-registry"), exports);
32
+ __exportStar(require("./menu-types"), exports);
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/menu/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;AAEhF,qDAAmC;AACnC,wDAAsC;AACtC,iDAA+B;AAC/B,wDAAsC;AACtC,+CAA6B"}
@@ -0,0 +1,36 @@
1
+ import { CommandRegistry } from '../command';
2
+ import { Disposable } from '../disposable';
3
+ import { MenuPath } from './menu-types';
4
+ export declare type MenuCommandArguments = [menuPath: MenuPath, command: string, ...commandArgs: unknown[]];
5
+ export declare const MenuCommandExecutor: unique symbol;
6
+ export interface MenuCommandExecutor {
7
+ isVisible(...args: MenuCommandArguments): boolean;
8
+ isEnabled(...args: MenuCommandArguments): boolean;
9
+ isToggled(...args: MenuCommandArguments): boolean;
10
+ executeCommand(...args: MenuCommandArguments): Promise<unknown>;
11
+ }
12
+ export declare const MenuCommandAdapter: unique symbol;
13
+ export interface MenuCommandAdapter extends MenuCommandExecutor {
14
+ /** Return values less than or equal to 0 are treated as rejections. */
15
+ canHandle(...args: MenuCommandArguments): number;
16
+ }
17
+ export declare const MenuCommandAdapterRegistry: unique symbol;
18
+ export interface MenuCommandAdapterRegistry {
19
+ registerAdapter(adapter: MenuCommandAdapter): Disposable;
20
+ getAdapterFor(...args: MenuCommandArguments): MenuCommandAdapter | undefined;
21
+ }
22
+ export declare class MenuCommandExecutorImpl implements MenuCommandExecutor {
23
+ protected readonly adapterRegistry: MenuCommandAdapterRegistry;
24
+ protected readonly commandRegistry: CommandRegistry;
25
+ executeCommand(menuPath: MenuPath, command: string, ...commandArgs: unknown[]): Promise<unknown>;
26
+ isVisible(menuPath: MenuPath, command: string, ...commandArgs: unknown[]): boolean;
27
+ isEnabled(menuPath: MenuPath, command: string, ...commandArgs: unknown[]): boolean;
28
+ isToggled(menuPath: MenuPath, command: string, ...commandArgs: unknown[]): boolean;
29
+ protected delegate<T extends keyof MenuCommandExecutor>(menuPath: MenuPath, command: string, commandArgs: unknown[], method: T): ReturnType<MenuCommandExecutor[T]>;
30
+ }
31
+ export declare class MenuCommandAdapterRegistryImpl implements MenuCommandAdapterRegistry {
32
+ protected readonly adapters: MenuCommandAdapter[];
33
+ registerAdapter(adapter: MenuCommandAdapter): Disposable;
34
+ getAdapterFor(menuPath: MenuPath, command: string, ...commandArgs: unknown[]): MenuCommandAdapter | undefined;
35
+ }
36
+ //# sourceMappingURL=menu-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-adapter.d.ts","sourceRoot":"","sources":["../../../src/common/menu/menu-adapter.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,oBAAY,oBAAoB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpG,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,MAAM,WAAW,mBAAmB;IAChC,SAAS,CAAC,GAAG,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAClD,SAAS,CAAC,GAAG,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAClD,SAAS,CAAC,GAAG,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAClD,cAAc,CAAC,GAAG,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAED,eAAO,MAAM,kBAAkB,eAA+B,CAAC;AAC/D,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC3D,uEAAuE;IACvE,SAAS,CAAC,GAAG,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;CACpD;AAED,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAC/E,MAAM,WAAW,0BAA0B;IACvC,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,CAAC;IACzD,aAAa,CAAC,GAAG,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,GAAG,SAAS,CAAC;CAChF;AAED,qBACa,uBAAwB,YAAW,mBAAmB;IAC3B,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,0BAA0B,CAAC;IAC1E,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE7E,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhG,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO;IAIlF,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO;IAIlF,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO;IAIlF,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAMtK;AAED,qBACa,8BAA+B,YAAW,0BAA0B;IAC7E,SAAS,CAAC,QAAQ,CAAC,QAAQ,uBAAmC;IAE9D,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU;IAaxD,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,GAAG,kBAAkB,GAAG,SAAS;CAahH"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2022 Ericsson and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.MenuCommandAdapterRegistryImpl = exports.MenuCommandExecutorImpl = exports.MenuCommandAdapterRegistry = exports.MenuCommandAdapter = exports.MenuCommandExecutor = void 0;
28
+ const inversify_1 = require("inversify");
29
+ const command_1 = require("../command");
30
+ const disposable_1 = require("../disposable");
31
+ exports.MenuCommandExecutor = Symbol('MenuCommandExecutor');
32
+ ;
33
+ exports.MenuCommandAdapter = Symbol('MenuCommandAdapter');
34
+ exports.MenuCommandAdapterRegistry = Symbol('MenuCommandAdapterRegistry');
35
+ let MenuCommandExecutorImpl = class MenuCommandExecutorImpl {
36
+ executeCommand(menuPath, command, ...commandArgs) {
37
+ return this.delegate(menuPath, command, commandArgs, 'executeCommand');
38
+ }
39
+ isVisible(menuPath, command, ...commandArgs) {
40
+ return this.delegate(menuPath, command, commandArgs, 'isVisible');
41
+ }
42
+ isEnabled(menuPath, command, ...commandArgs) {
43
+ return this.delegate(menuPath, command, commandArgs, 'isEnabled');
44
+ }
45
+ isToggled(menuPath, command, ...commandArgs) {
46
+ return this.delegate(menuPath, command, commandArgs, 'isToggled');
47
+ }
48
+ delegate(menuPath, command, commandArgs, method) {
49
+ const adapter = this.adapterRegistry.getAdapterFor(menuPath, command, commandArgs);
50
+ return (adapter
51
+ ? adapter[method](menuPath, command, ...commandArgs)
52
+ : this.commandRegistry[method](command, ...commandArgs));
53
+ }
54
+ };
55
+ __decorate([
56
+ (0, inversify_1.inject)(exports.MenuCommandAdapterRegistry),
57
+ __metadata("design:type", Object)
58
+ ], MenuCommandExecutorImpl.prototype, "adapterRegistry", void 0);
59
+ __decorate([
60
+ (0, inversify_1.inject)(command_1.CommandRegistry),
61
+ __metadata("design:type", command_1.CommandRegistry)
62
+ ], MenuCommandExecutorImpl.prototype, "commandRegistry", void 0);
63
+ MenuCommandExecutorImpl = __decorate([
64
+ (0, inversify_1.injectable)()
65
+ ], MenuCommandExecutorImpl);
66
+ exports.MenuCommandExecutorImpl = MenuCommandExecutorImpl;
67
+ let MenuCommandAdapterRegistryImpl = class MenuCommandAdapterRegistryImpl {
68
+ constructor() {
69
+ this.adapters = new Array();
70
+ }
71
+ registerAdapter(adapter) {
72
+ if (!this.adapters.includes(adapter)) {
73
+ this.adapters.push(adapter);
74
+ return disposable_1.Disposable.create(() => {
75
+ const index = this.adapters.indexOf(adapter);
76
+ if (index !== -1) {
77
+ this.adapters.splice(index, 1);
78
+ }
79
+ });
80
+ }
81
+ return disposable_1.Disposable.NULL;
82
+ }
83
+ getAdapterFor(menuPath, command, ...commandArgs) {
84
+ let bestAdapter = undefined;
85
+ let bestScore = 0;
86
+ let currentScore = 0;
87
+ for (const adapter of this.adapters) {
88
+ // Greater than or equal: favor later registrations over earlier.
89
+ if ((currentScore = adapter.canHandle(menuPath, command, ...commandArgs)) >= bestScore) {
90
+ bestScore = currentScore;
91
+ bestAdapter = adapter;
92
+ }
93
+ }
94
+ return bestAdapter;
95
+ }
96
+ };
97
+ MenuCommandAdapterRegistryImpl = __decorate([
98
+ (0, inversify_1.injectable)()
99
+ ], MenuCommandAdapterRegistryImpl);
100
+ exports.MenuCommandAdapterRegistryImpl = MenuCommandAdapterRegistryImpl;
101
+ //# sourceMappingURL=menu-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-adapter.js","sourceRoot":"","sources":["../../../src/common/menu/menu-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,61 +1,8 @@
1
- import { Disposable } from './disposable';
2
- import { CommandRegistry, Command } from './command';
3
- import { ContributionProvider } from './contribution-provider';
4
- /**
5
- * A menu entry representing an action, e.g. "New File".
6
- */
7
- export interface MenuAction {
8
- /**
9
- * The command to execute.
10
- */
11
- commandId: string;
12
- /**
13
- * In addition to the mandatory command property, an alternative command can be defined.
14
- * It will be shown and invoked when pressing Alt while opening a menu.
15
- */
16
- alt?: string;
17
- /**
18
- * A specific label for this action. If not specified the command label or command id will be used.
19
- */
20
- label?: string;
21
- /**
22
- * Icon class(es). If not specified the icon class associated with the specified command
23
- * (i.e. `command.iconClass`) will be used if it exists.
24
- */
25
- icon?: string;
26
- /**
27
- * Menu entries are sorted in ascending order based on their `order` strings. If omitted the determined
28
- * label will be used instead.
29
- */
30
- order?: string;
31
- /**
32
- * Optional expression which will be evaluated by the {@link ContextKeyService} to determine visibility
33
- * of the action, e.g. `resourceLangId == markdown`.
34
- */
35
- when?: string;
36
- }
37
- export declare namespace MenuAction {
38
- function is(arg: MenuAction | any): arg is MenuAction;
39
- }
40
- /**
41
- * Additional options when creating a new submenu.
42
- */
43
- export interface SubMenuOptions {
44
- /**
45
- * The class to use for the submenu icon.
46
- */
47
- iconClass?: string;
48
- /**
49
- * Menu entries are sorted in ascending order based on their `order` strings. If omitted the determined
50
- * label will be used instead.
51
- */
52
- order?: string;
53
- }
54
- export declare type MenuPath = string[];
55
- export declare const MAIN_MENU_BAR: MenuPath;
56
- export declare const SETTINGS_MENU: MenuPath;
57
- export declare const ACCOUNTS_MENU: MenuPath;
58
- export declare const ACCOUNTS_SUBMENU: string[];
1
+ import { Disposable } from '../disposable';
2
+ import { CommandRegistry, Command } from '../command';
3
+ import { ContributionProvider } from '../contribution-provider';
4
+ import { CompositeMenuNode } from './composite-menu-node';
5
+ import { MenuAction, MenuNode, MenuPath, SubMenuOptions } from './menu-types';
59
6
  export declare const MenuContribution: unique symbol;
60
7
  /**
61
8
  * Representation of a menu contribution.
@@ -99,6 +46,7 @@ export declare class MenuModelRegistry {
99
46
  protected readonly contributions: ContributionProvider<MenuContribution>;
100
47
  protected readonly commands: CommandRegistry;
101
48
  protected readonly root: CompositeMenuNode;
49
+ protected readonly independentSubmenus: Map<string, CompositeMenuNode>;
102
50
  constructor(contributions: ContributionProvider<MenuContribution>, commands: CommandRegistry);
103
51
  onStart(): void;
104
52
  /**
@@ -112,7 +60,8 @@ export declare class MenuModelRegistry {
112
60
  *
113
61
  * @returns a disposable which, when called, will remove the menu node again.
114
62
  */
115
- registerMenuNode(menuPath: MenuPath, menuNode: MenuNode): Disposable;
63
+ registerMenuNode(menuPath: MenuPath | string, menuNode: MenuNode, group?: string): Disposable;
64
+ getMenuNode(menuPath: MenuPath | string, group?: string): CompositeMenuNode;
116
65
  /**
117
66
  * Register a new menu at the given path with the given label.
118
67
  * (If the menu already exists without a label, iconClass or order this method can be used to set them.)
@@ -129,6 +78,8 @@ export declare class MenuModelRegistry {
129
78
  * will be thrown.
130
79
  */
131
80
  registerSubmenu(menuPath: MenuPath, label: string, options?: SubMenuOptions): Disposable;
81
+ registerIndependentSubmenu(id: string, label: string, options?: SubMenuOptions): Disposable;
82
+ linkSubmenu(parentPath: MenuPath | string, childId: string | MenuPath, options?: SubMenuOptions, group?: string): Disposable;
132
83
  /**
133
84
  * Unregister all menu nodes with the same id as the given menu action.
134
85
  *
@@ -156,7 +107,15 @@ export declare class MenuModelRegistry {
156
107
  * @param id technical identifier of the `MenuNode`.
157
108
  */
158
109
  unregisterMenuNode(id: string): void;
110
+ /**
111
+ * Finds a submenu as a descendant of the `root` node.
112
+ * See {@link MenuModelRegistry.findSubMenu findSubMenu}.
113
+ */
159
114
  protected findGroup(menuPath: MenuPath, options?: SubMenuOptions): CompositeMenuNode;
115
+ /**
116
+ * Finds or creates a submenu as an immediate child of `current`.
117
+ * @throws if a node with the given `menuId` exists but is not a {@link CompositeMenuNode}.
118
+ */
160
119
  protected findSubMenu(current: CompositeMenuNode, menuId: string, options?: SubMenuOptions): CompositeMenuNode;
161
120
  /**
162
121
  * Returns the menu at the given path.
@@ -167,71 +126,10 @@ export declare class MenuModelRegistry {
167
126
  * returned if it exists, otherwise an error is thrown.
168
127
  */
169
128
  getMenu(menuPath?: MenuPath): CompositeMenuNode;
170
- }
171
- /**
172
- * Base interface of the nodes used in the menu tree structure.
173
- */
174
- export interface MenuNode {
175
- /**
176
- * the optional label for this specific node.
177
- */
178
- readonly label?: string;
179
129
  /**
180
- * technical identifier.
130
+ * Returns the {@link MenuPath path} at which a given menu node can be accessed from this registry, if it can be determined.
131
+ * Returns `undefined` if the `parent` of any node in the chain is unknown.
181
132
  */
182
- readonly id: string;
183
- /**
184
- * Menu nodes are sorted in ascending order based on their `sortString`.
185
- */
186
- readonly sortString: string;
187
- }
188
- /**
189
- * Node representing a (sub)menu in the menu tree structure.
190
- */
191
- export declare class CompositeMenuNode implements MenuNode {
192
- readonly id: string;
193
- label?: string | undefined;
194
- protected readonly _children: MenuNode[];
195
- iconClass?: string;
196
- order?: string;
197
- constructor(id: string, label?: string | undefined, options?: SubMenuOptions);
198
- get children(): ReadonlyArray<MenuNode>;
199
- /**
200
- * Inserts the given node at the position indicated by `sortString`.
201
- *
202
- * @returns a disposable which, when called, will remove the given node again.
203
- */
204
- addNode(node: MenuNode): Disposable;
205
- /**
206
- * Removes the first node with the given id.
207
- *
208
- * @param id node id.
209
- */
210
- removeNode(id: string): void;
211
- get sortString(): string;
212
- get isSubmenu(): boolean;
213
- /**
214
- * Indicates whether the given node is the special `navigation` menu.
215
- *
216
- * @param node the menu node to check.
217
- * @returns `true` when the given node is a {@link CompositeMenuNode} with id `navigation`,
218
- * `false` otherwise.
219
- */
220
- static isNavigationGroup(node: MenuNode): node is CompositeMenuNode;
221
- }
222
- /**
223
- * Node representing an action in the menu tree structure.
224
- * It's based on {@link MenuAction} for which it tries to determine the
225
- * best label, icon and sortString with the given data.
226
- */
227
- export declare class ActionMenuNode implements MenuNode {
228
- readonly action: MenuAction;
229
- protected readonly commands: CommandRegistry;
230
- readonly altNode: ActionMenuNode | undefined;
231
- constructor(action: MenuAction, commands: CommandRegistry);
232
- get id(): string;
233
- get label(): string;
234
- get icon(): string | undefined;
235
- get sortString(): string;
133
+ getPath(node: MenuNode): MenuPath | undefined;
236
134
  }
237
- //# sourceMappingURL=menu.d.ts.map
135
+ //# sourceMappingURL=menu-model-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-model-registry.d.ts","sourceRoot":"","sources":["../../../src/common/menu/menu-model-registry.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAA4B,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9E,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjD;AAED;;;;GAIG;AACH,qBACa,iBAAiB;IAMtB,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe;IANzE,SAAS,CAAC,QAAQ,CAAC,IAAI,oBAA6B;IACpD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,iCAAwC;gBAIvD,aAAa,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,EAC5B,QAAQ,EAAE,eAAe;IAGzE,OAAO,IAAI,IAAI;IAMf;;;;OAIG;IACH,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAKpE;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU;IAK7F,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAa3E;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU;IA8BxF,0BAA0B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU;IAQ3F,WAAW,CAAC,UAAU,EAAE,QAAQ,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU;IAO5H;;;;;OAKG;IACH,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IACjE;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IACjE;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI;IAe3D;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAYpC;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,iBAAiB;IAQpF;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,iBAAiB;IAa9G;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,GAAE,QAAa,GAAG,iBAAiB;IAInD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;CAehD"}