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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.ts","vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.ts"],"names":[],"mappings":"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","file":"stickyScrollProvider.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 { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { binarySearch } from '../../../../base/common/arrays.js';\nimport { Event, Emitter } from '../../../../base/common/event.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { StickyModelProvider, IStickyModelProvider } from './stickyScrollModelProvider.js';\nimport { StickyElement, StickyModel, StickyRange } from './stickyScrollElement.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\n\nexport class StickyLineCandidate {\n\tconstructor(\n\t\tpublic readonly startLineNumber: number,\n\t\tpublic readonly endLineNumber: number,\n\t\tpublic readonly top: number,\n\t\tpublic readonly height: number,\n\t) { }\n}\n\nexport interface IStickyLineCandidateProvider {\n\t/**\n\t * Dispose resources used by the provider.\n\t */\n\tdispose(): void;\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tgetVersionId(): number | undefined;\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tgetCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[];\n\n\t/**\n\t * Event triggered when sticky scroll changes.\n\t */\n\tonDidChangeStickyScroll: Event<void>;\n}\n\nexport class StickyLineCandidateProvider extends Disposable implements IStickyLineCandidateProvider {\n\n\tprivate readonly _onDidChangeStickyScroll = this._register(new Emitter<void>());\n\tpublic readonly onDidChangeStickyScroll = this._onDidChangeStickyScroll.event;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _updateSoon: RunOnceScheduler;\n\tprivate readonly _sessionStore: DisposableStore;\n\n\tprivate _model: StickyModel | null = null;\n\tprivate _cts: CancellationTokenSource | null = null;\n\tprivate _stickyModelProvider: IStickyModelProvider | null = null;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._sessionStore = this._register(new DisposableStore());\n\t\tthis._updateSoon = this._register(new RunOnceScheduler(() => this.update(), 50));\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.stickyScroll)) {\n\t\t\t\tthis.readConfiguration();\n\t\t\t}\n\t\t}));\n\t\tthis.readConfiguration();\n\t}\n\n\t/**\n\t * Read and apply the sticky scroll configuration.\n\t */\n\tprivate readConfiguration() {\n\t\tthis._sessionStore.clear();\n\t\tconst options = this._editor.getOption(EditorOption.stickyScroll);\n\t\tif (!options.enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis._sessionStore.add(this._editor.onDidChangeModel(() => {\n\t\t\tthis._model = null;\n\t\t\tthis.updateStickyModelProvider();\n\t\t\tthis._onDidChangeStickyScroll.fire();\n\t\t\tthis.update();\n\t\t}));\n\t\tthis._sessionStore.add(this._editor.onDidChangeHiddenAreas(() => this.update()));\n\t\tthis._sessionStore.add(this._editor.onDidChangeModelContent(() => this._updateSoon.schedule()));\n\t\tthis._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => this.update()));\n\t\tthis._sessionStore.add(toDisposable(() => {\n\t\t\tthis._stickyModelProvider?.dispose();\n\t\t\tthis._stickyModelProvider = null;\n\t\t}));\n\t\tthis.updateStickyModelProvider();\n\t\tthis.update();\n\t}\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tpublic getVersionId(): number | undefined {\n\t\treturn this._model?.version;\n\t}\n\n\t/**\n\t * Update the sticky model provider.\n\t */\n\tprivate updateStickyModelProvider() {\n\t\tthis._stickyModelProvider?.dispose();\n\t\tthis._stickyModelProvider = null;\n\t\tif (this._editor.hasModel()) {\n\t\t\tthis._stickyModelProvider = new StickyModelProvider(\n\t\t\t\tthis._editor,\n\t\t\t\t() => this._updateSoon.schedule(),\n\t\t\t\tthis._languageConfigurationService,\n\t\t\t\tthis._languageFeaturesService\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Update the sticky line candidates.\n\t */\n\tpublic async update(): Promise<void> {\n\t\tthis._cts?.dispose(true);\n\t\tthis._cts = new CancellationTokenSource();\n\t\tawait this.updateStickyModel(this._cts.token);\n\t\tthis._onDidChangeStickyScroll.fire();\n\t}\n\n\t/**\n\t * Update the sticky model based on the current editor state.\n\t */\n\tprivate async updateStickyModel(token: CancellationToken): Promise<void> {\n\t\tif (!this._editor.hasModel() || !this._stickyModelProvider || this._editor.getModel().isTooLargeForTokenization()) {\n\t\t\tthis._model = null;\n\t\t\treturn;\n\t\t}\n\t\tconst model = await this._stickyModelProvider.update(token);\n\t\tif (!token.isCancellationRequested) {\n\t\t\tthis._model = model;\n\t\t}\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tpublic getCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[] {\n\t\tif (!this._model?.element) {\n\t\t\treturn [];\n\t\t}\n\t\tconst stickyLineCandidates: StickyLineCandidate[] = [];\n\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, this._model.element, stickyLineCandidates, 0, 0, -1);\n\t\treturn this.filterHiddenRanges(stickyLineCandidates);\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range from the sticky model.\n\t */\n\tprivate getCandidateStickyLinesIntersectingFromStickyModel(\n\t\trange: StickyRange,\n\t\toutlineModel: StickyElement,\n\t\tresult: StickyLineCandidate[],\n\t\tdepth: number,\n\t\ttop: number,\n\t\tlastStartLineNumber: number\n\t): void {\n\t\tconst textModel = this._editor.getModel();\n\t\tif (!textModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (outlineModel.children.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tlet lastLine = lastStartLineNumber;\n\t\tconst childrenStartLines: number[] = [];\n\n\t\tfor (let i = 0; i < outlineModel.children.length; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (child.range) {\n\t\t\t\tchildrenStartLines.push(child.range.startLineNumber);\n\t\t\t}\n\t\t}\n\t\tconst lowerBound = this.updateIndex(binarySearch(childrenStartLines, range.startLineNumber, (a: number, b: number) => { return a - b; }));\n\t\tconst upperBound = this.updateIndex(binarySearch(childrenStartLines, range.endLineNumber, (a: number, b: number) => { return a - b; }));\n\n\t\tfor (let i = lowerBound; i <= upperBound; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (!child || !child.range) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { startLineNumber, endLineNumber } = child.range;\n\t\t\tif (\n\t\t\t\tendLineNumber > startLineNumber + 1\n\t\t\t\t&& range.startLineNumber <= endLineNumber + 1\n\t\t\t\t&& startLineNumber - 1 <= range.endLineNumber\n\t\t\t\t&& startLineNumber !== lastLine\n\t\t\t\t&& textModel.isValidRange(new Range(startLineNumber, 1, endLineNumber, 1))\n\t\t\t) {\n\t\t\t\tlastLine = startLineNumber;\n\t\t\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(startLineNumber, 1));\n\t\t\t\tresult.push(new StickyLineCandidate(startLineNumber, endLineNumber - 1, top, lineHeight));\n\t\t\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, child, result, depth + 1, top + lineHeight, startLineNumber);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Filter out sticky line candidates that are within hidden ranges.\n\t */\n\tprivate filterHiddenRanges(stickyLineCandidates: StickyLineCandidate[]): StickyLineCandidate[] {\n\t\tconst hiddenRanges = this._editor._getViewModel()?.getHiddenAreas();\n\t\tif (!hiddenRanges) {\n\t\t\treturn stickyLineCandidates;\n\t\t}\n\t\treturn stickyLineCandidates.filter(candidate => {\n\t\t\treturn !hiddenRanges.some(hiddenRange =>\n\t\t\t\tcandidate.startLineNumber >= hiddenRange.startLineNumber &&\n\t\t\t\tcandidate.endLineNumber <= hiddenRange.endLineNumber + 1\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Update the binary search index.\n\t */\n\tprivate updateIndex(index: number): number {\n\t\tif (index === -1) {\n\t\t\treturn 0;\n\t\t} else if (index < 0) {\n\t\t\treturn -index - 2;\n\t\t}\n\t\treturn index;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { binarySearch } from '../../../../base/common/arrays.js';\nimport { Event, Emitter } from '../../../../base/common/event.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { StickyModelProvider, IStickyModelProvider } from './stickyScrollModelProvider.js';\nimport { StickyElement, StickyModel, StickyRange } from './stickyScrollElement.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\n\nexport class StickyLineCandidate {\n\tconstructor(\n\t\tpublic readonly startLineNumber: number,\n\t\tpublic readonly endLineNumber: number,\n\t\tpublic readonly top: number,\n\t\tpublic readonly height: number,\n\t) { }\n}\n\nexport interface IStickyLineCandidateProvider {\n\t/**\n\t * Dispose resources used by the provider.\n\t */\n\tdispose(): void;\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tgetVersionId(): number | undefined;\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tgetCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[];\n\n\t/**\n\t * Event triggered when sticky scroll changes.\n\t */\n\tonDidChangeStickyScroll: Event<void>;\n}\n\nexport class StickyLineCandidateProvider extends Disposable implements IStickyLineCandidateProvider {\n\n\tprivate readonly _onDidChangeStickyScroll = this._register(new Emitter<void>());\n\tpublic readonly onDidChangeStickyScroll = this._onDidChangeStickyScroll.event;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _updateSoon: RunOnceScheduler;\n\tprivate readonly _sessionStore: DisposableStore;\n\n\tprivate _model: StickyModel | null = null;\n\tprivate _cts: CancellationTokenSource | null = null;\n\tprivate _stickyModelProvider: IStickyModelProvider | null = null;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._sessionStore = this._register(new DisposableStore());\n\t\tthis._updateSoon = this._register(new RunOnceScheduler(() => this.update(), 50));\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.stickyScroll)) {\n\t\t\t\tthis.readConfiguration();\n\t\t\t}\n\t\t}));\n\t\tthis.readConfiguration();\n\t}\n\n\t/**\n\t * Read and apply the sticky scroll configuration.\n\t */\n\tprivate readConfiguration() {\n\t\tthis._sessionStore.clear();\n\t\tconst options = this._editor.getOption(EditorOption.stickyScroll);\n\t\tif (!options.enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis._sessionStore.add(this._editor.onDidChangeModel(() => {\n\t\t\tthis._model = null;\n\t\t\tthis.updateStickyModelProvider();\n\t\t\tthis._onDidChangeStickyScroll.fire();\n\t\t\tthis.update();\n\t\t}));\n\t\tthis._sessionStore.add(this._editor.onDidChangeHiddenAreas(() => this.update()));\n\t\tthis._sessionStore.add(this._editor.onDidChangeModelContent(() => this._updateSoon.schedule()));\n\t\tthis._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => this.update()));\n\t\tthis._sessionStore.add(toDisposable(() => {\n\t\t\tthis._stickyModelProvider?.dispose();\n\t\t\tthis._stickyModelProvider = null;\n\t\t}));\n\t\tthis.updateStickyModelProvider();\n\t\tthis.update();\n\t}\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tpublic getVersionId(): number | undefined {\n\t\treturn this._model?.version;\n\t}\n\n\t/**\n\t * Update the sticky model provider.\n\t */\n\tprivate updateStickyModelProvider() {\n\t\tthis._stickyModelProvider?.dispose();\n\t\tthis._stickyModelProvider = null;\n\t\tif (this._editor.hasModel()) {\n\t\t\tthis._stickyModelProvider = new StickyModelProvider(\n\t\t\t\tthis._editor,\n\t\t\t\t() => this._updateSoon.schedule(),\n\t\t\t\tthis._languageConfigurationService,\n\t\t\t\tthis._languageFeaturesService\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Update the sticky line candidates.\n\t */\n\tpublic async update(): Promise<void> {\n\t\tthis._cts?.dispose(true);\n\t\tthis._cts = new CancellationTokenSource();\n\t\tawait this.updateStickyModel(this._cts.token);\n\t\tthis._onDidChangeStickyScroll.fire();\n\t}\n\n\t/**\n\t * Update the sticky model based on the current editor state.\n\t */\n\tprivate async updateStickyModel(token: CancellationToken): Promise<void> {\n\t\tif (!this._editor.hasModel() || !this._stickyModelProvider || this._editor.getModel().isTooLargeForTokenization()) {\n\t\t\tthis._model = null;\n\t\t\treturn;\n\t\t}\n\t\tconst model = await this._stickyModelProvider.update(token);\n\t\tif (!token.isCancellationRequested) {\n\t\t\tthis._model = model;\n\t\t}\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tpublic getCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[] {\n\t\tif (!this._model?.element) {\n\t\t\treturn [];\n\t\t}\n\t\tconst stickyLineCandidates: StickyLineCandidate[] = [];\n\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, this._model.element, stickyLineCandidates, 0, 0, -1);\n\t\treturn this.filterHiddenRanges(stickyLineCandidates);\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range from the sticky model.\n\t */\n\tprivate getCandidateStickyLinesIntersectingFromStickyModel(\n\t\trange: StickyRange,\n\t\toutlineModel: StickyElement,\n\t\tresult: StickyLineCandidate[],\n\t\tdepth: number,\n\t\ttop: number,\n\t\tlastStartLineNumber: number\n\t): void {\n\t\tconst textModel = this._editor.getModel();\n\t\tif (!textModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (outlineModel.children.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tlet lastLine = lastStartLineNumber;\n\t\tconst childrenStartLines: number[] = [];\n\n\t\tfor (let i = 0; i < outlineModel.children.length; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (child.range) {\n\t\t\t\tchildrenStartLines.push(child.range.startLineNumber);\n\t\t\t}\n\t\t}\n\t\tconst lowerBound = this.updateIndex(binarySearch(childrenStartLines, range.startLineNumber, (a: number, b: number) => { return a - b; }));\n\t\tconst upperBound = this.updateIndex(binarySearch(childrenStartLines, range.endLineNumber, (a: number, b: number) => { return a - b; }));\n\n\t\tfor (let i = lowerBound; i <= upperBound; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (!child || !child.range) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { startLineNumber, endLineNumber } = child.range;\n\t\t\tif (\n\t\t\t\tendLineNumber > startLineNumber + 1\n\t\t\t\t&& range.startLineNumber <= endLineNumber + 1\n\t\t\t\t&& startLineNumber - 1 <= range.endLineNumber\n\t\t\t\t&& startLineNumber !== lastLine\n\t\t\t\t&& textModel.isValidRange(new Range(startLineNumber, 1, endLineNumber, 1))\n\t\t\t) {\n\t\t\t\tlastLine = startLineNumber;\n\t\t\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(startLineNumber, 1));\n\t\t\t\tresult.push(new StickyLineCandidate(startLineNumber, endLineNumber - 1, top, lineHeight));\n\t\t\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, child, result, depth + 1, top + lineHeight, startLineNumber);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Filter out sticky line candidates that are within hidden ranges.\n\t */\n\tprivate filterHiddenRanges(stickyLineCandidates: StickyLineCandidate[]): StickyLineCandidate[] {\n\t\tconst hiddenRanges = this._editor._getViewModel()?.getHiddenAreas();\n\t\tif (!hiddenRanges) {\n\t\t\treturn stickyLineCandidates;\n\t\t}\n\t\treturn stickyLineCandidates.filter(candidate => {\n\t\t\treturn !hiddenRanges.some(hiddenRange =>\n\t\t\t\tcandidate.startLineNumber >= hiddenRange.startLineNumber &&\n\t\t\t\tcandidate.endLineNumber <= hiddenRange.endLineNumber + 1\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Update the binary search index.\n\t */\n\tprivate updateIndex(index: number): number {\n\t\tif (index === -1) {\n\t\t\treturn 0;\n\t\t} else if (index < 0) {\n\t\t\treturn -index - 2;\n\t\t}\n\t\treturn index;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.ts","vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.ts"],"names":[],"mappings":"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","file":"stickyScrollProvider.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 { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { binarySearch } from '../../../../base/common/arrays.js';\nimport { Event, Emitter } from '../../../../base/common/event.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { StickyModelProvider, IStickyModelProvider } from './stickyScrollModelProvider.js';\nimport { StickyElement, StickyModel, StickyRange } from './stickyScrollElement.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\n\nexport class StickyLineCandidate {\n\tconstructor(\n\t\tpublic readonly startLineNumber: number,\n\t\tpublic readonly endLineNumber: number,\n\t\tpublic readonly top: number,\n\t\tpublic readonly height: number,\n\t) { }\n}\n\nexport interface IStickyLineCandidateProvider {\n\t/**\n\t * Dispose resources used by the provider.\n\t */\n\tdispose(): void;\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tgetVersionId(): number | undefined;\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tgetCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[];\n\n\t/**\n\t * Event triggered when sticky scroll changes.\n\t */\n\treadonly onDidChangeStickyScroll: Event<void>;\n}\n\nexport class StickyLineCandidateProvider extends Disposable implements IStickyLineCandidateProvider {\n\n\tprivate readonly _onDidChangeStickyScroll = this._register(new Emitter<void>());\n\tpublic readonly onDidChangeStickyScroll = this._onDidChangeStickyScroll.event;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _updateSoon: RunOnceScheduler;\n\tprivate readonly _sessionStore: DisposableStore;\n\n\tprivate _model: StickyModel | null = null;\n\tprivate _cts: CancellationTokenSource | null = null;\n\tprivate _stickyModelProvider: IStickyModelProvider | null = null;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._sessionStore = this._register(new DisposableStore());\n\t\tthis._updateSoon = this._register(new RunOnceScheduler(() => this.update(), 50));\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.stickyScroll)) {\n\t\t\t\tthis.readConfiguration();\n\t\t\t}\n\t\t}));\n\t\tthis.readConfiguration();\n\t}\n\n\t/**\n\t * Read and apply the sticky scroll configuration.\n\t */\n\tprivate readConfiguration() {\n\t\tthis._sessionStore.clear();\n\t\tconst options = this._editor.getOption(EditorOption.stickyScroll);\n\t\tif (!options.enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis._sessionStore.add(this._editor.onDidChangeModel(() => {\n\t\t\tthis._model = null;\n\t\t\tthis.updateStickyModelProvider();\n\t\t\tthis._onDidChangeStickyScroll.fire();\n\t\t\tthis.update();\n\t\t}));\n\t\tthis._sessionStore.add(this._editor.onDidChangeHiddenAreas(() => this.update()));\n\t\tthis._sessionStore.add(this._editor.onDidChangeModelContent(() => this._updateSoon.schedule()));\n\t\tthis._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => this.update()));\n\t\tthis._sessionStore.add(toDisposable(() => {\n\t\t\tthis._stickyModelProvider?.dispose();\n\t\t\tthis._stickyModelProvider = null;\n\t\t}));\n\t\tthis.updateStickyModelProvider();\n\t\tthis.update();\n\t}\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tpublic getVersionId(): number | undefined {\n\t\treturn this._model?.version;\n\t}\n\n\t/**\n\t * Update the sticky model provider.\n\t */\n\tprivate updateStickyModelProvider() {\n\t\tthis._stickyModelProvider?.dispose();\n\t\tthis._stickyModelProvider = null;\n\t\tif (this._editor.hasModel()) {\n\t\t\tthis._stickyModelProvider = new StickyModelProvider(\n\t\t\t\tthis._editor,\n\t\t\t\t() => this._updateSoon.schedule(),\n\t\t\t\tthis._languageConfigurationService,\n\t\t\t\tthis._languageFeaturesService\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Update the sticky line candidates.\n\t */\n\tpublic async update(): Promise<void> {\n\t\tthis._cts?.dispose(true);\n\t\tthis._cts = new CancellationTokenSource();\n\t\tawait this.updateStickyModel(this._cts.token);\n\t\tthis._onDidChangeStickyScroll.fire();\n\t}\n\n\t/**\n\t * Update the sticky model based on the current editor state.\n\t */\n\tprivate async updateStickyModel(token: CancellationToken): Promise<void> {\n\t\tif (!this._editor.hasModel() || !this._stickyModelProvider || this._editor.getModel().isTooLargeForTokenization()) {\n\t\t\tthis._model = null;\n\t\t\treturn;\n\t\t}\n\t\tconst model = await this._stickyModelProvider.update(token);\n\t\tif (!token.isCancellationRequested) {\n\t\t\tthis._model = model;\n\t\t}\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tpublic getCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[] {\n\t\tif (!this._model?.element) {\n\t\t\treturn [];\n\t\t}\n\t\tconst stickyLineCandidates: StickyLineCandidate[] = [];\n\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, this._model.element, stickyLineCandidates, 0, 0, -1);\n\t\treturn this.filterHiddenRanges(stickyLineCandidates);\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range from the sticky model.\n\t */\n\tprivate getCandidateStickyLinesIntersectingFromStickyModel(\n\t\trange: StickyRange,\n\t\toutlineModel: StickyElement,\n\t\tresult: StickyLineCandidate[],\n\t\tdepth: number,\n\t\ttop: number,\n\t\tlastStartLineNumber: number\n\t): void {\n\t\tconst textModel = this._editor.getModel();\n\t\tif (!textModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (outlineModel.children.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tlet lastLine = lastStartLineNumber;\n\t\tconst childrenStartLines: number[] = [];\n\n\t\tfor (let i = 0; i < outlineModel.children.length; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (child.range) {\n\t\t\t\tchildrenStartLines.push(child.range.startLineNumber);\n\t\t\t}\n\t\t}\n\t\tconst lowerBound = this.updateIndex(binarySearch(childrenStartLines, range.startLineNumber, (a: number, b: number) => { return a - b; }));\n\t\tconst upperBound = this.updateIndex(binarySearch(childrenStartLines, range.endLineNumber, (a: number, b: number) => { return a - b; }));\n\n\t\tfor (let i = lowerBound; i <= upperBound; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (!child || !child.range) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { startLineNumber, endLineNumber } = child.range;\n\t\t\tif (\n\t\t\t\tendLineNumber > startLineNumber + 1\n\t\t\t\t&& range.startLineNumber <= endLineNumber + 1\n\t\t\t\t&& startLineNumber - 1 <= range.endLineNumber\n\t\t\t\t&& startLineNumber !== lastLine\n\t\t\t\t&& textModel.isValidRange(new Range(startLineNumber, 1, endLineNumber, 1))\n\t\t\t) {\n\t\t\t\tlastLine = startLineNumber;\n\t\t\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(startLineNumber, 1));\n\t\t\t\tresult.push(new StickyLineCandidate(startLineNumber, endLineNumber - 1, top, lineHeight));\n\t\t\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, child, result, depth + 1, top + lineHeight, startLineNumber);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Filter out sticky line candidates that are within hidden ranges.\n\t */\n\tprivate filterHiddenRanges(stickyLineCandidates: StickyLineCandidate[]): StickyLineCandidate[] {\n\t\tconst hiddenRanges = this._editor._getViewModel()?.getHiddenAreas();\n\t\tif (!hiddenRanges) {\n\t\t\treturn stickyLineCandidates;\n\t\t}\n\t\treturn stickyLineCandidates.filter(candidate => {\n\t\t\treturn !hiddenRanges.some(hiddenRange =>\n\t\t\t\tcandidate.startLineNumber >= hiddenRange.startLineNumber &&\n\t\t\t\tcandidate.endLineNumber <= hiddenRange.endLineNumber + 1\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Update the binary search index.\n\t */\n\tprivate updateIndex(index: number): number {\n\t\tif (index === -1) {\n\t\t\treturn 0;\n\t\t} else if (index < 0) {\n\t\t\treturn -index - 2;\n\t\t}\n\t\treturn index;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { binarySearch } from '../../../../base/common/arrays.js';\nimport { Event, Emitter } from '../../../../base/common/event.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { StickyModelProvider, IStickyModelProvider } from './stickyScrollModelProvider.js';\nimport { StickyElement, StickyModel, StickyRange } from './stickyScrollElement.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\n\nexport class StickyLineCandidate {\n\tconstructor(\n\t\tpublic readonly startLineNumber: number,\n\t\tpublic readonly endLineNumber: number,\n\t\tpublic readonly top: number,\n\t\tpublic readonly height: number,\n\t) { }\n}\n\nexport interface IStickyLineCandidateProvider {\n\t/**\n\t * Dispose resources used by the provider.\n\t */\n\tdispose(): void;\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tgetVersionId(): number | undefined;\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tgetCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[];\n\n\t/**\n\t * Event triggered when sticky scroll changes.\n\t */\n\treadonly onDidChangeStickyScroll: Event<void>;\n}\n\nexport class StickyLineCandidateProvider extends Disposable implements IStickyLineCandidateProvider {\n\n\tprivate readonly _onDidChangeStickyScroll = this._register(new Emitter<void>());\n\tpublic readonly onDidChangeStickyScroll = this._onDidChangeStickyScroll.event;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _updateSoon: RunOnceScheduler;\n\tprivate readonly _sessionStore: DisposableStore;\n\n\tprivate _model: StickyModel | null = null;\n\tprivate _cts: CancellationTokenSource | null = null;\n\tprivate _stickyModelProvider: IStickyModelProvider | null = null;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._sessionStore = this._register(new DisposableStore());\n\t\tthis._updateSoon = this._register(new RunOnceScheduler(() => this.update(), 50));\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.stickyScroll)) {\n\t\t\t\tthis.readConfiguration();\n\t\t\t}\n\t\t}));\n\t\tthis.readConfiguration();\n\t}\n\n\t/**\n\t * Read and apply the sticky scroll configuration.\n\t */\n\tprivate readConfiguration() {\n\t\tthis._sessionStore.clear();\n\t\tconst options = this._editor.getOption(EditorOption.stickyScroll);\n\t\tif (!options.enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis._sessionStore.add(this._editor.onDidChangeModel(() => {\n\t\t\tthis._model = null;\n\t\t\tthis.updateStickyModelProvider();\n\t\t\tthis._onDidChangeStickyScroll.fire();\n\t\t\tthis.update();\n\t\t}));\n\t\tthis._sessionStore.add(this._editor.onDidChangeHiddenAreas(() => this.update()));\n\t\tthis._sessionStore.add(this._editor.onDidChangeModelContent(() => this._updateSoon.schedule()));\n\t\tthis._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => this.update()));\n\t\tthis._sessionStore.add(toDisposable(() => {\n\t\t\tthis._stickyModelProvider?.dispose();\n\t\t\tthis._stickyModelProvider = null;\n\t\t}));\n\t\tthis.updateStickyModelProvider();\n\t\tthis.update();\n\t}\n\n\t/**\n\t * Get the version ID of the sticky model.\n\t */\n\tpublic getVersionId(): number | undefined {\n\t\treturn this._model?.version;\n\t}\n\n\t/**\n\t * Update the sticky model provider.\n\t */\n\tprivate updateStickyModelProvider() {\n\t\tthis._stickyModelProvider?.dispose();\n\t\tthis._stickyModelProvider = null;\n\t\tif (this._editor.hasModel()) {\n\t\t\tthis._stickyModelProvider = new StickyModelProvider(\n\t\t\t\tthis._editor,\n\t\t\t\t() => this._updateSoon.schedule(),\n\t\t\t\tthis._languageConfigurationService,\n\t\t\t\tthis._languageFeaturesService\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Update the sticky line candidates.\n\t */\n\tpublic async update(): Promise<void> {\n\t\tthis._cts?.dispose(true);\n\t\tthis._cts = new CancellationTokenSource();\n\t\tawait this.updateStickyModel(this._cts.token);\n\t\tthis._onDidChangeStickyScroll.fire();\n\t}\n\n\t/**\n\t * Update the sticky model based on the current editor state.\n\t */\n\tprivate async updateStickyModel(token: CancellationToken): Promise<void> {\n\t\tif (!this._editor.hasModel() || !this._stickyModelProvider || this._editor.getModel().isTooLargeForTokenization()) {\n\t\t\tthis._model = null;\n\t\t\treturn;\n\t\t}\n\t\tconst model = await this._stickyModelProvider.update(token);\n\t\tif (!token.isCancellationRequested) {\n\t\t\tthis._model = model;\n\t\t}\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range.\n\t */\n\tpublic getCandidateStickyLinesIntersecting(range: StickyRange): StickyLineCandidate[] {\n\t\tif (!this._model?.element) {\n\t\t\treturn [];\n\t\t}\n\t\tconst stickyLineCandidates: StickyLineCandidate[] = [];\n\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, this._model.element, stickyLineCandidates, 0, 0, -1);\n\t\treturn this.filterHiddenRanges(stickyLineCandidates);\n\t}\n\n\t/**\n\t * Get sticky line candidates intersecting a given range from the sticky model.\n\t */\n\tprivate getCandidateStickyLinesIntersectingFromStickyModel(\n\t\trange: StickyRange,\n\t\toutlineModel: StickyElement,\n\t\tresult: StickyLineCandidate[],\n\t\tdepth: number,\n\t\ttop: number,\n\t\tlastStartLineNumber: number\n\t): void {\n\t\tconst textModel = this._editor.getModel();\n\t\tif (!textModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (outlineModel.children.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tlet lastLine = lastStartLineNumber;\n\t\tconst childrenStartLines: number[] = [];\n\n\t\tfor (let i = 0; i < outlineModel.children.length; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (child.range) {\n\t\t\t\tchildrenStartLines.push(child.range.startLineNumber);\n\t\t\t}\n\t\t}\n\t\tconst lowerBound = this.updateIndex(binarySearch(childrenStartLines, range.startLineNumber, (a: number, b: number) => { return a - b; }));\n\t\tconst upperBound = this.updateIndex(binarySearch(childrenStartLines, range.endLineNumber, (a: number, b: number) => { return a - b; }));\n\n\t\tfor (let i = lowerBound; i <= upperBound; i++) {\n\t\t\tconst child = outlineModel.children[i];\n\t\t\tif (!child || !child.range) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { startLineNumber, endLineNumber } = child.range;\n\t\t\tif (\n\t\t\t\tendLineNumber > startLineNumber + 1\n\t\t\t\t&& range.startLineNumber <= endLineNumber + 1\n\t\t\t\t&& startLineNumber - 1 <= range.endLineNumber\n\t\t\t\t&& startLineNumber !== lastLine\n\t\t\t\t&& textModel.isValidRange(new Range(startLineNumber, 1, endLineNumber, 1))\n\t\t\t) {\n\t\t\t\tlastLine = startLineNumber;\n\t\t\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(startLineNumber, 1));\n\t\t\t\tresult.push(new StickyLineCandidate(startLineNumber, endLineNumber - 1, top, lineHeight));\n\t\t\t\tthis.getCandidateStickyLinesIntersectingFromStickyModel(range, child, result, depth + 1, top + lineHeight, startLineNumber);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Filter out sticky line candidates that are within hidden ranges.\n\t */\n\tprivate filterHiddenRanges(stickyLineCandidates: StickyLineCandidate[]): StickyLineCandidate[] {\n\t\tconst hiddenRanges = this._editor._getViewModel()?.getHiddenAreas();\n\t\tif (!hiddenRanges) {\n\t\t\treturn stickyLineCandidates;\n\t\t}\n\t\treturn stickyLineCandidates.filter(candidate => {\n\t\t\treturn !hiddenRanges.some(hiddenRange =>\n\t\t\t\tcandidate.startLineNumber >= hiddenRange.startLineNumber &&\n\t\t\t\tcandidate.endLineNumber <= hiddenRange.endLineNumber + 1\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Update the binary search index.\n\t */\n\tprivate updateIndex(index: number): number {\n\t\tif (index === -1) {\n\t\t\treturn 0;\n\t\t} else if (index < 0) {\n\t\t\treturn -index - 2;\n\t\t}\n\t\treturn index;\n\t}\n}\n"]}
|
|
@@ -22,7 +22,7 @@ import { ThemeIcon } from '../../../../base/common/themables.js';
|
|
|
22
22
|
import * as nls from '../../../../nls.js';
|
|
23
23
|
import { isHighContrast } from '../../../../platform/theme/common/theme.js';
|
|
24
24
|
import { IThemeService } from '../../../../platform/theme/common/themeService.js';
|
|
25
|
-
import { IMarkdownRendererService } from '
|
|
25
|
+
import { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';
|
|
26
26
|
export function canExpandCompletionItem(item) {
|
|
27
27
|
return !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);
|
|
28
28
|
}
|
|
@@ -143,7 +143,7 @@ let SuggestDetailsWidget = class SuggestDetailsWidget {
|
|
|
143
143
|
this._docs.classList.add('markdown-docs');
|
|
144
144
|
dom.clearNode(this._docs);
|
|
145
145
|
const renderedContents = this._markdownRendererService.render(documentation, {
|
|
146
|
-
|
|
146
|
+
context: this._editor,
|
|
147
147
|
asyncRenderCallback: () => {
|
|
148
148
|
this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);
|
|
149
149
|
this._onDidChangeContents.fire(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts"],"names":[],"mappings":"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","file":"suggestWidgetDetails.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 { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport * as nls from '../../../../nls.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CompletionItem } from './suggest.js';\n\nexport function canExpandCompletionItem(item: CompletionItem | undefined): boolean {\n\treturn !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);\n}\n\nexport class SuggestDetailsWidget {\n\n\treadonly domNode: HTMLDivElement;\n\n\tprivate readonly _onDidClose = new Emitter<void>();\n\treadonly onDidClose: Event<void> = this._onDidClose.event;\n\n\tprivate readonly _onDidChangeContents = new Emitter<this>();\n\treadonly onDidChangeContents: Event<this> = this._onDidChangeContents.event;\n\n\tprivate readonly _close: HTMLElement;\n\tprivate readonly _scrollbar: DomScrollableElement;\n\tprivate readonly _body: HTMLElement;\n\tprivate readonly _header: HTMLElement;\n\tprivate readonly _type: HTMLElement;\n\tprivate readonly _docs: HTMLElement;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tprivate readonly _renderDisposeable = new DisposableStore();\n\tprivate _size = new dom.Dimension(330, 0);\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tthis.domNode = dom.$('.suggest-details');\n\t\tthis.domNode.classList.add('no-docs');\n\n\n\t\tthis._body = dom.$('.body');\n\n\t\tthis._scrollbar = new DomScrollableElement(this._body, {\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t});\n\t\tdom.append(this.domNode, this._scrollbar.getDomNode());\n\t\tthis._disposables.add(this._scrollbar);\n\n\t\tthis._header = dom.append(this._body, dom.$('.header'));\n\t\tthis._close = dom.append(this._header, dom.$('span' + ThemeIcon.asCSSSelector(Codicon.close)));\n\t\tthis._close.title = nls.localize('details.close', \"Close\");\n\t\tthis._close.role = 'button';\n\t\tthis._close.tabIndex = -1;\n\t\tthis._type = dom.append(this._header, dom.$('p.type'));\n\n\t\tthis._docs = dom.append(this._body, dom.$('p.docs'));\n\n\t\tthis._configureFont();\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._configureFont();\n\t\t\t}\n\t\t}));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._renderDisposeable.dispose();\n\t}\n\n\tprivate _configureFont(): void {\n\t\tconst options = this._editor.getOptions();\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst fontFamily = fontInfo.getMassagedFontFamily();\n\t\tconst fontSize = options.get(EditorOption.suggestFontSize) || fontInfo.fontSize;\n\t\tconst lineHeight = options.get(EditorOption.suggestLineHeight) || fontInfo.lineHeight;\n\t\tconst fontWeight = fontInfo.fontWeight;\n\t\tconst fontSizePx = `${fontSize}px`;\n\t\tconst lineHeightPx = `${lineHeight}px`;\n\n\t\tthis.domNode.style.fontSize = fontSizePx;\n\t\tthis.domNode.style.lineHeight = `${lineHeight / fontSize}`;\n\t\tthis.domNode.style.fontWeight = fontWeight;\n\t\tthis.domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\n\t\tthis._type.style.fontFamily = fontFamily;\n\t\tthis._close.style.height = lineHeightPx;\n\t\tthis._close.style.width = lineHeightPx;\n\t}\n\n\tgetLayoutInfo() {\n\t\tconst lineHeight = this._editor.getOption(EditorOption.suggestLineHeight) || this._editor.getOption(EditorOption.fontInfo).lineHeight;\n\t\tconst borderWidth = isHighContrast(this._themeService.getColorTheme().type) ? 2 : 1;\n\t\tconst borderHeight = borderWidth * 2;\n\t\treturn {\n\t\t\tlineHeight,\n\t\t\tborderWidth,\n\t\t\tborderHeight,\n\t\t\tverticalPadding: 22,\n\t\t\thorizontalPadding: 14\n\t\t};\n\t}\n\n\n\trenderLoading(): void {\n\t\tthis._type.textContent = nls.localize('loading', \"Loading...\");\n\t\tthis._docs.textContent = '';\n\t\tthis.domNode.classList.remove('no-docs', 'no-type');\n\t\tthis.layout(this.size.width, this.getLayoutInfo().lineHeight * 2);\n\t\tthis._onDidChangeContents.fire(this);\n\t}\n\n\trenderItem(item: CompletionItem, explainMode: boolean): void {\n\t\tthis._renderDisposeable.clear();\n\n\t\tlet { detail, documentation } = item.completion;\n\n\t\tif (explainMode) {\n\t\t\tlet md = '';\n\t\t\tmd += `score: ${item.score[0]}\\n`;\n\t\t\tmd += `prefix: ${item.word ?? '(no prefix)'}\\n`;\n\t\t\tmd += `word: ${item.completion.filterText ? item.completion.filterText + ' (filterText)' : item.textLabel}\\n`;\n\t\t\tmd += `distance: ${item.distance} (localityBonus-setting)\\n`;\n\t\t\tmd += `index: ${item.idx}, based on ${item.completion.sortText && `sortText: \"${item.completion.sortText}\"` || 'label'}\\n`;\n\t\t\tmd += `commit_chars: ${item.completion.commitCharacters?.join('')}\\n`;\n\t\t\tdocumentation = new MarkdownString().appendCodeblock('empty', md);\n\t\t\tdetail = `Provider: ${item.provider._debugDisplayName}`;\n\t\t}\n\n\t\tif (!explainMode && !canExpandCompletionItem(item)) {\n\t\t\tthis.clearContents();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.domNode.classList.remove('no-docs', 'no-type');\n\n\t\t// --- details\n\n\t\tif (detail) {\n\t\t\tconst cappedDetail = detail.length > 100000 ? `${detail.substr(0, 100000)}…` : detail;\n\t\t\tthis._type.textContent = cappedDetail;\n\t\t\tthis._type.title = cappedDetail;\n\t\t\tdom.show(this._type);\n\t\t\tthis._type.classList.toggle('auto-wrap', !/\\r?\\n^\\s+/gmi.test(cappedDetail));\n\t\t} else {\n\t\t\tdom.clearNode(this._type);\n\t\t\tthis._type.title = '';\n\t\t\tdom.hide(this._type);\n\t\t\tthis.domNode.classList.add('no-type');\n\t\t}\n\n\t\t// --- documentation\n\t\tdom.clearNode(this._docs);\n\t\tif (typeof documentation === 'string') {\n\t\t\tthis._docs.classList.remove('markdown-docs');\n\t\t\tthis._docs.textContent = documentation;\n\n\t\t} else if (documentation) {\n\t\t\tthis._docs.classList.add('markdown-docs');\n\t\t\tdom.clearNode(this._docs);\n\t\t\tconst renderedContents = this._markdownRendererService.render(documentation, {\n\t\t\t\teditor: this._editor,\n\t\t\t\tasyncRenderCallback: () => {\n\t\t\t\t\tthis.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n\t\t\t\t\tthis._onDidChangeContents.fire(this);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis._docs.appendChild(renderedContents.element);\n\t\t\tthis._renderDisposeable.add(renderedContents);\n\t\t}\n\n\t\tthis.domNode.classList.toggle('detail-and-doc', !!detail && !!documentation);\n\n\t\tthis.domNode.style.userSelect = 'text';\n\t\tthis.domNode.tabIndex = -1;\n\n\t\tthis._close.onmousedown = e => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t};\n\t\tthis._close.onclick = e => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tthis._onDidClose.fire();\n\t\t};\n\n\t\tthis._body.scrollTop = 0;\n\n\t\tthis.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n\t\tthis._onDidChangeContents.fire(this);\n\t}\n\n\tclearContents() {\n\t\tthis.domNode.classList.add('no-docs');\n\t\tthis._type.textContent = '';\n\t\tthis._docs.textContent = '';\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.domNode.classList.contains('no-docs');\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\tlayout(width: number, height: number): void {\n\t\tconst newSize = new dom.Dimension(width, height);\n\t\tif (!dom.Dimension.equals(newSize, this._size)) {\n\t\t\tthis._size = newSize;\n\t\t\tdom.size(this.domNode, width, height);\n\t\t}\n\t\tthis._scrollbar.scanDomNode();\n\t}\n\n\tscrollDown(much = 8): void {\n\t\tthis._body.scrollTop += much;\n\t}\n\n\tscrollUp(much = 8): void {\n\t\tthis._body.scrollTop -= much;\n\t}\n\n\tscrollTop(): void {\n\t\tthis._body.scrollTop = 0;\n\t}\n\n\tscrollBottom(): void {\n\t\tthis._body.scrollTop = this._body.scrollHeight;\n\t}\n\n\tpageDown(): void {\n\t\tthis.scrollDown(80);\n\t}\n\n\tpageUp(): void {\n\t\tthis.scrollUp(80);\n\t}\n\n\tfocus() {\n\t\tthis.domNode.focus();\n\t}\n}\n\ninterface TopLeftPosition {\n\ttop: number;\n\tleft: number;\n}\n\nexport class SuggestDetailsOverlay implements IOverlayWidget {\n\n\treadonly allowEditorOverflow = true;\n\n\tprivate readonly _disposables = new DisposableStore();\n\tprivate readonly _resizable: ResizableHTMLElement;\n\n\tprivate _added: boolean = false;\n\tprivate _anchorBox?: dom.IDomNodePagePosition;\n\tprivate _preferAlignAtTop: boolean = true;\n\tprivate _userSize?: dom.Dimension;\n\tprivate _topLeft?: TopLeftPosition;\n\n\tconstructor(\n\t\treadonly widget: SuggestDetailsWidget,\n\t\tprivate readonly _editor: ICodeEditor\n\t) {\n\n\t\tthis._resizable = new ResizableHTMLElement();\n\t\tthis._resizable.domNode.classList.add('suggest-details-container');\n\t\tthis._resizable.domNode.appendChild(widget.domNode);\n\t\tthis._resizable.enableSashes(false, true, true, false);\n\n\t\tlet topLeftNow: TopLeftPosition | undefined;\n\t\tlet sizeNow: dom.Dimension | undefined;\n\t\tlet deltaTop: number = 0;\n\t\tlet deltaLeft: number = 0;\n\t\tthis._disposables.add(this._resizable.onDidWillResize(() => {\n\t\t\ttopLeftNow = this._topLeft;\n\t\t\tsizeNow = this._resizable.size;\n\t\t}));\n\n\t\tthis._disposables.add(this._resizable.onDidResize(e => {\n\t\t\tif (topLeftNow && sizeNow) {\n\t\t\t\tthis.widget.layout(e.dimension.width, e.dimension.height);\n\n\t\t\t\tlet updateTopLeft = false;\n\t\t\t\tif (e.west) {\n\t\t\t\t\tdeltaLeft = sizeNow.width - e.dimension.width;\n\t\t\t\t\tupdateTopLeft = true;\n\t\t\t\t}\n\t\t\t\tif (e.north) {\n\t\t\t\t\tdeltaTop = sizeNow.height - e.dimension.height;\n\t\t\t\t\tupdateTopLeft = true;\n\t\t\t\t}\n\t\t\t\tif (updateTopLeft) {\n\t\t\t\t\tthis._applyTopLeft({\n\t\t\t\t\t\ttop: topLeftNow.top + deltaTop,\n\t\t\t\t\t\tleft: topLeftNow.left + deltaLeft,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (e.done) {\n\t\t\t\ttopLeftNow = undefined;\n\t\t\t\tsizeNow = undefined;\n\t\t\t\tdeltaTop = 0;\n\t\t\t\tdeltaLeft = 0;\n\t\t\t\tthis._userSize = e.dimension;\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(this.widget.onDidChangeContents(() => {\n\t\t\tif (this._anchorBox) {\n\t\t\t\tthis._placeAtAnchor(this._anchorBox, this._userSize ?? this.widget.size, this._preferAlignAtTop);\n\t\t\t}\n\t\t}));\n\t}\n\n\tdispose(): void {\n\t\tthis._resizable.dispose();\n\t\tthis._disposables.dispose();\n\t\tthis.hide();\n\t}\n\n\tgetId(): string {\n\t\treturn 'suggest.details';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this._resizable.domNode;\n\t}\n\n\tgetPosition(): IOverlayWidgetPosition | null {\n\t\treturn this._topLeft ? { preference: this._topLeft } : null;\n\t}\n\n\tshow(): void {\n\t\tif (!this._added) {\n\t\t\tthis._editor.addOverlayWidget(this);\n\t\t\tthis._added = true;\n\t\t}\n\t}\n\n\thide(sessionEnded: boolean = false): void {\n\t\tthis._resizable.clearSashHoverState();\n\n\t\tif (this._added) {\n\t\t\tthis._editor.removeOverlayWidget(this);\n\t\t\tthis._added = false;\n\t\t\tthis._anchorBox = undefined;\n\t\t\tthis._topLeft = undefined;\n\t\t}\n\t\tif (sessionEnded) {\n\t\t\tthis._userSize = undefined;\n\t\t\tthis.widget.clearContents();\n\t\t}\n\t}\n\n\tplaceAtAnchor(anchor: HTMLElement, preferAlignAtTop: boolean) {\n\t\tconst anchorBox = anchor.getBoundingClientRect();\n\t\tthis._anchorBox = anchorBox;\n\t\tthis._preferAlignAtTop = preferAlignAtTop;\n\t\tthis._placeAtAnchor(this._anchorBox, this._userSize ?? this.widget.size, preferAlignAtTop);\n\t}\n\n\t_placeAtAnchor(anchorBox: dom.IDomNodePagePosition, size: dom.Dimension, preferAlignAtTop: boolean) {\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\n\t\tconst info = this.widget.getLayoutInfo();\n\n\t\tconst defaultMinSize = new dom.Dimension(220, 2 * info.lineHeight);\n\t\tconst defaultTop = anchorBox.top;\n\n\t\ttype Placement = { top: number; left: number; fit: number; maxSizeTop: dom.Dimension; maxSizeBottom: dom.Dimension; minSize: dom.Dimension };\n\n\t\t// EAST\n\t\tconst eastPlacement: Placement = (function () {\n\t\t\tconst width = bodyBox.width - (anchorBox.left + anchorBox.width + info.borderWidth + info.horizontalPadding);\n\t\t\tconst left = -info.borderWidth + anchorBox.left + anchorBox.width;\n\t\t\tconst maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n\t\t\tconst maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n\t\t\treturn { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n\t\t})();\n\n\t\t// WEST\n\t\tconst westPlacement: Placement = (function () {\n\t\t\tconst width = anchorBox.left - info.borderWidth - info.horizontalPadding;\n\t\t\tconst left = Math.max(info.horizontalPadding, anchorBox.left - size.width - info.borderWidth);\n\t\t\tconst maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n\t\t\tconst maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n\t\t\treturn { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n\t\t})();\n\n\t\t// SOUTH\n\t\tconst southPacement: Placement = (function () {\n\t\t\tconst left = anchorBox.left;\n\t\t\tconst top = -info.borderWidth + anchorBox.top + anchorBox.height;\n\t\t\tconst maxSizeBottom = new dom.Dimension(anchorBox.width - info.borderHeight, bodyBox.height - anchorBox.top - anchorBox.height - info.verticalPadding);\n\t\t\treturn { top, left, fit: maxSizeBottom.height - size.height, maxSizeBottom, maxSizeTop: maxSizeBottom, minSize: defaultMinSize.with(maxSizeBottom.width) };\n\t\t})();\n\n\t\t// take first placement that fits or the first with \"least bad\" fit\n\t\tconst placements = [eastPlacement, westPlacement, southPacement];\n\t\tconst placement = placements.find(p => p.fit >= 0) ?? placements.sort((a, b) => b.fit - a.fit)[0];\n\n\t\t// top/bottom placement\n\t\tconst bottom = anchorBox.top + anchorBox.height - info.borderHeight;\n\t\tlet alignAtTop: boolean;\n\t\tlet height = size.height;\n\t\tconst maxHeight = Math.max(placement.maxSizeTop.height, placement.maxSizeBottom.height);\n\t\tif (height > maxHeight) {\n\t\t\theight = maxHeight;\n\t\t}\n\t\tlet maxSize: dom.Dimension;\n\t\tif (preferAlignAtTop) {\n\t\t\tif (height <= placement.maxSizeTop.height) {\n\t\t\t\talignAtTop = true;\n\t\t\t\tmaxSize = placement.maxSizeTop;\n\t\t\t} else {\n\t\t\t\talignAtTop = false;\n\t\t\t\tmaxSize = placement.maxSizeBottom;\n\t\t\t}\n\t\t} else {\n\t\t\tif (height <= placement.maxSizeBottom.height) {\n\t\t\t\talignAtTop = false;\n\t\t\t\tmaxSize = placement.maxSizeBottom;\n\t\t\t} else {\n\t\t\t\talignAtTop = true;\n\t\t\t\tmaxSize = placement.maxSizeTop;\n\t\t\t}\n\t\t}\n\n\t\tlet { top, left } = placement;\n\t\tif (!alignAtTop && height > anchorBox.height) {\n\t\t\ttop = bottom - height;\n\t\t}\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tif (editorDomNode) {\n\t\t\t// get bounding rectangle of the suggest widget relative to the editor\n\t\t\tconst editorBoundingBox = editorDomNode.getBoundingClientRect();\n\t\t\ttop -= editorBoundingBox.top;\n\t\t\tleft -= editorBoundingBox.left;\n\t\t}\n\t\tthis._applyTopLeft({ left, top });\n\n\t\tthis._resizable.enableSashes(!alignAtTop, placement === eastPlacement, alignAtTop, placement !== eastPlacement);\n\n\t\tthis._resizable.minSize = placement.minSize;\n\t\tthis._resizable.maxSize = maxSize;\n\t\tthis._resizable.layout(height, Math.min(maxSize.width, size.width));\n\t\tthis.widget.layout(this._resizable.size.width, this._resizable.size.height);\n\t}\n\n\tprivate _applyTopLeft(topLeft: TopLeftPosition): void {\n\t\tthis._topLeft = topLeft;\n\t\tthis._editor.layoutOverlayWidget(this);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts"],"names":[],"mappings":"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","file":"suggestWidgetDetails.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 { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport * as nls from '../../../../nls.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { CompletionItem } from './suggest.js';\n\nexport function canExpandCompletionItem(item: CompletionItem | undefined): boolean {\n\treturn !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);\n}\n\nexport class SuggestDetailsWidget {\n\n\treadonly domNode: HTMLDivElement;\n\n\tprivate readonly _onDidClose = new Emitter<void>();\n\treadonly onDidClose: Event<void> = this._onDidClose.event;\n\n\tprivate readonly _onDidChangeContents = new Emitter<this>();\n\treadonly onDidChangeContents: Event<this> = this._onDidChangeContents.event;\n\n\tprivate readonly _close: HTMLElement;\n\tprivate readonly _scrollbar: DomScrollableElement;\n\tprivate readonly _body: HTMLElement;\n\tprivate readonly _header: HTMLElement;\n\tprivate readonly _type: HTMLElement;\n\tprivate readonly _docs: HTMLElement;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tprivate readonly _renderDisposeable = new DisposableStore();\n\tprivate _size = new dom.Dimension(330, 0);\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tthis.domNode = dom.$('.suggest-details');\n\t\tthis.domNode.classList.add('no-docs');\n\n\n\t\tthis._body = dom.$('.body');\n\n\t\tthis._scrollbar = new DomScrollableElement(this._body, {\n\t\t\talwaysConsumeMouseWheel: true,\n\t\t});\n\t\tdom.append(this.domNode, this._scrollbar.getDomNode());\n\t\tthis._disposables.add(this._scrollbar);\n\n\t\tthis._header = dom.append(this._body, dom.$('.header'));\n\t\tthis._close = dom.append(this._header, dom.$('span' + ThemeIcon.asCSSSelector(Codicon.close)));\n\t\tthis._close.title = nls.localize('details.close', \"Close\");\n\t\tthis._close.role = 'button';\n\t\tthis._close.tabIndex = -1;\n\t\tthis._type = dom.append(this._header, dom.$('p.type'));\n\n\t\tthis._docs = dom.append(this._body, dom.$('p.docs'));\n\n\t\tthis._configureFont();\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._configureFont();\n\t\t\t}\n\t\t}));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._renderDisposeable.dispose();\n\t}\n\n\tprivate _configureFont(): void {\n\t\tconst options = this._editor.getOptions();\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst fontFamily = fontInfo.getMassagedFontFamily();\n\t\tconst fontSize = options.get(EditorOption.suggestFontSize) || fontInfo.fontSize;\n\t\tconst lineHeight = options.get(EditorOption.suggestLineHeight) || fontInfo.lineHeight;\n\t\tconst fontWeight = fontInfo.fontWeight;\n\t\tconst fontSizePx = `${fontSize}px`;\n\t\tconst lineHeightPx = `${lineHeight}px`;\n\n\t\tthis.domNode.style.fontSize = fontSizePx;\n\t\tthis.domNode.style.lineHeight = `${lineHeight / fontSize}`;\n\t\tthis.domNode.style.fontWeight = fontWeight;\n\t\tthis.domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\n\t\tthis._type.style.fontFamily = fontFamily;\n\t\tthis._close.style.height = lineHeightPx;\n\t\tthis._close.style.width = lineHeightPx;\n\t}\n\n\tgetLayoutInfo() {\n\t\tconst lineHeight = this._editor.getOption(EditorOption.suggestLineHeight) || this._editor.getOption(EditorOption.fontInfo).lineHeight;\n\t\tconst borderWidth = isHighContrast(this._themeService.getColorTheme().type) ? 2 : 1;\n\t\tconst borderHeight = borderWidth * 2;\n\t\treturn {\n\t\t\tlineHeight,\n\t\t\tborderWidth,\n\t\t\tborderHeight,\n\t\t\tverticalPadding: 22,\n\t\t\thorizontalPadding: 14\n\t\t};\n\t}\n\n\n\trenderLoading(): void {\n\t\tthis._type.textContent = nls.localize('loading', \"Loading...\");\n\t\tthis._docs.textContent = '';\n\t\tthis.domNode.classList.remove('no-docs', 'no-type');\n\t\tthis.layout(this.size.width, this.getLayoutInfo().lineHeight * 2);\n\t\tthis._onDidChangeContents.fire(this);\n\t}\n\n\trenderItem(item: CompletionItem, explainMode: boolean): void {\n\t\tthis._renderDisposeable.clear();\n\n\t\tlet { detail, documentation } = item.completion;\n\n\t\tif (explainMode) {\n\t\t\tlet md = '';\n\t\t\tmd += `score: ${item.score[0]}\\n`;\n\t\t\tmd += `prefix: ${item.word ?? '(no prefix)'}\\n`;\n\t\t\tmd += `word: ${item.completion.filterText ? item.completion.filterText + ' (filterText)' : item.textLabel}\\n`;\n\t\t\tmd += `distance: ${item.distance} (localityBonus-setting)\\n`;\n\t\t\tmd += `index: ${item.idx}, based on ${item.completion.sortText && `sortText: \"${item.completion.sortText}\"` || 'label'}\\n`;\n\t\t\tmd += `commit_chars: ${item.completion.commitCharacters?.join('')}\\n`;\n\t\t\tdocumentation = new MarkdownString().appendCodeblock('empty', md);\n\t\t\tdetail = `Provider: ${item.provider._debugDisplayName}`;\n\t\t}\n\n\t\tif (!explainMode && !canExpandCompletionItem(item)) {\n\t\t\tthis.clearContents();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.domNode.classList.remove('no-docs', 'no-type');\n\n\t\t// --- details\n\n\t\tif (detail) {\n\t\t\tconst cappedDetail = detail.length > 100000 ? `${detail.substr(0, 100000)}…` : detail;\n\t\t\tthis._type.textContent = cappedDetail;\n\t\t\tthis._type.title = cappedDetail;\n\t\t\tdom.show(this._type);\n\t\t\tthis._type.classList.toggle('auto-wrap', !/\\r?\\n^\\s+/gmi.test(cappedDetail));\n\t\t} else {\n\t\t\tdom.clearNode(this._type);\n\t\t\tthis._type.title = '';\n\t\t\tdom.hide(this._type);\n\t\t\tthis.domNode.classList.add('no-type');\n\t\t}\n\n\t\t// --- documentation\n\t\tdom.clearNode(this._docs);\n\t\tif (typeof documentation === 'string') {\n\t\t\tthis._docs.classList.remove('markdown-docs');\n\t\t\tthis._docs.textContent = documentation;\n\n\t\t} else if (documentation) {\n\t\t\tthis._docs.classList.add('markdown-docs');\n\t\t\tdom.clearNode(this._docs);\n\t\t\tconst renderedContents = this._markdownRendererService.render(documentation, {\n\t\t\t\tcontext: this._editor,\n\t\t\t\tasyncRenderCallback: () => {\n\t\t\t\t\tthis.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n\t\t\t\t\tthis._onDidChangeContents.fire(this);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis._docs.appendChild(renderedContents.element);\n\t\t\tthis._renderDisposeable.add(renderedContents);\n\t\t}\n\n\t\tthis.domNode.classList.toggle('detail-and-doc', !!detail && !!documentation);\n\n\t\tthis.domNode.style.userSelect = 'text';\n\t\tthis.domNode.tabIndex = -1;\n\n\t\tthis._close.onmousedown = e => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t};\n\t\tthis._close.onclick = e => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tthis._onDidClose.fire();\n\t\t};\n\n\t\tthis._body.scrollTop = 0;\n\n\t\tthis.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n\t\tthis._onDidChangeContents.fire(this);\n\t}\n\n\tclearContents() {\n\t\tthis.domNode.classList.add('no-docs');\n\t\tthis._type.textContent = '';\n\t\tthis._docs.textContent = '';\n\t}\n\n\tget isEmpty(): boolean {\n\t\treturn this.domNode.classList.contains('no-docs');\n\t}\n\n\tget size() {\n\t\treturn this._size;\n\t}\n\n\tlayout(width: number, height: number): void {\n\t\tconst newSize = new dom.Dimension(width, height);\n\t\tif (!dom.Dimension.equals(newSize, this._size)) {\n\t\t\tthis._size = newSize;\n\t\t\tdom.size(this.domNode, width, height);\n\t\t}\n\t\tthis._scrollbar.scanDomNode();\n\t}\n\n\tscrollDown(much = 8): void {\n\t\tthis._body.scrollTop += much;\n\t}\n\n\tscrollUp(much = 8): void {\n\t\tthis._body.scrollTop -= much;\n\t}\n\n\tscrollTop(): void {\n\t\tthis._body.scrollTop = 0;\n\t}\n\n\tscrollBottom(): void {\n\t\tthis._body.scrollTop = this._body.scrollHeight;\n\t}\n\n\tpageDown(): void {\n\t\tthis.scrollDown(80);\n\t}\n\n\tpageUp(): void {\n\t\tthis.scrollUp(80);\n\t}\n\n\tfocus() {\n\t\tthis.domNode.focus();\n\t}\n}\n\ninterface TopLeftPosition {\n\ttop: number;\n\tleft: number;\n}\n\nexport class SuggestDetailsOverlay implements IOverlayWidget {\n\n\treadonly allowEditorOverflow = true;\n\n\tprivate readonly _disposables = new DisposableStore();\n\tprivate readonly _resizable: ResizableHTMLElement;\n\n\tprivate _added: boolean = false;\n\tprivate _anchorBox?: dom.IDomNodePagePosition;\n\tprivate _preferAlignAtTop: boolean = true;\n\tprivate _userSize?: dom.Dimension;\n\tprivate _topLeft?: TopLeftPosition;\n\n\tconstructor(\n\t\treadonly widget: SuggestDetailsWidget,\n\t\tprivate readonly _editor: ICodeEditor\n\t) {\n\n\t\tthis._resizable = new ResizableHTMLElement();\n\t\tthis._resizable.domNode.classList.add('suggest-details-container');\n\t\tthis._resizable.domNode.appendChild(widget.domNode);\n\t\tthis._resizable.enableSashes(false, true, true, false);\n\n\t\tlet topLeftNow: TopLeftPosition | undefined;\n\t\tlet sizeNow: dom.Dimension | undefined;\n\t\tlet deltaTop: number = 0;\n\t\tlet deltaLeft: number = 0;\n\t\tthis._disposables.add(this._resizable.onDidWillResize(() => {\n\t\t\ttopLeftNow = this._topLeft;\n\t\t\tsizeNow = this._resizable.size;\n\t\t}));\n\n\t\tthis._disposables.add(this._resizable.onDidResize(e => {\n\t\t\tif (topLeftNow && sizeNow) {\n\t\t\t\tthis.widget.layout(e.dimension.width, e.dimension.height);\n\n\t\t\t\tlet updateTopLeft = false;\n\t\t\t\tif (e.west) {\n\t\t\t\t\tdeltaLeft = sizeNow.width - e.dimension.width;\n\t\t\t\t\tupdateTopLeft = true;\n\t\t\t\t}\n\t\t\t\tif (e.north) {\n\t\t\t\t\tdeltaTop = sizeNow.height - e.dimension.height;\n\t\t\t\t\tupdateTopLeft = true;\n\t\t\t\t}\n\t\t\t\tif (updateTopLeft) {\n\t\t\t\t\tthis._applyTopLeft({\n\t\t\t\t\t\ttop: topLeftNow.top + deltaTop,\n\t\t\t\t\t\tleft: topLeftNow.left + deltaLeft,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (e.done) {\n\t\t\t\ttopLeftNow = undefined;\n\t\t\t\tsizeNow = undefined;\n\t\t\t\tdeltaTop = 0;\n\t\t\t\tdeltaLeft = 0;\n\t\t\t\tthis._userSize = e.dimension;\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(this.widget.onDidChangeContents(() => {\n\t\t\tif (this._anchorBox) {\n\t\t\t\tthis._placeAtAnchor(this._anchorBox, this._userSize ?? this.widget.size, this._preferAlignAtTop);\n\t\t\t}\n\t\t}));\n\t}\n\n\tdispose(): void {\n\t\tthis._resizable.dispose();\n\t\tthis._disposables.dispose();\n\t\tthis.hide();\n\t}\n\n\tgetId(): string {\n\t\treturn 'suggest.details';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this._resizable.domNode;\n\t}\n\n\tgetPosition(): IOverlayWidgetPosition | null {\n\t\treturn this._topLeft ? { preference: this._topLeft } : null;\n\t}\n\n\tshow(): void {\n\t\tif (!this._added) {\n\t\t\tthis._editor.addOverlayWidget(this);\n\t\t\tthis._added = true;\n\t\t}\n\t}\n\n\thide(sessionEnded: boolean = false): void {\n\t\tthis._resizable.clearSashHoverState();\n\n\t\tif (this._added) {\n\t\t\tthis._editor.removeOverlayWidget(this);\n\t\t\tthis._added = false;\n\t\t\tthis._anchorBox = undefined;\n\t\t\tthis._topLeft = undefined;\n\t\t}\n\t\tif (sessionEnded) {\n\t\t\tthis._userSize = undefined;\n\t\t\tthis.widget.clearContents();\n\t\t}\n\t}\n\n\tplaceAtAnchor(anchor: HTMLElement, preferAlignAtTop: boolean) {\n\t\tconst anchorBox = anchor.getBoundingClientRect();\n\t\tthis._anchorBox = anchorBox;\n\t\tthis._preferAlignAtTop = preferAlignAtTop;\n\t\tthis._placeAtAnchor(this._anchorBox, this._userSize ?? this.widget.size, preferAlignAtTop);\n\t}\n\n\t_placeAtAnchor(anchorBox: dom.IDomNodePagePosition, size: dom.Dimension, preferAlignAtTop: boolean) {\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\n\t\tconst info = this.widget.getLayoutInfo();\n\n\t\tconst defaultMinSize = new dom.Dimension(220, 2 * info.lineHeight);\n\t\tconst defaultTop = anchorBox.top;\n\n\t\ttype Placement = { top: number; left: number; fit: number; maxSizeTop: dom.Dimension; maxSizeBottom: dom.Dimension; minSize: dom.Dimension };\n\n\t\t// EAST\n\t\tconst eastPlacement: Placement = (function () {\n\t\t\tconst width = bodyBox.width - (anchorBox.left + anchorBox.width + info.borderWidth + info.horizontalPadding);\n\t\t\tconst left = -info.borderWidth + anchorBox.left + anchorBox.width;\n\t\t\tconst maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n\t\t\tconst maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n\t\t\treturn { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n\t\t})();\n\n\t\t// WEST\n\t\tconst westPlacement: Placement = (function () {\n\t\t\tconst width = anchorBox.left - info.borderWidth - info.horizontalPadding;\n\t\t\tconst left = Math.max(info.horizontalPadding, anchorBox.left - size.width - info.borderWidth);\n\t\t\tconst maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n\t\t\tconst maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n\t\t\treturn { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n\t\t})();\n\n\t\t// SOUTH\n\t\tconst southPacement: Placement = (function () {\n\t\t\tconst left = anchorBox.left;\n\t\t\tconst top = -info.borderWidth + anchorBox.top + anchorBox.height;\n\t\t\tconst maxSizeBottom = new dom.Dimension(anchorBox.width - info.borderHeight, bodyBox.height - anchorBox.top - anchorBox.height - info.verticalPadding);\n\t\t\treturn { top, left, fit: maxSizeBottom.height - size.height, maxSizeBottom, maxSizeTop: maxSizeBottom, minSize: defaultMinSize.with(maxSizeBottom.width) };\n\t\t})();\n\n\t\t// take first placement that fits or the first with \"least bad\" fit\n\t\tconst placements = [eastPlacement, westPlacement, southPacement];\n\t\tconst placement = placements.find(p => p.fit >= 0) ?? placements.sort((a, b) => b.fit - a.fit)[0];\n\n\t\t// top/bottom placement\n\t\tconst bottom = anchorBox.top + anchorBox.height - info.borderHeight;\n\t\tlet alignAtTop: boolean;\n\t\tlet height = size.height;\n\t\tconst maxHeight = Math.max(placement.maxSizeTop.height, placement.maxSizeBottom.height);\n\t\tif (height > maxHeight) {\n\t\t\theight = maxHeight;\n\t\t}\n\t\tlet maxSize: dom.Dimension;\n\t\tif (preferAlignAtTop) {\n\t\t\tif (height <= placement.maxSizeTop.height) {\n\t\t\t\talignAtTop = true;\n\t\t\t\tmaxSize = placement.maxSizeTop;\n\t\t\t} else {\n\t\t\t\talignAtTop = false;\n\t\t\t\tmaxSize = placement.maxSizeBottom;\n\t\t\t}\n\t\t} else {\n\t\t\tif (height <= placement.maxSizeBottom.height) {\n\t\t\t\talignAtTop = false;\n\t\t\t\tmaxSize = placement.maxSizeBottom;\n\t\t\t} else {\n\t\t\t\talignAtTop = true;\n\t\t\t\tmaxSize = placement.maxSizeTop;\n\t\t\t}\n\t\t}\n\n\t\tlet { top, left } = placement;\n\t\tif (!alignAtTop && height > anchorBox.height) {\n\t\t\ttop = bottom - height;\n\t\t}\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tif (editorDomNode) {\n\t\t\t// get bounding rectangle of the suggest widget relative to the editor\n\t\t\tconst editorBoundingBox = editorDomNode.getBoundingClientRect();\n\t\t\ttop -= editorBoundingBox.top;\n\t\t\tleft -= editorBoundingBox.left;\n\t\t}\n\t\tthis._applyTopLeft({ left, top });\n\n\t\tthis._resizable.enableSashes(!alignAtTop, placement === eastPlacement, alignAtTop, placement !== eastPlacement);\n\n\t\tthis._resizable.minSize = placement.minSize;\n\t\tthis._resizable.maxSize = maxSize;\n\t\tthis._resizable.layout(height, Math.min(maxSize.width, size.width));\n\t\tthis.widget.layout(this._resizable.size.width, this._resizable.size.height);\n\t}\n\n\tprivate _applyTopLeft(topLeft: TopLeftPosition): void {\n\t\tthis._topLeft = topLeft;\n\t\tthis._editor.layoutOverlayWidget(this);\n\t}\n}\n"]}
|
|
@@ -17,7 +17,7 @@ import { $, append, clearNode } from '../../../../base/browser/dom.js';
|
|
|
17
17
|
import { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';
|
|
18
18
|
import { Action } from '../../../../base/common/actions.js';
|
|
19
19
|
import { Disposable } from '../../../../base/common/lifecycle.js';
|
|
20
|
-
import { IMarkdownRendererService } from '
|
|
20
|
+
import { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';
|
|
21
21
|
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
|
22
22
|
import { Link } from '../../../../platform/opener/browser/link.js';
|
|
23
23
|
import { widgetClose } from '../../../../platform/theme/common/iconRegistry.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;gGAGgG;AAChG,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts"],"names":[],"mappings":"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","file":"bannerController.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 *--------------------------------------------------------------------------------------------*/\nimport './bannerController.css';\nimport { localize } from '../../../../nls.js';\nimport { $, append, clearNode } from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { Action } from '../../../../base/common/actions.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILinkDescriptor, Link } from '../../../../platform/opener/browser/link.js';\nimport { widgetClose } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\n\nconst BANNER_ELEMENT_HEIGHT = 26;\n\nexport class BannerController extends Disposable {\n\tprivate readonly banner: Banner;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\n\t\tthis.banner = this._register(this.instantiationService.createInstance(Banner));\n\t}\n\n\tpublic hide() {\n\t\tthis._editor.setBanner(null, 0);\n\t\tthis.banner.clear();\n\t}\n\n\tpublic show(item: IBannerItem) {\n\t\tthis.banner.show({\n\t\t\t...item,\n\t\t\tonClose: () => {\n\t\t\t\tthis.hide();\n\t\t\t\titem.onClose?.();\n\t\t\t}\n\t\t});\n\t\tthis._editor.setBanner(this.banner.element, BANNER_ELEMENT_HEIGHT);\n\t}\n}\n\n// TODO@hediet: Investigate if this can be reused by the workspace banner (bannerPart.ts).\nclass Banner extends Disposable {\n\tpublic element: HTMLElement;\n\n\tprivate messageActionsContainer: HTMLElement | undefined;\n\n\tprivate actionBar: ActionBar | undefined;\n\n\tconstructor(\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t\t@IMarkdownRendererService private readonly markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\n\t\tthis.element = $('div.editor-banner');\n\t\tthis.element.tabIndex = 0;\n\t}\n\n\tprivate getAriaLabel(item: IBannerItem): string | undefined {\n\t\tif (item.ariaLabel) {\n\t\t\treturn item.ariaLabel;\n\t\t}\n\t\tif (typeof item.message === 'string') {\n\t\t\treturn item.message;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate getBannerMessage(message: MarkdownString | string): HTMLElement {\n\t\tif (typeof message === 'string') {\n\t\t\tconst element = $('span');\n\t\t\telement.innerText = message;\n\t\t\treturn element;\n\t\t}\n\n\t\treturn this.markdownRendererService.render(message).element;\n\t}\n\n\tpublic clear() {\n\t\tclearNode(this.element);\n\t}\n\n\tpublic show(item: IBannerItem) {\n\t\t// Clear previous item\n\t\tclearNode(this.element);\n\n\t\t// Banner aria label\n\t\tconst ariaLabel = this.getAriaLabel(item);\n\t\tif (ariaLabel) {\n\t\t\tthis.element.setAttribute('aria-label', ariaLabel);\n\t\t}\n\n\t\t// Icon\n\t\tconst iconContainer = append(this.element, $('div.icon-container'));\n\t\ticonContainer.setAttribute('aria-hidden', 'true');\n\n\t\tif (item.icon) {\n\t\t\ticonContainer.appendChild($(`div${ThemeIcon.asCSSSelector(item.icon)}`));\n\t\t}\n\n\t\t// Message\n\t\tconst messageContainer = append(this.element, $('div.message-container'));\n\t\tmessageContainer.setAttribute('aria-hidden', 'true');\n\t\tmessageContainer.appendChild(this.getBannerMessage(item.message));\n\n\t\t// Message Actions\n\t\tthis.messageActionsContainer = append(this.element, $('div.message-actions-container'));\n\t\tif (item.actions) {\n\t\t\tfor (const action of item.actions) {\n\t\t\t\tthis._register(this.instantiationService.createInstance(Link, this.messageActionsContainer, { ...action, tabIndex: -1 }, {}));\n\t\t\t}\n\t\t}\n\n\t\t// Action\n\t\tconst actionBarContainer = append(this.element, $('div.action-container'));\n\t\tthis.actionBar = this._register(new ActionBar(actionBarContainer));\n\t\tthis.actionBar.push(this._register(\n\t\t\tnew Action(\n\t\t\t\t'banner.close',\n\t\t\t\tlocalize('closeBanner', \"Close Banner\"),\n\t\t\t\tThemeIcon.asClassName(widgetClose),\n\t\t\t\ttrue,\n\t\t\t\t() => {\n\t\t\t\t\tif (typeof item.onClose === 'function') {\n\t\t\t\t\t\titem.onClose();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t), { icon: true, label: false });\n\t\tthis.actionBar.setFocusable(false);\n\t}\n}\n\nexport interface IBannerItem {\n\treadonly id: string;\n\treadonly icon: ThemeIcon | undefined;\n\treadonly message: string | MarkdownString;\n\treadonly actions?: ILinkDescriptor[];\n\treadonly ariaLabel?: string;\n\treadonly onClose?: () => void;\n}\n"]}
|
|
@@ -35,7 +35,7 @@ import { IWorkspaceTrustManagementService } from '../../../../platform/workspace
|
|
|
35
35
|
import { Action2, registerAction2 } from '../../../../platform/actions/common/actions.js';
|
|
36
36
|
import { safeIntl } from '../../../../base/common/date.js';
|
|
37
37
|
import { isModelDecorationInComment, isModelDecorationInString, isModelDecorationVisible } from '../../../common/viewModel/viewModelDecoration.js';
|
|
38
|
-
import { IMarkdownRendererService } from '
|
|
38
|
+
import { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';
|
|
39
39
|
export const warningIcon = registerIcon('extensions-warning-message', Codicon.warning, nls.localize(1520, 'Icon shown with a warning message in the extensions editor.'));
|
|
40
40
|
let UnicodeHighlighter = class UnicodeHighlighter extends Disposable {
|
|
41
41
|
static { this.ID = 'editor.contrib.unicodeHighlighter'; }
|