@opensumi/ide-menu-bar 2.23.4 → 2.23.5-rc-1681807382.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.
@@ -1,7 +1,13 @@
1
- import { ToolBarActionContribution, IToolbarRegistry } from '@opensumi/ide-core-browser';
1
+ import { ToolBarActionContribution, IToolbarRegistry, Disposable } from '@opensumi/ide-core-browser';
2
2
  import { ComponentContribution, ComponentRegistry } from '@opensumi/ide-core-browser/lib/layout';
3
- export declare class MenuBarContribution implements ComponentContribution, ToolBarActionContribution {
3
+ export declare class MenuBarContribution extends Disposable implements ComponentContribution, ToolBarActionContribution {
4
4
  private readonly appConfig;
5
+ private readonly menubarStore;
6
+ private readonly menuRegistry;
7
+ private readonly preferenceService;
8
+ constructor();
9
+ private unregisterMenusBarByCompact;
10
+ private registerMenusBarByCompact;
5
11
  registerComponent(registry: ComponentRegistry): void;
6
12
  registerToolbarActions(registry: IToolbarRegistry): void;
7
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-bar.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/menu-bar.contribution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAa,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAOjG,qBACa,mBAAoB,YAAW,qBAAqB,EAAE,yBAAyB;IAE1F,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB;IAoB7C,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB;CAMlD"}
1
+ {"version":3,"file":"menu-bar.contribution.d.ts","sourceRoot":"","sources":["../../src/browser/menu-bar.contribution.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EAEzB,gBAAgB,EAEhB,UAAU,EAGX,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAcjG,qBACa,mBAAoB,SAAQ,UAAW,YAAW,qBAAqB,EAAE,yBAAyB;IAE7G,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAGtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAG5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAG7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IA0BtD,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,yBAAyB;IAoBjC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB;IAoB7C,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB;CAMlD"}
@@ -5,10 +5,48 @@ const tslib_1 = require("tslib");
5
5
  const di_1 = require("@opensumi/di");
6
6
  const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
7
  const layout_1 = require("@opensumi/ide-core-browser/lib/layout");
8
+ const next_1 = require("@opensumi/ide-core-browser/lib/menu/next");
8
9
  const di_helper_1 = require("@opensumi/ide-core-common/lib/di-helper");
10
+ const menu_bar_store_1 = require("./menu-bar.store");
9
11
  const menu_bar_view_1 = require("./menu-bar.view");
10
12
  const toolbar_action_view_1 = require("./toolbar-action.view");
11
- let MenuBarContribution = class MenuBarContribution {
13
+ let MenuBarContribution = class MenuBarContribution extends ide_core_browser_1.Disposable {
14
+ constructor() {
15
+ super();
16
+ this.addDispose(this.menubarStore.onDidMenuBarChange((menubarItems) => {
17
+ const isCompact = this.preferenceService.getValid("menubar.compactMode" /* MenubarSettingId.CompactMode */);
18
+ if (isCompact) {
19
+ this.registerMenusBarByCompact(menubarItems);
20
+ }
21
+ }));
22
+ this.addDispose(this.preferenceService.onSpecificPreferenceChange("menubar.compactMode" /* MenubarSettingId.CompactMode */, ({ newValue }) => {
23
+ if (newValue) {
24
+ this.registerMenusBarByCompact();
25
+ }
26
+ else {
27
+ this.unregisterMenusBarByCompact();
28
+ }
29
+ }));
30
+ }
31
+ unregisterMenusBarByCompact() {
32
+ const preMenu = this.menuRegistry.getMenuItems(next_1.MenuId.MenubarCompactMenu);
33
+ preMenu.forEach((c) => {
34
+ this.menuRegistry.unregisterMenuItem(next_1.MenuId.MenubarCompactMenu, c.submenu);
35
+ });
36
+ this.menuRegistry.unregisterMenuItem(next_1.MenuId.ActivityBarTopExtra, next_1.MenuId.MenubarCompactMenu);
37
+ }
38
+ registerMenusBarByCompact(menubarItems = this.menubarStore.menubarItems) {
39
+ this.menuRegistry.registerMenuItem(next_1.MenuId.ActivityBarTopExtra, {
40
+ submenu: next_1.MenuId.MenubarCompactMenu,
41
+ iconClass: (0, ide_core_browser_1.getExternalIcon)('menu'),
42
+ order: 1,
43
+ group: 'navigation',
44
+ });
45
+ this.menuRegistry.registerMenuItems(next_1.MenuId.MenubarCompactMenu, menubarItems.map((item) => ({
46
+ label: item.label,
47
+ submenu: item.id,
48
+ })));
49
+ }
12
50
  registerComponent(registry) {
13
51
  registry.register('@opensumi/ide-menu-bar', {
14
52
  id: 'ide-menu-bar',
@@ -34,8 +72,21 @@ tslib_1.__decorate([
34
72
  (0, di_1.Autowired)(ide_core_browser_1.AppConfig),
35
73
  tslib_1.__metadata("design:type", Object)
36
74
  ], MenuBarContribution.prototype, "appConfig", void 0);
75
+ tslib_1.__decorate([
76
+ (0, di_1.Autowired)(menu_bar_store_1.MenubarStore),
77
+ tslib_1.__metadata("design:type", menu_bar_store_1.MenubarStore)
78
+ ], MenuBarContribution.prototype, "menubarStore", void 0);
79
+ tslib_1.__decorate([
80
+ (0, di_1.Autowired)(next_1.IMenuRegistry),
81
+ tslib_1.__metadata("design:type", next_1.IMenuRegistry)
82
+ ], MenuBarContribution.prototype, "menuRegistry", void 0);
83
+ tslib_1.__decorate([
84
+ (0, di_1.Autowired)(ide_core_browser_1.PreferenceService),
85
+ tslib_1.__metadata("design:type", Object)
86
+ ], MenuBarContribution.prototype, "preferenceService", void 0);
37
87
  MenuBarContribution = tslib_1.__decorate([
38
- (0, di_helper_1.Domain)(layout_1.ComponentContribution, ide_core_browser_1.ToolBarActionContribution)
88
+ (0, di_helper_1.Domain)(layout_1.ComponentContribution, ide_core_browser_1.ToolBarActionContribution),
89
+ tslib_1.__metadata("design:paramtypes", [])
39
90
  ], MenuBarContribution);
40
91
  exports.MenuBarContribution = MenuBarContribution;
41
92
  //# sourceMappingURL=menu-bar.contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-bar.contribution.js","sourceRoot":"","sources":["../../src/browser/menu-bar.contribution.ts"],"names":[],"mappings":";;;;AAAA,qCAAyC;AACzC,iEAAoG;AACpG,kEAAiG;AACjG,uEAAiE;AAEjE,mDAA0D;AAC1D,+DAAsD;AAI/C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAI9B,iBAAiB,CAAC,QAA2B;QAC3C,QAAQ,CAAC,QAAQ,CACf,wBAAwB,EACxB;YACE,EAAE,EAAE,cAAc;YAClB,SAAS,EAAE,uCAAuB;SACnC,EACD;YACE,IAAI,EAAE,EAAE;SACT,CACF,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACtC,QAAQ,CAAC,QAAQ,CAAC,8BAA8B,EAAE;gBAChD,EAAE,EAAE,oBAAoB;gBACxB,SAAS,EAAE,mCAAa;aACzB,CAAC,CAAC;SACJ;IACH,CAAC;IAED,sBAAsB,CAAC,QAA0B;QAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACtC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACnC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SACnC;IACH,CAAC;CACF,CAAA;AA7BC;IAAC,IAAA,cAAS,EAAC,4BAAS,CAAC;;sDACiB;AAF3B,mBAAmB;IAD/B,IAAA,kBAAM,EAAC,8BAAqB,EAAE,4CAAyB,CAAC;GAC5C,mBAAmB,CA8B/B;AA9BY,kDAAmB"}
1
+ {"version":3,"file":"menu-bar.contribution.js","sourceRoot":"","sources":["../../src/browser/menu-bar.contribution.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Disposable } from '@opensumi/ide-core-browser';
1
+ import { Disposable, Event } from '@opensumi/ide-core-browser';
2
2
  import { IMenubarItem, MenuNode } from '@opensumi/ide-core-browser/lib/menu/next';
3
3
  export declare abstract class AbstractMenubarStore extends Disposable {
4
4
  menubarItems: IMenubarItem[];
@@ -8,7 +8,10 @@ export declare class MenubarStore extends Disposable implements AbstractMenubarS
8
8
  private readonly menubarService;
9
9
  menubarItems: import("mobx").IObservableArray<IMenubarItem>;
10
10
  menuItems: import("mobx").ObservableMap<string, MenuNode[]>;
11
+ private readonly _onDidMenuBarChange;
12
+ get onDidMenuBarChange(): Event<IMenubarItem[]>;
11
13
  constructor();
14
+ private getMenubarSubItems;
12
15
  private updateMenuNodes;
13
16
  private build;
14
17
  private handleMenuChanged;
@@ -1 +1 @@
1
- {"version":3,"file":"menu-bar.store.d.ts","sourceRoot":"","sources":["../../src/browser/menu-bar.store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAA0B,YAAY,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAE1G,8BAAsB,oBAAqB,SAAQ,UAAU;IAC3D,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAClD;AAED,qBACa,YAAa,SAAQ,UAAW,YAAW,oBAAoB;IAE1E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IAGjD,YAAY,gDAAsC;IAGlD,SAAS,mDAAwC;;IAWxD,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAMrB,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAMjD;CACH"}
1
+ {"version":3,"file":"menu-bar.store.d.ts","sourceRoot":"","sources":["../../src/browser/menu-bar.store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAW,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAA0B,YAAY,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAE1G,8BAAsB,oBAAqB,SAAQ,UAAU;IAC3D,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAClD;AAED,qBACa,YAAa,SAAQ,UAAW,YAAW,oBAAoB;IAE1E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IAGjD,YAAY,gDAAsC;IAGlD,SAAS,mDAAwC;IAExD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiC;IACrE,IAAW,kBAAkB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAErD;;IAUD,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAOrB,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAMjD;CACH"}
@@ -11,10 +11,14 @@ class AbstractMenubarStore extends ide_core_browser_1.Disposable {
11
11
  }
12
12
  exports.AbstractMenubarStore = AbstractMenubarStore;
13
13
  let MenubarStore = class MenubarStore extends ide_core_browser_1.Disposable {
14
+ get onDidMenuBarChange() {
15
+ return this._onDidMenuBarChange.event;
16
+ }
14
17
  constructor() {
15
18
  super();
16
19
  this.menubarItems = mobx_1.observable.array([]);
17
20
  this.menuItems = mobx_1.observable.map();
21
+ this._onDidMenuBarChange = new ide_core_browser_1.Emitter();
18
22
  this.handleMenubarClick = (0, debounce_1.default)((menuId) => {
19
23
  this.updateMenuNodes(menuId);
20
24
  }, 500, { leading: true, trailing: true });
@@ -22,9 +26,12 @@ let MenubarStore = class MenubarStore extends ide_core_browser_1.Disposable {
22
26
  this.registerDispose(this.menubarService.onDidMenubarChange(this.handleMenubarChanged, this, this.disposables));
23
27
  this.registerDispose(this.menubarService.onDidMenuChange(this.handleMenuChanged, this, this.disposables));
24
28
  }
25
- updateMenuNodes(menuId) {
29
+ getMenubarSubItems(menuId) {
26
30
  this.menubarService.rebuildMenuNodes(menuId);
27
- const menuItems = this.menubarService.getMenuNodes(menuId) || [];
31
+ return this.menubarService.getMenuNodes(menuId) || [];
32
+ }
33
+ updateMenuNodes(menuId) {
34
+ const menuItems = this.getMenubarSubItems(menuId);
28
35
  this.menuItems.set(menuId, menuItems);
29
36
  }
30
37
  build() {
@@ -33,6 +40,7 @@ let MenubarStore = class MenubarStore extends ide_core_browser_1.Disposable {
33
40
  menubarItems.forEach(({ id: menuId }) => {
34
41
  this.updateMenuNodes(menuId);
35
42
  });
43
+ this._onDidMenuBarChange.fire(this.menubarItems);
36
44
  }
37
45
  handleMenuChanged(menuId) {
38
46
  this.updateMenuNodes(menuId);
@@ -40,6 +48,7 @@ let MenubarStore = class MenubarStore extends ide_core_browser_1.Disposable {
40
48
  handleMenubarChanged() {
41
49
  const menubarItems = this.menubarService.getMenubarItems();
42
50
  this.menubarItems.replace(menubarItems);
51
+ this._onDidMenuBarChange.fire(this.menubarItems);
43
52
  }
44
53
  };
45
54
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"menu-bar.store.js","sourceRoot":"","sources":["../../src/browser/menu-bar.store.ts"],"names":[],"mappings":";;;;AAAA,uEAAuC;AACvC,+BAA0C;AAE1C,qCAAqD;AACrD,iEAAwD;AACxD,mEAA0G;AAE1G,MAAsB,oBAAqB,SAAQ,6BAAU;CAG5D;AAHD,oDAGC;AAGM,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,6BAAU;IAU1C;QACE,KAAK,EAAE,CAAC;QANH,iBAAY,GAAG,iBAAU,CAAC,KAAK,CAAe,EAAE,CAAC,CAAC;QAGlD,cAAS,GAAG,iBAAU,CAAC,GAAG,EAAsB,CAAC;QAmCjD,uBAAkB,GAA6B,IAAA,kBAAQ,EAC5D,CAAC,MAAc,EAAE,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,EACD,GAAG,EACH,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAClC,CAAC;QApCA,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5G,CAAC;IAGO,eAAe,CAAC,MAAc;QACpC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;QACvE,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,oBAAoB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;CAUF,CAAA;AAjDC;IAAC,IAAA,cAAS,EAAC,6BAAsB,CAAC;sCACD,6BAAsB;oDAAC;AAExD;IAAC,iBAAU;;kDAC8C;AAEzD;IAAC,iBAAU;;+CAC6C;AAUxD;IAAC,aAAM,CAAC,KAAK;;;;mDAKZ;AAmBD;IAAC,aAAM,CAAC,KAAK;;wDAOX;AAjDS,YAAY;IADxB,IAAA,eAAU,GAAE;;GACA,YAAY,CAkDxB;AAlDY,oCAAY"}
1
+ {"version":3,"file":"menu-bar.store.js","sourceRoot":"","sources":["../../src/browser/menu-bar.store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-menu-bar",
3
- "version": "2.23.4",
3
+ "version": "2.23.5-rc-1681807382.0",
4
4
  "description": "@opensumi/ide-menu-bar",
5
5
  "files": [
6
6
  "lib",
@@ -18,12 +18,12 @@
18
18
  "url": "git@github.com:opensumi/core.git"
19
19
  },
20
20
  "dependencies": {
21
- "@opensumi/ide-core-common": "2.23.4"
21
+ "@opensumi/ide-core-common": "2.23.5-rc-1681807382.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@opensumi/ide-components": "2.23.4",
25
- "@opensumi/ide-core-browser": "2.23.4",
24
+ "@opensumi/ide-components": "2.23.5-rc-1681807382.0",
25
+ "@opensumi/ide-core-browser": "2.23.5-rc-1681807382.0",
26
26
  "@opensumi/ide-dev-tool": "1.3.1"
27
27
  },
28
- "gitHead": "23400e4cfb82f3eada37c0d6c110e6d44d8a8193"
28
+ "gitHead": "9b66cc87f0e2ddc79fcfc7b3b0ec96a6a34e5537"
29
29
  }
@@ -1,17 +1,94 @@
1
1
  import { Autowired } from '@opensumi/di';
2
- import { ToolBarActionContribution, AppConfig, IToolbarRegistry } from '@opensumi/ide-core-browser';
2
+ import {
3
+ ToolBarActionContribution,
4
+ AppConfig,
5
+ IToolbarRegistry,
6
+ getExternalIcon,
7
+ Disposable,
8
+ PreferenceService,
9
+ MenubarSettingId,
10
+ } from '@opensumi/ide-core-browser';
3
11
  import { ComponentContribution, ComponentRegistry } from '@opensumi/ide-core-browser/lib/layout';
12
+ import {
13
+ IMenuRegistry,
14
+ IMenubarItem,
15
+ ISubmenuItem,
16
+ MenuContribution,
17
+ MenuId,
18
+ } from '@opensumi/ide-core-browser/lib/menu/next';
4
19
  import { Domain } from '@opensumi/ide-core-common/lib/di-helper';
5
20
 
21
+ import { MenubarStore } from './menu-bar.store';
6
22
  import { MenuBarMixToolbarAction } from './menu-bar.view';
7
23
  import { ToolbarAction } from './toolbar-action.view';
8
24
 
9
-
10
25
  @Domain(ComponentContribution, ToolBarActionContribution)
11
- export class MenuBarContribution implements ComponentContribution, ToolBarActionContribution {
26
+ export class MenuBarContribution extends Disposable implements ComponentContribution, ToolBarActionContribution {
12
27
  @Autowired(AppConfig)
13
28
  private readonly appConfig: AppConfig;
14
29
 
30
+ @Autowired(MenubarStore)
31
+ private readonly menubarStore: MenubarStore;
32
+
33
+ @Autowired(IMenuRegistry)
34
+ private readonly menuRegistry: IMenuRegistry;
35
+
36
+ @Autowired(PreferenceService)
37
+ private readonly preferenceService: PreferenceService;
38
+
39
+ constructor() {
40
+ super();
41
+
42
+ this.addDispose(
43
+ this.menubarStore.onDidMenuBarChange((menubarItems: IMenubarItem[]) => {
44
+ const isCompact = this.preferenceService.getValid<boolean>(MenubarSettingId.CompactMode);
45
+
46
+ if (isCompact) {
47
+ this.registerMenusBarByCompact(menubarItems);
48
+ }
49
+ }),
50
+ );
51
+
52
+ this.addDispose(
53
+ this.preferenceService.onSpecificPreferenceChange(MenubarSettingId.CompactMode, ({ newValue }) => {
54
+ if (newValue) {
55
+ this.registerMenusBarByCompact();
56
+ } else {
57
+ this.unregisterMenusBarByCompact();
58
+ }
59
+ }),
60
+ );
61
+ }
62
+
63
+ private unregisterMenusBarByCompact() {
64
+ const preMenu = this.menuRegistry.getMenuItems(MenuId.MenubarCompactMenu) as ISubmenuItem[];
65
+ preMenu.forEach((c) => {
66
+ this.menuRegistry.unregisterMenuItem(MenuId.MenubarCompactMenu, c.submenu);
67
+ });
68
+
69
+ this.menuRegistry.unregisterMenuItem(MenuId.ActivityBarTopExtra, MenuId.MenubarCompactMenu);
70
+ }
71
+
72
+ private registerMenusBarByCompact(menubarItems: IMenubarItem[] = this.menubarStore.menubarItems) {
73
+ this.menuRegistry.registerMenuItem(MenuId.ActivityBarTopExtra, {
74
+ submenu: MenuId.MenubarCompactMenu,
75
+ iconClass: getExternalIcon('menu'),
76
+ order: 1,
77
+ group: 'navigation',
78
+ });
79
+
80
+ this.menuRegistry.registerMenuItems(
81
+ MenuId.MenubarCompactMenu,
82
+ menubarItems.map(
83
+ (item: IMenubarItem) =>
84
+ ({
85
+ label: item.label,
86
+ submenu: item.id,
87
+ } as ISubmenuItem),
88
+ ),
89
+ );
90
+ }
91
+
15
92
  registerComponent(registry: ComponentRegistry) {
16
93
  registry.register(
17
94
  '@opensumi/ide-menu-bar',
@@ -2,7 +2,7 @@ import debounce from 'lodash/debounce';
2
2
  import { observable, action } from 'mobx';
3
3
 
4
4
  import { Injectable, Autowired } from '@opensumi/di';
5
- import { Disposable } from '@opensumi/ide-core-browser';
5
+ import { Disposable, Emitter, Event } from '@opensumi/ide-core-browser';
6
6
  import { AbstractMenubarService, IMenubarItem, MenuNode } from '@opensumi/ide-core-browser/lib/menu/next';
7
7
 
8
8
  export abstract class AbstractMenubarStore extends Disposable {
@@ -21,6 +21,11 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore {
21
21
  @observable
22
22
  public menuItems = observable.map<string, MenuNode[]>();
23
23
 
24
+ private readonly _onDidMenuBarChange = new Emitter<IMenubarItem[]>();
25
+ public get onDidMenuBarChange(): Event<IMenubarItem[]> {
26
+ return this._onDidMenuBarChange.event;
27
+ }
28
+
24
29
  constructor() {
25
30
  super();
26
31
 
@@ -29,10 +34,14 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore {
29
34
  this.registerDispose(this.menubarService.onDidMenuChange(this.handleMenuChanged, this, this.disposables));
30
35
  }
31
36
 
37
+ private getMenubarSubItems(menuId: string): MenuNode[] {
38
+ this.menubarService.rebuildMenuNodes(menuId);
39
+ return this.menubarService.getMenuNodes(menuId) || [];
40
+ }
41
+
32
42
  @action.bound
33
43
  private updateMenuNodes(menuId: string) {
34
- this.menubarService.rebuildMenuNodes(menuId);
35
- const menuItems = this.menubarService.getMenuNodes(menuId) || [];
44
+ const menuItems = this.getMenubarSubItems(menuId);
36
45
  this.menuItems.set(menuId, menuItems);
37
46
  }
38
47
 
@@ -42,6 +51,7 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore {
42
51
  menubarItems.forEach(({ id: menuId }) => {
43
52
  this.updateMenuNodes(menuId);
44
53
  });
54
+ this._onDidMenuBarChange.fire(this.menubarItems);
45
55
  }
46
56
 
47
57
  private handleMenuChanged(menuId: string) {
@@ -51,6 +61,7 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore {
51
61
  private handleMenubarChanged() {
52
62
  const menubarItems = this.menubarService.getMenubarItems();
53
63
  this.menubarItems.replace(menubarItems);
64
+ this._onDidMenuBarChange.fire(this.menubarItems);
54
65
  }
55
66
 
56
67
  @action.bound