monaco-editor-core 0.55.0-dev-20251008 → 0.55.0-dev-20251009

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 (124) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.de.js +2 -2
  3. package/esm/nls.messages.es.js +2 -2
  4. package/esm/nls.messages.fr.js +2 -2
  5. package/esm/nls.messages.it.js +2 -2
  6. package/esm/nls.messages.ja.js +2 -2
  7. package/esm/nls.messages.js +1 -1
  8. package/esm/nls.messages.json +1 -1
  9. package/esm/nls.messages.ko.js +2 -2
  10. package/esm/nls.messages.ru.js +2 -2
  11. package/esm/nls.messages.zh-cn.js +2 -2
  12. package/esm/nls.messages.zh-tw.js +2 -2
  13. package/esm/nls.metadata.json +3 -1
  14. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  15. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  16. package/esm/vs/base/browser/ui/toolbar/toolbar.js +4 -1
  17. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  18. package/esm/vs/base/common/codiconsLibrary.js +9 -1
  19. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  20. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +5 -8
  21. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  22. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js +36 -31
  23. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +1 -1
  24. package/esm/vs/editor/common/core/text/abstractText.js +5 -1
  25. package/esm/vs/editor/common/core/text/abstractText.js.map +1 -1
  26. package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js +2 -1
  27. package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js.map +1 -1
  28. package/esm/vs/editor/contrib/find/browser/findController.js +54 -61
  29. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  30. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +5 -8
  31. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  32. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +18 -23
  33. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  34. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  35. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +10 -12
  36. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
  37. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +9 -13
  38. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
  39. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +8 -1
  40. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  41. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  42. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  43. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  44. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  45. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  46. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  47. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  48. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  49. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  50. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  51. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +10 -12
  52. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  53. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  54. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  55. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
  56. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  57. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  58. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  59. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  60. package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
  61. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  62. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  63. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  64. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  65. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  66. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  67. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +18 -24
  68. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  69. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +15 -18
  70. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  71. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  72. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  73. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  74. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  75. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  76. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +7 -6
  77. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
  78. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -32
  79. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  80. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  81. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  82. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  83. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  84. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  85. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  86. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  87. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  88. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  89. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  90. package/esm/vs/platform/actions/common/menuService.js +2 -2
  91. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  92. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  93. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  94. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  95. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  96. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  97. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  98. package/esm/vs/platform/list/browser/listService.js +27 -27
  99. package/esm/vs/platform/markers/common/markerService.js +2 -2
  100. package/esm/vs/platform/markers/common/markers.js +6 -6
  101. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  102. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  103. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  104. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  105. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  106. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  107. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  108. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  109. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  110. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  111. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  112. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  113. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  114. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  115. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  116. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  117. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  118. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  119. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  120. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  121. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  122. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  123. package/package.json +2 -2
  124. package/version.txt +1 -1
@@ -16,14 +16,12 @@ import { asArray, compareBy, numberComparator } from '../../../../base/common/ar
16
16
  import { CancellationTokenSource } from '../../../../base/common/cancellation.js';
17
17
  import { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';
18
18
  import { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';
19
- import { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
19
+ import { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
20
20
  import { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';
21
21
  import { Range } from '../../../common/core/range.js';
22
- import { ILanguageService } from '../../../common/languages/language.js';
23
22
  import { RenderedHoverParts } from './hoverTypes.js';
24
23
  import * as nls from '../../../../nls.js';
25
24
  import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
26
- import { IOpenerService } from '../../../../platform/opener/common/opener.js';
27
25
  import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';
28
26
  import { HoverVerbosityAction } from '../../../common/languages.js';
29
27
  import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
@@ -70,10 +68,9 @@ class HoverSource {
70
68
  }
71
69
  }
72
70
  let MarkdownHoverParticipant = class MarkdownHoverParticipant {
73
- constructor(_editor, _languageService, _openerService, _configurationService, _languageFeaturesService, _keybindingService, _hoverService, _commandService) {
71
+ constructor(_editor, _markdownRendererService, _configurationService, _languageFeaturesService, _keybindingService, _hoverService, _commandService) {
74
72
  this._editor = _editor;
75
- this._languageService = _languageService;
76
- this._openerService = _openerService;
73
+ this._markdownRendererService = _markdownRendererService;
77
74
  this._configurationService = _configurationService;
78
75
  this._languageFeaturesService = _languageFeaturesService;
79
76
  this._keybindingService = _keybindingService;
@@ -150,7 +147,7 @@ let MarkdownHoverParticipant = class MarkdownHoverParticipant {
150
147
  }
151
148
  }
152
149
  renderHoverParts(context, hoverParts) {
153
- this._renderedHoverParts = new MarkdownRenderedHoverParts(hoverParts, context.fragment, this, this._editor, this._languageService, this._openerService, this._commandService, this._keybindingService, this._hoverService, this._configurationService, context.onContentsChanged);
150
+ this._renderedHoverParts = new MarkdownRenderedHoverParts(hoverParts, context.fragment, this, this._editor, this._commandService, this._keybindingService, this._hoverService, this._configurationService, this._markdownRendererService, context.onContentsChanged);
154
151
  return this._renderedHoverParts;
155
152
  }
156
153
  handleScroll(e) {
@@ -161,13 +158,12 @@ let MarkdownHoverParticipant = class MarkdownHoverParticipant {
161
158
  }
162
159
  };
163
160
  MarkdownHoverParticipant = __decorate([
164
- __param(1, ILanguageService),
165
- __param(2, IOpenerService),
166
- __param(3, IConfigurationService),
167
- __param(4, ILanguageFeaturesService),
168
- __param(5, IKeybindingService),
169
- __param(6, IHoverService),
170
- __param(7, ICommandService)
161
+ __param(1, IMarkdownRendererService),
162
+ __param(2, IConfigurationService),
163
+ __param(3, ILanguageFeaturesService),
164
+ __param(4, IKeybindingService),
165
+ __param(5, IHoverService),
166
+ __param(6, ICommandService)
171
167
  ], MarkdownHoverParticipant);
172
168
  export { MarkdownHoverParticipant };
173
169
  class RenderedMarkdownHoverPart {
@@ -182,15 +178,14 @@ class RenderedMarkdownHoverPart {
182
178
  }
183
179
  }
184
180
  class MarkdownRenderedHoverParts {
185
- constructor(hoverParts, hoverPartsContainer, _hoverParticipant, _editor, _languageService, _openerService, _commandService, _keybindingService, _hoverService, _configurationService, _onFinishedRendering) {
181
+ constructor(hoverParts, hoverPartsContainer, _hoverParticipant, _editor, _commandService, _keybindingService, _hoverService, _configurationService, _markdownRendererService, _onFinishedRendering) {
186
182
  this._hoverParticipant = _hoverParticipant;
187
183
  this._editor = _editor;
188
- this._languageService = _languageService;
189
- this._openerService = _openerService;
190
184
  this._commandService = _commandService;
191
185
  this._keybindingService = _keybindingService;
192
186
  this._hoverService = _hoverService;
193
187
  this._configurationService = _configurationService;
188
+ this._markdownRendererService = _markdownRendererService;
194
189
  this._onFinishedRendering = _onFinishedRendering;
195
190
  this._ongoingHoverOperations = new Map();
196
191
  this._disposables = new DisposableStore();
@@ -235,7 +230,7 @@ class MarkdownRenderedHoverParts {
235
230
  return new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables, actionsContainerInner);
236
231
  }
237
232
  _renderMarkdownHover(markdownHover, onFinishedRendering) {
238
- const renderedMarkdownHover = renderMarkdown(this._editor, markdownHover, this._languageService, this._openerService, onFinishedRendering);
233
+ const renderedMarkdownHover = renderMarkdown(this._editor, markdownHover, this._markdownRendererService, onFinishedRendering);
239
234
  return renderedMarkdownHover;
240
235
  }
241
236
  _renderHoverExpansionAction(container, action, actionEnabled) {
@@ -348,18 +343,18 @@ class MarkdownRenderedHoverParts {
348
343
  this._disposables.dispose();
349
344
  }
350
345
  }
351
- export function renderMarkdownHovers(context, markdownHovers, editor, languageService, openerService) {
346
+ export function renderMarkdownHovers(context, markdownHovers, editor, markdownRendererService) {
352
347
  // Sort hover parts to keep them stable since they might come in async, out-of-order
353
348
  markdownHovers.sort(compareBy(hover => hover.ordinal, numberComparator));
354
349
  const renderedHoverParts = [];
355
350
  for (const markdownHover of markdownHovers) {
356
- const renderedHoverPart = renderMarkdown(editor, markdownHover, languageService, openerService, context.onContentsChanged);
351
+ const renderedHoverPart = renderMarkdown(editor, markdownHover, markdownRendererService, context.onContentsChanged);
357
352
  context.fragment.appendChild(renderedHoverPart.hoverElement);
358
353
  renderedHoverParts.push(renderedHoverPart);
359
354
  }
360
355
  return new RenderedHoverParts(renderedHoverParts);
361
356
  }
362
- function renderMarkdown(editor, markdownHover, languageService, openerService, onFinishedRendering) {
357
+ function renderMarkdown(editor, markdownHover, markdownRendererService, onFinishedRendering) {
363
358
  const disposables = new DisposableStore();
364
359
  const renderedMarkdown = $('div.hover-row');
365
360
  const renderedMarkdownContents = $('div.hover-row-contents');
@@ -371,8 +366,8 @@ function renderMarkdown(editor, markdownHover, languageService, openerService, o
371
366
  }
372
367
  const markdownHoverElement = $('div.markdown-hover');
373
368
  const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));
374
- const renderer = new MarkdownRenderer({ editor }, languageService, openerService);
375
- const renderedContents = disposables.add(renderer.render(markdownString, {
369
+ const renderedContents = disposables.add(markdownRendererService.render(markdownString, {
370
+ editor,
376
371
  asyncRenderCallback: () => {
377
372
  hoverContentsElement.className = 'hover-contents code-hover-contents';
378
373
  onFinishedRendering();
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/hover/browser/markdownHoverParticipant.ts"],"names":[],"mappings":"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","file":"markdownHoverParticipant.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 '../../../../base/browser/dom.js';\nimport { asArray, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelDecoration, ITextModel } from '../../../common/model.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { HoverAnchor, HoverAnchorType, HoverRangeAnchor, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from './hoverTypes.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Hover, HoverContext, HoverProvider, HoverVerbosityAction } from '../../../common/languages.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ClickAction, HoverPosition, KeyDownAction } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IHoverService, WorkbenchHoverDelegate } from '../../../../platform/hover/browser/hover.js';\nimport { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { getHoverProviderResultsAsAsyncIterable } from './getHover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from './hoverOperation.js';\nimport { ScrollEvent } from '../../../../base/common/scrollable.js';\n\nconst $ = dom.$;\nconst increaseHoverVerbosityIcon = registerIcon('hover-increase-verbosity', Codicon.add, nls.localize('increaseHoverVerbosity', 'Icon for increaseing hover verbosity.'));\nconst decreaseHoverVerbosityIcon = registerIcon('hover-decrease-verbosity', Codicon.remove, nls.localize('decreaseHoverVerbosity', 'Icon for decreasing hover verbosity.'));\n\nexport class MarkdownHover implements IHoverPart {\n\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<MarkdownHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly contents: IMarkdownString[],\n\t\tpublic readonly isBeforeContent: boolean,\n\t\tpublic readonly ordinal: number,\n\t\tpublic readonly source: HoverSource | undefined = undefined,\n\t) { }\n\n\tpublic isValidForHoverAnchor(anchor: HoverAnchor): boolean {\n\t\treturn (\n\t\t\tanchor.type === HoverAnchorType.Range\n\t\t\t&& this.range.startColumn <= anchor.range.startColumn\n\t\t\t&& this.range.endColumn >= anchor.range.endColumn\n\t\t);\n\t}\n}\n\nclass HoverSource {\n\n\tconstructor(\n\t\treadonly hover: Hover,\n\t\treadonly hoverProvider: HoverProvider,\n\t\treadonly hoverPosition: Position,\n\t) { }\n\n\tpublic supportsVerbosityAction(hoverVerbosityAction: HoverVerbosityAction): boolean {\n\t\tswitch (hoverVerbosityAction) {\n\t\t\tcase HoverVerbosityAction.Increase:\n\t\t\t\treturn this.hover.canIncreaseVerbosity ?? false;\n\t\t\tcase HoverVerbosityAction.Decrease:\n\t\t\t\treturn this.hover.canDecreaseVerbosity ?? false;\n\t\t}\n\t}\n}\n\nexport class MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic readonly hoverOrdinal: number = 3;\n\n\tprivate _renderedHoverParts: MarkdownRenderedHoverParts | undefined;\n\n\tconstructor(\n\t\tprotected readonly _editor: ICodeEditor,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t\t@IOpenerService private readonly _openerService: IOpenerService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService protected readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t) { }\n\n\tpublic createLoadingMessage(anchor: HoverAnchor): MarkdownHover | null {\n\t\treturn new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))], false, 2000);\n\t}\n\n\tpublic computeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): MarkdownHover[] {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst lineNumber = anchor.range.startLineNumber;\n\t\tconst maxColumn = model.getLineMaxColumn(lineNumber);\n\t\tconst result: MarkdownHover[] = [];\n\n\t\tlet index = 1000;\n\n\t\tconst lineLength = model.getLineLength(lineNumber);\n\t\tconst languageId = model.getLanguageIdAtPosition(anchor.range.startLineNumber, anchor.range.startColumn);\n\t\tconst stopRenderingLineAfter = this._editor.getOption(EditorOption.stopRenderingLineAfter);\n\t\tconst maxTokenizationLineLength = this._configurationService.getValue<number>('editor.maxTokenizationLineLength', {\n\t\t\toverrideIdentifier: languageId\n\t\t});\n\t\tlet stopRenderingMessage = false;\n\t\tif (stopRenderingLineAfter >= 0 && lineLength > stopRenderingLineAfter && anchor.range.startColumn >= stopRenderingLineAfter) {\n\t\t\tstopRenderingMessage = true;\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('stopped rendering', \"Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.\")\n\t\t\t}], false, index++));\n\t\t}\n\t\tif (!stopRenderingMessage && typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\n\t\t\t}], false, index++));\n\t\t}\n\n\t\tlet isBeforeContent = false;\n\n\t\tfor (const d of lineDecorations) {\n\t\t\tconst startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n\t\t\tconst endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n\n\t\t\tconst hoverMessage = d.options.hoverMessage;\n\t\t\tif (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (d.options.beforeContentClassName) {\n\t\t\t\tisBeforeContent = true;\n\t\t\t}\n\n\t\t\tconst range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n\t\t\tresult.push(new MarkdownHover(this, range, asArray(hoverMessage), isBeforeContent, index++));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic computeAsync(anchor: HoverAnchor, lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\n\t\tconst hoverProviderRegistry = this._languageFeaturesService.hoverProvider;\n\t\tif (!hoverProviderRegistry.has(model)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\t\treturn this._getMarkdownHovers(hoverProviderRegistry, model, anchor, token);\n\t}\n\n\tprivate async *_getMarkdownHovers(hoverProviderRegistry: LanguageFeatureRegistry<HoverProvider>, model: ITextModel, anchor: HoverRangeAnchor, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tconst position = anchor.range.getStartPosition();\n\t\tconst hoverProviderResults = getHoverProviderResultsAsAsyncIterable(hoverProviderRegistry, model, position, token);\n\n\t\tfor await (const item of hoverProviderResults) {\n\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\tconst range = item.hover.range ? Range.lift(item.hover.range) : anchor.range;\n\t\t\t\tconst hoverSource = new HoverSource(item.hover, item.provider, position);\n\t\t\t\tyield new MarkdownHover(this, range, item.hover.contents, false, item.ordinal, hoverSource);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic renderHoverParts(context: IEditorHoverRenderContext, hoverParts: MarkdownHover[]): IRenderedHoverParts<MarkdownHover> {\n\t\tthis._renderedHoverParts = new MarkdownRenderedHoverParts(\n\t\t\thoverParts,\n\t\t\tcontext.fragment,\n\t\t\tthis,\n\t\t\tthis._editor,\n\t\t\tthis._languageService,\n\t\t\tthis._openerService,\n\t\t\tthis._commandService,\n\t\t\tthis._keybindingService,\n\t\t\tthis._hoverService,\n\t\t\tthis._configurationService,\n\t\t\tcontext.onContentsChanged\n\t\t);\n\t\treturn this._renderedHoverParts;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis._renderedHoverParts?.handleScroll(e);\n\t}\n\n\tpublic updateMarkdownHoverVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\treturn Promise.resolve(this._renderedHoverParts?.updateMarkdownHoverPartVerbosityLevel(action, index));\n\t}\n}\n\nclass RenderedMarkdownHoverPart implements IRenderedHoverPart<MarkdownHover> {\n\n\tconstructor(\n\t\tpublic readonly hoverPart: MarkdownHover,\n\t\tpublic readonly hoverElement: HTMLElement,\n\t\tpublic readonly disposables: DisposableStore,\n\t\tpublic readonly actionsContainer?: HTMLElement\n\t) { }\n\n\tdispose(): void {\n\t\tthis.disposables.dispose();\n\t}\n}\n\nclass MarkdownRenderedHoverParts implements IRenderedHoverParts<MarkdownHover> {\n\n\tpublic renderedHoverParts: RenderedMarkdownHoverPart[];\n\n\tprivate _ongoingHoverOperations: Map<HoverProvider, { verbosityDelta: number; tokenSource: CancellationTokenSource }> = new Map();\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tprivate readonly _hoverParticipant: MarkdownHoverParticipant,\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _languageService: ILanguageService,\n\t\tprivate readonly _openerService: IOpenerService,\n\t\tprivate readonly _commandService: ICommandService,\n\t\tprivate readonly _keybindingService: IKeybindingService,\n\t\tprivate readonly _hoverService: IHoverService,\n\t\tprivate readonly _configurationService: IConfigurationService,\n\t\tprivate readonly _onFinishedRendering: () => void,\n\t) {\n\t\tthis.renderedHoverParts = this._renderHoverParts(hoverParts, hoverPartsContainer, this._onFinishedRendering);\n\t\tthis._disposables.add(toDisposable(() => {\n\t\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\t\trenderedHoverPart.dispose();\n\t\t\t});\n\t\t\tthis._ongoingHoverOperations.forEach(operation => {\n\t\t\t\toperation.tokenSource.dispose(true);\n\t\t\t});\n\t\t}));\n\t}\n\n\tprivate _renderHoverParts(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tonFinishedRendering: () => void,\n\t): RenderedMarkdownHoverPart[] {\n\t\thoverParts.sort(compareBy(hover => hover.ordinal, numberComparator));\n\t\treturn hoverParts.map(hoverPart => {\n\t\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, onFinishedRendering);\n\t\t\thoverPartsContainer.appendChild(renderedHoverPart.hoverElement);\n\t\t\treturn renderedHoverPart;\n\t\t});\n\t}\n\n\tprivate _renderHoverPart(\n\t\thoverPart: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): RenderedMarkdownHoverPart {\n\n\t\tconst renderedMarkdownPart = this._renderMarkdownHover(hoverPart, onFinishedRendering);\n\t\tconst renderedMarkdownElement = renderedMarkdownPart.hoverElement;\n\t\tconst hoverSource = hoverPart.source;\n\t\tconst disposables = new DisposableStore();\n\t\tdisposables.add(renderedMarkdownPart);\n\n\t\tif (!hoverSource) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst canIncreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Increase);\n\t\tconst canDecreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Decrease);\n\n\t\tif (!canIncreaseVerbosity && !canDecreaseVerbosity) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst actionsContainer = $('div.verbosity-actions');\n\t\trenderedMarkdownElement.prepend(actionsContainer);\n\t\tconst actionsContainerInner = $('div.verbosity-actions-inner');\n\t\tactionsContainer.append(actionsContainerInner);\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Increase, canIncreaseVerbosity));\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Decrease, canDecreaseVerbosity));\n\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables, actionsContainerInner);\n\t}\n\n\tprivate _renderMarkdownHover(\n\t\tmarkdownHover: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): IRenderedHoverPart<MarkdownHover> {\n\t\tconst renderedMarkdownHover = renderMarkdown(\n\t\t\tthis._editor,\n\t\t\tmarkdownHover,\n\t\t\tthis._languageService,\n\t\t\tthis._openerService,\n\t\t\tonFinishedRendering,\n\t\t);\n\t\treturn renderedMarkdownHover;\n\t}\n\n\tprivate _renderHoverExpansionAction(container: HTMLElement, action: HoverVerbosityAction, actionEnabled: boolean): DisposableStore {\n\t\tconst store = new DisposableStore();\n\t\tconst isActionIncrease = action === HoverVerbosityAction.Increase;\n\t\tconst actionElement = dom.append(container, $(ThemeIcon.asCSSSelector(isActionIncrease ? increaseHoverVerbosityIcon : decreaseHoverVerbosityIcon)));\n\t\tactionElement.tabIndex = 0;\n\t\tconst hoverDelegate = new WorkbenchHoverDelegate('mouse', undefined, { target: container, position: { hoverPosition: HoverPosition.LEFT } }, this._configurationService, this._hoverService);\n\t\tstore.add(this._hoverService.setupManagedHover(hoverDelegate, actionElement, labelForHoverVerbosityAction(this._keybindingService, action)));\n\t\tif (!actionEnabled) {\n\t\t\tactionElement.classList.add('disabled');\n\t\t\treturn store;\n\t\t}\n\t\tactionElement.classList.add('enabled');\n\t\tconst actionFunction = () => this._commandService.executeCommand(action === HoverVerbosityAction.Increase ? INCREASE_HOVER_VERBOSITY_ACTION_ID : DECREASE_HOVER_VERBOSITY_ACTION_ID, { focus: true });\n\t\tstore.add(new ClickAction(actionElement, actionFunction));\n\t\tstore.add(new KeyDownAction(actionElement, actionFunction, [KeyCode.Enter, KeyCode.Space]));\n\t\treturn store;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\tconst actionsContainerInner = renderedHoverPart.actionsContainer;\n\t\t\tif (!actionsContainerInner) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst hoverElement = renderedHoverPart.hoverElement;\n\t\t\tconst topOfHoverScrollPosition = e.scrollTop;\n\t\t\tconst bottomOfHoverScrollPosition = topOfHoverScrollPosition + e.height;\n\t\t\tconst topOfRenderedPart = hoverElement.offsetTop;\n\t\t\tconst hoverElementHeight = hoverElement.clientHeight;\n\t\t\tconst bottomOfRenderedPart = topOfRenderedPart + hoverElementHeight;\n\t\t\tconst iconsHeight = 22;\n\t\t\tlet top: number;\n\t\t\tif (bottomOfRenderedPart <= bottomOfHoverScrollPosition || topOfRenderedPart >= bottomOfHoverScrollPosition) {\n\t\t\t\ttop = hoverElementHeight - iconsHeight;\n\t\t\t} else {\n\t\t\t\ttop = bottomOfHoverScrollPosition - topOfRenderedPart - iconsHeight;\n\t\t\t}\n\t\t\tactionsContainerInner.style.top = `${top}px`;\n\t\t});\n\t}\n\n\tpublic async updateMarkdownHoverPartVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst hoverRenderedPart = this._getRenderedHoverPartAtIndex(index);\n\t\tconst hoverSource = hoverRenderedPart?.hoverPart.source;\n\t\tif (!hoverRenderedPart || !hoverSource?.supportsVerbosityAction(action)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHover = await this._fetchHover(hoverSource, model, action);\n\t\tif (!newHover) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHoverSource = new HoverSource(newHover, hoverSource.hoverProvider, hoverSource.hoverPosition);\n\t\tconst initialHoverPart = hoverRenderedPart.hoverPart;\n\t\tconst newHoverPart = new MarkdownHover(\n\t\t\tthis._hoverParticipant,\n\t\t\tinitialHoverPart.range,\n\t\t\tnewHover.contents,\n\t\t\tinitialHoverPart.isBeforeContent,\n\t\t\tinitialHoverPart.ordinal,\n\t\t\tnewHoverSource\n\t\t);\n\t\tconst newHoverRenderedPart = this._updateRenderedHoverPart(index, newHoverPart);\n\t\tif (!newHoverRenderedPart) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\thoverPart: newHoverPart,\n\t\t\thoverElement: newHoverRenderedPart.hoverElement\n\t\t};\n\t}\n\n\tprivate async _fetchHover(hoverSource: HoverSource, model: ITextModel, action: HoverVerbosityAction): Promise<Hover | null | undefined> {\n\t\tlet verbosityDelta = action === HoverVerbosityAction.Increase ? 1 : -1;\n\t\tconst provider = hoverSource.hoverProvider;\n\t\tconst ongoingHoverOperation = this._ongoingHoverOperations.get(provider);\n\t\tif (ongoingHoverOperation) {\n\t\t\tongoingHoverOperation.tokenSource.cancel();\n\t\t\tverbosityDelta += ongoingHoverOperation.verbosityDelta;\n\t\t}\n\t\tconst tokenSource = new CancellationTokenSource();\n\t\tthis._ongoingHoverOperations.set(provider, { verbosityDelta, tokenSource });\n\t\tconst context: HoverContext = { verbosityRequest: { verbosityDelta, previousHover: hoverSource.hover } };\n\t\tlet hover: Hover | null | undefined;\n\t\ttry {\n\t\t\thover = await Promise.resolve(provider.provideHover(model, hoverSource.hoverPosition, tokenSource.token, context));\n\t\t} catch (e) {\n\t\t\tonUnexpectedExternalError(e);\n\t\t}\n\t\ttokenSource.dispose();\n\t\tthis._ongoingHoverOperations.delete(provider);\n\t\treturn hover;\n\t}\n\n\tprivate _updateRenderedHoverPart(index: number, hoverPart: MarkdownHover): RenderedMarkdownHoverPart | undefined {\n\t\tif (index >= this.renderedHoverParts.length || index < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, this._onFinishedRendering);\n\t\tconst currentRenderedHoverPart = this.renderedHoverParts[index];\n\t\tconst currentRenderedMarkdown = currentRenderedHoverPart.hoverElement;\n\t\tconst renderedMarkdown = renderedHoverPart.hoverElement;\n\t\tconst renderedChildrenElements = Array.from(renderedMarkdown.children);\n\t\tcurrentRenderedMarkdown.replaceChildren(...renderedChildrenElements);\n\t\tconst newRenderedHoverPart = new RenderedMarkdownHoverPart(\n\t\t\thoverPart,\n\t\t\tcurrentRenderedMarkdown,\n\t\t\trenderedHoverPart.disposables,\n\t\t\trenderedHoverPart.actionsContainer\n\t\t);\n\t\tcurrentRenderedHoverPart.dispose();\n\t\tthis.renderedHoverParts[index] = newRenderedHoverPart;\n\t\treturn newRenderedHoverPart;\n\t}\n\n\tprivate _getRenderedHoverPartAtIndex(index: number): RenderedMarkdownHoverPart | undefined {\n\t\treturn this.renderedHoverParts[index];\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nexport function renderMarkdownHovers(\n\tcontext: IEditorHoverRenderContext,\n\tmarkdownHovers: MarkdownHover[],\n\teditor: ICodeEditor,\n\tlanguageService: ILanguageService,\n\topenerService: IOpenerService,\n): IRenderedHoverParts<MarkdownHover> {\n\n\t// Sort hover parts to keep them stable since they might come in async, out-of-order\n\tmarkdownHovers.sort(compareBy(hover => hover.ordinal, numberComparator));\n\tconst renderedHoverParts: IRenderedHoverPart<MarkdownHover>[] = [];\n\tfor (const markdownHover of markdownHovers) {\n\t\tconst renderedHoverPart = renderMarkdown(\n\t\t\teditor,\n\t\t\tmarkdownHover,\n\t\t\tlanguageService,\n\t\t\topenerService,\n\t\t\tcontext.onContentsChanged,\n\t\t);\n\t\tcontext.fragment.appendChild(renderedHoverPart.hoverElement);\n\t\trenderedHoverParts.push(renderedHoverPart);\n\t}\n\treturn new RenderedHoverParts(renderedHoverParts);\n}\n\nfunction renderMarkdown(\n\teditor: ICodeEditor,\n\tmarkdownHover: MarkdownHover,\n\tlanguageService: ILanguageService,\n\topenerService: IOpenerService,\n\tonFinishedRendering: () => void,\n): IRenderedHoverPart<MarkdownHover> {\n\tconst disposables = new DisposableStore();\n\tconst renderedMarkdown = $('div.hover-row');\n\tconst renderedMarkdownContents = $('div.hover-row-contents');\n\trenderedMarkdown.appendChild(renderedMarkdownContents);\n\tconst markdownStrings = markdownHover.contents;\n\tfor (const markdownString of markdownStrings) {\n\t\tif (isEmptyMarkdownString(markdownString)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst markdownHoverElement = $('div.markdown-hover');\n\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\tconst renderer = new MarkdownRenderer({ editor }, languageService, openerService);\n\n\t\tconst renderedContents = disposables.add(renderer.render(markdownString, {\n\t\t\tasyncRenderCallback: () => {\n\t\t\t\thoverContentsElement.className = 'hover-contents code-hover-contents';\n\t\t\t\tonFinishedRendering();\n\t\t\t}\n\t\t}));\n\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\trenderedMarkdownContents.appendChild(markdownHoverElement);\n\t}\n\tconst renderedHoverPart: IRenderedHoverPart<MarkdownHover> = {\n\t\thoverPart: markdownHover,\n\t\thoverElement: renderedMarkdown,\n\t\tdispose() { disposables.dispose(); }\n\t};\n\treturn renderedHoverPart;\n}\n\nexport function labelForHoverVerbosityAction(keybindingService: IKeybindingService, action: HoverVerbosityAction): string {\n\tswitch (action) {\n\t\tcase HoverVerbosityAction.Increase: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(INCREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('increaseVerbosityWithKb', \"Increase Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('increaseVerbosity', \"Increase Hover Verbosity\");\n\t\t}\n\t\tcase HoverVerbosityAction.Decrease: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(DECREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('decreaseVerbosityWithKb', \"Decrease Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('decreaseVerbosity', \"Decrease Hover Verbosity\");\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/hover/browser/markdownHoverParticipant.ts"],"names":[],"mappings":"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","file":"markdownHoverParticipant.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 '../../../../base/browser/dom.js';\nimport { asArray, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelDecoration, ITextModel } from '../../../common/model.js';\nimport { HoverAnchor, HoverAnchorType, HoverRangeAnchor, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from './hoverTypes.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Hover, HoverContext, HoverProvider, HoverVerbosityAction } from '../../../common/languages.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ClickAction, HoverPosition, KeyDownAction } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IHoverService, WorkbenchHoverDelegate } from '../../../../platform/hover/browser/hover.js';\nimport { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { getHoverProviderResultsAsAsyncIterable } from './getHover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from './hoverOperation.js';\nimport { ScrollEvent } from '../../../../base/common/scrollable.js';\n\nconst $ = dom.$;\nconst increaseHoverVerbosityIcon = registerIcon('hover-increase-verbosity', Codicon.add, nls.localize('increaseHoverVerbosity', 'Icon for increaseing hover verbosity.'));\nconst decreaseHoverVerbosityIcon = registerIcon('hover-decrease-verbosity', Codicon.remove, nls.localize('decreaseHoverVerbosity', 'Icon for decreasing hover verbosity.'));\n\nexport class MarkdownHover implements IHoverPart {\n\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<MarkdownHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly contents: IMarkdownString[],\n\t\tpublic readonly isBeforeContent: boolean,\n\t\tpublic readonly ordinal: number,\n\t\tpublic readonly source: HoverSource | undefined = undefined,\n\t) { }\n\n\tpublic isValidForHoverAnchor(anchor: HoverAnchor): boolean {\n\t\treturn (\n\t\t\tanchor.type === HoverAnchorType.Range\n\t\t\t&& this.range.startColumn <= anchor.range.startColumn\n\t\t\t&& this.range.endColumn >= anchor.range.endColumn\n\t\t);\n\t}\n}\n\nclass HoverSource {\n\n\tconstructor(\n\t\treadonly hover: Hover,\n\t\treadonly hoverProvider: HoverProvider,\n\t\treadonly hoverPosition: Position,\n\t) { }\n\n\tpublic supportsVerbosityAction(hoverVerbosityAction: HoverVerbosityAction): boolean {\n\t\tswitch (hoverVerbosityAction) {\n\t\t\tcase HoverVerbosityAction.Increase:\n\t\t\t\treturn this.hover.canIncreaseVerbosity ?? false;\n\t\t\tcase HoverVerbosityAction.Decrease:\n\t\t\t\treturn this.hover.canDecreaseVerbosity ?? false;\n\t\t}\n\t}\n}\n\nexport class MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic readonly hoverOrdinal: number = 3;\n\n\tprivate _renderedHoverParts: MarkdownRenderedHoverParts | undefined;\n\n\tconstructor(\n\t\tprotected readonly _editor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService protected readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t) { }\n\n\tpublic createLoadingMessage(anchor: HoverAnchor): MarkdownHover | null {\n\t\treturn new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))], false, 2000);\n\t}\n\n\tpublic computeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): MarkdownHover[] {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst lineNumber = anchor.range.startLineNumber;\n\t\tconst maxColumn = model.getLineMaxColumn(lineNumber);\n\t\tconst result: MarkdownHover[] = [];\n\n\t\tlet index = 1000;\n\n\t\tconst lineLength = model.getLineLength(lineNumber);\n\t\tconst languageId = model.getLanguageIdAtPosition(anchor.range.startLineNumber, anchor.range.startColumn);\n\t\tconst stopRenderingLineAfter = this._editor.getOption(EditorOption.stopRenderingLineAfter);\n\t\tconst maxTokenizationLineLength = this._configurationService.getValue<number>('editor.maxTokenizationLineLength', {\n\t\t\toverrideIdentifier: languageId\n\t\t});\n\t\tlet stopRenderingMessage = false;\n\t\tif (stopRenderingLineAfter >= 0 && lineLength > stopRenderingLineAfter && anchor.range.startColumn >= stopRenderingLineAfter) {\n\t\t\tstopRenderingMessage = true;\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('stopped rendering', \"Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.\")\n\t\t\t}], false, index++));\n\t\t}\n\t\tif (!stopRenderingMessage && typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\n\t\t\t}], false, index++));\n\t\t}\n\n\t\tlet isBeforeContent = false;\n\n\t\tfor (const d of lineDecorations) {\n\t\t\tconst startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n\t\t\tconst endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n\n\t\t\tconst hoverMessage = d.options.hoverMessage;\n\t\t\tif (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (d.options.beforeContentClassName) {\n\t\t\t\tisBeforeContent = true;\n\t\t\t}\n\n\t\t\tconst range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n\t\t\tresult.push(new MarkdownHover(this, range, asArray(hoverMessage), isBeforeContent, index++));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic computeAsync(anchor: HoverAnchor, lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\n\t\tconst hoverProviderRegistry = this._languageFeaturesService.hoverProvider;\n\t\tif (!hoverProviderRegistry.has(model)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\t\treturn this._getMarkdownHovers(hoverProviderRegistry, model, anchor, token);\n\t}\n\n\tprivate async *_getMarkdownHovers(hoverProviderRegistry: LanguageFeatureRegistry<HoverProvider>, model: ITextModel, anchor: HoverRangeAnchor, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tconst position = anchor.range.getStartPosition();\n\t\tconst hoverProviderResults = getHoverProviderResultsAsAsyncIterable(hoverProviderRegistry, model, position, token);\n\n\t\tfor await (const item of hoverProviderResults) {\n\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\tconst range = item.hover.range ? Range.lift(item.hover.range) : anchor.range;\n\t\t\t\tconst hoverSource = new HoverSource(item.hover, item.provider, position);\n\t\t\t\tyield new MarkdownHover(this, range, item.hover.contents, false, item.ordinal, hoverSource);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic renderHoverParts(context: IEditorHoverRenderContext, hoverParts: MarkdownHover[]): IRenderedHoverParts<MarkdownHover> {\n\t\tthis._renderedHoverParts = new MarkdownRenderedHoverParts(\n\t\t\thoverParts,\n\t\t\tcontext.fragment,\n\t\t\tthis,\n\t\t\tthis._editor,\n\t\t\tthis._commandService,\n\t\t\tthis._keybindingService,\n\t\t\tthis._hoverService,\n\t\t\tthis._configurationService,\n\t\t\tthis._markdownRendererService,\n\t\t\tcontext.onContentsChanged\n\t\t);\n\t\treturn this._renderedHoverParts;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis._renderedHoverParts?.handleScroll(e);\n\t}\n\n\tpublic updateMarkdownHoverVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\treturn Promise.resolve(this._renderedHoverParts?.updateMarkdownHoverPartVerbosityLevel(action, index));\n\t}\n}\n\nclass RenderedMarkdownHoverPart implements IRenderedHoverPart<MarkdownHover> {\n\n\tconstructor(\n\t\tpublic readonly hoverPart: MarkdownHover,\n\t\tpublic readonly hoverElement: HTMLElement,\n\t\tpublic readonly disposables: DisposableStore,\n\t\tpublic readonly actionsContainer?: HTMLElement\n\t) { }\n\n\tdispose(): void {\n\t\tthis.disposables.dispose();\n\t}\n}\n\nclass MarkdownRenderedHoverParts implements IRenderedHoverParts<MarkdownHover> {\n\n\tpublic renderedHoverParts: RenderedMarkdownHoverPart[];\n\n\tprivate _ongoingHoverOperations: Map<HoverProvider, { verbosityDelta: number; tokenSource: CancellationTokenSource }> = new Map();\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tprivate readonly _hoverParticipant: MarkdownHoverParticipant,\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _commandService: ICommandService,\n\t\tprivate readonly _keybindingService: IKeybindingService,\n\t\tprivate readonly _hoverService: IHoverService,\n\t\tprivate readonly _configurationService: IConfigurationService,\n\t\tprivate readonly _markdownRendererService: IMarkdownRendererService,\n\t\tprivate readonly _onFinishedRendering: () => void,\n\t) {\n\t\tthis.renderedHoverParts = this._renderHoverParts(hoverParts, hoverPartsContainer, this._onFinishedRendering);\n\t\tthis._disposables.add(toDisposable(() => {\n\t\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\t\trenderedHoverPart.dispose();\n\t\t\t});\n\t\t\tthis._ongoingHoverOperations.forEach(operation => {\n\t\t\t\toperation.tokenSource.dispose(true);\n\t\t\t});\n\t\t}));\n\t}\n\n\tprivate _renderHoverParts(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tonFinishedRendering: () => void,\n\t): RenderedMarkdownHoverPart[] {\n\t\thoverParts.sort(compareBy(hover => hover.ordinal, numberComparator));\n\t\treturn hoverParts.map(hoverPart => {\n\t\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, onFinishedRendering);\n\t\t\thoverPartsContainer.appendChild(renderedHoverPart.hoverElement);\n\t\t\treturn renderedHoverPart;\n\t\t});\n\t}\n\n\tprivate _renderHoverPart(\n\t\thoverPart: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): RenderedMarkdownHoverPart {\n\n\t\tconst renderedMarkdownPart = this._renderMarkdownHover(hoverPart, onFinishedRendering);\n\t\tconst renderedMarkdownElement = renderedMarkdownPart.hoverElement;\n\t\tconst hoverSource = hoverPart.source;\n\t\tconst disposables = new DisposableStore();\n\t\tdisposables.add(renderedMarkdownPart);\n\n\t\tif (!hoverSource) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst canIncreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Increase);\n\t\tconst canDecreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Decrease);\n\n\t\tif (!canIncreaseVerbosity && !canDecreaseVerbosity) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst actionsContainer = $('div.verbosity-actions');\n\t\trenderedMarkdownElement.prepend(actionsContainer);\n\t\tconst actionsContainerInner = $('div.verbosity-actions-inner');\n\t\tactionsContainer.append(actionsContainerInner);\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Increase, canIncreaseVerbosity));\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Decrease, canDecreaseVerbosity));\n\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables, actionsContainerInner);\n\t}\n\n\tprivate _renderMarkdownHover(\n\t\tmarkdownHover: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): IRenderedHoverPart<MarkdownHover> {\n\t\tconst renderedMarkdownHover = renderMarkdown(\n\t\t\tthis._editor,\n\t\t\tmarkdownHover,\n\t\t\tthis._markdownRendererService,\n\t\t\tonFinishedRendering,\n\t\t);\n\t\treturn renderedMarkdownHover;\n\t}\n\n\tprivate _renderHoverExpansionAction(container: HTMLElement, action: HoverVerbosityAction, actionEnabled: boolean): DisposableStore {\n\t\tconst store = new DisposableStore();\n\t\tconst isActionIncrease = action === HoverVerbosityAction.Increase;\n\t\tconst actionElement = dom.append(container, $(ThemeIcon.asCSSSelector(isActionIncrease ? increaseHoverVerbosityIcon : decreaseHoverVerbosityIcon)));\n\t\tactionElement.tabIndex = 0;\n\t\tconst hoverDelegate = new WorkbenchHoverDelegate('mouse', undefined, { target: container, position: { hoverPosition: HoverPosition.LEFT } }, this._configurationService, this._hoverService);\n\t\tstore.add(this._hoverService.setupManagedHover(hoverDelegate, actionElement, labelForHoverVerbosityAction(this._keybindingService, action)));\n\t\tif (!actionEnabled) {\n\t\t\tactionElement.classList.add('disabled');\n\t\t\treturn store;\n\t\t}\n\t\tactionElement.classList.add('enabled');\n\t\tconst actionFunction = () => this._commandService.executeCommand(action === HoverVerbosityAction.Increase ? INCREASE_HOVER_VERBOSITY_ACTION_ID : DECREASE_HOVER_VERBOSITY_ACTION_ID, { focus: true });\n\t\tstore.add(new ClickAction(actionElement, actionFunction));\n\t\tstore.add(new KeyDownAction(actionElement, actionFunction, [KeyCode.Enter, KeyCode.Space]));\n\t\treturn store;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\tconst actionsContainerInner = renderedHoverPart.actionsContainer;\n\t\t\tif (!actionsContainerInner) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst hoverElement = renderedHoverPart.hoverElement;\n\t\t\tconst topOfHoverScrollPosition = e.scrollTop;\n\t\t\tconst bottomOfHoverScrollPosition = topOfHoverScrollPosition + e.height;\n\t\t\tconst topOfRenderedPart = hoverElement.offsetTop;\n\t\t\tconst hoverElementHeight = hoverElement.clientHeight;\n\t\t\tconst bottomOfRenderedPart = topOfRenderedPart + hoverElementHeight;\n\t\t\tconst iconsHeight = 22;\n\t\t\tlet top: number;\n\t\t\tif (bottomOfRenderedPart <= bottomOfHoverScrollPosition || topOfRenderedPart >= bottomOfHoverScrollPosition) {\n\t\t\t\ttop = hoverElementHeight - iconsHeight;\n\t\t\t} else {\n\t\t\t\ttop = bottomOfHoverScrollPosition - topOfRenderedPart - iconsHeight;\n\t\t\t}\n\t\t\tactionsContainerInner.style.top = `${top}px`;\n\t\t});\n\t}\n\n\tpublic async updateMarkdownHoverPartVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst hoverRenderedPart = this._getRenderedHoverPartAtIndex(index);\n\t\tconst hoverSource = hoverRenderedPart?.hoverPart.source;\n\t\tif (!hoverRenderedPart || !hoverSource?.supportsVerbosityAction(action)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHover = await this._fetchHover(hoverSource, model, action);\n\t\tif (!newHover) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHoverSource = new HoverSource(newHover, hoverSource.hoverProvider, hoverSource.hoverPosition);\n\t\tconst initialHoverPart = hoverRenderedPart.hoverPart;\n\t\tconst newHoverPart = new MarkdownHover(\n\t\t\tthis._hoverParticipant,\n\t\t\tinitialHoverPart.range,\n\t\t\tnewHover.contents,\n\t\t\tinitialHoverPart.isBeforeContent,\n\t\t\tinitialHoverPart.ordinal,\n\t\t\tnewHoverSource\n\t\t);\n\t\tconst newHoverRenderedPart = this._updateRenderedHoverPart(index, newHoverPart);\n\t\tif (!newHoverRenderedPart) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\thoverPart: newHoverPart,\n\t\t\thoverElement: newHoverRenderedPart.hoverElement\n\t\t};\n\t}\n\n\tprivate async _fetchHover(hoverSource: HoverSource, model: ITextModel, action: HoverVerbosityAction): Promise<Hover | null | undefined> {\n\t\tlet verbosityDelta = action === HoverVerbosityAction.Increase ? 1 : -1;\n\t\tconst provider = hoverSource.hoverProvider;\n\t\tconst ongoingHoverOperation = this._ongoingHoverOperations.get(provider);\n\t\tif (ongoingHoverOperation) {\n\t\t\tongoingHoverOperation.tokenSource.cancel();\n\t\t\tverbosityDelta += ongoingHoverOperation.verbosityDelta;\n\t\t}\n\t\tconst tokenSource = new CancellationTokenSource();\n\t\tthis._ongoingHoverOperations.set(provider, { verbosityDelta, tokenSource });\n\t\tconst context: HoverContext = { verbosityRequest: { verbosityDelta, previousHover: hoverSource.hover } };\n\t\tlet hover: Hover | null | undefined;\n\t\ttry {\n\t\t\thover = await Promise.resolve(provider.provideHover(model, hoverSource.hoverPosition, tokenSource.token, context));\n\t\t} catch (e) {\n\t\t\tonUnexpectedExternalError(e);\n\t\t}\n\t\ttokenSource.dispose();\n\t\tthis._ongoingHoverOperations.delete(provider);\n\t\treturn hover;\n\t}\n\n\tprivate _updateRenderedHoverPart(index: number, hoverPart: MarkdownHover): RenderedMarkdownHoverPart | undefined {\n\t\tif (index >= this.renderedHoverParts.length || index < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, this._onFinishedRendering);\n\t\tconst currentRenderedHoverPart = this.renderedHoverParts[index];\n\t\tconst currentRenderedMarkdown = currentRenderedHoverPart.hoverElement;\n\t\tconst renderedMarkdown = renderedHoverPart.hoverElement;\n\t\tconst renderedChildrenElements = Array.from(renderedMarkdown.children);\n\t\tcurrentRenderedMarkdown.replaceChildren(...renderedChildrenElements);\n\t\tconst newRenderedHoverPart = new RenderedMarkdownHoverPart(\n\t\t\thoverPart,\n\t\t\tcurrentRenderedMarkdown,\n\t\t\trenderedHoverPart.disposables,\n\t\t\trenderedHoverPart.actionsContainer\n\t\t);\n\t\tcurrentRenderedHoverPart.dispose();\n\t\tthis.renderedHoverParts[index] = newRenderedHoverPart;\n\t\treturn newRenderedHoverPart;\n\t}\n\n\tprivate _getRenderedHoverPartAtIndex(index: number): RenderedMarkdownHoverPart | undefined {\n\t\treturn this.renderedHoverParts[index];\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nexport function renderMarkdownHovers(\n\tcontext: IEditorHoverRenderContext,\n\tmarkdownHovers: MarkdownHover[],\n\teditor: ICodeEditor,\n\tmarkdownRendererService: IMarkdownRendererService,\n): IRenderedHoverParts<MarkdownHover> {\n\n\t// Sort hover parts to keep them stable since they might come in async, out-of-order\n\tmarkdownHovers.sort(compareBy(hover => hover.ordinal, numberComparator));\n\tconst renderedHoverParts: IRenderedHoverPart<MarkdownHover>[] = [];\n\tfor (const markdownHover of markdownHovers) {\n\t\tconst renderedHoverPart = renderMarkdown(\n\t\t\teditor,\n\t\t\tmarkdownHover,\n\t\t\tmarkdownRendererService,\n\t\t\tcontext.onContentsChanged,\n\t\t);\n\t\tcontext.fragment.appendChild(renderedHoverPart.hoverElement);\n\t\trenderedHoverParts.push(renderedHoverPart);\n\t}\n\treturn new RenderedHoverParts(renderedHoverParts);\n}\n\nfunction renderMarkdown(\n\teditor: ICodeEditor,\n\tmarkdownHover: MarkdownHover,\n\tmarkdownRendererService: IMarkdownRendererService,\n\tonFinishedRendering: () => void,\n): IRenderedHoverPart<MarkdownHover> {\n\tconst disposables = new DisposableStore();\n\tconst renderedMarkdown = $('div.hover-row');\n\tconst renderedMarkdownContents = $('div.hover-row-contents');\n\trenderedMarkdown.appendChild(renderedMarkdownContents);\n\tconst markdownStrings = markdownHover.contents;\n\tfor (const markdownString of markdownStrings) {\n\t\tif (isEmptyMarkdownString(markdownString)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst markdownHoverElement = $('div.markdown-hover');\n\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\n\t\tconst renderedContents = disposables.add(markdownRendererService.render(markdownString, {\n\t\t\teditor,\n\t\t\tasyncRenderCallback: () => {\n\t\t\t\thoverContentsElement.className = 'hover-contents code-hover-contents';\n\t\t\t\tonFinishedRendering();\n\t\t\t}\n\t\t}));\n\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\trenderedMarkdownContents.appendChild(markdownHoverElement);\n\t}\n\tconst renderedHoverPart: IRenderedHoverPart<MarkdownHover> = {\n\t\thoverPart: markdownHover,\n\t\thoverElement: renderedMarkdown,\n\t\tdispose() { disposables.dispose(); }\n\t};\n\treturn renderedHoverPart;\n}\n\nexport function labelForHoverVerbosityAction(keybindingService: IKeybindingService, action: HoverVerbosityAction): string {\n\tswitch (action) {\n\t\tcase HoverVerbosityAction.Increase: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(INCREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('increaseVerbosityWithKb', \"Increase Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('increaseVerbosity', \"Increase Hover Verbosity\");\n\t\t}\n\t\tcase HoverVerbosityAction.Decrease: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(DECREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('decreaseVerbosityWithKb', \"Decrease Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('decreaseVerbosity', \"Decrease Hover Verbosity\");\n\t\t}\n\t}\n}\n"]}
@@ -107,7 +107,7 @@ class InPlaceReplaceUp extends EditorAction {
107
107
  constructor() {
108
108
  super({
109
109
  id: 'editor.action.inPlaceReplace.up',
110
- label: nls.localize2(1230, "Replace with Previous Value"),
110
+ label: nls.localize2(1231, "Replace with Previous Value"),
111
111
  precondition: EditorContextKeys.writable,
112
112
  kbOpts: {
113
113
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -128,7 +128,7 @@ class InPlaceReplaceDown extends EditorAction {
128
128
  constructor() {
129
129
  super({
130
130
  id: 'editor.action.inPlaceReplace.down',
131
- label: nls.localize2(1231, "Replace with Next Value"),
131
+ label: nls.localize2(1232, "Replace with Next Value"),
132
132
  precondition: EditorContextKeys.writable,
133
133
  kbOpts: {
134
134
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -16,13 +16,11 @@ import { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/h
16
16
  import { Position } from '../../../common/core/position.js';
17
17
  import { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';
18
18
  import { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';
19
- import { ILanguageService } from '../../../common/languages/language.js';
20
19
  import { ITextModelService } from '../../../common/services/resolverService.js';
21
20
  import { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';
22
21
  import { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';
23
22
  import { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';
24
23
  import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
25
- import { IOpenerService } from '../../../../platform/opener/common/opener.js';
26
24
  import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';
27
25
  import { localize } from '../../../../nls.js';
28
26
  import * as platform from '../../../../base/common/platform.js';
@@ -31,6 +29,7 @@ import { isNonEmptyArray } from '../../../../base/common/arrays.js';
31
29
  import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';
32
30
  import { IHoverService } from '../../../../platform/hover/browser/hover.js';
33
31
  import { ICommandService } from '../../../../platform/commands/common/commands.js';
32
+ import { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
34
33
  class InlayHintsHoverAnchor extends HoverForeignElementAnchor {
35
34
  constructor(part, owner, initialMousePosX, initialMousePosY) {
36
35
  super(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);
@@ -38,8 +37,8 @@ class InlayHintsHoverAnchor extends HoverForeignElementAnchor {
38
37
  }
39
38
  }
40
39
  let InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {
41
- constructor(editor, languageService, openerService, keybindingService, hoverService, configurationService, _resolverService, languageFeaturesService, commandService) {
42
- super(editor, languageService, openerService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);
40
+ constructor(editor, markdownRendererService, keybindingService, hoverService, configurationService, _resolverService, languageFeaturesService, commandService) {
41
+ super(editor, markdownRendererService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);
43
42
  this._resolverService = _resolverService;
44
43
  this.hoverOrdinal = 6;
45
44
  }
@@ -150,14 +149,13 @@ let InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {
150
149
  }
151
150
  };
152
151
  InlayHintsHover = __decorate([
153
- __param(1, ILanguageService),
154
- __param(2, IOpenerService),
155
- __param(3, IKeybindingService),
156
- __param(4, IHoverService),
157
- __param(5, IConfigurationService),
158
- __param(6, ITextModelService),
159
- __param(7, ILanguageFeaturesService),
160
- __param(8, ICommandService)
152
+ __param(1, IMarkdownRendererService),
153
+ __param(2, IKeybindingService),
154
+ __param(3, IHoverService),
155
+ __param(4, IConfigurationService),
156
+ __param(5, ITextModelService),
157
+ __param(6, ILanguageFeaturesService),
158
+ __param(7, ICommandService)
161
159
  ], InlayHintsHover);
162
160
  export { InlayHintsHover };
163
161
  //# sourceMappingURL=inlayHintsHover.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/inlayHints/browser/inlayHintsHover.ts"],"names":[],"mappings":"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","file":"inlayHintsHover.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 { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IModelDecoration } from '../../../common/model.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { HoverAnchor, HoverForeignElementAnchor, IEditorHoverParticipant } from '../../hover/browser/hoverTypes.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';\nimport { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';\nimport { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { localize } from '../../../../nls.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { asCommandLink } from './inlayHints.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from '../../hover/browser/hoverOperation.js';\n\nclass InlayHintsHoverAnchor extends HoverForeignElementAnchor {\n\tconstructor(\n\t\treadonly part: RenderedInlayHintLabelPart,\n\t\towner: InlayHintsHover,\n\t\tinitialMousePosX: number | undefined,\n\t\tinitialMousePosY: number | undefined\n\t) {\n\t\tsuper(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);\n\t}\n}\n\nexport class InlayHintsHover extends MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic override readonly hoverOrdinal: number = 6;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageService languageService: ILanguageService,\n\t\t@IOpenerService openerService: IOpenerService,\n\t\t@IKeybindingService keybindingService: IKeybindingService,\n\t\t@IHoverService hoverService: IHoverService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t\t@ITextModelService private readonly _resolverService: ITextModelService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t\t@ICommandService commandService: ICommandService\n\t) {\n\t\tsuper(editor, languageService, openerService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);\n\t}\n\n\tsuggestHoverAnchor(mouseEvent: IEditorMouseEvent): HoverAnchor | null {\n\t\tconst controller = InlayHintsController.get(this._editor);\n\t\tif (!controller) {\n\t\t\treturn null;\n\t\t}\n\t\tif (mouseEvent.target.type !== MouseTargetType.CONTENT_TEXT) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = mouseEvent.target.detail.injectedText?.options;\n\t\tif (!(options instanceof ModelDecorationInjectedTextOptions && options.attachedData instanceof RenderedInlayHintLabelPart)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new InlayHintsHoverAnchor(options.attachedData, this, mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\toverride computeSync(): MarkdownHover[] {\n\t\treturn [];\n\t}\n\n\toverride computeAsync(anchor: HoverAnchor, _lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterableProducer<MarkdownHover> {\n\t\tif (!(anchor instanceof InlayHintsHoverAnchor)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\treturn new AsyncIterableProducer<MarkdownHover>(async executor => {\n\n\t\t\tconst { part } = anchor;\n\t\t\tawait part.item.resolve(token);\n\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// (1) Inlay Tooltip\n\t\t\tlet itemTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.item.hint.tooltip === 'string') {\n\t\t\t\titemTooltip = new MarkdownString().appendText(part.item.hint.tooltip);\n\t\t\t} else if (part.item.hint.tooltip) {\n\t\t\t\titemTooltip = part.item.hint.tooltip;\n\t\t\t}\n\t\t\tif (itemTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [itemTooltip], false, 0));\n\t\t\t}\n\t\t\t// (1.2) Inlay dbl-click gesture\n\t\t\tif (isNonEmptyArray(part.item.hint.textEdits)) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize('hint.dbl', \"Double-click to insert\"))], false, 10001));\n\t\t\t}\n\n\t\t\t// (2) Inlay Label Part Tooltip\n\t\t\tlet partTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.part.tooltip === 'string') {\n\t\t\t\tpartTooltip = new MarkdownString().appendText(part.part.tooltip);\n\t\t\t} else if (part.part.tooltip) {\n\t\t\t\tpartTooltip = part.part.tooltip;\n\t\t\t}\n\t\t\tif (partTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [partTooltip], false, 1));\n\t\t\t}\n\n\t\t\t// (2.2) Inlay Label Part Help Hover\n\t\t\tif (part.part.location || part.part.command) {\n\t\t\t\tlet linkHint: MarkdownString | undefined;\n\t\t\t\tconst useMetaKey = this._editor.getOption(EditorOption.multiCursorModifier) === 'altKey';\n\t\t\t\tconst kb = useMetaKey\n\t\t\t\t\t? platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.meta.mac', \"cmd + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.meta', \"ctrl + click\")\n\t\t\t\t\t: platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.alt.mac', \"option + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.alt', \"alt + click\");\n\n\t\t\t\tif (part.part.location && part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.defAndCommand', 'Go to Definition ({0}), right click for more', kb));\n\t\t\t\t} else if (part.part.location) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.def', 'Go to Definition ({0})', kb));\n\t\t\t\t} else if (part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString(`[${localize('hint.cmd', \"Execute Command\")}](${asCommandLink(part.part.command)} \"${part.part.command.title}\") (${kb})`, { isTrusted: true });\n\t\t\t\t}\n\t\t\t\tif (linkHint) {\n\t\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], false, 10000));\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// (3) Inlay Label Part Location tooltip\n\t\t\tconst iterable = this._resolveInlayHintLabelPartHover(part, token);\n\t\t\tfor await (const item of iterable) {\n\t\t\t\texecutor.emitOne(item);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async *_resolveInlayHintLabelPartHover(part: RenderedInlayHintLabelPart, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!part.part.location) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { uri, range } = part.part.location;\n\t\tconst ref = await this._resolverService.createModelReference(uri);\n\t\ttry {\n\t\t\tconst model = ref.object.textEditorModel;\n\t\t\tif (!this._languageFeaturesService.hoverProvider.has(model)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor await (const item of getHoverProviderResultsAsAsyncIterable(this._languageFeaturesService.hoverProvider, model, new Position(range.startLineNumber, range.startColumn), token)) {\n\t\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\t\tyield new MarkdownHover(this, part.item.anchor.range, item.hover.contents, false, 2 + item.ordinal);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tref.dispose();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/inlayHints/browser/inlayHintsHover.ts"],"names":[],"mappings":"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","file":"inlayHintsHover.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 { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IModelDecoration } from '../../../common/model.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { HoverAnchor, HoverForeignElementAnchor, IEditorHoverParticipant } from '../../hover/browser/hoverTypes.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';\nimport { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';\nimport { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { localize } from '../../../../nls.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { asCommandLink } from './inlayHints.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from '../../hover/browser/hoverOperation.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\n\nclass InlayHintsHoverAnchor extends HoverForeignElementAnchor {\n\tconstructor(\n\t\treadonly part: RenderedInlayHintLabelPart,\n\t\towner: InlayHintsHover,\n\t\tinitialMousePosX: number | undefined,\n\t\tinitialMousePosY: number | undefined\n\t) {\n\t\tsuper(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);\n\t}\n}\n\nexport class InlayHintsHover extends MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic override readonly hoverOrdinal: number = 6;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService markdownRendererService: IMarkdownRendererService,\n\t\t@IKeybindingService keybindingService: IKeybindingService,\n\t\t@IHoverService hoverService: IHoverService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t\t@ITextModelService private readonly _resolverService: ITextModelService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t\t@ICommandService commandService: ICommandService,\n\t) {\n\t\tsuper(editor, markdownRendererService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);\n\t}\n\n\tsuggestHoverAnchor(mouseEvent: IEditorMouseEvent): HoverAnchor | null {\n\t\tconst controller = InlayHintsController.get(this._editor);\n\t\tif (!controller) {\n\t\t\treturn null;\n\t\t}\n\t\tif (mouseEvent.target.type !== MouseTargetType.CONTENT_TEXT) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = mouseEvent.target.detail.injectedText?.options;\n\t\tif (!(options instanceof ModelDecorationInjectedTextOptions && options.attachedData instanceof RenderedInlayHintLabelPart)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new InlayHintsHoverAnchor(options.attachedData, this, mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\toverride computeSync(): MarkdownHover[] {\n\t\treturn [];\n\t}\n\n\toverride computeAsync(anchor: HoverAnchor, _lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterableProducer<MarkdownHover> {\n\t\tif (!(anchor instanceof InlayHintsHoverAnchor)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\treturn new AsyncIterableProducer<MarkdownHover>(async executor => {\n\n\t\t\tconst { part } = anchor;\n\t\t\tawait part.item.resolve(token);\n\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// (1) Inlay Tooltip\n\t\t\tlet itemTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.item.hint.tooltip === 'string') {\n\t\t\t\titemTooltip = new MarkdownString().appendText(part.item.hint.tooltip);\n\t\t\t} else if (part.item.hint.tooltip) {\n\t\t\t\titemTooltip = part.item.hint.tooltip;\n\t\t\t}\n\t\t\tif (itemTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [itemTooltip], false, 0));\n\t\t\t}\n\t\t\t// (1.2) Inlay dbl-click gesture\n\t\t\tif (isNonEmptyArray(part.item.hint.textEdits)) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize('hint.dbl', \"Double-click to insert\"))], false, 10001));\n\t\t\t}\n\n\t\t\t// (2) Inlay Label Part Tooltip\n\t\t\tlet partTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.part.tooltip === 'string') {\n\t\t\t\tpartTooltip = new MarkdownString().appendText(part.part.tooltip);\n\t\t\t} else if (part.part.tooltip) {\n\t\t\t\tpartTooltip = part.part.tooltip;\n\t\t\t}\n\t\t\tif (partTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [partTooltip], false, 1));\n\t\t\t}\n\n\t\t\t// (2.2) Inlay Label Part Help Hover\n\t\t\tif (part.part.location || part.part.command) {\n\t\t\t\tlet linkHint: MarkdownString | undefined;\n\t\t\t\tconst useMetaKey = this._editor.getOption(EditorOption.multiCursorModifier) === 'altKey';\n\t\t\t\tconst kb = useMetaKey\n\t\t\t\t\t? platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.meta.mac', \"cmd + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.meta', \"ctrl + click\")\n\t\t\t\t\t: platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.alt.mac', \"option + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.alt', \"alt + click\");\n\n\t\t\t\tif (part.part.location && part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.defAndCommand', 'Go to Definition ({0}), right click for more', kb));\n\t\t\t\t} else if (part.part.location) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.def', 'Go to Definition ({0})', kb));\n\t\t\t\t} else if (part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString(`[${localize('hint.cmd', \"Execute Command\")}](${asCommandLink(part.part.command)} \"${part.part.command.title}\") (${kb})`, { isTrusted: true });\n\t\t\t\t}\n\t\t\t\tif (linkHint) {\n\t\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], false, 10000));\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// (3) Inlay Label Part Location tooltip\n\t\t\tconst iterable = this._resolveInlayHintLabelPartHover(part, token);\n\t\t\tfor await (const item of iterable) {\n\t\t\t\texecutor.emitOne(item);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async *_resolveInlayHintLabelPartHover(part: RenderedInlayHintLabelPart, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!part.part.location) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { uri, range } = part.part.location;\n\t\tconst ref = await this._resolverService.createModelReference(uri);\n\t\ttry {\n\t\t\tconst model = ref.object.textEditorModel;\n\t\t\tif (!this._languageFeaturesService.hoverProvider.has(model)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor await (const item of getHoverProviderResultsAsAsyncIterable(this._languageFeaturesService.hoverProvider, model, new Position(range.startLineNumber, range.startColumn), token)) {\n\t\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\t\tyield new MarkdownHover(this, part.item.anchor.range, item.hover.contents, false, 2 + item.ordinal);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tref.dispose();\n\t\t}\n\t}\n}\n"]}
@@ -16,15 +16,13 @@ import { MarkdownString } from '../../../../../base/common/htmlContent.js';
16
16
  import { DisposableStore } from '../../../../../base/common/lifecycle.js';
17
17
  import { autorun, autorunWithStore, constObservable } from '../../../../../base/common/observable.js';
18
18
  import { Range } from '../../../../common/core/range.js';
19
- import { ILanguageService } from '../../../../common/languages/language.js';
20
19
  import { HoverForeignElementAnchor, RenderedHoverParts } from '../../../hover/browser/hoverTypes.js';
21
20
  import { InlineCompletionsController } from '../controller/inlineCompletionsController.js';
22
21
  import { InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';
23
- import { MarkdownRenderer } from '../../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
22
+ import { IMarkdownRendererService } from '../../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
24
23
  import * as nls from '../../../../../nls.js';
25
24
  import { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';
26
25
  import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
27
- import { IOpenerService } from '../../../../../platform/opener/common/opener.js';
28
26
  import { ITelemetryService } from '../../../../../platform/telemetry/common/telemetry.js';
29
27
  import { GhostTextView } from '../view/ghostText/ghostTextView.js';
30
28
  export class InlineCompletionsHover {
@@ -40,13 +38,12 @@ export class InlineCompletionsHover {
40
38
  }
41
39
  }
42
40
  let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant {
43
- constructor(_editor, _languageService, _openerService, accessibilityService, _instantiationService, _telemetryService) {
41
+ constructor(_editor, accessibilityService, _instantiationService, _telemetryService, _markdownRendererService) {
44
42
  this._editor = _editor;
45
- this._languageService = _languageService;
46
- this._openerService = _openerService;
47
43
  this.accessibilityService = accessibilityService;
48
44
  this._instantiationService = _instantiationService;
49
45
  this._telemetryService = _telemetryService;
46
+ this._markdownRendererService = _markdownRendererService;
50
47
  this.hoverOrdinal = 4;
51
48
  }
52
49
  suggestHoverAnchor(mouseEvent) {
@@ -122,10 +119,10 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
122
119
  const $ = dom.$;
123
120
  const markdownHoverElement = $('div.hover-row.markdown-hover');
124
121
  const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents', { ['aria-live']: 'assertive' }));
125
- const renderer = new MarkdownRenderer({ editor: this._editor }, this._languageService, this._openerService);
126
122
  const render = (code) => {
127
123
  const inlineSuggestionAvailable = nls.localize(1197, "Suggestion:");
128
- const renderedContents = disposables.add(renderer.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {
124
+ const renderedContents = disposables.add(this._markdownRendererService.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {
125
+ editor: this._editor,
129
126
  asyncRenderCallback: () => {
130
127
  hoverContentsElement.className = 'hover-contents code-hover-contents';
131
128
  context.onContentsChanged();
@@ -149,11 +146,10 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
149
146
  }
150
147
  };
151
148
  InlineCompletionsHoverParticipant = __decorate([
152
- __param(1, ILanguageService),
153
- __param(2, IOpenerService),
154
- __param(3, IAccessibilityService),
155
- __param(4, IInstantiationService),
156
- __param(5, ITelemetryService)
149
+ __param(1, IAccessibilityService),
150
+ __param(2, IInstantiationService),
151
+ __param(3, ITelemetryService),
152
+ __param(4, IMarkdownRendererService)
157
153
  ], InlineCompletionsHoverParticipant);
158
154
  export { InlineCompletionsHoverParticipant };
159
155
  //# sourceMappingURL=hoverParticipant.js.map