monaco-editor-core 0.55.0-dev-20251024 → 0.55.0-dev-20251025

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 (37) hide show
  1. package/esm/nls.messages.cs.js +1 -1
  2. package/esm/nls.messages.de.js +1 -1
  3. package/esm/nls.messages.es.js +1 -1
  4. package/esm/nls.messages.fr.js +1 -1
  5. package/esm/nls.messages.it.js +1 -1
  6. package/esm/nls.messages.ja.js +1 -1
  7. package/esm/nls.messages.ko.js +1 -1
  8. package/esm/nls.messages.pl.js +1 -1
  9. package/esm/nls.messages.pt-br.js +1 -1
  10. package/esm/nls.messages.ru.js +1 -1
  11. package/esm/nls.messages.tr.js +1 -1
  12. package/esm/nls.messages.zh-cn.js +1 -1
  13. package/esm/nls.messages.zh-tw.js +1 -1
  14. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  15. package/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js +6 -7
  16. package/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js.map +1 -1
  17. package/esm/vs/base/browser/ui/iconLabel/iconLabel.js +11 -6
  18. package/esm/vs/base/browser/ui/iconLabel/iconLabel.js.map +1 -1
  19. package/esm/vs/base/browser/ui/iconLabel/iconlabel.css +5 -2
  20. package/esm/vs/base/common/codiconsLibrary.js +3 -0
  21. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  22. package/esm/vs/editor/common/languages.js.map +1 -1
  23. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +13 -9
  24. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  25. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +4 -2
  26. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  27. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +13 -5
  28. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  29. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +2 -1
  30. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  31. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +2 -2
  32. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  33. package/esm/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.js +28 -1
  34. package/esm/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.js.map +1 -1
  35. package/esm/vs/editor/editor.api.d.ts +1 -0
  36. package/monaco.d.ts +1 -0
  37. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.55.0-dev-20251024(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
3
+ * Version: 0.55.0-dev-20251025(e8e70b31548071cc1ffbe4fd2834ceb03c8a82c3)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -25,7 +25,6 @@ export class HighlightedLabel extends Disposable {
25
25
  this.title = '';
26
26
  this.highlights = [];
27
27
  this.didEverRender = false;
28
- this.supportIcons = options?.supportIcons ?? false;
29
28
  this.domNode = dom.append(container, dom.$('span.monaco-highlighted-label'));
30
29
  }
31
30
  /**
@@ -43,7 +42,7 @@ export class HighlightedLabel extends Disposable {
43
42
  * @param escapeNewLines Whether to escape new lines.
44
43
  * @returns
45
44
  */
46
- set(text, highlights = [], title = '', escapeNewLines) {
45
+ set(text, highlights = [], title = '', escapeNewLines, supportIcons) {
47
46
  if (!text) {
48
47
  text = '';
49
48
  }
@@ -57,9 +56,9 @@ export class HighlightedLabel extends Disposable {
57
56
  this.text = text;
58
57
  this.title = title;
59
58
  this.highlights = highlights;
60
- this.render();
59
+ this.render(supportIcons);
61
60
  }
62
- render() {
61
+ render(supportIcons) {
63
62
  const children = [];
64
63
  let pos = 0;
65
64
  for (const highlight of this.highlights) {
@@ -68,7 +67,7 @@ export class HighlightedLabel extends Disposable {
68
67
  }
69
68
  if (pos < highlight.start) {
70
69
  const substring = this.text.substring(pos, highlight.start);
71
- if (this.supportIcons) {
70
+ if (supportIcons) {
72
71
  children.push(...renderLabelWithIcons(substring));
73
72
  }
74
73
  else {
@@ -77,7 +76,7 @@ export class HighlightedLabel extends Disposable {
77
76
  pos = highlight.start;
78
77
  }
79
78
  const substring = this.text.substring(pos, highlight.end);
80
- const element = dom.$('span.highlight', undefined, ...this.supportIcons ? renderLabelWithIcons(substring) : [substring]);
79
+ const element = dom.$('span.highlight', undefined, ...supportIcons ? renderLabelWithIcons(substring) : [substring]);
81
80
  if (highlight.extraClasses) {
82
81
  element.classList.add(...highlight.extraClasses);
83
82
  }
@@ -86,7 +85,7 @@ export class HighlightedLabel extends Disposable {
86
85
  }
87
86
  if (pos < this.text.length) {
88
87
  const substring = this.text.substring(pos);
89
- if (this.supportIcons) {
88
+ if (supportIcons) {
90
89
  children.push(...renderLabelWithIcons(substring));
91
90
  }
92
91
  else {
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","vs/base/browser/ui/highlightedlabel/highlightedLabel.ts"],"names":[],"mappings":"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","file":"highlightedLabel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../dom.js';\nimport { IManagedHover } from '../hover/hover.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport * as objects from '../../../common/objects.js';\n\n/**\n * A range to be highlighted.\n */\nexport interface IHighlight {\n\tstart: number;\n\tend: number;\n\treadonly extraClasses?: readonly string[];\n}\n\nexport interface IHighlightedLabelOptions {\n\n\t/**\n\t * Whether the label supports rendering icons.\n\t */\n\treadonly supportIcons?: boolean;\n\n\treadonly hoverDelegate?: IHoverDelegate;\n}\n\n/**\n * A widget which can render a label with substring highlights, often\n * originating from a filter function like the fuzzy matcher.\n */\nexport class HighlightedLabel extends Disposable {\n\n\tprivate readonly domNode: HTMLElement;\n\tprivate text: string = '';\n\tprivate title: string = '';\n\tprivate highlights: readonly IHighlight[] = [];\n\tprivate supportIcons: boolean;\n\tprivate didEverRender: boolean = false;\n\tprivate customHover: IManagedHover | undefined;\n\n\t/**\n\t * Create a new {@link HighlightedLabel}.\n\t *\n\t * @param container The parent container to append to.\n\t */\n\tconstructor(container: HTMLElement, private readonly options?: IHighlightedLabelOptions) {\n\t\tsuper();\n\n\t\tthis.supportIcons = options?.supportIcons ?? false;\n\t\tthis.domNode = dom.append(container, dom.$('span.monaco-highlighted-label'));\n\t}\n\n\t/**\n\t * The label's DOM node.\n\t */\n\tget element(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\t/**\n\t * Set the label and highlights.\n\t *\n\t * @param text The label to display.\n\t * @param highlights The ranges to highlight.\n\t * @param title An optional title for the hover tooltip.\n\t * @param escapeNewLines Whether to escape new lines.\n\t * @returns\n\t */\n\tset(text: string | undefined, highlights: readonly IHighlight[] = [], title: string = '', escapeNewLines?: boolean) {\n\t\tif (!text) {\n\t\t\ttext = '';\n\t\t}\n\n\t\tif (escapeNewLines) {\n\t\t\t// adjusts highlights inplace\n\t\t\ttext = HighlightedLabel.escapeNewLines(text, highlights);\n\t\t}\n\n\t\tif (this.didEverRender && this.text === text && this.title === title && objects.equals(this.highlights, highlights)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.text = text;\n\t\tthis.title = title;\n\t\tthis.highlights = highlights;\n\t\tthis.render();\n\t}\n\n\tprivate render(): void {\n\n\t\tconst children: Array<HTMLSpanElement | string> = [];\n\t\tlet pos = 0;\n\n\t\tfor (const highlight of this.highlights) {\n\t\t\tif (highlight.end === highlight.start) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (pos < highlight.start) {\n\t\t\t\tconst substring = this.text.substring(pos, highlight.start);\n\t\t\t\tif (this.supportIcons) {\n\t\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t\t} else {\n\t\t\t\t\tchildren.push(substring);\n\t\t\t\t}\n\t\t\t\tpos = highlight.start;\n\t\t\t}\n\n\t\t\tconst substring = this.text.substring(pos, highlight.end);\n\t\t\tconst element = dom.$('span.highlight', undefined, ...this.supportIcons ? renderLabelWithIcons(substring) : [substring]);\n\n\t\t\tif (highlight.extraClasses) {\n\t\t\t\telement.classList.add(...highlight.extraClasses);\n\t\t\t}\n\n\t\t\tchildren.push(element);\n\t\t\tpos = highlight.end;\n\t\t}\n\n\t\tif (pos < this.text.length) {\n\t\t\tconst substring = this.text.substring(pos,);\n\t\t\tif (this.supportIcons) {\n\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t} else {\n\t\t\t\tchildren.push(substring);\n\t\t\t}\n\t\t}\n\n\t\tdom.reset(this.domNode, ...children);\n\n\t\tif (!this.customHover && this.title !== '') {\n\t\t\tconst hoverDelegate = this.options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t\t\tthis.customHover = this._register(getBaseLayerHoverDelegate().setupManagedHover(hoverDelegate, this.domNode, this.title));\n\t\t} else if (this.customHover) {\n\t\t\tthis.customHover.update(this.title);\n\t\t}\n\n\t\tthis.didEverRender = true;\n\t}\n\n\tstatic escapeNewLines(text: string, highlights: readonly IHighlight[]): string {\n\t\tlet total = 0;\n\t\tlet extra = 0;\n\n\t\treturn text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\n\t\t\textra = match === '\\r\\n' ? -1 : 0;\n\t\t\toffset += total;\n\n\t\t\tfor (const highlight of highlights) {\n\t\t\t\tif (highlight.end <= offset) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (highlight.start >= offset) {\n\t\t\t\t\thighlight.start += extra;\n\t\t\t\t}\n\t\t\t\tif (highlight.end >= offset) {\n\t\t\t\t\thighlight.end += extra;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttotal += extra;\n\t\t\treturn '\\u23CE';\n\t\t});\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../dom.js';\nimport { IManagedHover } from '../hover/hover.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport * as objects from '../../../common/objects.js';\n\n/**\n * A range to be highlighted.\n */\nexport interface IHighlight {\n\tstart: number;\n\tend: number;\n\treadonly extraClasses?: readonly string[];\n}\n\nexport interface IHighlightedLabelOptions {\n\n\t/**\n\t * Whether the label supports rendering icons.\n\t */\n\treadonly supportIcons?: boolean;\n\n\treadonly hoverDelegate?: IHoverDelegate;\n}\n\n/**\n * A widget which can render a label with substring highlights, often\n * originating from a filter function like the fuzzy matcher.\n */\nexport class HighlightedLabel extends Disposable {\n\n\tprivate readonly domNode: HTMLElement;\n\tprivate text: string = '';\n\tprivate title: string = '';\n\tprivate highlights: readonly IHighlight[] = [];\n\tprivate supportIcons: boolean;\n\tprivate didEverRender: boolean = false;\n\tprivate customHover: IManagedHover | undefined;\n\n\t/**\n\t * Create a new {@link HighlightedLabel}.\n\t *\n\t * @param container The parent container to append to.\n\t */\n\tconstructor(container: HTMLElement, private readonly options?: IHighlightedLabelOptions) {\n\t\tsuper();\n\n\t\tthis.supportIcons = options?.supportIcons ?? false;\n\t\tthis.domNode = dom.append(container, dom.$('span.monaco-highlighted-label'));\n\t}\n\n\t/**\n\t * The label's DOM node.\n\t */\n\tget element(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\t/**\n\t * Set the label and highlights.\n\t *\n\t * @param text The label to display.\n\t * @param highlights The ranges to highlight.\n\t * @param title An optional title for the hover tooltip.\n\t * @param escapeNewLines Whether to escape new lines.\n\t * @returns\n\t */\n\tset(text: string | undefined, highlights: readonly IHighlight[] = [], title: string = '', escapeNewLines?: boolean) {\n\t\tif (!text) {\n\t\t\ttext = '';\n\t\t}\n\n\t\tif (escapeNewLines) {\n\t\t\t// adjusts highlights inplace\n\t\t\ttext = HighlightedLabel.escapeNewLines(text, highlights);\n\t\t}\n\n\t\tif (this.didEverRender && this.text === text && this.title === title && objects.equals(this.highlights, highlights)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.text = text;\n\t\tthis.title = title;\n\t\tthis.highlights = highlights;\n\t\tthis.render();\n\t}\n\n\tprivate render(): void {\n\n\t\tconst children: Array<HTMLSpanElement | string> = [];\n\t\tlet pos = 0;\n\n\t\tfor (const highlight of this.highlights) {\n\t\t\tif (highlight.end === highlight.start) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (pos < highlight.start) {\n\t\t\t\tconst substring = this.text.substring(pos, highlight.start);\n\t\t\t\tif (this.supportIcons) {\n\t\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t\t} else {\n\t\t\t\t\tchildren.push(substring);\n\t\t\t\t}\n\t\t\t\tpos = highlight.start;\n\t\t\t}\n\n\t\t\tconst substring = this.text.substring(pos, highlight.end);\n\t\t\tconst element = dom.$('span.highlight', undefined, ...this.supportIcons ? renderLabelWithIcons(substring) : [substring]);\n\n\t\t\tif (highlight.extraClasses) {\n\t\t\t\telement.classList.add(...highlight.extraClasses);\n\t\t\t}\n\n\t\t\tchildren.push(element);\n\t\t\tpos = highlight.end;\n\t\t}\n\n\t\tif (pos < this.text.length) {\n\t\t\tconst substring = this.text.substring(pos,);\n\t\t\tif (this.supportIcons) {\n\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t} else {\n\t\t\t\tchildren.push(substring);\n\t\t\t}\n\t\t}\n\n\t\tdom.reset(this.domNode, ...children);\n\n\t\tif (!this.customHover && this.title !== '') {\n\t\t\tconst hoverDelegate = this.options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t\t\tthis.customHover = this._register(getBaseLayerHoverDelegate().setupManagedHover(hoverDelegate, this.domNode, this.title));\n\t\t} else if (this.customHover) {\n\t\t\tthis.customHover.update(this.title);\n\t\t}\n\n\t\tthis.didEverRender = true;\n\t}\n\n\tstatic escapeNewLines(text: string, highlights: readonly IHighlight[]): string {\n\t\tlet total = 0;\n\t\tlet extra = 0;\n\n\t\treturn text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\n\t\t\textra = match === '\\r\\n' ? -1 : 0;\n\t\t\toffset += total;\n\n\t\t\tfor (const highlight of highlights) {\n\t\t\t\tif (highlight.end <= offset) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (highlight.start >= offset) {\n\t\t\t\t\thighlight.start += extra;\n\t\t\t\t}\n\t\t\t\tif (highlight.end >= offset) {\n\t\t\t\t\thighlight.end += extra;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttotal += extra;\n\t\t\treturn '\\u23CE';\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/base/browser/ui/highlightedlabel/highlightedLabel.ts","vs/base/browser/ui/highlightedlabel/highlightedLabel.ts"],"names":[],"mappings":"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","file":"highlightedLabel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../dom.js';\nimport { IManagedHover } from '../hover/hover.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport * as objects from '../../../common/objects.js';\n\n/**\n * A range to be highlighted.\n */\nexport interface IHighlight {\n\tstart: number;\n\tend: number;\n\treadonly extraClasses?: readonly string[];\n}\n\nexport interface IHighlightedLabelOptions {\n\treadonly hoverDelegate?: IHoverDelegate;\n}\n\n/**\n * A widget which can render a label with substring highlights, often\n * originating from a filter function like the fuzzy matcher.\n */\nexport class HighlightedLabel extends Disposable {\n\n\tprivate readonly domNode: HTMLElement;\n\tprivate text: string = '';\n\tprivate title: string = '';\n\tprivate highlights: readonly IHighlight[] = [];\n\tprivate didEverRender: boolean = false;\n\tprivate customHover: IManagedHover | undefined;\n\n\t/**\n\t * Create a new {@link HighlightedLabel}.\n\t *\n\t * @param container The parent container to append to.\n\t */\n\tconstructor(container: HTMLElement, private readonly options?: IHighlightedLabelOptions) {\n\t\tsuper();\n\n\t\tthis.domNode = dom.append(container, dom.$('span.monaco-highlighted-label'));\n\t}\n\n\t/**\n\t * The label's DOM node.\n\t */\n\tget element(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\t/**\n\t * Set the label and highlights.\n\t *\n\t * @param text The label to display.\n\t * @param highlights The ranges to highlight.\n\t * @param title An optional title for the hover tooltip.\n\t * @param escapeNewLines Whether to escape new lines.\n\t * @returns\n\t */\n\tset(text: string | undefined, highlights: readonly IHighlight[] = [], title: string = '', escapeNewLines?: boolean, supportIcons?: boolean) {\n\t\tif (!text) {\n\t\t\ttext = '';\n\t\t}\n\n\t\tif (escapeNewLines) {\n\t\t\t// adjusts highlights inplace\n\t\t\ttext = HighlightedLabel.escapeNewLines(text, highlights);\n\t\t}\n\n\t\tif (this.didEverRender && this.text === text && this.title === title && objects.equals(this.highlights, highlights)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.text = text;\n\t\tthis.title = title;\n\t\tthis.highlights = highlights;\n\t\tthis.render(supportIcons);\n\t}\n\n\tprivate render(supportIcons?: boolean): void {\n\n\t\tconst children: Array<HTMLSpanElement | string> = [];\n\t\tlet pos = 0;\n\n\t\tfor (const highlight of this.highlights) {\n\t\t\tif (highlight.end === highlight.start) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (pos < highlight.start) {\n\t\t\t\tconst substring = this.text.substring(pos, highlight.start);\n\t\t\t\tif (supportIcons) {\n\t\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t\t} else {\n\t\t\t\t\tchildren.push(substring);\n\t\t\t\t}\n\t\t\t\tpos = highlight.start;\n\t\t\t}\n\n\t\t\tconst substring = this.text.substring(pos, highlight.end);\n\t\t\tconst element = dom.$('span.highlight', undefined, ...supportIcons ? renderLabelWithIcons(substring) : [substring]);\n\n\t\t\tif (highlight.extraClasses) {\n\t\t\t\telement.classList.add(...highlight.extraClasses);\n\t\t\t}\n\n\t\t\tchildren.push(element);\n\t\t\tpos = highlight.end;\n\t\t}\n\n\t\tif (pos < this.text.length) {\n\t\t\tconst substring = this.text.substring(pos,);\n\t\t\tif (supportIcons) {\n\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t} else {\n\t\t\t\tchildren.push(substring);\n\t\t\t}\n\t\t}\n\n\t\tdom.reset(this.domNode, ...children);\n\n\t\tif (!this.customHover && this.title !== '') {\n\t\t\tconst hoverDelegate = this.options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t\t\tthis.customHover = this._register(getBaseLayerHoverDelegate().setupManagedHover(hoverDelegate, this.domNode, this.title));\n\t\t} else if (this.customHover) {\n\t\t\tthis.customHover.update(this.title);\n\t\t}\n\n\t\tthis.didEverRender = true;\n\t}\n\n\tstatic escapeNewLines(text: string, highlights: readonly IHighlight[]): string {\n\t\tlet total = 0;\n\t\tlet extra = 0;\n\n\t\treturn text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\n\t\t\textra = match === '\\r\\n' ? -1 : 0;\n\t\t\toffset += total;\n\n\t\t\tfor (const highlight of highlights) {\n\t\t\t\tif (highlight.end <= offset) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (highlight.start >= offset) {\n\t\t\t\t\thighlight.start += extra;\n\t\t\t\t}\n\t\t\t\tif (highlight.end >= offset) {\n\t\t\t\t\thighlight.end += extra;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttotal += extra;\n\t\t\treturn '\\u23CE';\n\t\t});\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../dom.js';\nimport { IManagedHover } from '../hover/hover.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport * as objects from '../../../common/objects.js';\n\n/**\n * A range to be highlighted.\n */\nexport interface IHighlight {\n\tstart: number;\n\tend: number;\n\treadonly extraClasses?: readonly string[];\n}\n\nexport interface IHighlightedLabelOptions {\n\treadonly hoverDelegate?: IHoverDelegate;\n}\n\n/**\n * A widget which can render a label with substring highlights, often\n * originating from a filter function like the fuzzy matcher.\n */\nexport class HighlightedLabel extends Disposable {\n\n\tprivate readonly domNode: HTMLElement;\n\tprivate text: string = '';\n\tprivate title: string = '';\n\tprivate highlights: readonly IHighlight[] = [];\n\tprivate didEverRender: boolean = false;\n\tprivate customHover: IManagedHover | undefined;\n\n\t/**\n\t * Create a new {@link HighlightedLabel}.\n\t *\n\t * @param container The parent container to append to.\n\t */\n\tconstructor(container: HTMLElement, private readonly options?: IHighlightedLabelOptions) {\n\t\tsuper();\n\n\t\tthis.domNode = dom.append(container, dom.$('span.monaco-highlighted-label'));\n\t}\n\n\t/**\n\t * The label's DOM node.\n\t */\n\tget element(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\t/**\n\t * Set the label and highlights.\n\t *\n\t * @param text The label to display.\n\t * @param highlights The ranges to highlight.\n\t * @param title An optional title for the hover tooltip.\n\t * @param escapeNewLines Whether to escape new lines.\n\t * @returns\n\t */\n\tset(text: string | undefined, highlights: readonly IHighlight[] = [], title: string = '', escapeNewLines?: boolean, supportIcons?: boolean) {\n\t\tif (!text) {\n\t\t\ttext = '';\n\t\t}\n\n\t\tif (escapeNewLines) {\n\t\t\t// adjusts highlights inplace\n\t\t\ttext = HighlightedLabel.escapeNewLines(text, highlights);\n\t\t}\n\n\t\tif (this.didEverRender && this.text === text && this.title === title && objects.equals(this.highlights, highlights)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.text = text;\n\t\tthis.title = title;\n\t\tthis.highlights = highlights;\n\t\tthis.render(supportIcons);\n\t}\n\n\tprivate render(supportIcons?: boolean): void {\n\n\t\tconst children: Array<HTMLSpanElement | string> = [];\n\t\tlet pos = 0;\n\n\t\tfor (const highlight of this.highlights) {\n\t\t\tif (highlight.end === highlight.start) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (pos < highlight.start) {\n\t\t\t\tconst substring = this.text.substring(pos, highlight.start);\n\t\t\t\tif (supportIcons) {\n\t\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t\t} else {\n\t\t\t\t\tchildren.push(substring);\n\t\t\t\t}\n\t\t\t\tpos = highlight.start;\n\t\t\t}\n\n\t\t\tconst substring = this.text.substring(pos, highlight.end);\n\t\t\tconst element = dom.$('span.highlight', undefined, ...supportIcons ? renderLabelWithIcons(substring) : [substring]);\n\n\t\t\tif (highlight.extraClasses) {\n\t\t\t\telement.classList.add(...highlight.extraClasses);\n\t\t\t}\n\n\t\t\tchildren.push(element);\n\t\t\tpos = highlight.end;\n\t\t}\n\n\t\tif (pos < this.text.length) {\n\t\t\tconst substring = this.text.substring(pos,);\n\t\t\tif (supportIcons) {\n\t\t\t\tchildren.push(...renderLabelWithIcons(substring));\n\t\t\t} else {\n\t\t\t\tchildren.push(substring);\n\t\t\t}\n\t\t}\n\n\t\tdom.reset(this.domNode, ...children);\n\n\t\tif (!this.customHover && this.title !== '') {\n\t\t\tconst hoverDelegate = this.options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t\t\tthis.customHover = this._register(getBaseLayerHoverDelegate().setupManagedHover(hoverDelegate, this.domNode, this.title));\n\t\t} else if (this.customHover) {\n\t\t\tthis.customHover.update(this.title);\n\t\t}\n\n\t\tthis.didEverRender = true;\n\t}\n\n\tstatic escapeNewLines(text: string, highlights: readonly IHighlight[]): string {\n\t\tlet total = 0;\n\t\tlet extra = 0;\n\n\t\treturn text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\n\t\t\textra = match === '\\r\\n' ? -1 : 0;\n\t\t\toffset += total;\n\n\t\t\tfor (const highlight of highlights) {\n\t\t\t\tif (highlight.end <= offset) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (highlight.start >= offset) {\n\t\t\t\t\thighlight.start += extra;\n\t\t\t\t}\n\t\t\t\tif (highlight.end >= offset) {\n\t\t\t\t\thighlight.end += extra;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttotal += extra;\n\t\t\treturn '\\u23CE';\n\t\t});\n\t}\n}\n"]}
@@ -71,6 +71,9 @@ export class IconLabel extends Disposable {
71
71
  if (options.extraClasses) {
72
72
  labelClasses.push(...options.extraClasses);
73
73
  }
74
+ if (options.bold) {
75
+ labelClasses.push('bold');
76
+ }
74
77
  if (options.italic) {
75
78
  labelClasses.push('italic');
76
79
  }
@@ -116,7 +119,7 @@ export class IconLabel extends Disposable {
116
119
  if (description || this.descriptionNode) {
117
120
  const descriptionNode = this.getOrCreateDescriptionNode();
118
121
  if (descriptionNode instanceof HighlightedLabel) {
119
- descriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options?.labelEscapeNewLines);
122
+ descriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options?.labelEscapeNewLines, options?.supportIcons);
120
123
  this.setupHover(descriptionNode.element, options?.descriptionTitle);
121
124
  }
122
125
  else {
@@ -170,7 +173,7 @@ export class IconLabel extends Disposable {
170
173
  if (!this.descriptionNode) {
171
174
  const descriptionContainer = this._register(new FastLabelNode(dom.append(this.labelContainer, dom.$('span.monaco-icon-description-container'))));
172
175
  if (this.creationOptions?.supportDescriptionHighlights) {
173
- this.descriptionNode = this._register(new HighlightedLabel(dom.append(descriptionContainer.element, dom.$('span.label-description')), { supportIcons: !!this.creationOptions.supportIcons }));
176
+ this.descriptionNode = this._register(new HighlightedLabel(dom.append(descriptionContainer.element, dom.$('span.label-description'))));
174
177
  }
175
178
  else {
176
179
  this.descriptionNode = this._register(new FastLabelNode(dom.append(descriptionContainer.element, dom.$('span.label-description'))));
@@ -243,13 +246,15 @@ class LabelWithHighlights extends Disposable {
243
246
  }
244
247
  this.label = label;
245
248
  this.options = options;
249
+ // Determine supportIcons: use option if provided, otherwise use constructor value
250
+ const supportIcons = options?.supportIcons ?? this.supportIcons;
246
251
  if (typeof label === 'string') {
247
252
  if (!this.singleLabel) {
248
253
  this.container.textContent = '';
249
254
  this.container.classList.remove('multiple');
250
- this.singleLabel = this._register(new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options?.domId })), { supportIcons: this.supportIcons }));
255
+ this.singleLabel = this._register(new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options?.domId }))));
251
256
  }
252
- this.singleLabel.set(label, options?.matches, undefined, options?.labelEscapeNewLines);
257
+ this.singleLabel.set(label, options?.matches, undefined, options?.labelEscapeNewLines, supportIcons);
253
258
  }
254
259
  else {
255
260
  this.container.textContent = '';
@@ -262,8 +267,8 @@ class LabelWithHighlights extends Disposable {
262
267
  const m = matches ? matches[i] : undefined;
263
268
  const id = options?.domId && `${options?.domId}_${i}`;
264
269
  const name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });
265
- const highlightedLabel = this._register(new HighlightedLabel(dom.append(this.container, name), { supportIcons: this.supportIcons }));
266
- highlightedLabel.set(l, m, undefined, options?.labelEscapeNewLines);
270
+ const highlightedLabel = this._register(new HighlightedLabel(dom.append(this.container, name)));
271
+ highlightedLabel.set(l, m, undefined, options?.labelEscapeNewLines, supportIcons);
267
272
  if (i < label.length - 1) {
268
273
  dom.append(name, dom.$('span.label-separator', undefined, separator));
269
274
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/base/browser/ui/iconLabel/iconLabel.ts","vs/base/browser/ui/iconLabel/iconLabel.ts"],"names":[],"mappings":"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","file":"iconLabel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport './iconlabel.css';\nimport * as dom from '../../dom.js';\nimport * as css from '../../cssValue.js';\nimport { HighlightedLabel } from '../highlightedlabel/highlightedLabel.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { IMatch } from '../../../common/filters.js';\nimport { Disposable, IDisposable } from '../../../common/lifecycle.js';\nimport { equals } from '../../../common/objects.js';\nimport { Range } from '../../../common/range.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { IManagedHoverTooltipMarkdownString } from '../hover/hover.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { URI } from '../../../common/uri.js';\n\nexport interface IIconLabelCreationOptions {\n\treadonly supportHighlights?: boolean;\n\treadonly supportDescriptionHighlights?: boolean;\n\treadonly supportIcons?: boolean;\n\treadonly hoverDelegate?: IHoverDelegate;\n\treadonly hoverTargetOverride?: HTMLElement;\n}\n\nexport interface IIconLabelValueOptions {\n\ttitle?: string | IManagedHoverTooltipMarkdownString;\n\tdescriptionTitle?: string | IManagedHoverTooltipMarkdownString;\n\tsuffix?: string;\n\textraClasses?: readonly string[];\n\titalic?: boolean;\n\tstrikethrough?: boolean;\n\tmatches?: readonly IMatch[];\n\tlabelEscapeNewLines?: boolean;\n\tdescriptionMatches?: readonly IMatch[];\n\tdisabledCommand?: boolean;\n\treadonly separator?: string;\n\treadonly domId?: string;\n\ticonPath?: URI;\n}\n\nclass FastLabelNode {\n\tprivate disposed: boolean | undefined;\n\tprivate _textContent: string | undefined;\n\tprivate _classNames: string[] | undefined;\n\tprivate _empty: boolean | undefined;\n\n\tconstructor(private _element: HTMLElement) {\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this._element;\n\t}\n\n\tset textContent(content: string) {\n\t\tif (this.disposed || content === this._textContent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._textContent = content;\n\t\tthis._element.textContent = content;\n\t}\n\n\tset classNames(classNames: string[]) {\n\t\tif (this.disposed || equals(classNames, this._classNames)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._classNames = classNames;\n\t\tthis._element.classList.value = '';\n\t\tthis._element.classList.add(...classNames);\n\t}\n\n\tset empty(empty: boolean) {\n\t\tif (this.disposed || empty === this._empty) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._empty = empty;\n\t\tthis._element.style.marginLeft = empty ? '0' : '';\n\t}\n\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t}\n}\n\nexport class IconLabel extends Disposable {\n\n\tprivate readonly creationOptions?: IIconLabelCreationOptions;\n\n\tprivate readonly domNode: FastLabelNode;\n\tprivate readonly nameContainer: HTMLElement;\n\tprivate readonly nameNode: Label | LabelWithHighlights;\n\n\tprivate descriptionNode: FastLabelNode | HighlightedLabel | undefined;\n\tprivate suffixNode: FastLabelNode | undefined;\n\n\tprivate readonly labelContainer: HTMLElement;\n\n\tprivate readonly hoverDelegate: IHoverDelegate;\n\tprivate readonly customHovers: Map<HTMLElement, IDisposable> = new Map();\n\n\tconstructor(container: HTMLElement, options?: IIconLabelCreationOptions) {\n\t\tsuper();\n\t\tthis.creationOptions = options;\n\n\t\tthis.domNode = this._register(new FastLabelNode(dom.append(container, dom.$('.monaco-icon-label'))));\n\n\t\tthis.labelContainer = dom.append(this.domNode.element, dom.$('.monaco-icon-label-container'));\n\n\t\tthis.nameContainer = dom.append(this.labelContainer, dom.$('span.monaco-icon-name-container'));\n\n\t\tif (options?.supportHighlights || options?.supportIcons) {\n\t\t\tthis.nameNode = this._register(new LabelWithHighlights(this.nameContainer, !!options.supportIcons));\n\t\t} else {\n\t\t\tthis.nameNode = new Label(this.nameContainer);\n\t\t}\n\n\t\tthis.hoverDelegate = options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this.domNode.element;\n\t}\n\n\tsetLabel(label: string | string[], description?: string, options?: IIconLabelValueOptions): void {\n\t\tconst labelClasses = ['monaco-icon-label'];\n\t\tconst containerClasses = ['monaco-icon-label-container'];\n\t\tlet ariaLabel: string = '';\n\t\tif (options) {\n\t\t\tif (options.extraClasses) {\n\t\t\t\tlabelClasses.push(...options.extraClasses);\n\t\t\t}\n\n\t\t\tif (options.italic) {\n\t\t\t\tlabelClasses.push('italic');\n\t\t\t}\n\n\t\t\tif (options.strikethrough) {\n\t\t\t\tlabelClasses.push('strikethrough');\n\t\t\t}\n\n\t\t\tif (options.disabledCommand) {\n\t\t\t\tcontainerClasses.push('disabled');\n\t\t\t}\n\t\t\tif (options.title) {\n\t\t\t\tif (typeof options.title === 'string') {\n\t\t\t\t\tariaLabel += options.title;\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel += label;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst existingIconNode = this.domNode.element.querySelector('.monaco-icon-label-iconpath');\n\t\tif (options?.iconPath) {\n\t\t\tlet iconNode;\n\t\t\tif (!existingIconNode || !(dom.isHTMLElement(existingIconNode))) {\n\t\t\t\ticonNode = dom.$('.monaco-icon-label-iconpath');\n\t\t\t\tthis.domNode.element.prepend(iconNode);\n\t\t\t} else {\n\t\t\t\ticonNode = existingIconNode;\n\t\t\t}\n\t\t\ticonNode.style.backgroundImage = css.asCSSUrl(options?.iconPath);\n\t\t\ticonNode.style.backgroundRepeat = 'no-repeat';\n\t\t\ticonNode.style.backgroundPosition = 'center';\n\t\t\ticonNode.style.backgroundSize = 'contain';\n\n\t\t} else if (existingIconNode) {\n\t\t\texistingIconNode.remove();\n\t\t}\n\n\t\tthis.domNode.classNames = labelClasses;\n\t\tthis.domNode.element.setAttribute('aria-label', ariaLabel);\n\t\tthis.labelContainer.classList.value = '';\n\t\tthis.labelContainer.classList.add(...containerClasses);\n\t\tthis.setupHover(options?.descriptionTitle ? this.labelContainer : this.element, options?.title);\n\n\t\tthis.nameNode.setLabel(label, options);\n\n\t\tif (description || this.descriptionNode) {\n\t\t\tconst descriptionNode = this.getOrCreateDescriptionNode();\n\t\t\tif (descriptionNode instanceof HighlightedLabel) {\n\t\t\t\tdescriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options?.labelEscapeNewLines);\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle);\n\t\t\t} else {\n\t\t\t\tdescriptionNode.textContent = description && options?.labelEscapeNewLines ? HighlightedLabel.escapeNewLines(description, []) : (description || '');\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle || '');\n\t\t\t\tdescriptionNode.empty = !description;\n\t\t\t}\n\t\t}\n\n\t\tif (options?.suffix || this.suffixNode) {\n\t\t\tconst suffixNode = this.getOrCreateSuffixNode();\n\t\t\tsuffixNode.textContent = options?.suffix ?? '';\n\t\t}\n\t}\n\n\tprivate setupHover(htmlElement: HTMLElement, tooltip: string | IManagedHoverTooltipMarkdownString | undefined): void {\n\t\tconst previousCustomHover = this.customHovers.get(htmlElement);\n\t\tif (previousCustomHover) {\n\t\t\tpreviousCustomHover.dispose();\n\t\t\tthis.customHovers.delete(htmlElement);\n\t\t}\n\n\t\tif (!tooltip) {\n\t\t\thtmlElement.removeAttribute('title');\n\t\t\treturn;\n\t\t}\n\n\t\tlet hoverTarget = htmlElement;\n\t\tif (this.creationOptions?.hoverTargetOverride) {\n\t\t\tif (!dom.isAncestor(htmlElement, this.creationOptions.hoverTargetOverride)) {\n\t\t\t\tthrow new Error('hoverTargetOverrride must be an ancestor of the htmlElement');\n\t\t\t}\n\t\t\thoverTarget = this.creationOptions.hoverTargetOverride;\n\t\t}\n\n\t\tconst hoverDisposable = getBaseLayerHoverDelegate().setupManagedHover(this.hoverDelegate, hoverTarget, tooltip);\n\t\tif (hoverDisposable) {\n\t\t\tthis.customHovers.set(htmlElement, hoverDisposable);\n\t\t}\n\t}\n\n\tpublic override dispose() {\n\t\tsuper.dispose();\n\t\tfor (const disposable of this.customHovers.values()) {\n\t\t\tdisposable.dispose();\n\t\t}\n\t\tthis.customHovers.clear();\n\t}\n\n\tprivate getOrCreateSuffixNode() {\n\t\tif (!this.suffixNode) {\n\t\t\tconst suffixContainer = this._register(new FastLabelNode(dom.after(this.nameContainer, dom.$('span.monaco-icon-suffix-container'))));\n\t\t\tthis.suffixNode = this._register(new FastLabelNode(dom.append(suffixContainer.element, dom.$('span.label-suffix'))));\n\t\t}\n\n\t\treturn this.suffixNode;\n\t}\n\n\tprivate getOrCreateDescriptionNode() {\n\t\tif (!this.descriptionNode) {\n\t\t\tconst descriptionContainer = this._register(new FastLabelNode(dom.append(this.labelContainer, dom.$('span.monaco-icon-description-container'))));\n\t\t\tif (this.creationOptions?.supportDescriptionHighlights) {\n\t\t\t\tthis.descriptionNode = this._register(new HighlightedLabel(dom.append(descriptionContainer.element, dom.$('span.label-description')), { supportIcons: !!this.creationOptions.supportIcons }));\n\t\t\t} else {\n\t\t\t\tthis.descriptionNode = this._register(new FastLabelNode(dom.append(descriptionContainer.element, dom.$('span.label-description'))));\n\t\t\t}\n\t\t}\n\n\t\treturn this.descriptionNode;\n\t}\n}\n\nclass Label {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HTMLElement | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement) { }\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = dom.append(this.container, dom.$('a.label-name', { id: options?.domId }));\n\t\t\t}\n\n\t\t\tthis.singleLabel.textContent = label;\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tdom.append(this.container, dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(this.container, dom.$('span.label-separator', undefined, options?.separator || '/'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction splitMatches(labels: string[], separator: string, matches: readonly IMatch[] | undefined): IMatch[][] | undefined {\n\tif (!matches) {\n\t\treturn undefined;\n\t}\n\n\tlet labelStart = 0;\n\n\treturn labels.map(label => {\n\t\tconst labelRange = { start: labelStart, end: labelStart + label.length };\n\n\t\tconst result = matches\n\t\t\t.map(match => Range.intersect(labelRange, match))\n\t\t\t.filter(range => !Range.isEmpty(range))\n\t\t\t.map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\n\n\t\tlabelStart = labelRange.end + separator.length;\n\t\treturn result;\n\t});\n}\n\nclass LabelWithHighlights extends Disposable {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HighlightedLabel | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement, private supportIcons: boolean) {\n\t\tsuper();\n\t}\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = this._register(new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options?.domId })), { supportIcons: this.supportIcons }));\n\t\t\t}\n\n\t\t\tthis.singleLabel.set(label, options?.matches, undefined, options?.labelEscapeNewLines);\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tconst separator = options?.separator || '/';\n\t\t\tconst matches = splitMatches(label, separator, options?.matches);\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst m = matches ? matches[i] : undefined;\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tconst name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\n\t\t\t\tconst highlightedLabel = this._register(new HighlightedLabel(dom.append(this.container, name), { supportIcons: this.supportIcons }));\n\t\t\t\thighlightedLabel.set(l, m, undefined, options?.labelEscapeNewLines);\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(name, dom.$('span.label-separator', undefined, separator));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport './iconlabel.css';\nimport * as dom from '../../dom.js';\nimport * as css from '../../cssValue.js';\nimport { HighlightedLabel } from '../highlightedlabel/highlightedLabel.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { IMatch } from '../../../common/filters.js';\nimport { Disposable, IDisposable } from '../../../common/lifecycle.js';\nimport { equals } from '../../../common/objects.js';\nimport { Range } from '../../../common/range.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { IManagedHoverTooltipMarkdownString } from '../hover/hover.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { URI } from '../../../common/uri.js';\n\nexport interface IIconLabelCreationOptions {\n\treadonly supportHighlights?: boolean;\n\treadonly supportDescriptionHighlights?: boolean;\n\treadonly supportIcons?: boolean;\n\treadonly hoverDelegate?: IHoverDelegate;\n\treadonly hoverTargetOverride?: HTMLElement;\n}\n\nexport interface IIconLabelValueOptions {\n\ttitle?: string | IManagedHoverTooltipMarkdownString;\n\tdescriptionTitle?: string | IManagedHoverTooltipMarkdownString;\n\tsuffix?: string;\n\textraClasses?: readonly string[];\n\titalic?: boolean;\n\tstrikethrough?: boolean;\n\tmatches?: readonly IMatch[];\n\tlabelEscapeNewLines?: boolean;\n\tdescriptionMatches?: readonly IMatch[];\n\tdisabledCommand?: boolean;\n\treadonly separator?: string;\n\treadonly domId?: string;\n\ticonPath?: URI;\n}\n\nclass FastLabelNode {\n\tprivate disposed: boolean | undefined;\n\tprivate _textContent: string | undefined;\n\tprivate _classNames: string[] | undefined;\n\tprivate _empty: boolean | undefined;\n\n\tconstructor(private _element: HTMLElement) {\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this._element;\n\t}\n\n\tset textContent(content: string) {\n\t\tif (this.disposed || content === this._textContent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._textContent = content;\n\t\tthis._element.textContent = content;\n\t}\n\n\tset classNames(classNames: string[]) {\n\t\tif (this.disposed || equals(classNames, this._classNames)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._classNames = classNames;\n\t\tthis._element.classList.value = '';\n\t\tthis._element.classList.add(...classNames);\n\t}\n\n\tset empty(empty: boolean) {\n\t\tif (this.disposed || empty === this._empty) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._empty = empty;\n\t\tthis._element.style.marginLeft = empty ? '0' : '';\n\t}\n\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t}\n}\n\nexport class IconLabel extends Disposable {\n\n\tprivate readonly creationOptions?: IIconLabelCreationOptions;\n\n\tprivate readonly domNode: FastLabelNode;\n\tprivate readonly nameContainer: HTMLElement;\n\tprivate readonly nameNode: Label | LabelWithHighlights;\n\n\tprivate descriptionNode: FastLabelNode | HighlightedLabel | undefined;\n\tprivate suffixNode: FastLabelNode | undefined;\n\n\tprivate readonly labelContainer: HTMLElement;\n\n\tprivate readonly hoverDelegate: IHoverDelegate;\n\tprivate readonly customHovers: Map<HTMLElement, IDisposable> = new Map();\n\n\tconstructor(container: HTMLElement, options?: IIconLabelCreationOptions) {\n\t\tsuper();\n\t\tthis.creationOptions = options;\n\n\t\tthis.domNode = this._register(new FastLabelNode(dom.append(container, dom.$('.monaco-icon-label'))));\n\n\t\tthis.labelContainer = dom.append(this.domNode.element, dom.$('.monaco-icon-label-container'));\n\n\t\tthis.nameContainer = dom.append(this.labelContainer, dom.$('span.monaco-icon-name-container'));\n\n\t\tif (options?.supportHighlights || options?.supportIcons) {\n\t\t\tthis.nameNode = this._register(new LabelWithHighlights(this.nameContainer, !!options.supportIcons));\n\t\t} else {\n\t\t\tthis.nameNode = new Label(this.nameContainer);\n\t\t}\n\n\t\tthis.hoverDelegate = options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this.domNode.element;\n\t}\n\n\tsetLabel(label: string | string[], description?: string, options?: IIconLabelValueOptions): void {\n\t\tconst labelClasses = ['monaco-icon-label'];\n\t\tconst containerClasses = ['monaco-icon-label-container'];\n\t\tlet ariaLabel: string = '';\n\t\tif (options) {\n\t\t\tif (options.extraClasses) {\n\t\t\t\tlabelClasses.push(...options.extraClasses);\n\t\t\t}\n\n\t\t\tif (options.italic) {\n\t\t\t\tlabelClasses.push('italic');\n\t\t\t}\n\n\t\t\tif (options.strikethrough) {\n\t\t\t\tlabelClasses.push('strikethrough');\n\t\t\t}\n\n\t\t\tif (options.disabledCommand) {\n\t\t\t\tcontainerClasses.push('disabled');\n\t\t\t}\n\t\t\tif (options.title) {\n\t\t\t\tif (typeof options.title === 'string') {\n\t\t\t\t\tariaLabel += options.title;\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel += label;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst existingIconNode = this.domNode.element.querySelector('.monaco-icon-label-iconpath');\n\t\tif (options?.iconPath) {\n\t\t\tlet iconNode;\n\t\t\tif (!existingIconNode || !(dom.isHTMLElement(existingIconNode))) {\n\t\t\t\ticonNode = dom.$('.monaco-icon-label-iconpath');\n\t\t\t\tthis.domNode.element.prepend(iconNode);\n\t\t\t} else {\n\t\t\t\ticonNode = existingIconNode;\n\t\t\t}\n\t\t\ticonNode.style.backgroundImage = css.asCSSUrl(options?.iconPath);\n\t\t\ticonNode.style.backgroundRepeat = 'no-repeat';\n\t\t\ticonNode.style.backgroundPosition = 'center';\n\t\t\ticonNode.style.backgroundSize = 'contain';\n\n\t\t} else if (existingIconNode) {\n\t\t\texistingIconNode.remove();\n\t\t}\n\n\t\tthis.domNode.classNames = labelClasses;\n\t\tthis.domNode.element.setAttribute('aria-label', ariaLabel);\n\t\tthis.labelContainer.classList.value = '';\n\t\tthis.labelContainer.classList.add(...containerClasses);\n\t\tthis.setupHover(options?.descriptionTitle ? this.labelContainer : this.element, options?.title);\n\n\t\tthis.nameNode.setLabel(label, options);\n\n\t\tif (description || this.descriptionNode) {\n\t\t\tconst descriptionNode = this.getOrCreateDescriptionNode();\n\t\t\tif (descriptionNode instanceof HighlightedLabel) {\n\t\t\t\tdescriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options?.labelEscapeNewLines);\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle);\n\t\t\t} else {\n\t\t\t\tdescriptionNode.textContent = description && options?.labelEscapeNewLines ? HighlightedLabel.escapeNewLines(description, []) : (description || '');\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle || '');\n\t\t\t\tdescriptionNode.empty = !description;\n\t\t\t}\n\t\t}\n\n\t\tif (options?.suffix || this.suffixNode) {\n\t\t\tconst suffixNode = this.getOrCreateSuffixNode();\n\t\t\tsuffixNode.textContent = options?.suffix ?? '';\n\t\t}\n\t}\n\n\tprivate setupHover(htmlElement: HTMLElement, tooltip: string | IManagedHoverTooltipMarkdownString | undefined): void {\n\t\tconst previousCustomHover = this.customHovers.get(htmlElement);\n\t\tif (previousCustomHover) {\n\t\t\tpreviousCustomHover.dispose();\n\t\t\tthis.customHovers.delete(htmlElement);\n\t\t}\n\n\t\tif (!tooltip) {\n\t\t\thtmlElement.removeAttribute('title');\n\t\t\treturn;\n\t\t}\n\n\t\tlet hoverTarget = htmlElement;\n\t\tif (this.creationOptions?.hoverTargetOverride) {\n\t\t\tif (!dom.isAncestor(htmlElement, this.creationOptions.hoverTargetOverride)) {\n\t\t\t\tthrow new Error('hoverTargetOverrride must be an ancestor of the htmlElement');\n\t\t\t}\n\t\t\thoverTarget = this.creationOptions.hoverTargetOverride;\n\t\t}\n\n\t\tconst hoverDisposable = getBaseLayerHoverDelegate().setupManagedHover(this.hoverDelegate, hoverTarget, tooltip);\n\t\tif (hoverDisposable) {\n\t\t\tthis.customHovers.set(htmlElement, hoverDisposable);\n\t\t}\n\t}\n\n\tpublic override dispose() {\n\t\tsuper.dispose();\n\t\tfor (const disposable of this.customHovers.values()) {\n\t\t\tdisposable.dispose();\n\t\t}\n\t\tthis.customHovers.clear();\n\t}\n\n\tprivate getOrCreateSuffixNode() {\n\t\tif (!this.suffixNode) {\n\t\t\tconst suffixContainer = this._register(new FastLabelNode(dom.after(this.nameContainer, dom.$('span.monaco-icon-suffix-container'))));\n\t\t\tthis.suffixNode = this._register(new FastLabelNode(dom.append(suffixContainer.element, dom.$('span.label-suffix'))));\n\t\t}\n\n\t\treturn this.suffixNode;\n\t}\n\n\tprivate getOrCreateDescriptionNode() {\n\t\tif (!this.descriptionNode) {\n\t\t\tconst descriptionContainer = this._register(new FastLabelNode(dom.append(this.labelContainer, dom.$('span.monaco-icon-description-container'))));\n\t\t\tif (this.creationOptions?.supportDescriptionHighlights) {\n\t\t\t\tthis.descriptionNode = this._register(new HighlightedLabel(dom.append(descriptionContainer.element, dom.$('span.label-description')), { supportIcons: !!this.creationOptions.supportIcons }));\n\t\t\t} else {\n\t\t\t\tthis.descriptionNode = this._register(new FastLabelNode(dom.append(descriptionContainer.element, dom.$('span.label-description'))));\n\t\t\t}\n\t\t}\n\n\t\treturn this.descriptionNode;\n\t}\n}\n\nclass Label {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HTMLElement | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement) { }\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = dom.append(this.container, dom.$('a.label-name', { id: options?.domId }));\n\t\t\t}\n\n\t\t\tthis.singleLabel.textContent = label;\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tdom.append(this.container, dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(this.container, dom.$('span.label-separator', undefined, options?.separator || '/'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction splitMatches(labels: string[], separator: string, matches: readonly IMatch[] | undefined): IMatch[][] | undefined {\n\tif (!matches) {\n\t\treturn undefined;\n\t}\n\n\tlet labelStart = 0;\n\n\treturn labels.map(label => {\n\t\tconst labelRange = { start: labelStart, end: labelStart + label.length };\n\n\t\tconst result = matches\n\t\t\t.map(match => Range.intersect(labelRange, match))\n\t\t\t.filter(range => !Range.isEmpty(range))\n\t\t\t.map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\n\n\t\tlabelStart = labelRange.end + separator.length;\n\t\treturn result;\n\t});\n}\n\nclass LabelWithHighlights extends Disposable {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HighlightedLabel | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement, private supportIcons: boolean) {\n\t\tsuper();\n\t}\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = this._register(new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options?.domId })), { supportIcons: this.supportIcons }));\n\t\t\t}\n\n\t\t\tthis.singleLabel.set(label, options?.matches, undefined, options?.labelEscapeNewLines);\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tconst separator = options?.separator || '/';\n\t\t\tconst matches = splitMatches(label, separator, options?.matches);\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst m = matches ? matches[i] : undefined;\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tconst name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\n\t\t\t\tconst highlightedLabel = this._register(new HighlightedLabel(dom.append(this.container, name), { supportIcons: this.supportIcons }));\n\t\t\t\thighlightedLabel.set(l, m, undefined, options?.labelEscapeNewLines);\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(name, dom.$('span.label-separator', undefined, separator));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/base/browser/ui/iconLabel/iconLabel.ts","vs/base/browser/ui/iconLabel/iconLabel.ts"],"names":[],"mappings":"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","file":"iconLabel.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport './iconlabel.css';\nimport * as dom from '../../dom.js';\nimport * as css from '../../cssValue.js';\nimport { HighlightedLabel } from '../highlightedlabel/highlightedLabel.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { IMatch } from '../../../common/filters.js';\nimport { Disposable, IDisposable } from '../../../common/lifecycle.js';\nimport { equals } from '../../../common/objects.js';\nimport { Range } from '../../../common/range.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { IManagedHoverTooltipMarkdownString } from '../hover/hover.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { URI } from '../../../common/uri.js';\n\nexport interface IIconLabelCreationOptions {\n\treadonly supportHighlights?: boolean;\n\treadonly supportDescriptionHighlights?: boolean;\n\treadonly supportIcons?: boolean;\n\treadonly hoverDelegate?: IHoverDelegate;\n\treadonly hoverTargetOverride?: HTMLElement;\n}\n\nexport interface IIconLabelValueOptions {\n\ttitle?: string | IManagedHoverTooltipMarkdownString;\n\tdescriptionTitle?: string | IManagedHoverTooltipMarkdownString;\n\tsuffix?: string;\n\textraClasses?: readonly string[];\n\tbold?: boolean;\n\titalic?: boolean;\n\tstrikethrough?: boolean;\n\tmatches?: readonly IMatch[];\n\tlabelEscapeNewLines?: boolean;\n\tdescriptionMatches?: readonly IMatch[];\n\tdisabledCommand?: boolean;\n\treadonly separator?: string;\n\treadonly domId?: string;\n\ticonPath?: URI;\n\tsupportIcons?: boolean;\n}\n\nclass FastLabelNode {\n\tprivate disposed: boolean | undefined;\n\tprivate _textContent: string | undefined;\n\tprivate _classNames: string[] | undefined;\n\tprivate _empty: boolean | undefined;\n\n\tconstructor(private _element: HTMLElement) {\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this._element;\n\t}\n\n\tset textContent(content: string) {\n\t\tif (this.disposed || content === this._textContent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._textContent = content;\n\t\tthis._element.textContent = content;\n\t}\n\n\tset classNames(classNames: string[]) {\n\t\tif (this.disposed || equals(classNames, this._classNames)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._classNames = classNames;\n\t\tthis._element.classList.value = '';\n\t\tthis._element.classList.add(...classNames);\n\t}\n\n\tset empty(empty: boolean) {\n\t\tif (this.disposed || empty === this._empty) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._empty = empty;\n\t\tthis._element.style.marginLeft = empty ? '0' : '';\n\t}\n\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t}\n}\n\nexport class IconLabel extends Disposable {\n\n\tprivate readonly creationOptions?: IIconLabelCreationOptions;\n\n\tprivate readonly domNode: FastLabelNode;\n\tprivate readonly nameContainer: HTMLElement;\n\tprivate readonly nameNode: Label | LabelWithHighlights;\n\n\tprivate descriptionNode: FastLabelNode | HighlightedLabel | undefined;\n\tprivate suffixNode: FastLabelNode | undefined;\n\n\tprivate readonly labelContainer: HTMLElement;\n\n\tprivate readonly hoverDelegate: IHoverDelegate;\n\tprivate readonly customHovers: Map<HTMLElement, IDisposable> = new Map();\n\n\tconstructor(container: HTMLElement, options?: IIconLabelCreationOptions) {\n\t\tsuper();\n\t\tthis.creationOptions = options;\n\n\t\tthis.domNode = this._register(new FastLabelNode(dom.append(container, dom.$('.monaco-icon-label'))));\n\n\t\tthis.labelContainer = dom.append(this.domNode.element, dom.$('.monaco-icon-label-container'));\n\n\t\tthis.nameContainer = dom.append(this.labelContainer, dom.$('span.monaco-icon-name-container'));\n\n\t\tif (options?.supportHighlights || options?.supportIcons) {\n\t\t\tthis.nameNode = this._register(new LabelWithHighlights(this.nameContainer, !!options.supportIcons));\n\t\t} else {\n\t\t\tthis.nameNode = new Label(this.nameContainer);\n\t\t}\n\n\t\tthis.hoverDelegate = options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this.domNode.element;\n\t}\n\n\tsetLabel(label: string | string[], description?: string, options?: IIconLabelValueOptions): void {\n\t\tconst labelClasses = ['monaco-icon-label'];\n\t\tconst containerClasses = ['monaco-icon-label-container'];\n\t\tlet ariaLabel: string = '';\n\t\tif (options) {\n\t\t\tif (options.extraClasses) {\n\t\t\t\tlabelClasses.push(...options.extraClasses);\n\t\t\t}\n\n\t\t\tif (options.bold) {\n\t\t\t\tlabelClasses.push('bold');\n\t\t\t}\n\n\t\t\tif (options.italic) {\n\t\t\t\tlabelClasses.push('italic');\n\t\t\t}\n\n\t\t\tif (options.strikethrough) {\n\t\t\t\tlabelClasses.push('strikethrough');\n\t\t\t}\n\n\t\t\tif (options.disabledCommand) {\n\t\t\t\tcontainerClasses.push('disabled');\n\t\t\t}\n\t\t\tif (options.title) {\n\t\t\t\tif (typeof options.title === 'string') {\n\t\t\t\t\tariaLabel += options.title;\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel += label;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst existingIconNode = this.domNode.element.querySelector('.monaco-icon-label-iconpath');\n\t\tif (options?.iconPath) {\n\t\t\tlet iconNode;\n\t\t\tif (!existingIconNode || !(dom.isHTMLElement(existingIconNode))) {\n\t\t\t\ticonNode = dom.$('.monaco-icon-label-iconpath');\n\t\t\t\tthis.domNode.element.prepend(iconNode);\n\t\t\t} else {\n\t\t\t\ticonNode = existingIconNode;\n\t\t\t}\n\t\t\ticonNode.style.backgroundImage = css.asCSSUrl(options?.iconPath);\n\t\t\ticonNode.style.backgroundRepeat = 'no-repeat';\n\t\t\ticonNode.style.backgroundPosition = 'center';\n\t\t\ticonNode.style.backgroundSize = 'contain';\n\n\t\t} else if (existingIconNode) {\n\t\t\texistingIconNode.remove();\n\t\t}\n\n\t\tthis.domNode.classNames = labelClasses;\n\t\tthis.domNode.element.setAttribute('aria-label', ariaLabel);\n\t\tthis.labelContainer.classList.value = '';\n\t\tthis.labelContainer.classList.add(...containerClasses);\n\t\tthis.setupHover(options?.descriptionTitle ? this.labelContainer : this.element, options?.title);\n\n\t\tthis.nameNode.setLabel(label, options);\n\n\t\tif (description || this.descriptionNode) {\n\t\t\tconst descriptionNode = this.getOrCreateDescriptionNode();\n\t\t\tif (descriptionNode instanceof HighlightedLabel) {\n\t\t\t\tdescriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options?.labelEscapeNewLines, options?.supportIcons);\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle);\n\t\t\t} else {\n\t\t\t\tdescriptionNode.textContent = description && options?.labelEscapeNewLines ? HighlightedLabel.escapeNewLines(description, []) : (description || '');\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle || '');\n\t\t\t\tdescriptionNode.empty = !description;\n\t\t\t}\n\t\t}\n\n\t\tif (options?.suffix || this.suffixNode) {\n\t\t\tconst suffixNode = this.getOrCreateSuffixNode();\n\t\t\tsuffixNode.textContent = options?.suffix ?? '';\n\t\t}\n\t}\n\n\tprivate setupHover(htmlElement: HTMLElement, tooltip: string | IManagedHoverTooltipMarkdownString | undefined): void {\n\t\tconst previousCustomHover = this.customHovers.get(htmlElement);\n\t\tif (previousCustomHover) {\n\t\t\tpreviousCustomHover.dispose();\n\t\t\tthis.customHovers.delete(htmlElement);\n\t\t}\n\n\t\tif (!tooltip) {\n\t\t\thtmlElement.removeAttribute('title');\n\t\t\treturn;\n\t\t}\n\n\t\tlet hoverTarget = htmlElement;\n\t\tif (this.creationOptions?.hoverTargetOverride) {\n\t\t\tif (!dom.isAncestor(htmlElement, this.creationOptions.hoverTargetOverride)) {\n\t\t\t\tthrow new Error('hoverTargetOverrride must be an ancestor of the htmlElement');\n\t\t\t}\n\t\t\thoverTarget = this.creationOptions.hoverTargetOverride;\n\t\t}\n\n\t\tconst hoverDisposable = getBaseLayerHoverDelegate().setupManagedHover(this.hoverDelegate, hoverTarget, tooltip);\n\t\tif (hoverDisposable) {\n\t\t\tthis.customHovers.set(htmlElement, hoverDisposable);\n\t\t}\n\t}\n\n\tpublic override dispose() {\n\t\tsuper.dispose();\n\t\tfor (const disposable of this.customHovers.values()) {\n\t\t\tdisposable.dispose();\n\t\t}\n\t\tthis.customHovers.clear();\n\t}\n\n\tprivate getOrCreateSuffixNode() {\n\t\tif (!this.suffixNode) {\n\t\t\tconst suffixContainer = this._register(new FastLabelNode(dom.after(this.nameContainer, dom.$('span.monaco-icon-suffix-container'))));\n\t\t\tthis.suffixNode = this._register(new FastLabelNode(dom.append(suffixContainer.element, dom.$('span.label-suffix'))));\n\t\t}\n\n\t\treturn this.suffixNode;\n\t}\n\n\tprivate getOrCreateDescriptionNode() {\n\t\tif (!this.descriptionNode) {\n\t\t\tconst descriptionContainer = this._register(new FastLabelNode(dom.append(this.labelContainer, dom.$('span.monaco-icon-description-container'))));\n\t\t\tif (this.creationOptions?.supportDescriptionHighlights) {\n\t\t\t\tthis.descriptionNode = this._register(new HighlightedLabel(dom.append(descriptionContainer.element, dom.$('span.label-description'))));\n\t\t\t} else {\n\t\t\t\tthis.descriptionNode = this._register(new FastLabelNode(dom.append(descriptionContainer.element, dom.$('span.label-description'))));\n\t\t\t}\n\t\t}\n\n\t\treturn this.descriptionNode;\n\t}\n}\n\nclass Label {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HTMLElement | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement) { }\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = dom.append(this.container, dom.$('a.label-name', { id: options?.domId }));\n\t\t\t}\n\n\t\t\tthis.singleLabel.textContent = label;\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tdom.append(this.container, dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(this.container, dom.$('span.label-separator', undefined, options?.separator || '/'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction splitMatches(labels: string[], separator: string, matches: readonly IMatch[] | undefined): IMatch[][] | undefined {\n\tif (!matches) {\n\t\treturn undefined;\n\t}\n\n\tlet labelStart = 0;\n\n\treturn labels.map(label => {\n\t\tconst labelRange = { start: labelStart, end: labelStart + label.length };\n\n\t\tconst result = matches\n\t\t\t.map(match => Range.intersect(labelRange, match))\n\t\t\t.filter(range => !Range.isEmpty(range))\n\t\t\t.map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\n\n\t\tlabelStart = labelRange.end + separator.length;\n\t\treturn result;\n\t});\n}\n\nclass LabelWithHighlights extends Disposable {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HighlightedLabel | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement, private supportIcons: boolean) {\n\t\tsuper();\n\t}\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\t// Determine supportIcons: use option if provided, otherwise use constructor value\n\t\tconst supportIcons = options?.supportIcons ?? this.supportIcons;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = this._register(new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options?.domId }))));\n\t\t\t}\n\n\t\t\tthis.singleLabel.set(label, options?.matches, undefined, options?.labelEscapeNewLines, supportIcons);\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tconst separator = options?.separator || '/';\n\t\t\tconst matches = splitMatches(label, separator, options?.matches);\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst m = matches ? matches[i] : undefined;\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tconst name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\n\t\t\t\tconst highlightedLabel = this._register(new HighlightedLabel(dom.append(this.container, name)));\n\t\t\t\thighlightedLabel.set(l, m, undefined, options?.labelEscapeNewLines, supportIcons);\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(name, dom.$('span.label-separator', undefined, separator));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport './iconlabel.css';\nimport * as dom from '../../dom.js';\nimport * as css from '../../cssValue.js';\nimport { HighlightedLabel } from '../highlightedlabel/highlightedLabel.js';\nimport { IHoverDelegate } from '../hover/hoverDelegate.js';\nimport { IMatch } from '../../../common/filters.js';\nimport { Disposable, IDisposable } from '../../../common/lifecycle.js';\nimport { equals } from '../../../common/objects.js';\nimport { Range } from '../../../common/range.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nimport { IManagedHoverTooltipMarkdownString } from '../hover/hover.js';\nimport { getBaseLayerHoverDelegate } from '../hover/hoverDelegate2.js';\nimport { URI } from '../../../common/uri.js';\n\nexport interface IIconLabelCreationOptions {\n\treadonly supportHighlights?: boolean;\n\treadonly supportDescriptionHighlights?: boolean;\n\treadonly supportIcons?: boolean;\n\treadonly hoverDelegate?: IHoverDelegate;\n\treadonly hoverTargetOverride?: HTMLElement;\n}\n\nexport interface IIconLabelValueOptions {\n\ttitle?: string | IManagedHoverTooltipMarkdownString;\n\tdescriptionTitle?: string | IManagedHoverTooltipMarkdownString;\n\tsuffix?: string;\n\textraClasses?: readonly string[];\n\tbold?: boolean;\n\titalic?: boolean;\n\tstrikethrough?: boolean;\n\tmatches?: readonly IMatch[];\n\tlabelEscapeNewLines?: boolean;\n\tdescriptionMatches?: readonly IMatch[];\n\tdisabledCommand?: boolean;\n\treadonly separator?: string;\n\treadonly domId?: string;\n\ticonPath?: URI;\n\tsupportIcons?: boolean;\n}\n\nclass FastLabelNode {\n\tprivate disposed: boolean | undefined;\n\tprivate _textContent: string | undefined;\n\tprivate _classNames: string[] | undefined;\n\tprivate _empty: boolean | undefined;\n\n\tconstructor(private _element: HTMLElement) {\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this._element;\n\t}\n\n\tset textContent(content: string) {\n\t\tif (this.disposed || content === this._textContent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._textContent = content;\n\t\tthis._element.textContent = content;\n\t}\n\n\tset classNames(classNames: string[]) {\n\t\tif (this.disposed || equals(classNames, this._classNames)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._classNames = classNames;\n\t\tthis._element.classList.value = '';\n\t\tthis._element.classList.add(...classNames);\n\t}\n\n\tset empty(empty: boolean) {\n\t\tif (this.disposed || empty === this._empty) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._empty = empty;\n\t\tthis._element.style.marginLeft = empty ? '0' : '';\n\t}\n\n\tdispose(): void {\n\t\tthis.disposed = true;\n\t}\n}\n\nexport class IconLabel extends Disposable {\n\n\tprivate readonly creationOptions?: IIconLabelCreationOptions;\n\n\tprivate readonly domNode: FastLabelNode;\n\tprivate readonly nameContainer: HTMLElement;\n\tprivate readonly nameNode: Label | LabelWithHighlights;\n\n\tprivate descriptionNode: FastLabelNode | HighlightedLabel | undefined;\n\tprivate suffixNode: FastLabelNode | undefined;\n\n\tprivate readonly labelContainer: HTMLElement;\n\n\tprivate readonly hoverDelegate: IHoverDelegate;\n\tprivate readonly customHovers: Map<HTMLElement, IDisposable> = new Map();\n\n\tconstructor(container: HTMLElement, options?: IIconLabelCreationOptions) {\n\t\tsuper();\n\t\tthis.creationOptions = options;\n\n\t\tthis.domNode = this._register(new FastLabelNode(dom.append(container, dom.$('.monaco-icon-label'))));\n\n\t\tthis.labelContainer = dom.append(this.domNode.element, dom.$('.monaco-icon-label-container'));\n\n\t\tthis.nameContainer = dom.append(this.labelContainer, dom.$('span.monaco-icon-name-container'));\n\n\t\tif (options?.supportHighlights || options?.supportIcons) {\n\t\t\tthis.nameNode = this._register(new LabelWithHighlights(this.nameContainer, !!options.supportIcons));\n\t\t} else {\n\t\t\tthis.nameNode = new Label(this.nameContainer);\n\t\t}\n\n\t\tthis.hoverDelegate = options?.hoverDelegate ?? getDefaultHoverDelegate('mouse');\n\t}\n\n\tget element(): HTMLElement {\n\t\treturn this.domNode.element;\n\t}\n\n\tsetLabel(label: string | string[], description?: string, options?: IIconLabelValueOptions): void {\n\t\tconst labelClasses = ['monaco-icon-label'];\n\t\tconst containerClasses = ['monaco-icon-label-container'];\n\t\tlet ariaLabel: string = '';\n\t\tif (options) {\n\t\t\tif (options.extraClasses) {\n\t\t\t\tlabelClasses.push(...options.extraClasses);\n\t\t\t}\n\n\t\t\tif (options.bold) {\n\t\t\t\tlabelClasses.push('bold');\n\t\t\t}\n\n\t\t\tif (options.italic) {\n\t\t\t\tlabelClasses.push('italic');\n\t\t\t}\n\n\t\t\tif (options.strikethrough) {\n\t\t\t\tlabelClasses.push('strikethrough');\n\t\t\t}\n\n\t\t\tif (options.disabledCommand) {\n\t\t\t\tcontainerClasses.push('disabled');\n\t\t\t}\n\t\t\tif (options.title) {\n\t\t\t\tif (typeof options.title === 'string') {\n\t\t\t\t\tariaLabel += options.title;\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel += label;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst existingIconNode = this.domNode.element.querySelector('.monaco-icon-label-iconpath');\n\t\tif (options?.iconPath) {\n\t\t\tlet iconNode;\n\t\t\tif (!existingIconNode || !(dom.isHTMLElement(existingIconNode))) {\n\t\t\t\ticonNode = dom.$('.monaco-icon-label-iconpath');\n\t\t\t\tthis.domNode.element.prepend(iconNode);\n\t\t\t} else {\n\t\t\t\ticonNode = existingIconNode;\n\t\t\t}\n\t\t\ticonNode.style.backgroundImage = css.asCSSUrl(options?.iconPath);\n\t\t\ticonNode.style.backgroundRepeat = 'no-repeat';\n\t\t\ticonNode.style.backgroundPosition = 'center';\n\t\t\ticonNode.style.backgroundSize = 'contain';\n\n\t\t} else if (existingIconNode) {\n\t\t\texistingIconNode.remove();\n\t\t}\n\n\t\tthis.domNode.classNames = labelClasses;\n\t\tthis.domNode.element.setAttribute('aria-label', ariaLabel);\n\t\tthis.labelContainer.classList.value = '';\n\t\tthis.labelContainer.classList.add(...containerClasses);\n\t\tthis.setupHover(options?.descriptionTitle ? this.labelContainer : this.element, options?.title);\n\n\t\tthis.nameNode.setLabel(label, options);\n\n\t\tif (description || this.descriptionNode) {\n\t\t\tconst descriptionNode = this.getOrCreateDescriptionNode();\n\t\t\tif (descriptionNode instanceof HighlightedLabel) {\n\t\t\t\tdescriptionNode.set(description || '', options ? options.descriptionMatches : undefined, undefined, options?.labelEscapeNewLines, options?.supportIcons);\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle);\n\t\t\t} else {\n\t\t\t\tdescriptionNode.textContent = description && options?.labelEscapeNewLines ? HighlightedLabel.escapeNewLines(description, []) : (description || '');\n\t\t\t\tthis.setupHover(descriptionNode.element, options?.descriptionTitle || '');\n\t\t\t\tdescriptionNode.empty = !description;\n\t\t\t}\n\t\t}\n\n\t\tif (options?.suffix || this.suffixNode) {\n\t\t\tconst suffixNode = this.getOrCreateSuffixNode();\n\t\t\tsuffixNode.textContent = options?.suffix ?? '';\n\t\t}\n\t}\n\n\tprivate setupHover(htmlElement: HTMLElement, tooltip: string | IManagedHoverTooltipMarkdownString | undefined): void {\n\t\tconst previousCustomHover = this.customHovers.get(htmlElement);\n\t\tif (previousCustomHover) {\n\t\t\tpreviousCustomHover.dispose();\n\t\t\tthis.customHovers.delete(htmlElement);\n\t\t}\n\n\t\tif (!tooltip) {\n\t\t\thtmlElement.removeAttribute('title');\n\t\t\treturn;\n\t\t}\n\n\t\tlet hoverTarget = htmlElement;\n\t\tif (this.creationOptions?.hoverTargetOverride) {\n\t\t\tif (!dom.isAncestor(htmlElement, this.creationOptions.hoverTargetOverride)) {\n\t\t\t\tthrow new Error('hoverTargetOverrride must be an ancestor of the htmlElement');\n\t\t\t}\n\t\t\thoverTarget = this.creationOptions.hoverTargetOverride;\n\t\t}\n\n\t\tconst hoverDisposable = getBaseLayerHoverDelegate().setupManagedHover(this.hoverDelegate, hoverTarget, tooltip);\n\t\tif (hoverDisposable) {\n\t\t\tthis.customHovers.set(htmlElement, hoverDisposable);\n\t\t}\n\t}\n\n\tpublic override dispose() {\n\t\tsuper.dispose();\n\t\tfor (const disposable of this.customHovers.values()) {\n\t\t\tdisposable.dispose();\n\t\t}\n\t\tthis.customHovers.clear();\n\t}\n\n\tprivate getOrCreateSuffixNode() {\n\t\tif (!this.suffixNode) {\n\t\t\tconst suffixContainer = this._register(new FastLabelNode(dom.after(this.nameContainer, dom.$('span.monaco-icon-suffix-container'))));\n\t\t\tthis.suffixNode = this._register(new FastLabelNode(dom.append(suffixContainer.element, dom.$('span.label-suffix'))));\n\t\t}\n\n\t\treturn this.suffixNode;\n\t}\n\n\tprivate getOrCreateDescriptionNode() {\n\t\tif (!this.descriptionNode) {\n\t\t\tconst descriptionContainer = this._register(new FastLabelNode(dom.append(this.labelContainer, dom.$('span.monaco-icon-description-container'))));\n\t\t\tif (this.creationOptions?.supportDescriptionHighlights) {\n\t\t\t\tthis.descriptionNode = this._register(new HighlightedLabel(dom.append(descriptionContainer.element, dom.$('span.label-description'))));\n\t\t\t} else {\n\t\t\t\tthis.descriptionNode = this._register(new FastLabelNode(dom.append(descriptionContainer.element, dom.$('span.label-description'))));\n\t\t\t}\n\t\t}\n\n\t\treturn this.descriptionNode;\n\t}\n}\n\nclass Label {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HTMLElement | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement) { }\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = dom.append(this.container, dom.$('a.label-name', { id: options?.domId }));\n\t\t\t}\n\n\t\t\tthis.singleLabel.textContent = label;\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tdom.append(this.container, dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(this.container, dom.$('span.label-separator', undefined, options?.separator || '/'));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction splitMatches(labels: string[], separator: string, matches: readonly IMatch[] | undefined): IMatch[][] | undefined {\n\tif (!matches) {\n\t\treturn undefined;\n\t}\n\n\tlet labelStart = 0;\n\n\treturn labels.map(label => {\n\t\tconst labelRange = { start: labelStart, end: labelStart + label.length };\n\n\t\tconst result = matches\n\t\t\t.map(match => Range.intersect(labelRange, match))\n\t\t\t.filter(range => !Range.isEmpty(range))\n\t\t\t.map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\n\n\t\tlabelStart = labelRange.end + separator.length;\n\t\treturn result;\n\t});\n}\n\nclass LabelWithHighlights extends Disposable {\n\n\tprivate label: string | string[] | undefined = undefined;\n\tprivate singleLabel: HighlightedLabel | undefined = undefined;\n\tprivate options: IIconLabelValueOptions | undefined;\n\n\tconstructor(private container: HTMLElement, private supportIcons: boolean) {\n\t\tsuper();\n\t}\n\n\tsetLabel(label: string | string[], options?: IIconLabelValueOptions): void {\n\t\tif (this.label === label && equals(this.options, options)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.label = label;\n\t\tthis.options = options;\n\n\t\t// Determine supportIcons: use option if provided, otherwise use constructor value\n\t\tconst supportIcons = options?.supportIcons ?? this.supportIcons;\n\n\t\tif (typeof label === 'string') {\n\t\t\tif (!this.singleLabel) {\n\t\t\t\tthis.container.textContent = '';\n\t\t\t\tthis.container.classList.remove('multiple');\n\t\t\t\tthis.singleLabel = this._register(new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options?.domId }))));\n\t\t\t}\n\n\t\t\tthis.singleLabel.set(label, options?.matches, undefined, options?.labelEscapeNewLines, supportIcons);\n\t\t} else {\n\t\t\tthis.container.textContent = '';\n\t\t\tthis.container.classList.add('multiple');\n\t\t\tthis.singleLabel = undefined;\n\n\t\t\tconst separator = options?.separator || '/';\n\t\t\tconst matches = splitMatches(label, separator, options?.matches);\n\n\t\t\tfor (let i = 0; i < label.length; i++) {\n\t\t\t\tconst l = label[i];\n\t\t\t\tconst m = matches ? matches[i] : undefined;\n\t\t\t\tconst id = options?.domId && `${options?.domId}_${i}`;\n\n\t\t\t\tconst name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\n\t\t\t\tconst highlightedLabel = this._register(new HighlightedLabel(dom.append(this.container, name)));\n\t\t\t\thighlightedLabel.set(l, m, undefined, options?.labelEscapeNewLines, supportIcons);\n\n\t\t\t\tif (i < label.length - 1) {\n\t\t\t\t\tdom.append(name, dom.$('span.label-separator', undefined, separator));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -46,8 +46,6 @@
46
46
  overflow: hidden;
47
47
  text-overflow: ellipsis;
48
48
  flex: 1;
49
- display: flex;
50
- align-items: center;
51
49
  }
52
50
 
53
51
  .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name {
@@ -80,6 +78,11 @@
80
78
  opacity: .95;
81
79
  }
82
80
 
81
+ .monaco-icon-label.bold > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,
82
+ .monaco-icon-label.bold > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {
83
+ font-weight: bold;
84
+ }
85
+
83
86
  .monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,
84
87
  .monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {
85
88
  font-style: italic;
@@ -628,5 +628,8 @@ export const codiconsLibrary = {
628
628
  indexZero: register('index-zero', 0xec66),
629
629
  agent: register('agent', 0xec67),
630
630
  editCode: register('edit-code', 0xec68),
631
+ repoSelected: register('repo-selected', 0xec69),
632
+ skip: register('skip', 0xec6a),
633
+ mergeInto: register('merge-into', 0xec6b),
631
634
  };
632
635
  //# sourceMappingURL=codiconsLibrary.js.map