@theia/plugin-ext 1.28.0-next.15 → 1.28.0-next.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.
Files changed (55) hide show
  1. package/lib/common/plugin-api-rpc-model.d.ts +1 -0
  2. package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
  3. package/lib/common/plugin-api-rpc-model.js.map +1 -1
  4. package/lib/common/plugin-protocol.d.ts +2 -0
  5. package/lib/common/plugin-protocol.d.ts.map +1 -1
  6. package/lib/common/plugin-protocol.js.map +1 -1
  7. package/lib/hosted/node/scanners/scanner-theia.d.ts +5 -1
  8. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  9. package/lib/hosted/node/scanners/scanner-theia.js +22 -15
  10. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  11. package/lib/main/browser/comments/comment-thread-widget.js +5 -5
  12. package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
  13. package/lib/main/browser/menus/menus-contribution-handler.d.ts +24 -88
  14. package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
  15. package/lib/main/browser/menus/menus-contribution-handler.js +108 -518
  16. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  17. package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts +44 -0
  18. package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts.map +1 -0
  19. package/lib/main/browser/menus/plugin-menu-command-adapter.js +272 -0
  20. package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -0
  21. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +18 -0
  22. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -0
  23. package/lib/main/browser/menus/vscode-theia-menu-mappings.js +88 -0
  24. package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -0
  25. package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
  26. package/lib/main/browser/plugin-ext-frontend-module.js +4 -1
  27. package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
  28. package/lib/main/browser/plugin-shared-style.d.ts.map +1 -1
  29. package/lib/main/browser/plugin-shared-style.js +0 -1
  30. package/lib/main/browser/plugin-shared-style.js.map +1 -1
  31. package/lib/main/browser/view/tree-view-widget.js +2 -2
  32. package/lib/main/browser/view/tree-view-widget.js.map +1 -1
  33. package/lib/plugin/languages/signature.d.ts.map +1 -1
  34. package/lib/plugin/languages/signature.js +5 -1
  35. package/lib/plugin/languages/signature.js.map +1 -1
  36. package/lib/plugin/type-converters.d.ts.map +1 -1
  37. package/lib/plugin/type-converters.js +4 -2
  38. package/lib/plugin/type-converters.js.map +1 -1
  39. package/lib/plugin/types-impl.d.ts +1 -0
  40. package/lib/plugin/types-impl.d.ts.map +1 -1
  41. package/lib/plugin/types-impl.js.map +1 -1
  42. package/package.json +24 -24
  43. package/src/common/plugin-api-rpc-model.ts +1 -0
  44. package/src/common/plugin-protocol.ts +2 -0
  45. package/src/hosted/node/scanners/scanner-theia.ts +21 -15
  46. package/src/main/browser/comments/comment-thread-widget.tsx +5 -5
  47. package/src/main/browser/menus/menus-contribution-handler.ts +104 -578
  48. package/src/main/browser/menus/plugin-menu-command-adapter.ts +257 -0
  49. package/src/main/browser/menus/vscode-theia-menu-mappings.ts +85 -0
  50. package/src/main/browser/plugin-ext-frontend-module.ts +4 -1
  51. package/src/main/browser/plugin-shared-style.ts +0 -1
  52. package/src/main/browser/view/tree-view-widget.tsx +2 -2
  53. package/src/plugin/languages/signature.ts +3 -1
  54. package/src/plugin/type-converters.ts +4 -2
  55. package/src/plugin/types-impl.ts +1 -0
@@ -1,94 +1,30 @@
1
- import { URI as CodeUri } from '@theia/core/shared/vscode-uri';
2
- import { MenuPath, ILogger, CommandRegistry, Command, SelectionService, CommandHandler, Disposable } from '@theia/core';
3
- import { EditorWidget } from '@theia/editor/lib/browser';
4
- import { MenuModelRegistry } from '@theia/core/lib/common';
5
- import { TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
6
- import { DeployedPlugin, Menu, ScmCommandArg, TimelineCommandArg } from '../../../common';
7
- import { ScmService } from '@theia/scm/lib/browser/scm-service';
8
- import { ResourceContextKey } from '@theia/core/lib/browser/resource-context-key';
9
- import { ViewContextKeyService } from '../view/view-context-key-service';
10
- import { WebviewWidget } from '../webview/webview';
1
+ import { Disposable, DisposableCollection, MenuCommandAdapterRegistry, Emitter } from '@theia/core';
2
+ import { DeployedPlugin, IconUrl } from '../../../common';
3
+ import { ContributionPoint } from './vscode-theia-menu-mappings';
4
+ import { PluginMenuCommandAdapter, ReferenceCountingSet } from './plugin-menu-command-adapter';
11
5
  import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
12
- import { TimelineItem } from '@theia/timeline/lib/common/timeline-model';
13
- import { QuickCommandService } from '@theia/core/lib/browser';
14
- declare type CodeEditorWidget = EditorWidget | WebviewWidget;
15
- export declare class CodeEditorWidgetUtil {
16
- is(arg: any): arg is CodeEditorWidget;
17
- getResourceUri(editor: CodeEditorWidget): CodeUri | undefined;
18
- }
6
+ import { PluginSharedStyle } from '../plugin-shared-style';
19
7
  export declare class MenusContributionPointHandler {
20
- protected readonly menuRegistry: MenuModelRegistry;
21
- protected readonly commands: CommandRegistry;
22
- protected readonly logger: ILogger;
23
- protected readonly scmService: ScmService;
24
- protected readonly quickCommandService: QuickCommandService;
25
- protected readonly tabBarToolbar: TabBarToolbarRegistry;
26
- protected readonly selectionService: SelectionService;
27
- protected readonly resourceContextKey: ResourceContextKey;
28
- protected readonly viewContextKeys: ViewContextKeyService;
8
+ private readonly menuRegistry;
9
+ private readonly commands;
10
+ private readonly tabBarToolbar;
11
+ private readonly codeEditorWidgetUtil;
12
+ protected readonly commandAdapter: PluginMenuCommandAdapter;
13
+ protected readonly commandAdapterRegistry: MenuCommandAdapterRegistry;
29
14
  protected readonly contextKeyService: ContextKeyService;
30
- protected readonly codeEditorWidgetUtil: CodeEditorWidgetUtil;
15
+ protected readonly style: PluginSharedStyle;
16
+ private readonly quickCommandService;
17
+ protected readonly titleContributionContextKeys: ReferenceCountingSet<unknown>;
18
+ protected readonly onDidChangeTitleContributionEmitter: Emitter<void>;
19
+ private initialized;
20
+ private initialize;
21
+ private getMatchingMenu;
31
22
  handle(plugin: DeployedPlugin): Disposable;
32
- /**
33
- * Transforms the structure of Menus & Submenus
34
- * into something more tree-like.
35
- */
36
- protected getMenusTree(plugin: DeployedPlugin): MenuTree[];
37
- protected registerAction(plugin: DeployedPlugin, location: string, action: MenuTree): Disposable;
38
- protected static parseMenuPaths(value: string): MenuPath[];
39
- protected registerCommandPaletteAction(menu: Menu): Disposable;
40
- protected registerEditorTitleAction(location: string, action: Menu): Disposable;
41
- protected registerViewTitleAction(location: string, action: Menu): Disposable;
42
- protected registerViewItemContextAction(menu: MenuTree): Disposable;
43
- protected registerScmResourceGroupAction(menu: MenuTree): Disposable;
44
- protected registerScmResourceFolderAction(menu: MenuTree): Disposable;
45
- protected registerScmResourceStateAction(menu: MenuTree): Disposable;
46
- protected registerTimelineItemAction(menu: MenuTree): Disposable;
47
- protected registerCommentThreadAction(menu: MenuTree, plugin: DeployedPlugin): Disposable;
48
- protected registerCommentTitleAction(menu: MenuTree): Disposable;
49
- protected registerCommentContextAction(menu: MenuTree): Disposable;
50
- protected registerDebugCallstackAction(menu: MenuTree): Disposable;
51
- protected registerTreeMenuAction(menuPath: MenuPath, menu: MenuTree): Disposable;
52
- protected toTreeArgs(...args: any[]): any[];
53
- protected registerTitleAction(location: string, action: Menu, handler: CommandHandler): Disposable;
54
- protected registerScmTitleAction(location: string, action: Menu): Disposable;
55
- protected registerScmMenuAction(menuPath: MenuPath, menu: MenuTree): Disposable;
56
- protected toScmArgs(...args: any[]): any[];
57
- protected toScmArg(arg: any): ScmCommandArg | undefined;
58
- protected toTimelineArgs(...args: any[]): any[];
59
- protected toTimelineArg(arg: TimelineItem): TimelineCommandArg;
60
- protected toCommentArgs(...args: any[]): any[];
61
- protected registerGlobalMenuAction(menu: MenuTree, location: string, plugin: DeployedPlugin): Disposable;
62
- protected registerMenuAction(menuPath: MenuPath, menu: MenuTree, handler: (command: string) => CommandHandler): Disposable;
63
- protected createSyntheticCommandId(command: string, { prefix }: {
64
- prefix: string;
65
- }): string;
66
- protected onDidRegisterCommand(id: string, cb: (command: Command) => void): Disposable;
67
- }
68
- /**
69
- * MenuTree representing a (sub)menu in the menu tree structure.
70
- */
71
- export declare class MenuTree implements Menu {
72
- /** The location where the menu item will be open from. */
73
- readonly id?: string | undefined;
74
- /** The label of the menu item which leads to the submenu. */
75
- label?: string | undefined;
76
- protected _children: MenuTree[];
77
- command?: string;
78
- alt?: string;
79
- group?: string;
80
- when?: string;
81
- /** The orders of the menu items which lead to the submenus */
82
- submenusOrder?: string;
83
- constructor(menu?: Menu,
84
- /** The location where the menu item will be open from. */
85
- id?: string | undefined,
86
- /** The label of the menu item which leads to the submenu. */
87
- label?: string | undefined);
88
- get children(): MenuTree[];
89
- set children(items: MenuTree[]);
90
- addChild(node: MenuTree): void;
91
- get isSubmenu(): boolean;
23
+ private parseGroup;
24
+ private registerCommandPaletteAction;
25
+ protected checkTitleContribution(contributionPoint: ContributionPoint | string, contribution: {
26
+ when?: string;
27
+ }, toDispose: DisposableCollection): void;
28
+ protected toIconClass(url: IconUrl, toDispose: DisposableCollection): string | undefined;
92
29
  }
93
- export {};
94
30
  //# sourceMappingURL=menus-contribution-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"menus-contribution-handler.d.ts","sourceRoot":"","sources":["../../../../src/main/browser/menus/menus-contribution-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menus-contribution-handler.d.ts","sourceRoot":"","sources":["../../../../src/main/browser/menus/menus-contribution-handler.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA6B,UAAU,EAAE,oBAAoB,EAAkB,0BAA0B,EAAE,OAAO,EAAwB,MAAM,aAAa,CAAC;AAGrK,OAAO,EAAE,cAAc,EAAE,OAAO,EAAQ,MAAM,iBAAiB,CAAC;AAIhE,OAAO,EACwC,iBAAiB,EAE/D,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,qBACa,6BAA6B;IAEX,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IACxD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;IAC/E,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IACxD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAEvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAE1D,SAAS,CAAC,QAAQ,CAAC,4BAA4B,gCAA8B;IAC7E,SAAS,CAAC,QAAQ,CAAC,mCAAmC,gBAAuB;IAE7E,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,eAAe;IAIvB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU;IA+C1C,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,4BAA4B;IAOpC,SAAS,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,MAAM,EAAE,YAAY,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAavJ,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS;CAW3F"}