Skip to content

Commit 898fbaf

Browse files
committed
Make implements type relationships more explicit to help treeshaking
1 parent 032925e commit 898fbaf

11 files changed

Lines changed: 31 additions & 29 deletions

File tree

build/monaco/monaco.usage.recipe

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,9 @@
22
// This file is adding references to various symbols which should not be removed via tree shaking
33

44
import { ServiceIdentifier } from './vs/platform/instantiation/common/instantiation';
5-
import { IContextViewService } from './vs/platform/contextview/browser/contextView';
65
import { IHighlight } from './vs/base/parts/quickopen/browser/quickOpenModel';
7-
import { IWorkspaceContextService } from './vs/platform/workspace/common/workspace';
8-
import { IEnvironmentService } from './vs/platform/environment/common/environment';
9-
import { CountBadge } from './vs/base/browser/ui/countBadge/countBadge';
106
import { SimpleWorkerClient, create as create1 } from './vs/base/common/worker/simpleWorker';
117
import { create as create2 } from './vs/editor/common/services/editorSimpleWorker';
12-
import { QuickOpenWidget } from './vs/base/parts/quickopen/browser/quickOpenWidget';
13-
import { WorkbenchAsyncDataTree } from './vs/platform/list/browser/listService';
148
import { SyncDescriptor0, SyncDescriptor1, SyncDescriptor2, SyncDescriptor3, SyncDescriptor4, SyncDescriptor5, SyncDescriptor6, SyncDescriptor7, SyncDescriptor8 } from './vs/platform/instantiation/common/descriptors';
159
import { DiffNavigator } from './vs/editor/browser/widget/diffNavigator';
1610
import { DocumentRangeFormattingEditProvider } from './vs/editor/common/modes';
@@ -19,13 +13,6 @@ import * as editorAPI from './vs/editor/editor.api';
1913
(function () {
2014
var a: any;
2115
var b: any;
22-
a = (<IContextViewService>b).layout; // IContextViewProvider
23-
a = (<IWorkspaceContextService>b).getWorkspaceFolder; // IWorkspaceFolderProvider
24-
a = (<IWorkspaceContextService>b).getWorkspace; // IWorkspaceFolderProvider
25-
a = (<CountBadge>b).style; // IThemable
26-
a = (<QuickOpenWidget>b).style; // IThemable
27-
a = (<WorkbenchAsyncDataTree<any,any>>b).style; // IThemable
28-
a = (<IEnvironmentService>b).userHome; // IUserHomeProvider
2916
a = (<DiffNavigator>b).previous; // IDiffNavigator
3017
a = (<ServiceIdentifier<any>>b).type;
3118
a = (<IHighlight>b).start;

src/vs/base/browser/ui/countBadge/countBadge.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { $, append } from 'vs/base/browser/dom';
88
import { format } from 'vs/base/common/strings';
99
import { Color } from 'vs/base/common/color';
1010
import { mixin } from 'vs/base/common/objects';
11+
import { IThemable } from 'vs/base/common/styler';
1112

1213
export interface ICountBadgeOptions extends ICountBadgetyles {
1314
count?: number;
@@ -26,7 +27,7 @@ const defaultOpts = {
2627
badgeForeground: Color.fromHex('#FFFFFF')
2728
};
2829

29-
export class CountBadge {
30+
export class CountBadge implements IThemable {
3031

3132
private element: HTMLElement;
3233
private count: number = 0;

src/vs/base/browser/ui/tree/asyncDataTree.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { toggleClass } from 'vs/base/browser/dom';
1919
import { values } from 'vs/base/common/map';
2020
import { ScrollEvent } from 'vs/base/common/scrollable';
2121
import { ICompressedTreeNode, ICompressedTreeElement } from 'vs/base/browser/ui/tree/compressedObjectTreeModel';
22+
import { IThemable } from 'vs/base/common/styler';
2223

2324
interface IAsyncDataTreeNode<TInput, T> {
2425
element: TInput | T;
@@ -261,7 +262,7 @@ function dfs<TInput, T>(node: IAsyncDataTreeNode<TInput, T>, fn: (node: IAsyncDa
261262
node.children.forEach(child => dfs(child, fn));
262263
}
263264

264-
export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable {
265+
export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable, IThemable {
265266

266267
protected readonly tree: ObjectTree<IAsyncDataTreeNode<TInput, T>, TFilterData>;
267268
protected readonly root: IAsyncDataTreeNode<TInput, T>;

src/vs/base/common/styler.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { Color } from 'vs/base/common/color';
7+
8+
export type styleFn = (colors: { [name: string]: Color | undefined }) => void;
9+
10+
export interface IThemable {
11+
style: styleFn;
12+
}

src/vs/base/parts/quickopen/browser/quickOpenWidget.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { ScrollbarVisibility } from 'vs/base/common/scrollable';
2323
import { Color } from 'vs/base/common/color';
2424
import { mixin } from 'vs/base/common/objects';
2525
import { StandardMouseEvent, IMouseEvent } from 'vs/base/browser/mouseEvent';
26+
import { IThemable } from 'vs/base/common/styler';
2627

2728
export interface IQuickOpenCallbacks {
2829
onOk: () => void;
@@ -92,7 +93,7 @@ const defaultStyles = {
9293

9394
const DEFAULT_INPUT_ARIA_LABEL = nls.localize('quickOpenAriaLabel', "Quick picker. Type to narrow down results.");
9495

95-
export class QuickOpenWidget extends Disposable implements IModelProvider {
96+
export class QuickOpenWidget extends Disposable implements IModelProvider, IThemable {
9697

9798
private static readonly MAX_WIDTH = 600; // Max total width of quick open widget
9899
private static readonly MAX_ITEMS_HEIGHT = 20 * 22; // Max height of item list below input field

src/vs/editor/contrib/codeAction/codeActionWidget.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ export class CodeActionWidget extends Disposable {
5454
) {
5555
super();
5656

57-
this._keybindingResolver = new CodeActionKeybindingResolver(keybindingService);
57+
this._keybindingResolver = new CodeActionKeybindingResolver({
58+
getKeybindings: () => keybindingService.getKeybindings()
59+
});
5860
}
5961

6062
get isVisible(): boolean {

src/vs/platform/contextview/browser/contextView.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import { IDisposable } from 'vs/base/common/lifecycle';
77
import { Event } from 'vs/base/common/event';
88
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
99
import { IContextMenuDelegate } from 'vs/base/browser/contextmenu';
10-
import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview';
10+
import { AnchorAlignment, IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview';
1111

1212
export const IContextViewService = createDecorator<IContextViewService>('contextViewService');
1313

14-
export interface IContextViewService {
14+
export interface IContextViewService extends IContextViewProvider {
1515

1616
_serviceBrand: undefined;
1717

@@ -41,4 +41,4 @@ export interface IContextMenuService {
4141

4242
showContextMenu(delegate: IContextMenuDelegate): void;
4343
onDidContextMenu: Event<void>; // TODO@isidor these event should be removed once we get async context menus
44-
}
44+
}

src/vs/platform/environment/common/environment.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
77
import { URI } from 'vs/base/common/uri';
8+
import { IUserHomeProvider } from 'vs/base/common/labels';
89

910
export interface ParsedArgs {
1011
_: string[];
@@ -99,7 +100,7 @@ export interface IExtensionHostDebugParams extends IDebugParams {
99100

100101
export const BACKUPS = 'Backups';
101102

102-
export interface IEnvironmentService {
103+
export interface IEnvironmentService extends IUserHomeProvider {
103104

104105
_serviceBrand: undefined;
105106

src/vs/platform/theme/common/styler.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,12 @@ import { focusBorder, inputBackground, inputForeground, ColorIdentifier, selectF
88
import { IDisposable } from 'vs/base/common/lifecycle';
99
import { Color } from 'vs/base/common/color';
1010
import { mixin } from 'vs/base/common/objects';
11-
12-
export type styleFn = (colors: { [name: string]: Color | undefined }) => void;
11+
import { IThemable, styleFn } from 'vs/base/common/styler';
1312

1413
export interface IStyleOverrides {
1514
[color: string]: ColorIdentifier | undefined;
1615
}
1716

18-
export interface IThemable {
19-
style: styleFn;
20-
}
21-
2217
export interface IColorMapping {
2318
[optionsKey: string]: ColorValue | undefined;
2419
}

src/vs/platform/workspace/common/workspace.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
99
import { TernarySearchTree } from 'vs/base/common/map';
1010
import { Event } from 'vs/base/common/event';
1111
import { IWorkspaceIdentifier, IStoredWorkspaceFolder, isRawFileWorkspaceFolder, isRawUriWorkspaceFolder, ISingleFolderWorkspaceIdentifier } from 'vs/platform/workspaces/common/workspaces';
12+
import { IWorkspaceFolderProvider } from 'vs/base/common/labels';
1213

1314
export const IWorkspaceContextService = createDecorator<IWorkspaceContextService>('contextService');
1415

15-
export interface IWorkspaceContextService {
16+
export interface IWorkspaceContextService extends IWorkspaceFolderProvider {
1617
_serviceBrand: undefined;
1718

1819
/**

0 commit comments

Comments
 (0)