monaco-editor-core 0.55.0-dev-20251009 → 0.55.0-dev-20251010
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.
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/history.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/history.js.map +1 -1
- package/esm/vs/base/common/worker/webWorker.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +6 -11
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/{markdownRenderer.js → editorMarkdownCodeBlockRenderer.js} +20 -59
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/editorMarkdownCodeBlockRenderer.js.map +1 -0
- package/esm/vs/editor/common/config/editorConfiguration.js.map +1 -1
- package/esm/vs/editor/common/config/editorZoom.js.map +1 -1
- package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
- package/esm/vs/editor/common/editorCommon.js.map +1 -1
- package/esm/vs/editor/common/languages/language.js.map +1 -1
- package/esm/vs/editor/common/languages/languageConfigurationRegistry.js.map +1 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/textModelBracketPairs.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +2 -2
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +5 -4
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +10 -5
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/platform/actions/browser/actionViewItemService.js.map +1 -1
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +16 -13
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js +1 -0
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/keybinding/common/keybinding.js.map +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/markdown/browser/markdownRenderer.js +72 -0
- package/esm/vs/platform/markdown/browser/markdownRenderer.js.map +1 -0
- package/esm/vs/platform/quickinput/browser/quickInput.js +20 -10
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputController.js +1 -0
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
- package/esm/vs/platform/workspace/common/workspaceTrust.js.map +1 -1
- package/monaco.d.ts +5 -4
- package/package.json +2 -2
- package/version.txt +1 -1
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +0 -1
|
@@ -16,7 +16,7 @@ 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 { IMarkdownRendererService } from '
|
|
19
|
+
import { IMarkdownRendererService } from '../../../../platform/markdown/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
22
|
import { RenderedHoverParts } from './hoverTypes.js';
|
|
@@ -367,7 +367,7 @@ function renderMarkdown(editor, markdownHover, markdownRendererService, onFinish
|
|
|
367
367
|
const markdownHoverElement = $('div.markdown-hover');
|
|
368
368
|
const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));
|
|
369
369
|
const renderedContents = disposables.add(markdownRendererService.render(markdownString, {
|
|
370
|
-
editor,
|
|
370
|
+
context: editor,
|
|
371
371
|
asyncRenderCallback: () => {
|
|
372
372
|
hoverContentsElement.className = 'hover-contents code-hover-contents';
|
|
373
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 { 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"]}
|
|
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 '../../../../platform/markdown/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\tcontext: editor,\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"]}
|
|
@@ -29,7 +29,7 @@ import { isNonEmptyArray } from '../../../../base/common/arrays.js';
|
|
|
29
29
|
import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';
|
|
30
30
|
import { IHoverService } from '../../../../platform/hover/browser/hover.js';
|
|
31
31
|
import { ICommandService } from '../../../../platform/commands/common/commands.js';
|
|
32
|
-
import { IMarkdownRendererService } from '
|
|
32
|
+
import { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';
|
|
33
33
|
class InlayHintsHoverAnchor extends HoverForeignElementAnchor {
|
|
34
34
|
constructor(part, owner, initialMousePosX, initialMousePosY) {
|
|
35
35
|
super(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);
|
|
@@ -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 { 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"]}
|
|
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 '../../../../platform/markdown/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"]}
|
|
@@ -19,7 +19,7 @@ import { Range } from '../../../../common/core/range.js';
|
|
|
19
19
|
import { HoverForeignElementAnchor, RenderedHoverParts } from '../../../hover/browser/hoverTypes.js';
|
|
20
20
|
import { InlineCompletionsController } from '../controller/inlineCompletionsController.js';
|
|
21
21
|
import { InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';
|
|
22
|
-
import { IMarkdownRendererService } from '
|
|
22
|
+
import { IMarkdownRendererService } from '../../../../../platform/markdown/browser/markdownRenderer.js';
|
|
23
23
|
import * as nls from '../../../../../nls.js';
|
|
24
24
|
import { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';
|
|
25
25
|
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
|
|
@@ -122,7 +122,7 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
|
|
|
122
122
|
const render = (code) => {
|
|
123
123
|
const inlineSuggestionAvailable = nls.localize(1197, "Suggestion:");
|
|
124
124
|
const renderedContents = disposables.add(this._markdownRendererService.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {
|
|
125
|
-
|
|
125
|
+
context: this._editor,
|
|
126
126
|
asyncRenderCallback: () => {
|
|
127
127
|
hoverContentsElement.className = 'hover-contents code-hover-contents';
|
|
128
128
|
context.onContentsChanged();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.ts"],"names":[],"mappings":"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","file":"hoverParticipant.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 { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { DisposableStore, IDisposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, constObservable } from '../../../../../base/common/observable.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { IModelDecoration } from '../../../../common/model.js';\nimport { HoverAnchor, HoverAnchorType, HoverForeignElementAnchor, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from '../../../hover/browser/hoverTypes.js';\nimport { InlineCompletionsController } from '../controller/inlineCompletionsController.js';\nimport { InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';\nimport { IMarkdownRendererService } from '../../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport * as nls from '../../../../../nls.js';\nimport { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { ITelemetryService } from '../../../../../platform/telemetry/common/telemetry.js';\nimport { GhostTextView } from '../view/ghostText/ghostTextView.js';\n\nexport class InlineCompletionsHover implements IHoverPart {\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<InlineCompletionsHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly controller: InlineCompletionsController\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\nexport class InlineCompletionsHoverParticipant implements IEditorHoverParticipant<InlineCompletionsHover> {\n\n\tpublic readonly hoverOrdinal: number = 4;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IAccessibilityService private readonly accessibilityService: IAccessibilityService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@ITelemetryService private readonly _telemetryService: ITelemetryService,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t}\n\n\tsuggestHoverAnchor(mouseEvent: IEditorMouseEvent): HoverAnchor | null {\n\t\tconst controller = InlineCompletionsController.get(this._editor);\n\t\tif (!controller) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.CONTENT_VIEW_ZONE) {\n\t\t\t// handle the case where the mouse is over the view zone\n\t\t\tconst viewZoneData = target.detail;\n\t\t\tif (controller.shouldShowHoverAtViewZone(viewZoneData.viewZoneId)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, Range.fromPositions(this._editor.getModel()!.validatePosition(viewZoneData.positionBefore || viewZoneData.position)), mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\tif (target.type === MouseTargetType.CONTENT_EMPTY) {\n\t\t\t// handle the case where the mouse is over the empty portion of a line following ghost text\n\t\t\tif (controller.shouldShowHoverAt(target.range)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\tif (target.type === MouseTargetType.CONTENT_TEXT) {\n\t\t\t// handle the case where the mouse is directly over ghost text\n\t\t\tconst mightBeForeignElement = target.detail.mightBeForeignElement;\n\t\t\tif (mightBeForeignElement && controller.shouldShowHoverAt(target.range)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\tif (target.type === MouseTargetType.CONTENT_WIDGET && target.element) {\n\t\t\tconst ctx = GhostTextView.getWarningWidgetContext(target.element);\n\t\t\tif (ctx && controller.shouldShowHoverAt(ctx.range)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, ctx.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tcomputeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): InlineCompletionsHover[] {\n\t\tif (this._editor.getOption(EditorOption.inlineSuggest).showToolbar !== 'onHover') {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst controller = InlineCompletionsController.get(this._editor);\n\t\tif (controller && controller.shouldShowHoverAt(anchor.range)) {\n\t\t\treturn [new InlineCompletionsHover(this, anchor.range, controller)];\n\t\t}\n\t\treturn [];\n\t}\n\n\trenderHoverParts(context: IEditorHoverRenderContext, hoverParts: InlineCompletionsHover[]): IRenderedHoverParts<InlineCompletionsHover> {\n\t\tconst disposables = new DisposableStore();\n\t\tconst part = hoverParts[0];\n\n\t\tthis._telemetryService.publicLog2<{}, {\n\t\t\towner: 'hediet';\n\t\t\tcomment: 'This event tracks whenever an inline completion hover is shown.';\n\t\t}>('inlineCompletionHover.shown');\n\n\t\tif (this.accessibilityService.isScreenReaderOptimized() && !this._editor.getOption(EditorOption.screenReaderAnnounceInlineSuggestion)) {\n\t\t\tdisposables.add(this.renderScreenReaderText(context, part));\n\t\t}\n\n\t\tconst model = part.controller.model.get()!;\n\t\tconst widgetNode: HTMLElement = document.createElement('div');\n\t\tcontext.fragment.appendChild(widgetNode);\n\n\t\tdisposables.add(autorunWithStore((reader, store) => {\n\t\t\tconst w = store.add(this._instantiationService.createInstance(\n\t\t\t\tInlineSuggestionHintsContentWidget.hot.read(reader),\n\t\t\t\tthis._editor,\n\t\t\t\tfalse,\n\t\t\t\tconstObservable(null),\n\t\t\t\tmodel.selectedInlineCompletionIndex,\n\t\t\t\tmodel.inlineCompletionsCount,\n\t\t\t\tmodel.activeCommands,\n\t\t\t\tmodel.warning,\n\t\t\t\t() => {\n\t\t\t\t\tcontext.onContentsChanged();\n\t\t\t\t},\n\t\t\t));\n\t\t\twidgetNode.replaceChildren(w.getDomNode());\n\t\t}));\n\n\t\tmodel.triggerExplicitly();\n\n\t\tconst renderedHoverPart: IRenderedHoverPart<InlineCompletionsHover> = {\n\t\t\thoverPart: part,\n\t\t\thoverElement: widgetNode,\n\t\t\tdispose() { disposables.dispose(); }\n\t\t};\n\t\treturn new RenderedHoverParts([renderedHoverPart]);\n\t}\n\n\tprivate renderScreenReaderText(context: IEditorHoverRenderContext, part: InlineCompletionsHover): IDisposable {\n\t\tconst disposables = new DisposableStore();\n\t\tconst $ = dom.$;\n\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents', { ['aria-live']: 'assertive' }));\n\t\tconst render = (code: string) => {\n\t\t\tconst inlineSuggestionAvailable = nls.localize('inlineSuggestionFollows', \"Suggestion:\");\n\t\t\tconst renderedContents = disposables.add(this._markdownRendererService.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {\n\t\t\t\teditor: this._editor,\n\t\t\t\tasyncRenderCallback: () => {\n\t\t\t\t\thoverContentsElement.className = 'hover-contents code-hover-contents';\n\t\t\t\t\tcontext.onContentsChanged();\n\t\t\t\t}\n\t\t\t}));\n\t\t\thoverContentsElement.replaceChildren(renderedContents.element);\n\t\t};\n\n\t\tdisposables.add(autorun(reader => {\n\t\t\t/** @description update hover */\n\t\t\tconst ghostText = part.controller.model.read(reader)?.primaryGhostText.read(reader);\n\t\t\tif (ghostText) {\n\t\t\t\tconst lineText = this._editor.getModel()!.getLineContent(ghostText.lineNumber);\n\t\t\t\trender(ghostText.renderForScreenReader(lineText));\n\t\t\t} else {\n\t\t\t\tdom.reset(hoverContentsElement);\n\t\t\t}\n\t\t}));\n\n\t\tcontext.fragment.appendChild(markdownHoverElement);\n\t\treturn disposables;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAe,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAGtG,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAgC,yBAAyB,EAA2G,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC5O,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,OAAO,sBAAsB;IAClC,YACiB,KAAsD,EACtD,KAAY,EACZ,UAAuC;QAFvC,UAAK,GAAL,KAAK,CAAiD;QACtD,UAAK,GAAL,KAAK,CAAO;QACZ,eAAU,GAAV,UAAU,CAA6B;IACpD,CAAC;IAEE,qBAAqB,CAAC,MAAmB;QAC/C,OAAO,CACN,MAAM,CAAC,IAAI,kCAA0B;eAClC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW;eAClD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CACjD,CAAC;IACH,CAAC;CACD;AAEM,IAAM,iCAAiC,GAAvC,MAAM,iCAAiC;IAI7C,YACkB,OAAoB,EACd,oBAA4D,EAC5D,qBAA6D,EACjE,iBAAqD,EAC9C,wBAAmE;QAJ5E,YAAO,GAAP,OAAO,CAAa;QACG,yBAAoB,GAApB,oBAAoB,CAAuB;QAC3C,0BAAqB,GAArB,qBAAqB,CAAuB;QAChD,sBAAiB,GAAjB,iBAAiB,CAAmB;QAC7B,6BAAwB,GAAxB,wBAAwB,CAA0B;QAP9E,iBAAY,GAAW,CAAC,CAAC;IASzC,CAAC;IAED,kBAAkB,CAAC,UAA6B;QAC/C,MAAM,UAAU,GAAG,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,8CAAsC,EAAE,CAAC;YACvD,wDAAwD;YACxD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;YACnC,IAAI,UAAU,CAAC,yBAAyB,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnE,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7N,CAAC;QACF,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,0CAAkC,EAAE,CAAC;YACnD,2FAA2F;YAC3F,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrH,CAAC;QACF,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,yCAAiC,EAAE,CAAC;YAClD,8DAA8D;YAC9D,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAClE,IAAI,qBAAqB,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzE,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrH,CAAC;QACF,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,2CAAmC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACtE,MAAM,GAAG,GAAG,aAAa,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,GAAG,IAAI,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClH,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,WAAW,CAAC,MAAmB,EAAE,eAAmC;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,qCAA4B,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAClF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,UAAU,GAAG,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,UAAU,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,gBAAgB,CAAC,OAAkC,EAAE,UAAoC;QACxF,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAG9B,6BAA6B,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,4DAAmD,EAAE,CAAC;YACvI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC;QAC3C,MAAM,UAAU,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEzC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAClD,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAC5D,kCAAkC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EACnD,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,eAAe,CAAC,IAAI,CAAC,EACrB,KAAK,CAAC,6BAA6B,EACnC,KAAK,CAAC,sBAAsB,EAC5B,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,OAAO,EACb,GAAG,EAAE;gBACJ,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC7B,CAAC,CACD,CAAC,CAAC;YACH,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,CAAC;QAEJ,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,MAAM,iBAAiB,GAA+C;YACrE,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,UAAU;YACxB,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SACpC,CAAC;QACF,OAAO,IAAI,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,sBAAsB,CAAC,OAAkC,EAAE,IAA4B;QAC9F,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAChB,MAAM,oBAAoB,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAC/D,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACvH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC/B,MAAM,yBAAyB,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAyB,EAAE,aAAa,CAAC,CAAC;YACzF,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACvK,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,mBAAmB,EAAE,GAAG,EAAE;oBACzB,oBAAoB,CAAC,SAAS,GAAG,oCAAoC,CAAC;oBACtE,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,CAAC;aACD,CAAC,CAAC,CAAC;YACJ,oBAAoB,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAChC,gCAAgC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpF,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC/E,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACjC,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC;IACpB,CAAC;CACD,CAAA;AAxIY,iCAAiC;IAM3C,WAAA,qBAAqB,CAAA;IACrB,WAAA,qBAAqB,CAAA;IACrB,WAAA,iBAAiB,CAAA;IACjB,WAAA,wBAAwB,CAAA;GATd,iCAAiC,CAwI7C","file":"hoverParticipant.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 { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { DisposableStore, IDisposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, constObservable } from '../../../../../base/common/observable.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../../common/config/editorOptions.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { IModelDecoration } from '../../../../common/model.js';\nimport { HoverAnchor, HoverAnchorType, HoverForeignElementAnchor, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from '../../../hover/browser/hoverTypes.js';\nimport { InlineCompletionsController } from '../controller/inlineCompletionsController.js';\nimport { InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';\nimport { IMarkdownRendererService } from '../../../../../platform/markdown/browser/markdownRenderer.js';\nimport * as nls from '../../../../../nls.js';\nimport { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { ITelemetryService } from '../../../../../platform/telemetry/common/telemetry.js';\nimport { GhostTextView } from '../view/ghostText/ghostTextView.js';\n\nexport class InlineCompletionsHover implements IHoverPart {\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<InlineCompletionsHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly controller: InlineCompletionsController\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\nexport class InlineCompletionsHoverParticipant implements IEditorHoverParticipant<InlineCompletionsHover> {\n\n\tpublic readonly hoverOrdinal: number = 4;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IAccessibilityService private readonly accessibilityService: IAccessibilityService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@ITelemetryService private readonly _telemetryService: ITelemetryService,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t}\n\n\tsuggestHoverAnchor(mouseEvent: IEditorMouseEvent): HoverAnchor | null {\n\t\tconst controller = InlineCompletionsController.get(this._editor);\n\t\tif (!controller) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.CONTENT_VIEW_ZONE) {\n\t\t\t// handle the case where the mouse is over the view zone\n\t\t\tconst viewZoneData = target.detail;\n\t\t\tif (controller.shouldShowHoverAtViewZone(viewZoneData.viewZoneId)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, Range.fromPositions(this._editor.getModel()!.validatePosition(viewZoneData.positionBefore || viewZoneData.position)), mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\tif (target.type === MouseTargetType.CONTENT_EMPTY) {\n\t\t\t// handle the case where the mouse is over the empty portion of a line following ghost text\n\t\t\tif (controller.shouldShowHoverAt(target.range)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\tif (target.type === MouseTargetType.CONTENT_TEXT) {\n\t\t\t// handle the case where the mouse is directly over ghost text\n\t\t\tconst mightBeForeignElement = target.detail.mightBeForeignElement;\n\t\t\tif (mightBeForeignElement && controller.shouldShowHoverAt(target.range)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\tif (target.type === MouseTargetType.CONTENT_WIDGET && target.element) {\n\t\t\tconst ctx = GhostTextView.getWarningWidgetContext(target.element);\n\t\t\tif (ctx && controller.shouldShowHoverAt(ctx.range)) {\n\t\t\t\treturn new HoverForeignElementAnchor(1000, this, ctx.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tcomputeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): InlineCompletionsHover[] {\n\t\tif (this._editor.getOption(EditorOption.inlineSuggest).showToolbar !== 'onHover') {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst controller = InlineCompletionsController.get(this._editor);\n\t\tif (controller && controller.shouldShowHoverAt(anchor.range)) {\n\t\t\treturn [new InlineCompletionsHover(this, anchor.range, controller)];\n\t\t}\n\t\treturn [];\n\t}\n\n\trenderHoverParts(context: IEditorHoverRenderContext, hoverParts: InlineCompletionsHover[]): IRenderedHoverParts<InlineCompletionsHover> {\n\t\tconst disposables = new DisposableStore();\n\t\tconst part = hoverParts[0];\n\n\t\tthis._telemetryService.publicLog2<{}, {\n\t\t\towner: 'hediet';\n\t\t\tcomment: 'This event tracks whenever an inline completion hover is shown.';\n\t\t}>('inlineCompletionHover.shown');\n\n\t\tif (this.accessibilityService.isScreenReaderOptimized() && !this._editor.getOption(EditorOption.screenReaderAnnounceInlineSuggestion)) {\n\t\t\tdisposables.add(this.renderScreenReaderText(context, part));\n\t\t}\n\n\t\tconst model = part.controller.model.get()!;\n\t\tconst widgetNode: HTMLElement = document.createElement('div');\n\t\tcontext.fragment.appendChild(widgetNode);\n\n\t\tdisposables.add(autorunWithStore((reader, store) => {\n\t\t\tconst w = store.add(this._instantiationService.createInstance(\n\t\t\t\tInlineSuggestionHintsContentWidget.hot.read(reader),\n\t\t\t\tthis._editor,\n\t\t\t\tfalse,\n\t\t\t\tconstObservable(null),\n\t\t\t\tmodel.selectedInlineCompletionIndex,\n\t\t\t\tmodel.inlineCompletionsCount,\n\t\t\t\tmodel.activeCommands,\n\t\t\t\tmodel.warning,\n\t\t\t\t() => {\n\t\t\t\t\tcontext.onContentsChanged();\n\t\t\t\t},\n\t\t\t));\n\t\t\twidgetNode.replaceChildren(w.getDomNode());\n\t\t}));\n\n\t\tmodel.triggerExplicitly();\n\n\t\tconst renderedHoverPart: IRenderedHoverPart<InlineCompletionsHover> = {\n\t\t\thoverPart: part,\n\t\t\thoverElement: widgetNode,\n\t\t\tdispose() { disposables.dispose(); }\n\t\t};\n\t\treturn new RenderedHoverParts([renderedHoverPart]);\n\t}\n\n\tprivate renderScreenReaderText(context: IEditorHoverRenderContext, part: InlineCompletionsHover): IDisposable {\n\t\tconst disposables = new DisposableStore();\n\t\tconst $ = dom.$;\n\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents', { ['aria-live']: 'assertive' }));\n\t\tconst render = (code: string) => {\n\t\t\tconst inlineSuggestionAvailable = nls.localize('inlineSuggestionFollows', \"Suggestion:\");\n\t\t\tconst renderedContents = disposables.add(this._markdownRendererService.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {\n\t\t\t\tcontext: this._editor,\n\t\t\t\tasyncRenderCallback: () => {\n\t\t\t\t\thoverContentsElement.className = 'hover-contents code-hover-contents';\n\t\t\t\t\tcontext.onContentsChanged();\n\t\t\t\t}\n\t\t\t}));\n\t\t\thoverContentsElement.replaceChildren(renderedContents.element);\n\t\t};\n\n\t\tdisposables.add(autorun(reader => {\n\t\t\t/** @description update hover */\n\t\t\tconst ghostText = part.controller.model.read(reader)?.primaryGhostText.read(reader);\n\t\t\tif (ghostText) {\n\t\t\t\tconst lineText = this._editor.getModel()!.getLineContent(ghostText.lineNumber);\n\t\t\t\trender(ghostText.renderForScreenReader(lineText));\n\t\t\t} else {\n\t\t\t\tdom.reset(hoverContentsElement);\n\t\t\t}\n\t\t}));\n\n\t\tcontext.fragment.appendChild(markdownHoverElement);\n\t\treturn disposables;\n\t}\n}\n"]}
|
|
@@ -20,7 +20,7 @@ import { DisposableStore, MutableDisposable } from '../../../../base/common/life
|
|
|
20
20
|
import './messageController.css';
|
|
21
21
|
import { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';
|
|
22
22
|
import { Range } from '../../../common/core/range.js';
|
|
23
|
-
import { openLinkFromMarkdown } from '
|
|
23
|
+
import { openLinkFromMarkdown } from '../../../../platform/markdown/browser/markdownRenderer.js';
|
|
24
24
|
import * as nls from '../../../../nls.js';
|
|
25
25
|
import { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';
|
|
26
26
|
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/message/browser/messageController.ts"],"names":[],"mappings":"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","file":"messageController.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 { renderMarkdown } from '../../../../base/browser/markdownRenderer.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { IMarkdownString, isMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport './messageController.css';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorCommand, EditorContributionInstantiation, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IPosition } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { PositionAffinity } from '../../../common/model.js';\nimport { openLinkFromMarkdown } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport * as dom from '../../../../base/browser/dom.js';\n\nexport class MessageController implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.messageController';\n\n\tstatic readonly MESSAGE_VISIBLE = new RawContextKey<boolean>('messageVisible', false, nls.localize('messageVisible', 'Whether the editor is currently showing an inline message'));\n\n\tstatic get(editor: ICodeEditor): MessageController | null {\n\t\treturn editor.getContribution<MessageController>(MessageController.ID);\n\t}\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _visible: IContextKey<boolean>;\n\tprivate readonly _messageWidget = new MutableDisposable<MessageWidget>();\n\tprivate readonly _messageListeners = new DisposableStore();\n\tprivate _mouseOverMessage: boolean = false;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IOpenerService private readonly _openerService: IOpenerService\n\t) {\n\n\t\tthis._editor = editor;\n\t\tthis._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService);\n\t}\n\n\tdispose(): void {\n\t\tthis._messageListeners.dispose();\n\t\tthis._messageWidget.dispose();\n\t\tthis._visible.reset();\n\t}\n\n\tshowMessage(message: IMarkdownString | string, position: IPosition): void {\n\n\t\talert(isMarkdownString(message) ? message.value : message);\n\n\t\tthis._visible.set(true);\n\t\tthis._messageWidget.clear();\n\t\tthis._messageListeners.clear();\n\n\t\tif (isMarkdownString(message)) {\n\t\t\tconst renderedMessage = this._messageListeners.add(renderMarkdown(message, {\n\t\t\t\tactionHandler: (url, mdStr) => {\n\t\t\t\t\tthis.closeMessage();\n\t\t\t\t\topenLinkFromMarkdown(this._openerService, url, mdStr.isTrusted);\n\t\t\t\t},\n\t\t\t}));\n\t\t\tthis._messageWidget.value = new MessageWidget(this._editor, position, renderedMessage.element);\n\t\t} else {\n\t\t\tthis._messageWidget.value = new MessageWidget(this._editor, position, message);\n\t\t}\n\n\t\t// close on blur (debounced to allow to tab into the message), cursor, model change, dispose\n\t\tthis._messageListeners.add(Event.debounce(this._editor.onDidBlurEditorText, (last, event) => event, 0)(() => {\n\t\t\tif (this._mouseOverMessage) {\n\t\t\t\treturn; // override when mouse over message\n\t\t\t}\n\n\t\t\tif (this._messageWidget.value && dom.isAncestor(dom.getActiveElement(), this._messageWidget.value.getDomNode())) {\n\t\t\t\treturn; // override when focus is inside the message\n\t\t\t}\n\n\t\t\tthis.closeMessage();\n\t\t}\n\t\t));\n\t\tthis._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage()));\n\t\tthis._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage()));\n\t\tthis._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage()));\n\t\tthis._messageListeners.add(dom.addDisposableListener(this._messageWidget.value.getDomNode(), dom.EventType.MOUSE_ENTER, () => this._mouseOverMessage = true, true));\n\t\tthis._messageListeners.add(dom.addDisposableListener(this._messageWidget.value.getDomNode(), dom.EventType.MOUSE_LEAVE, () => this._mouseOverMessage = false, true));\n\n\t\t// close on mouse move\n\t\tlet bounds: Range;\n\t\tthis._messageListeners.add(this._editor.onMouseMove(e => {\n\t\t\t// outside the text area\n\t\t\tif (!e.target.position) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!bounds) {\n\t\t\t\t// define bounding box around position and first mouse occurance\n\t\t\t\tbounds = new Range(position.lineNumber - 3, 1, e.target.position.lineNumber + 3, 1);\n\t\t\t} else if (!bounds.containsPosition(e.target.position)) {\n\t\t\t\t// check if position is still in bounds\n\t\t\t\tthis.closeMessage();\n\t\t\t}\n\t\t}));\n\t}\n\n\tcloseMessage(): void {\n\t\tthis._visible.reset();\n\t\tthis._messageListeners.clear();\n\t\tif (this._messageWidget.value) {\n\t\t\tthis._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value));\n\t\t}\n\t}\n}\n\nconst MessageCommand = EditorCommand.bindToContribution<MessageController>(MessageController.get);\n\n\nregisterEditorCommand(new MessageCommand({\n\tid: 'leaveEditorMessage',\n\tprecondition: MessageController.MESSAGE_VISIBLE,\n\thandler: c => c.closeMessage(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 30,\n\t\tprimary: KeyCode.Escape\n\t}\n}));\n\nclass MessageWidget implements IContentWidget {\n\n\t// Editor.IContentWidget.allowEditorOverflow\n\treadonly allowEditorOverflow = true;\n\treadonly suppressMouseDown = false;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _position: IPosition;\n\tprivate readonly _domNode: HTMLDivElement;\n\n\tstatic fadeOut(messageWidget: MessageWidget): IDisposable {\n\t\tconst dispose = () => {\n\t\t\tmessageWidget.dispose();\n\t\t\tclearTimeout(handle);\n\t\t\tmessageWidget.getDomNode().removeEventListener('animationend', dispose);\n\t\t};\n\t\tconst handle = setTimeout(dispose, 110);\n\t\tmessageWidget.getDomNode().addEventListener('animationend', dispose);\n\t\tmessageWidget.getDomNode().classList.add('fadeOut');\n\t\treturn { dispose };\n\t}\n\n\tconstructor(editor: ICodeEditor, { lineNumber, column }: IPosition, text: HTMLElement | string) {\n\n\t\tthis._editor = editor;\n\t\tthis._editor.revealLinesInCenterIfOutsideViewport(lineNumber, lineNumber, ScrollType.Smooth);\n\t\tthis._position = { lineNumber, column };\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.classList.add('monaco-editor-overlaymessage');\n\t\tthis._domNode.style.marginLeft = '-6px';\n\n\t\tconst anchorTop = document.createElement('div');\n\t\tanchorTop.classList.add('anchor', 'top');\n\t\tthis._domNode.appendChild(anchorTop);\n\n\t\tconst message = document.createElement('div');\n\t\tif (typeof text === 'string') {\n\t\t\tmessage.classList.add('message');\n\t\t\tmessage.textContent = text;\n\t\t} else {\n\t\t\ttext.classList.add('message');\n\t\t\tmessage.appendChild(text);\n\t\t}\n\t\tthis._domNode.appendChild(message);\n\n\t\tconst anchorBottom = document.createElement('div');\n\t\tanchorBottom.classList.add('anchor', 'below');\n\t\tthis._domNode.appendChild(anchorBottom);\n\n\t\tthis._editor.addContentWidget(this);\n\t\tthis._domNode.classList.add('fadeIn');\n\t}\n\n\tdispose() {\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn 'messageoverlay';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this._domNode;\n\t}\n\n\tgetPosition(): IContentWidgetPosition {\n\t\treturn {\n\t\t\tposition: this._position,\n\t\t\tpreference: [\n\t\t\t\tContentWidgetPositionPreference.ABOVE,\n\t\t\t\tContentWidgetPositionPreference.BELOW,\n\t\t\t],\n\t\t\tpositionAffinity: PositionAffinity.Right,\n\t\t};\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\tthis._domNode.classList.toggle('below', position === ContentWidgetPositionPreference.BELOW);\n\t}\n\n}\n\nregisterEditorContribution(MessageController.ID, MessageController, EditorContributionInstantiation.Lazy);\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/message/browser/messageController.ts"],"names":[],"mappings":"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","file":"messageController.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 { renderMarkdown } from '../../../../base/browser/markdownRenderer.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { IMarkdownString, isMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport './messageController.css';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorCommand, EditorContributionInstantiation, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IPosition } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { PositionAffinity } from '../../../common/model.js';\nimport { openLinkFromMarkdown } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport * as dom from '../../../../base/browser/dom.js';\n\nexport class MessageController implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.messageController';\n\n\tstatic readonly MESSAGE_VISIBLE = new RawContextKey<boolean>('messageVisible', false, nls.localize('messageVisible', 'Whether the editor is currently showing an inline message'));\n\n\tstatic get(editor: ICodeEditor): MessageController | null {\n\t\treturn editor.getContribution<MessageController>(MessageController.ID);\n\t}\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _visible: IContextKey<boolean>;\n\tprivate readonly _messageWidget = new MutableDisposable<MessageWidget>();\n\tprivate readonly _messageListeners = new DisposableStore();\n\tprivate _mouseOverMessage: boolean = false;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IOpenerService private readonly _openerService: IOpenerService\n\t) {\n\n\t\tthis._editor = editor;\n\t\tthis._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService);\n\t}\n\n\tdispose(): void {\n\t\tthis._messageListeners.dispose();\n\t\tthis._messageWidget.dispose();\n\t\tthis._visible.reset();\n\t}\n\n\tshowMessage(message: IMarkdownString | string, position: IPosition): void {\n\n\t\talert(isMarkdownString(message) ? message.value : message);\n\n\t\tthis._visible.set(true);\n\t\tthis._messageWidget.clear();\n\t\tthis._messageListeners.clear();\n\n\t\tif (isMarkdownString(message)) {\n\t\t\tconst renderedMessage = this._messageListeners.add(renderMarkdown(message, {\n\t\t\t\tactionHandler: (url, mdStr) => {\n\t\t\t\t\tthis.closeMessage();\n\t\t\t\t\topenLinkFromMarkdown(this._openerService, url, mdStr.isTrusted);\n\t\t\t\t},\n\t\t\t}));\n\t\t\tthis._messageWidget.value = new MessageWidget(this._editor, position, renderedMessage.element);\n\t\t} else {\n\t\t\tthis._messageWidget.value = new MessageWidget(this._editor, position, message);\n\t\t}\n\n\t\t// close on blur (debounced to allow to tab into the message), cursor, model change, dispose\n\t\tthis._messageListeners.add(Event.debounce(this._editor.onDidBlurEditorText, (last, event) => event, 0)(() => {\n\t\t\tif (this._mouseOverMessage) {\n\t\t\t\treturn; // override when mouse over message\n\t\t\t}\n\n\t\t\tif (this._messageWidget.value && dom.isAncestor(dom.getActiveElement(), this._messageWidget.value.getDomNode())) {\n\t\t\t\treturn; // override when focus is inside the message\n\t\t\t}\n\n\t\t\tthis.closeMessage();\n\t\t}\n\t\t));\n\t\tthis._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage()));\n\t\tthis._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage()));\n\t\tthis._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage()));\n\t\tthis._messageListeners.add(dom.addDisposableListener(this._messageWidget.value.getDomNode(), dom.EventType.MOUSE_ENTER, () => this._mouseOverMessage = true, true));\n\t\tthis._messageListeners.add(dom.addDisposableListener(this._messageWidget.value.getDomNode(), dom.EventType.MOUSE_LEAVE, () => this._mouseOverMessage = false, true));\n\n\t\t// close on mouse move\n\t\tlet bounds: Range;\n\t\tthis._messageListeners.add(this._editor.onMouseMove(e => {\n\t\t\t// outside the text area\n\t\t\tif (!e.target.position) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!bounds) {\n\t\t\t\t// define bounding box around position and first mouse occurance\n\t\t\t\tbounds = new Range(position.lineNumber - 3, 1, e.target.position.lineNumber + 3, 1);\n\t\t\t} else if (!bounds.containsPosition(e.target.position)) {\n\t\t\t\t// check if position is still in bounds\n\t\t\t\tthis.closeMessage();\n\t\t\t}\n\t\t}));\n\t}\n\n\tcloseMessage(): void {\n\t\tthis._visible.reset();\n\t\tthis._messageListeners.clear();\n\t\tif (this._messageWidget.value) {\n\t\t\tthis._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value));\n\t\t}\n\t}\n}\n\nconst MessageCommand = EditorCommand.bindToContribution<MessageController>(MessageController.get);\n\n\nregisterEditorCommand(new MessageCommand({\n\tid: 'leaveEditorMessage',\n\tprecondition: MessageController.MESSAGE_VISIBLE,\n\thandler: c => c.closeMessage(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 30,\n\t\tprimary: KeyCode.Escape\n\t}\n}));\n\nclass MessageWidget implements IContentWidget {\n\n\t// Editor.IContentWidget.allowEditorOverflow\n\treadonly allowEditorOverflow = true;\n\treadonly suppressMouseDown = false;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _position: IPosition;\n\tprivate readonly _domNode: HTMLDivElement;\n\n\tstatic fadeOut(messageWidget: MessageWidget): IDisposable {\n\t\tconst dispose = () => {\n\t\t\tmessageWidget.dispose();\n\t\t\tclearTimeout(handle);\n\t\t\tmessageWidget.getDomNode().removeEventListener('animationend', dispose);\n\t\t};\n\t\tconst handle = setTimeout(dispose, 110);\n\t\tmessageWidget.getDomNode().addEventListener('animationend', dispose);\n\t\tmessageWidget.getDomNode().classList.add('fadeOut');\n\t\treturn { dispose };\n\t}\n\n\tconstructor(editor: ICodeEditor, { lineNumber, column }: IPosition, text: HTMLElement | string) {\n\n\t\tthis._editor = editor;\n\t\tthis._editor.revealLinesInCenterIfOutsideViewport(lineNumber, lineNumber, ScrollType.Smooth);\n\t\tthis._position = { lineNumber, column };\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.classList.add('monaco-editor-overlaymessage');\n\t\tthis._domNode.style.marginLeft = '-6px';\n\n\t\tconst anchorTop = document.createElement('div');\n\t\tanchorTop.classList.add('anchor', 'top');\n\t\tthis._domNode.appendChild(anchorTop);\n\n\t\tconst message = document.createElement('div');\n\t\tif (typeof text === 'string') {\n\t\t\tmessage.classList.add('message');\n\t\t\tmessage.textContent = text;\n\t\t} else {\n\t\t\ttext.classList.add('message');\n\t\t\tmessage.appendChild(text);\n\t\t}\n\t\tthis._domNode.appendChild(message);\n\n\t\tconst anchorBottom = document.createElement('div');\n\t\tanchorBottom.classList.add('anchor', 'below');\n\t\tthis._domNode.appendChild(anchorBottom);\n\n\t\tthis._editor.addContentWidget(this);\n\t\tthis._domNode.classList.add('fadeIn');\n\t}\n\n\tdispose() {\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn 'messageoverlay';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this._domNode;\n\t}\n\n\tgetPosition(): IContentWidgetPosition {\n\t\treturn {\n\t\t\tposition: this._position,\n\t\t\tpreference: [\n\t\t\t\tContentWidgetPositionPreference.ABOVE,\n\t\t\t\tContentWidgetPositionPreference.BELOW,\n\t\t\t],\n\t\t\tpositionAffinity: PositionAffinity.Right,\n\t\t};\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\tthis._domNode.classList.toggle('below', position === ContentWidgetPositionPreference.BELOW);\n\t}\n\n}\n\nregisterEditorContribution(MessageController.ID, MessageController, EditorContributionInstantiation.Lazy);\n"]}
|
|
@@ -22,7 +22,7 @@ import { escapeRegExpCharacters } from '../../../../base/common/strings.js';
|
|
|
22
22
|
import { assertReturnsDefined } from '../../../../base/common/types.js';
|
|
23
23
|
import './parameterHints.css';
|
|
24
24
|
import { EDITOR_FONT_DEFAULTS } from '../../../common/config/fontInfo.js';
|
|
25
|
-
import { IMarkdownRendererService } from '
|
|
25
|
+
import { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';
|
|
26
26
|
import { Context } from './provideSignatureHelp.js';
|
|
27
27
|
import * as nls from '../../../../nls.js';
|
|
28
28
|
import { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';
|
|
@@ -215,7 +215,7 @@ let ParameterHintsWidget = class ParameterHintsWidget extends Disposable {
|
|
|
215
215
|
}
|
|
216
216
|
renderMarkdownDocs(markdown) {
|
|
217
217
|
const renderedContents = this.renderDisposeables.add(this.markdownRendererService.render(markdown, {
|
|
218
|
-
|
|
218
|
+
context: this.editor,
|
|
219
219
|
asyncRenderCallback: () => {
|
|
220
220
|
this.domNodes?.scrollbar.scanDomNode();
|
|
221
221
|
}
|