diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 9e852eca70105..3413574928fce 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -6430,7 +6430,7 @@ declare module 'vscode' { /** * Icon for the panel shown in UI. */ - iconPath?: Uri | { light: Uri; dark: Uri }; + iconPath?: Uri | { light: Uri; dark: Uri } | ThemeIcon; /** * Webview belonging to the panel. diff --git a/src/vs/workbench/api/browser/mainThreadWebview.ts b/src/vs/workbench/api/browser/mainThreadWebview.ts index 9fd5f3d3b17bd..5a45ec36b8c99 100644 --- a/src/vs/workbench/api/browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/browser/mainThreadWebview.ts @@ -6,7 +6,7 @@ import { CancelablePromise, createCancelablePromise } from 'vs/base/common/async'; import { onUnexpectedError } from 'vs/base/common/errors'; import { Emitter, Event } from 'vs/base/common/event'; -import { Disposable, DisposableStore, IDisposable, IReference, dispose } from 'vs/base/common/lifecycle'; +import { Disposable, DisposableStore, dispose, IDisposable, IReference } from 'vs/base/common/lifecycle'; import { Schemas } from 'vs/base/common/network'; import { basename } from 'vs/base/common/path'; import { isWeb } from 'vs/base/common/platform'; @@ -21,6 +21,7 @@ import { ILabelService } from 'vs/platform/label/common/label'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IProductService } from 'vs/platform/product/common/productService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { ThemeIcon } from 'vs/platform/theme/common/themeService'; import * as extHostProtocol from 'vs/workbench/api/common/extHost.protocol'; import { editorGroupToViewColumn, EditorViewColumn, viewColumnToEditorGroup } from 'vs/workbench/api/common/shared/editor'; import { IEditorInput, IRevertOptions, ISaveOptions } from 'vs/workbench/common/editor'; @@ -196,7 +197,7 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma webview.setName(value); } - public $setIconPath(handle: extHostProtocol.WebviewPanelHandle, value: { light: UriComponents, dark: UriComponents; } | undefined): void { + public $setIconPath(handle: extHostProtocol.WebviewPanelHandle, value: { light: UriComponents, dark: UriComponents; } | extHostProtocol.ThemeIconDto | undefined): void { const webview = this.getWebviewInput(handle); webview.iconPath = reviveWebviewIcon(value); } @@ -505,11 +506,19 @@ function reviveWebviewOptions(options: modes.IWebviewOptions): WebviewInputOptio } function reviveWebviewIcon( - value: { light: UriComponents, dark: UriComponents; } | undefined + value: extHostProtocol.WebviewUriIconDto | extHostProtocol.ThemeIconDto | undefined ): WebviewIcons | undefined { - return value - ? { light: URI.revive(value.light), dark: URI.revive(value.dark) } - : undefined; + if (!value) { + return undefined; + } + if ((value as extHostProtocol.ThemeIconDto).id) { + return value as ThemeIcon; + } + + return { + light: URI.revive((value as extHostProtocol.WebviewUriIconDto).light), + dark: URI.revive((value as extHostProtocol.WebviewUriIconDto).dark), + }; } namespace HotExitState { diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index a21449c90368d..2ce69c7cf7b64 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -449,7 +449,7 @@ export interface TransferQuickPickItems extends quickInput.IQuickPickItem { export interface TransferQuickInputButton { handle: number; - iconPath: { dark: URI; light?: URI; } | { id: string; }; + iconPath: { dark: URI; light?: URI; } | ThemeIconDto; tooltip?: string; } @@ -573,12 +573,17 @@ export interface WebviewExtensionDescription { readonly location: UriComponents; } +export interface WebviewUriIconDto { + readonly light: UriComponents; + readonly dark: UriComponents; +} + export interface MainThreadWebviewsShape extends IDisposable { $createWebviewPanel(extension: WebviewExtensionDescription, handle: WebviewPanelHandle, viewType: string, title: string, showOptions: WebviewPanelShowOptions, options: modes.IWebviewPanelOptions & modes.IWebviewOptions): void; $disposeWebview(handle: WebviewPanelHandle): void; $reveal(handle: WebviewPanelHandle, showOptions: WebviewPanelShowOptions): void; $setTitle(handle: WebviewPanelHandle, value: string): void; - $setIconPath(handle: WebviewPanelHandle, value: { light: UriComponents, dark: UriComponents; } | undefined): void; + $setIconPath(handle: WebviewPanelHandle, value: WebviewUriIconDto | ThemeIconDto | undefined): void; $setHtml(handle: WebviewPanelHandle, value: string): void; $setOptions(handle: WebviewPanelHandle, options: modes.IWebviewOptions): void; @@ -1102,7 +1107,7 @@ export interface IWorkspaceEditEntryMetadataDto { needsConfirmation: boolean; label: string; description?: string; - iconPath?: { id: string } | UriComponents | { light: UriComponents, dark: UriComponents }; + iconPath?: ThemeIconDto | UriComponents | { light: UriComponents, dark: UriComponents }; } export interface IWorkspaceFileEditDto { @@ -1288,6 +1293,10 @@ export interface ITerminalDimensionsDto { rows: number; } +export interface ThemeIconDto { + readonly id: string; +} + export interface ExtHostTerminalServiceShape { $acceptTerminalClosed(id: number, exitCode: number | undefined): void; $acceptTerminalOpened(id: number, name: string, shellLaunchConfig: IShellLaunchConfigDto): void; diff --git a/src/vs/workbench/api/common/extHostWebview.ts b/src/vs/workbench/api/common/extHostWebview.ts index bdb51f8977c23..8207448501c45 100644 --- a/src/vs/workbench/api/common/extHostWebview.ts +++ b/src/vs/workbench/api/common/extHostWebview.ts @@ -19,9 +19,9 @@ import { EditorViewColumn } from 'vs/workbench/api/common/shared/editor'; import { asWebviewUri, WebviewInitData } from 'vs/workbench/api/common/shared/webview'; import type * as vscode from 'vscode'; import { ExtHostWebviewsShape, IMainContext, MainContext, MainThreadWebviewsShape, WebviewExtensionDescription, WebviewPanelHandle, WebviewPanelViewStateData } from './extHost.protocol'; -import { Disposable as VSCodeDisposable } from './extHostTypes'; +import { Disposable as VSCodeDisposable, ThemeIcon } from './extHostTypes'; -type IconPath = URI | { light: URI, dark: URI }; +type IconPath = URI | { readonly light: URI; readonly dark: URI } | ThemeIcon; export class ExtHostWebview implements vscode.Webview { private _html: string = ''; diff --git a/src/vs/workbench/contrib/webview/browser/webview.ts b/src/vs/workbench/contrib/webview/browser/webview.ts index 6502720cd9032..f9c0452daac0a 100644 --- a/src/vs/workbench/contrib/webview/browser/webview.ts +++ b/src/vs/workbench/contrib/webview/browser/webview.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Dimension } from 'vs/base/browser/dom'; +import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent'; import { Event } from 'vs/base/common/event'; import { IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; @@ -12,7 +13,7 @@ import * as nls from 'vs/nls'; import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent'; +import { ThemeIcon } from 'vs/platform/theme/common/themeService'; /** * Set when the find widget in a webview is visible. @@ -25,10 +26,10 @@ export const webviewHasOwnEditFunctionsContext = new RawContextKey(webv export const IWebviewService = createDecorator('webviewService'); -export interface WebviewIcons { +export type WebviewIcons = ThemeIcon | { readonly light: URI; readonly dark: URI; -} +}; /** * Handles the creation of webview elements. diff --git a/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts b/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts index 0247ac9089b45..6c9e252d37248 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory.ts @@ -10,11 +10,13 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { IEditorInputFactory } from 'vs/workbench/common/editor'; import { WebviewInput } from './webviewEditorInput'; import { IWebviewWorkbenchService, WebviewInputOptions } from './webviewWorkbenchService'; +import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { WebviewIcons } from 'vs/workbench/contrib/webview/browser/webview'; -interface SerializedIconPath { - light: string | UriComponents; - dark: string | UriComponents; -} +type SerializedIconPath = ThemeIcon | { + readonly light: string | UriComponents; + readonly dark: string | UriComponents; +}; interface SerializedWebview { readonly id?: string; @@ -84,17 +86,23 @@ export class WebviewEditorInputFactory implements IEditorInputFactory { extensionLocation: input.extension ? input.extension.location : undefined, extensionId: input.extension && input.extension.id ? input.extension.id.value : undefined, state: input.webview.state, - iconPath: input.iconPath ? { light: input.iconPath.light, dark: input.iconPath.dark, } : undefined, + iconPath: input.iconPath + ? ThemeIcon.isThemeIcon(input.iconPath) ? input.iconPath : { light: input.iconPath.light, dark: input.iconPath.dark, } + : undefined, group: input.group }; } } -function reviveIconPath(data: SerializedIconPath | undefined) { +function reviveIconPath(data: SerializedIconPath | undefined): WebviewIcons | undefined { if (!data) { return undefined; } + if (ThemeIcon.isThemeIcon(data)) { + return data; + } + const light = reviveUri(data.light); const dark = reviveUri(data.dark); return light && dark ? { light, dark } : undefined; diff --git a/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts b/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts index ee10e07a8d63f..519739e48aa4b 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewIconManager.ts @@ -8,6 +8,7 @@ import { memoize } from 'vs/base/common/decorators'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { WebviewIcons } from 'vs/workbench/contrib/webview/browser/webview'; +import { ThemeIcon } from 'vs/platform/theme/common/themeService'; export class WebviewIconManager { @@ -50,17 +51,429 @@ export class WebviewIconManager { const cssRules: string[] = []; if (this._configService.getValue('workbench.iconTheme') !== null) { for (const [key, value] of this._icons) { - const webviewSelector = `.show-file-icons .webview-${key}-name-file-icon::before`; - try { - cssRules.push( - `.vs ${webviewSelector} { content: ""; background-image: ${dom.asCSSUrl(value.light)}; }`, - `.vs-dark ${webviewSelector} { content: ""; background-image: ${dom.asCSSUrl(value.dark)}; }` - ); - } catch { - // noop + const webviewSelector = `.show-file-icons .webview-${key}-name-file-icon`; + if (ThemeIcon.isThemeIcon(value)) { + const icon = icons[value.id]; + if (icon) { + cssRules.push( + `.vs ${webviewSelector}::before, .vs-dark ${webviewSelector}::before { + font: normal normal normal 16px/1 codicon; + content: "${icon}"; }`, + ); + } + } else { + try { + cssRules.push( + `.vs ${webviewSelector}::before { content: ""; background-image: ${dom.asCSSUrl(value.light)}; }`, + `.vs-dark ${webviewSelector}::before { content: ""; background-image: ${dom.asCSSUrl(value.dark)}; }` + ); + } catch { + // noop + } } } } this._styleElement.innerHTML = cssRules.join('\n'); } } + +const icons: { [key: string]: string } = { + 'add': '\uea60', + 'plus': '\uea60', + 'gist-new': '\uea60', + 'repo-create': '\uea60', + 'lightbulb': '\uea61', + 'light-bulb': '\uea61', + 'repo': '\uea62', + 'repo-delete': '\uea62', + 'gist-fork': '\uea63', + 'repo-forked': '\uea63', + 'git-pull-request': '\uea64', + 'git-pull-request-abandoned': '\uea64', + 'record-keys': '\uea65', + 'keyboard': '\uea65', + 'tag': '\uea66', + 'tag-add': '\uea66', + 'tag-remove': '\uea66', + 'person': '\uea67', + 'person-add': '\uea67', + 'person-follow': '\uea67', + 'person-outline': '\uea67', + 'person-filled': '\uea67', + 'git-branch': '\uea68', + 'git-branch-create': '\uea68', + 'git-branch-delete': '\uea68', + 'source-control': '\uea68', + 'mirror': '\uea69', + 'mirror-public': '\uea69', + 'star': '\uea6a', + 'star-add': '\uea6a', + 'star-delete': '\uea6a', + 'star-empty': '\uea6a', + 'comment': '\uea6b', + 'comment-add': '\uea6b', + 'alert': '\uea6c', + 'warning': '\uea6c', + 'search': '\uea6d', + 'search-save': '\uea6d', + 'log-out': '\uea6e', + 'sign-out': '\uea6e', + 'log-in': '\uea6f', + 'sign-in': '\uea6f', + 'eye': '\uea70', + 'eye-unwatch': '\uea70', + 'eye-watch': '\uea70', + 'circle-filled': '\uea71', + 'primitive-dot': '\uea71', + 'close-dirty': '\uea71', + 'debug-breakpoint': '\uea71', + 'debug-breakpoint-disabled': '\uea71', + 'debug-hint': '\uea71', + 'primitive-square': '\uea72', + 'edit': '\uea73', + 'pencil': '\uea73', + 'info': '\uea74', + 'issue-opened': '\uea74', + 'gist-private': '\uea75', + 'git-fork-private': '\uea75', + 'lock': '\uea75', + 'mirror-private': '\uea75', + 'close': '\uea76', + 'remove-close': '\uea76', + 'x': '\uea76', + 'repo-sync': '\uea77', + 'sync': '\uea77', + 'clone': '\uea78', + 'desktop-download': '\uea78', + 'beaker': '\uea79', + 'microscope': '\uea79', + 'vm': '\uea7a', + 'device-desktop': '\uea7a', + 'file': '\uea7b', + 'file-text': '\uea7b', + 'more': '\uea7c', + 'ellipsis': '\uea7c', + 'kebab-horizontal': '\uea7c', + 'mail-reply': '\uea7d', + 'reply': '\uea7d', + 'organization': '\uea7e', + 'organization-filled': '\uea7e', + 'organization-outline': '\uea7e', + 'new-file': '\uea7f', + 'file-add': '\uea7f', + 'new-folder': '\uea80', + 'file-directory-create': '\uea80', + 'trash': '\uea81', + 'trashcan': '\uea81', + 'history': '\uea82', + 'clock': '\uea82', + 'folder': '\uea83', + 'file-directory': '\uea83', + 'symbol-folder': '\uea83', + 'logo-github': '\uea84', + 'mark-github': '\uea84', + 'github': '\uea84', + 'terminal': '\uea85', + 'console': '\uea85', + 'repl': '\uea85', + 'zap': '\uea86', + 'symbol-event': '\uea86', + 'error': '\uea87', + 'stop': '\uea87', + 'variable': '\uea88', + 'symbol-variable': '\uea88', + 'array': '\uea8a', + 'symbol-array': '\uea8a', + 'symbol-module': '\uea8b', + 'symbol-package': '\uea8b', + 'symbol-namespace': '\uea8b', + 'symbol-object': '\uea8b', + 'symbol-method': '\uea8c', + 'symbol-function': '\uea8c', + 'symbol-constructor': '\uea8c', + 'symbol-boolean': '\uea8f', + 'symbol-null': '\uea8f', + 'symbol-numeric': '\uea90', + 'symbol-number': '\uea90', + 'symbol-structure': '\uea91', + 'symbol-struct': '\uea91', + 'symbol-parameter': '\uea92', + 'symbol-type-parameter': '\uea92', + 'symbol-key': '\uea93', + 'symbol-text': '\uea93', + 'symbol-reference': '\uea94', + 'go-to-file': '\uea94', + 'symbol-enum': '\uea95', + 'symbol-value': '\uea95', + 'symbol-ruler': '\uea96', + 'symbol-unit': '\uea96', + 'activate-breakpoints': '\uea97', + 'archive': '\uea98', + 'arrow-both': '\uea99', + 'arrow-down': '\uea9a', + 'arrow-left': '\uea9b', + 'arrow-right': '\uea9c', + 'arrow-small-down': '\uea9d', + 'arrow-small-left': '\uea9e', + 'arrow-small-right': '\uea9f', + 'arrow-small-up': '\ueaa0', + 'arrow-up': '\ueaa1', + 'bell': '\ueaa2', + 'bold': '\ueaa3', + 'book': '\ueaa4', + 'bookmark': '\ueaa5', + 'debug-breakpoint-conditional-unverified': '\ueaa6', + 'debug-breakpoint-conditional': '\ueaa7', + 'debug-breakpoint-conditional-disabled': '\ueaa7', + 'debug-breakpoint-data-unverified': '\ueaa8', + 'debug-breakpoint-data': '\ueaa9', + 'debug-breakpoint-data-disabled': '\ueaa9', + 'debug-breakpoint-log-unverified': '\ueaaa', + 'debug-breakpoint-log': '\ueaab', + 'debug-breakpoint-log-disabled': '\ueaab', + 'briefcase': '\ueaac', + 'broadcast': '\ueaad', + 'browser': '\ueaae', + 'bug': '\ueaaf', + 'calendar': '\ueab0', + 'case-sensitive': '\ueab1', + 'check': '\ueab2', + 'checklist': '\ueab3', + 'chevron-down': '\ueab4', + 'chevron-left': '\ueab5', + 'chevron-right': '\ueab6', + 'chevron-up': '\ueab7', + 'chrome-close': '\ueab8', + 'chrome-maximize': '\ueab9', + 'chrome-minimize': '\ueaba', + 'chrome-restore': '\ueabb', + 'circle-outline': '\ueabc', + 'debug-breakpoint-unverified': '\ueabc', + 'circle-slash': '\ueabd', + 'circuit-board': '\ueabe', + 'clear-all': '\ueabf', + 'clippy': '\ueac0', + 'close-all': '\ueac1', + 'cloud-download': '\ueac2', + 'cloud-upload': '\ueac3', + 'code': '\ueac4', + 'collapse-all': '\ueac5', + 'color-mode': '\ueac6', + 'comment-discussion': '\ueac7', + 'compare-changes': '\ueac8', + 'credit-card': '\ueac9', + 'dash': '\ueacc', + 'dashboard': '\ueacd', + 'database': '\ueace', + 'debug-continue': '\ueacf', + 'debug-disconnect': '\uead0', + 'debug-pause': '\uead1', + 'debug-restart': '\uead2', + 'debug-start': '\uead3', + 'debug-step-into': '\uead4', + 'debug-step-out': '\uead5', + 'debug-step-over': '\uead6', + 'debug-stop': '\uead7', + 'debug': '\uead8', + 'device-camera-video': '\uead9', + 'device-camera': '\ueada', + 'device-mobile': '\ueadb', + 'diff-added': '\ueadc', + 'diff-ignored': '\ueadd', + 'diff-modified': '\ueade', + 'diff-removed': '\ueadf', + 'diff-renamed': '\ueae0', + 'diff': '\ueae1', + 'discard': '\ueae2', + 'editor-layout': '\ueae3', + 'empty-window': '\ueae4', + 'exclude': '\ueae5', + 'extensions': '\ueae6', + 'eye-closed': '\ueae7', + 'file-binary': '\ueae8', + 'file-code': '\ueae9', + 'file-media': '\ueaea', + 'file-pdf': '\ueaeb', + 'file-submodule': '\ueaec', + 'file-symlink-directory': '\ueaed', + 'file-symlink-file': '\ueaee', + 'file-zip': '\ueaef', + 'files': '\ueaf0', + 'filter': '\ueaf1', + 'flame': '\ueaf2', + 'fold-down': '\ueaf3', + 'fold-up': '\ueaf4', + 'fold': '\ueaf5', + 'folder-active': '\ueaf6', + 'folder-opened': '\ueaf7', + 'gear': '\ueaf8', + 'gift': '\ueaf9', + 'gist-secret': '\ueafa', + 'gist': '\ueafb', + 'git-commit': '\ueafc', + 'git-compare': '\ueafd', + 'git-merge': '\ueafe', + 'github-action': '\ueaff', + 'github-alt': '\ueb00', + 'globe': '\ueb01', + 'grabber': '\ueb02', + 'graph': '\ueb03', + 'gripper': '\ueb04', + 'heart': '\ueb05', + 'home': '\ueb06', + 'horizontal-rule': '\ueb07', + 'hubot': '\ueb08', + 'inbox': '\ueb09', + 'issue-closed': '\ueb0a', + 'issue-reopened': '\ueb0b', + 'issues': '\ueb0c', + 'italic': '\ueb0d', + 'jersey': '\ueb0e', + 'json': '\ueb0f', + 'kebab-vertical': '\ueb10', + 'key': '\ueb11', + 'law': '\ueb12', + 'lightbulb-autofix': '\ueb13', + 'link-external': '\ueb14', + 'link': '\ueb15', + 'list-ordered': '\ueb16', + 'list-unordered': '\ueb17', + 'live-share': '\ueb18', + 'loading': '\ueb19', + 'location': '\ueb1a', + 'mail-read': '\ueb1b', + 'mail': '\ueb1c', + 'markdown': '\ueb1d', + 'megaphone': '\ueb1e', + 'mention': '\ueb1f', + 'milestone': '\ueb20', + 'mortar-board': '\ueb21', + 'move': '\ueb22', + 'multiple-windows': '\ueb23', + 'mute': '\ueb24', + 'no-newline': '\ueb25', + 'note': '\ueb26', + 'octoface': '\ueb27', + 'open-preview': '\ueb28', + 'package': '\ueb29', + 'paintcan': '\ueb2a', + 'pin': '\ueb2b', + 'play': '\ueb2c', + 'run': '\ueb2c', + 'plug': '\ueb2d', + 'preserve-case': '\ueb2e', + 'preview': '\ueb2f', + 'project': '\ueb30', + 'pulse': '\ueb31', + 'question': '\ueb32', + 'quote': '\ueb33', + 'radio-tower': '\ueb34', + 'reactions': '\ueb35', + 'references': '\ueb36', + 'refresh': '\ueb37', + 'regex': '\ueb38', + 'remote-explorer': '\ueb39', + 'remote': '\ueb3a', + 'remove': '\ueb3b', + 'replace-all': '\ueb3c', + 'replace': '\ueb3d', + 'repo-clone': '\ueb3e', + 'repo-force-push': '\ueb3f', + 'repo-pull': '\ueb40', + 'repo-push': '\ueb41', + 'report': '\ueb42', + 'request-changes': '\ueb43', + 'rocket': '\ueb44', + 'root-folder-opened': '\ueb45', + 'root-folder': '\ueb46', + 'rss': '\ueb47', + 'ruby': '\ueb48', + 'save-all': '\ueb49', + 'save-as': '\ueb4a', + 'save': '\ueb4b', + 'screen-full': '\ueb4c', + 'screen-normal': '\ueb4d', + 'search-stop': '\ueb4e', + 'server': '\ueb50', + 'settings-gear': '\ueb51', + 'settings': '\ueb52', + 'shield': '\ueb53', + 'smiley': '\ueb54', + 'sort-precedence': '\ueb55', + 'split-horizontal': '\ueb56', + 'split-vertical': '\ueb57', + 'squirrel': '\ueb58', + 'star-full': '\ueb59', + 'star-half': '\ueb5a', + 'symbol-class': '\ueb5b', + 'symbol-color': '\ueb5c', + 'symbol-constant': '\ueb5d', + 'symbol-enum-member': '\ueb5e', + 'symbol-field': '\ueb5f', + 'symbol-file': '\ueb60', + 'symbol-interface': '\ueb61', + 'symbol-keyword': '\ueb62', + 'symbol-misc': '\ueb63', + 'symbol-operator': '\ueb64', + 'symbol-property': '\ueb65', + 'wrench': '\ueb65', + 'wrench-subaction': '\ueb65', + 'symbol-snippet': '\ueb66', + 'tasklist': '\ueb67', + 'telescope': '\ueb68', + 'text-size': '\ueb69', + 'three-bars': '\ueb6a', + 'thumbsdown': '\ueb6b', + 'thumbsup': '\ueb6c', + 'tools': '\ueb6d', + 'triangle-down': '\ueb6e', + 'triangle-left': '\ueb6f', + 'triangle-right': '\ueb70', + 'triangle-up': '\ueb71', + 'twitter': '\ueb72', + 'unfold': '\ueb73', + 'unlock': '\ueb74', + 'unmute': '\ueb75', + 'unverified': '\ueb76', + 'verified': '\ueb77', + 'versions': '\ueb78', + 'vm-active': '\ueb79', + 'vm-outline': '\ueb7a', + 'vm-running': '\ueb7b', + 'watch': '\ueb7c', + 'whitespace': '\ueb7d', + 'whole-word': '\ueb7e', + 'window': '\ueb7f', + 'word-wrap': '\ueb80', + 'zoom-in': '\ueb81', + 'zoom-out': '\ueb82', + 'list-filter': '\ueb83', + 'list-flat': '\ueb84', + 'list-selection': '\ueb85', + 'selection': '\ueb85', + 'list-tree': '\ueb86', + 'debug-breakpoint-function-unverified': '\ueb87', + 'debug-breakpoint-function': '\ueb88', + 'debug-breakpoint-function-disabled': '\ueb88', + 'debug-stackframe-active': '\ueb89', + 'debug-stackframe-dot': '\ueb8a', + 'debug-stackframe': '\ueb8b', + 'debug-stackframe-focused': '\ueb8b', + 'debug-breakpoint-unsupported': '\ueb8c', + 'symbol-string': '\ueb8d', + 'debug-reverse-continue': '\ueb8e', + 'debug-step-back': '\ueb8f', + 'debug-restart-frame': '\ueb90', + 'debug-alternate': '\ueb91', + 'call-incoming': '\ueb92', + 'call-outgoing': '\ueb93', + 'menu': '\ueb94', + 'expand-all': '\ueb95', + 'feedback': '\ueb96', + 'group-by-ref-type': '\ueb97', + 'ungroup-by-ref-type': '\ueb98', + 'bell-dot': '\uf101', + 'debug-alt-2': '\uf102', + 'debug-alt': '\uf103', + +};