Skip to content

Commit db1434f

Browse files
committed
Show basic webview editors contributions section
For microsoft#81802
1 parent 8c4e220 commit db1434f

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

src/vs/platform/extensions/common/extensions.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ export interface IColor {
8888
defaults: { light: string, dark: string, highContrast: string };
8989
}
9090

91+
export interface IWebviewEditor {
92+
readonly viewType: string;
93+
readonly priority: string;
94+
readonly selector: readonly {
95+
readonly filenamePattern?: string;
96+
}[];
97+
}
98+
9199
export interface IExtensionContributions {
92100
commands?: ICommand[];
93101
configuration?: IConfiguration | IConfiguration[];
@@ -104,6 +112,7 @@ export interface IExtensionContributions {
104112
views?: { [location: string]: IView[] };
105113
colors?: IColor[];
106114
localizations?: ILocalization[];
115+
readonly webviewEditors?: readonly IWebviewEditor[];
107116
}
108117

109118
export type ExtensionKind = 'ui' | 'workspace' | 'web';

src/vs/workbench/contrib/extensions/browser/extensionEditor.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,8 @@ export class ExtensionEditor extends BaseEditor {
854854
this.renderDebuggers(content, manifest, layout),
855855
this.renderViewContainers(content, manifest, layout),
856856
this.renderViews(content, manifest, layout),
857-
this.renderLocalizations(content, manifest, layout)
857+
this.renderLocalizations(content, manifest, layout),
858+
this.renderWebviewEditors(content, manifest, layout),
858859
];
859860

860861
scrollableContent.scanDomNode();
@@ -1054,6 +1055,31 @@ export class ExtensionEditor extends BaseEditor {
10541055
return true;
10551056
}
10561057

1058+
private renderWebviewEditors(container: HTMLElement, manifest: IExtensionManifest, onDetailsToggle: Function): boolean {
1059+
const webviewEditors = (manifest.contributes && manifest.contributes.webviewEditors) || [];
1060+
if (!webviewEditors.length) {
1061+
return false;
1062+
}
1063+
1064+
const details = $('details', { open: true, ontoggle: onDetailsToggle },
1065+
$('summary', { tabindex: '0' }, localize('webviewEditors', "Webview Editors ({0})", webviewEditors.length)),
1066+
$('table', undefined,
1067+
$('tr', undefined,
1068+
$('th', undefined, localize('webviewEditors view type', "View Type")),
1069+
$('th', undefined, localize('webviewEditors priority', "Priority")),
1070+
$('th', undefined, localize('webviewEditors filenamePattern', "Filename Pattern"))),
1071+
...webviewEditors.map(webviewEditor =>
1072+
$('tr', undefined,
1073+
$('td', undefined, webviewEditor.viewType),
1074+
$('td', undefined, webviewEditor.priority),
1075+
$('td', undefined, arrays.coalesce(webviewEditor.selector.map(x => x.filenamePattern)).join(', '))))
1076+
)
1077+
);
1078+
1079+
append(container, details);
1080+
return true;
1081+
}
1082+
10571083
private renderColorThemes(container: HTMLElement, manifest: IExtensionManifest, onDetailsToggle: Function): boolean {
10581084
const contributes = manifest.contributes;
10591085
const contrib = contributes && contributes.themes || [];

0 commit comments

Comments
 (0)