{"version":3,"file":"static/js/7364_5891912fa80efe6f1054.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelens.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codeLensCache.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensController.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/color.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorContributions.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPickerModel.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPickerWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorHoverParticipant.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/defaultDocumentColorProvider.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPickerWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/blockCommentCommand.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/lineCommentCommand.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/comment.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js"],"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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class CodeLensModel {\n constructor() {\n this.lenses = [];\n this._disposables = new DisposableStore();\n }\n dispose() {\n this._disposables.dispose();\n }\n get isDisposed() {\n return this._disposables.isDisposed;\n }\n add(list, provider) {\n this._disposables.add(list);\n for (const symbol of list.lenses) {\n this.lenses.push({ symbol, provider });\n }\n }\n}\nexport async function getCodeLensModel(registry, model, token) {\n const provider = registry.ordered(model);\n const providerRanks = new Map();\n const result = new CodeLensModel();\n const promises = provider.map(async (provider, i) => {\n providerRanks.set(provider, i);\n try {\n const list = await Promise.resolve(provider.provideCodeLenses(model, token));\n if (list) {\n result.add(list, provider);\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n });\n await Promise.all(promises);\n result.lenses = result.lenses.sort((a, b) => {\n // sort by lineNumber, provider-rank, and column\n if (a.symbol.range.startLineNumber < b.symbol.range.startLineNumber) {\n return -1;\n }\n else if (a.symbol.range.startLineNumber > b.symbol.range.startLineNumber) {\n return 1;\n }\n else if ((providerRanks.get(a.provider)) < (providerRanks.get(b.provider))) {\n return -1;\n }\n else if ((providerRanks.get(a.provider)) > (providerRanks.get(b.provider))) {\n return 1;\n }\n else if (a.symbol.range.startColumn < b.symbol.range.startColumn) {\n return -1;\n }\n else if (a.symbol.range.startColumn > b.symbol.range.startColumn) {\n return 1;\n }\n else {\n return 0;\n }\n });\n return result;\n}\nCommandsRegistry.registerCommand('_executeCodeLensProvider', function (accessor, ...args) {\n let [uri, itemResolveCount] = args;\n assertType(URI.isUri(uri));\n assertType(typeof itemResolveCount === 'number' || !itemResolveCount);\n const { codeLensProvider } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(uri);\n if (!model) {\n throw illegalArgument();\n }\n const result = [];\n const disposables = new DisposableStore();\n return getCodeLensModel(codeLensProvider, model, CancellationToken.None).then(value => {\n disposables.add(value);\n const resolve = [];\n for (const item of value.lenses) {\n if (itemResolveCount === undefined || itemResolveCount === null || Boolean(item.symbol.command)) {\n result.push(item.symbol);\n }\n else if (itemResolveCount-- > 0 && item.provider.resolveCodeLens) {\n resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol || item.symbol)));\n }\n }\n return Promise.all(resolve);\n }).then(() => {\n return result;\n }).finally(() => {\n // make sure to return results, then (on next tick)\n // dispose the results\n setTimeout(() => disposables.dispose(), 100);\n });\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Event } from '../../../../base/common/event.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CodeLensModel } from './codelens.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, WillSaveStateReason } from '../../../../platform/storage/common/storage.js';\nimport { mainWindow } from '../../../../base/browser/window.js';\nimport { runWhenWindowIdle } from '../../../../base/browser/dom.js';\nexport const ICodeLensCache = createDecorator('ICodeLensCache');\nclass CacheItem {\n constructor(lineCount, data) {\n this.lineCount = lineCount;\n this.data = data;\n }\n}\nlet CodeLensCache = class CodeLensCache {\n constructor(storageService) {\n this._fakeProvider = new class {\n provideCodeLenses() {\n throw new Error('not supported');\n }\n };\n this._cache = new LRUCache(20, 0.75);\n // remove old data\n const oldkey = 'codelens/cache';\n runWhenWindowIdle(mainWindow, () => storageService.remove(oldkey, 1 /* StorageScope.WORKSPACE */));\n // restore lens data on start\n const key = 'codelens/cache2';\n const raw = storageService.get(key, 1 /* StorageScope.WORKSPACE */, '{}');\n this._deserialize(raw);\n // store lens data on shutdown\n Event.once(storageService.onWillSaveState)(e => {\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\n storageService.store(key, this._serialize(), 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n }\n });\n }\n put(model, data) {\n // create a copy of the model that is without command-ids\n // but with comand-labels\n const copyItems = data.lenses.map(item => {\n var _a;\n return {\n range: item.symbol.range,\n command: item.symbol.command && { id: '', title: (_a = item.symbol.command) === null || _a === void 0 ? void 0 : _a.title },\n };\n });\n const copyModel = new CodeLensModel();\n copyModel.add({ lenses: copyItems, dispose: () => { } }, this._fakeProvider);\n const item = new CacheItem(model.getLineCount(), copyModel);\n this._cache.set(model.uri.toString(), item);\n }\n get(model) {\n const item = this._cache.get(model.uri.toString());\n return item && item.lineCount === model.getLineCount() ? item.data : undefined;\n }\n delete(model) {\n this._cache.delete(model.uri.toString());\n }\n // --- persistence\n _serialize() {\n const data = Object.create(null);\n for (const [key, value] of this._cache) {\n const lines = new Set();\n for (const d of value.data.lenses) {\n lines.add(d.symbol.range.startLineNumber);\n }\n data[key] = {\n lineCount: value.lineCount,\n lines: [...lines.values()]\n };\n }\n return JSON.stringify(data);\n }\n _deserialize(raw) {\n try {\n const data = JSON.parse(raw);\n for (const key in data) {\n const element = data[key];\n const lenses = [];\n for (const line of element.lines) {\n lenses.push({ range: new Range(line, 1, line, 11) });\n }\n const model = new CodeLensModel();\n model.add({ lenses, dispose() { } }, this._fakeProvider);\n this._cache.set(key, new CacheItem(element.lineCount, model));\n }\n }\n catch (_a) {\n // ignore...\n }\n }\n};\nCodeLensCache = __decorate([\n __param(0, IStorageService)\n], CodeLensCache);\nexport { CodeLensCache };\nregisterSingleton(ICodeLensCache, CodeLensCache, 1 /* InstantiationType.Delayed */);\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 *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { renderLabelWithIcons } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport './codelensWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nclass CodeLensViewZone {\n constructor(afterLineNumber, heightInPx, onHeight) {\n /**\n * We want that this view zone, which reserves space for a code lens appears\n * as close as possible to the next line, so we use a very large value here.\n */\n this.afterColumn = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n this.afterLineNumber = afterLineNumber;\n this.heightInPx = heightInPx;\n this._onHeight = onHeight;\n this.suppressMouseDown = true;\n this.domNode = document.createElement('div');\n }\n onComputedHeight(height) {\n if (this._lastHeight === undefined) {\n this._lastHeight = height;\n }\n else if (this._lastHeight !== height) {\n this._lastHeight = height;\n this._onHeight();\n }\n }\n isVisible() {\n return this._lastHeight !== 0\n && this.domNode.hasAttribute('monaco-visible-view-zone');\n }\n}\nclass CodeLensContentWidget {\n constructor(editor, line) {\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = false;\n this.suppressMouseDown = true;\n this._commands = new Map();\n this._isEmpty = true;\n this._editor = editor;\n this._id = `codelens.widget-${(CodeLensContentWidget._idPool++)}`;\n this.updatePosition(line);\n this._domNode = document.createElement('span');\n this._domNode.className = `codelens-decoration`;\n }\n withCommands(lenses, animate) {\n this._commands.clear();\n const children = [];\n let hasSymbol = false;\n for (let i = 0; i < lenses.length; i++) {\n const lens = lenses[i];\n if (!lens) {\n continue;\n }\n hasSymbol = true;\n if (lens.command) {\n const title = renderLabelWithIcons(lens.command.title.trim());\n if (lens.command.id) {\n const id = `c${(CodeLensContentWidget._idPool++)}`;\n children.push(dom.$('a', { id, title: lens.command.tooltip, role: 'button' }, ...title));\n this._commands.set(id, lens.command);\n }\n else {\n children.push(dom.$('span', { title: lens.command.tooltip }, ...title));\n }\n if (i + 1 < lenses.length) {\n children.push(dom.$('span', undefined, '\\u00a0|\\u00a0'));\n }\n }\n }\n if (!hasSymbol) {\n // symbols but no commands\n dom.reset(this._domNode, dom.$('span', undefined, 'no commands'));\n }\n else {\n // symbols and commands\n dom.reset(this._domNode, ...children);\n if (this._isEmpty && animate) {\n this._domNode.classList.add('fadein');\n }\n this._isEmpty = false;\n }\n }\n getCommand(link) {\n return link.parentElement === this._domNode\n ? this._commands.get(link.id)\n : undefined;\n }\n getId() {\n return this._id;\n }\n getDomNode() {\n return this._domNode;\n }\n updatePosition(line) {\n const column = this._editor.getModel().getLineFirstNonWhitespaceColumn(line);\n this._widgetPosition = {\n position: { lineNumber: line, column: column },\n preference: [1 /* ContentWidgetPositionPreference.ABOVE */]\n };\n }\n getPosition() {\n return this._widgetPosition || null;\n }\n}\nCodeLensContentWidget._idPool = 0;\nexport class CodeLensHelper {\n constructor() {\n this._removeDecorations = [];\n this._addDecorations = [];\n this._addDecorationsCallbacks = [];\n }\n addDecoration(decoration, callback) {\n this._addDecorations.push(decoration);\n this._addDecorationsCallbacks.push(callback);\n }\n removeDecoration(decorationId) {\n this._removeDecorations.push(decorationId);\n }\n commit(changeAccessor) {\n const resultingDecorations = changeAccessor.deltaDecorations(this._removeDecorations, this._addDecorations);\n for (let i = 0, len = resultingDecorations.length; i < len; i++) {\n this._addDecorationsCallbacks[i](resultingDecorations[i]);\n }\n }\n}\nconst codeLensDecorationOptions = ModelDecorationOptions.register({\n collapseOnReplaceEdit: true,\n description: 'codelens'\n});\nexport class CodeLensWidget {\n constructor(data, editor, helper, viewZoneChangeAccessor, heightInPx, updateCallback) {\n this._isDisposed = false;\n this._editor = editor;\n this._data = data;\n // create combined range, track all ranges with decorations,\n // check if there is already something to render\n this._decorationIds = [];\n let range;\n const lenses = [];\n this._data.forEach((codeLensData, i) => {\n if (codeLensData.symbol.command) {\n lenses.push(codeLensData.symbol);\n }\n helper.addDecoration({\n range: codeLensData.symbol.range,\n options: codeLensDecorationOptions\n }, id => this._decorationIds[i] = id);\n // the range contains all lenses on this line\n if (!range) {\n range = Range.lift(codeLensData.symbol.range);\n }\n else {\n range = Range.plusRange(range, codeLensData.symbol.range);\n }\n });\n this._viewZone = new CodeLensViewZone(range.startLineNumber - 1, heightInPx, updateCallback);\n this._viewZoneId = viewZoneChangeAccessor.addZone(this._viewZone);\n if (lenses.length > 0) {\n this._createContentWidgetIfNecessary();\n this._contentWidget.withCommands(lenses, false);\n }\n }\n _createContentWidgetIfNecessary() {\n if (!this._contentWidget) {\n this._contentWidget = new CodeLensContentWidget(this._editor, this._viewZone.afterLineNumber + 1);\n this._editor.addContentWidget(this._contentWidget);\n }\n else {\n this._editor.layoutContentWidget(this._contentWidget);\n }\n }\n dispose(helper, viewZoneChangeAccessor) {\n this._decorationIds.forEach(helper.removeDecoration, helper);\n this._decorationIds = [];\n viewZoneChangeAccessor === null || viewZoneChangeAccessor === void 0 ? void 0 : viewZoneChangeAccessor.removeZone(this._viewZoneId);\n if (this._contentWidget) {\n this._editor.removeContentWidget(this._contentWidget);\n this._contentWidget = undefined;\n }\n this._isDisposed = true;\n }\n isDisposed() {\n return this._isDisposed;\n }\n isValid() {\n return this._decorationIds.some((id, i) => {\n const range = this._editor.getModel().getDecorationRange(id);\n const symbol = this._data[i].symbol;\n return !!(range && Range.isEmpty(symbol.range) === range.isEmpty());\n });\n }\n updateCodeLensSymbols(data, helper) {\n this._decorationIds.forEach(helper.removeDecoration, helper);\n this._decorationIds = [];\n this._data = data;\n this._data.forEach((codeLensData, i) => {\n helper.addDecoration({\n range: codeLensData.symbol.range,\n options: codeLensDecorationOptions\n }, id => this._decorationIds[i] = id);\n });\n }\n updateHeight(height, viewZoneChangeAccessor) {\n this._viewZone.heightInPx = height;\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\n if (this._contentWidget) {\n this._editor.layoutContentWidget(this._contentWidget);\n }\n }\n computeIfNecessary(model) {\n if (!this._viewZone.isVisible()) {\n return null;\n }\n // Read editor current state\n for (let i = 0; i < this._decorationIds.length; i++) {\n const range = model.getDecorationRange(this._decorationIds[i]);\n if (range) {\n this._data[i].symbol.range = range;\n }\n }\n return this._data;\n }\n updateCommands(symbols) {\n this._createContentWidgetIfNecessary();\n this._contentWidget.withCommands(symbols, true);\n for (let i = 0; i < this._data.length; i++) {\n const resolved = symbols[i];\n if (resolved) {\n const { symbol } = this._data[i];\n symbol.command = resolved.command || symbol.command;\n }\n }\n }\n getCommand(link) {\n var _a;\n return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.getCommand(link);\n }\n getLineNumber() {\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\n if (range) {\n return range.startLineNumber;\n }\n return -1;\n }\n update(viewZoneChangeAccessor) {\n if (this.isValid()) {\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\n if (range) {\n this._viewZone.afterLineNumber = range.startLineNumber - 1;\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\n if (this._contentWidget) {\n this._contentWidget.updatePosition(range.startLineNumber);\n this._editor.layoutContentWidget(this._contentWidget);\n }\n }\n }\n }\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createCancelablePromise, disposableTimeout, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/editorOptions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { getCodeLensModel } from './codelens.js';\nimport { ICodeLensCache } from './codeLensCache.js';\nimport { CodeLensHelper, CodeLensWidget } from './codelensWidget.js';\nimport { localize } from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nlet CodeLensContribution = class CodeLensContribution {\n constructor(_editor, _languageFeaturesService, debounceService, _commandService, _notificationService, _codeLensCache) {\n this._editor = _editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._commandService = _commandService;\n this._notificationService = _notificationService;\n this._codeLensCache = _codeLensCache;\n this._disposables = new DisposableStore();\n this._localToDispose = new DisposableStore();\n this._lenses = [];\n this._oldCodeLensModels = new DisposableStore();\n this._provideCodeLensDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensProvide', { min: 250 });\n this._resolveCodeLensesDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensResolve', { min: 250, salt: 'resolve' });\n this._resolveCodeLensesScheduler = new RunOnceScheduler(() => this._resolveCodeLensesInViewport(), this._resolveCodeLensesDebounce.default());\n this._disposables.add(this._editor.onDidChangeModel(() => this._onModelChange()));\n this._disposables.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\n this._disposables.add(this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(50 /* EditorOption.fontInfo */) || e.hasChanged(19 /* EditorOption.codeLensFontSize */) || e.hasChanged(18 /* EditorOption.codeLensFontFamily */)) {\n this._updateLensStyle();\n }\n if (e.hasChanged(17 /* EditorOption.codeLens */)) {\n this._onModelChange();\n }\n }));\n this._disposables.add(_languageFeaturesService.codeLensProvider.onDidChange(this._onModelChange, this));\n this._onModelChange();\n this._updateLensStyle();\n }\n dispose() {\n var _a;\n this._localDispose();\n this._disposables.dispose();\n this._oldCodeLensModels.dispose();\n (_a = this._currentCodeLensModel) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n _getLayoutInfo() {\n const lineHeightFactor = Math.max(1.3, this._editor.getOption(67 /* EditorOption.lineHeight */) / this._editor.getOption(52 /* EditorOption.fontSize */));\n let fontSize = this._editor.getOption(19 /* EditorOption.codeLensFontSize */);\n if (!fontSize || fontSize < 5) {\n fontSize = (this._editor.getOption(52 /* EditorOption.fontSize */) * .9) | 0;\n }\n return {\n fontSize,\n codeLensHeight: (fontSize * lineHeightFactor) | 0,\n };\n }\n _updateLensStyle() {\n const { codeLensHeight, fontSize } = this._getLayoutInfo();\n const fontFamily = this._editor.getOption(18 /* EditorOption.codeLensFontFamily */);\n const editorFontInfo = this._editor.getOption(50 /* EditorOption.fontInfo */);\n const { style } = this._editor.getContainerDomNode();\n style.setProperty('--vscode-editorCodeLens-lineHeight', `${codeLensHeight}px`);\n style.setProperty('--vscode-editorCodeLens-fontSize', `${fontSize}px`);\n style.setProperty('--vscode-editorCodeLens-fontFeatureSettings', editorFontInfo.fontFeatureSettings);\n if (fontFamily) {\n style.setProperty('--vscode-editorCodeLens-fontFamily', fontFamily);\n style.setProperty('--vscode-editorCodeLens-fontFamilyDefault', EDITOR_FONT_DEFAULTS.fontFamily);\n }\n //\n this._editor.changeViewZones(accessor => {\n for (const lens of this._lenses) {\n lens.updateHeight(codeLensHeight, accessor);\n }\n });\n }\n _localDispose() {\n var _a, _b, _c;\n (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._getCodeLensModelPromise = undefined;\n (_b = this._resolveCodeLensesPromise) === null || _b === void 0 ? void 0 : _b.cancel();\n this._resolveCodeLensesPromise = undefined;\n this._localToDispose.clear();\n this._oldCodeLensModels.clear();\n (_c = this._currentCodeLensModel) === null || _c === void 0 ? void 0 : _c.dispose();\n }\n _onModelChange() {\n this._localDispose();\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n if (!this._editor.getOption(17 /* EditorOption.codeLens */) || model.isTooLargeForTokenization()) {\n return;\n }\n const cachedLenses = this._codeLensCache.get(model);\n if (cachedLenses) {\n this._renderCodeLensSymbols(cachedLenses);\n }\n if (!this._languageFeaturesService.codeLensProvider.has(model)) {\n // no provider -> return but check with\n // cached lenses. they expire after 30 seconds\n if (cachedLenses) {\n disposableTimeout(() => {\n const cachedLensesNow = this._codeLensCache.get(model);\n if (cachedLenses === cachedLensesNow) {\n this._codeLensCache.delete(model);\n this._onModelChange();\n }\n }, 30 * 1000, this._localToDispose);\n }\n return;\n }\n for (const provider of this._languageFeaturesService.codeLensProvider.all(model)) {\n if (typeof provider.onDidChange === 'function') {\n const registration = provider.onDidChange(() => scheduler.schedule());\n this._localToDispose.add(registration);\n }\n }\n const scheduler = new RunOnceScheduler(() => {\n var _a;\n const t1 = Date.now();\n (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._getCodeLensModelPromise = createCancelablePromise(token => getCodeLensModel(this._languageFeaturesService.codeLensProvider, model, token));\n this._getCodeLensModelPromise.then(result => {\n if (this._currentCodeLensModel) {\n this._oldCodeLensModels.add(this._currentCodeLensModel);\n }\n this._currentCodeLensModel = result;\n // cache model to reduce flicker\n this._codeLensCache.put(model, result);\n // update moving average\n const newDelay = this._provideCodeLensDebounce.update(model, Date.now() - t1);\n scheduler.delay = newDelay;\n // render lenses\n this._renderCodeLensSymbols(result);\n // dom.scheduleAtNextAnimationFrame(() => this._resolveCodeLensesInViewport());\n this._resolveCodeLensesInViewportSoon();\n }, onUnexpectedError);\n }, this._provideCodeLensDebounce.get(model));\n this._localToDispose.add(scheduler);\n this._localToDispose.add(toDisposable(() => this._resolveCodeLensesScheduler.cancel()));\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n var _a;\n this._editor.changeDecorations(decorationsAccessor => {\n this._editor.changeViewZones(viewZonesAccessor => {\n const toDispose = [];\n let lastLensLineNumber = -1;\n this._lenses.forEach((lens) => {\n if (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\n // invalid -> lens collapsed, attach range doesn't exist anymore\n // line_number -> lenses should never be on the same line\n toDispose.push(lens);\n }\n else {\n lens.update(viewZonesAccessor);\n lastLensLineNumber = lens.getLineNumber();\n }\n });\n const helper = new CodeLensHelper();\n toDispose.forEach((l) => {\n l.dispose(helper, viewZonesAccessor);\n this._lenses.splice(this._lenses.indexOf(l), 1);\n });\n helper.commit(decorationsAccessor);\n });\n });\n // Ask for all references again\n scheduler.schedule();\n // Cancel pending and active resolve requests\n this._resolveCodeLensesScheduler.cancel();\n (_a = this._resolveCodeLensesPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._resolveCodeLensesPromise = undefined;\n }));\n this._localToDispose.add(this._editor.onDidFocusEditorText(() => {\n scheduler.schedule();\n }));\n this._localToDispose.add(this._editor.onDidBlurEditorText(() => {\n scheduler.cancel();\n }));\n this._localToDispose.add(this._editor.onDidScrollChange(e => {\n if (e.scrollTopChanged && this._lenses.length > 0) {\n this._resolveCodeLensesInViewportSoon();\n }\n }));\n this._localToDispose.add(this._editor.onDidLayoutChange(() => {\n this._resolveCodeLensesInViewportSoon();\n }));\n this._localToDispose.add(toDisposable(() => {\n if (this._editor.getModel()) {\n const scrollState = StableEditorScrollState.capture(this._editor);\n this._editor.changeDecorations(decorationsAccessor => {\n this._editor.changeViewZones(viewZonesAccessor => {\n this._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\n });\n });\n scrollState.restore(this._editor);\n }\n else {\n // No accessors available\n this._disposeAllLenses(undefined, undefined);\n }\n }));\n this._localToDispose.add(this._editor.onMouseDown(e => {\n if (e.target.type !== 9 /* MouseTargetType.CONTENT_WIDGET */) {\n return;\n }\n let target = e.target.element;\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'SPAN') {\n target = target.parentElement;\n }\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'A') {\n for (const lens of this._lenses) {\n const command = lens.getCommand(target);\n if (command) {\n this._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\n break;\n }\n }\n }\n }));\n scheduler.schedule();\n }\n _disposeAllLenses(decChangeAccessor, viewZoneChangeAccessor) {\n const helper = new CodeLensHelper();\n for (const lens of this._lenses) {\n lens.dispose(helper, viewZoneChangeAccessor);\n }\n if (decChangeAccessor) {\n helper.commit(decChangeAccessor);\n }\n this._lenses.length = 0;\n }\n _renderCodeLensSymbols(symbols) {\n if (!this._editor.hasModel()) {\n return;\n }\n const maxLineNumber = this._editor.getModel().getLineCount();\n const groups = [];\n let lastGroup;\n for (const symbol of symbols.lenses) {\n const line = symbol.symbol.range.startLineNumber;\n if (line < 1 || line > maxLineNumber) {\n // invalid code lens\n continue;\n }\n else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\n // on same line as previous\n lastGroup.push(symbol);\n }\n else {\n // on later line as previous\n lastGroup = [symbol];\n groups.push(lastGroup);\n }\n }\n if (!groups.length && !this._lenses.length) {\n // Nothing to change\n return;\n }\n const scrollState = StableEditorScrollState.capture(this._editor);\n const layoutInfo = this._getLayoutInfo();\n this._editor.changeDecorations(decorationsAccessor => {\n this._editor.changeViewZones(viewZoneAccessor => {\n const helper = new CodeLensHelper();\n let codeLensIndex = 0;\n let groupsIndex = 0;\n while (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\n const symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\n const codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\n if (codeLensLineNumber < symbolsLineNumber) {\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n this._lenses.splice(codeLensIndex, 1);\n }\n else if (codeLensLineNumber === symbolsLineNumber) {\n this._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\n groupsIndex++;\n codeLensIndex++;\n }\n else {\n this._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n codeLensIndex++;\n groupsIndex++;\n }\n }\n // Delete extra code lenses\n while (codeLensIndex < this._lenses.length) {\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n this._lenses.splice(codeLensIndex, 1);\n }\n // Create extra symbols\n while (groupsIndex < groups.length) {\n this._lenses.push(new CodeLensWidget(groups[groupsIndex], this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n groupsIndex++;\n }\n helper.commit(decorationsAccessor);\n });\n });\n scrollState.restore(this._editor);\n }\n _resolveCodeLensesInViewportSoon() {\n const model = this._editor.getModel();\n if (model) {\n this._resolveCodeLensesScheduler.schedule();\n }\n }\n _resolveCodeLensesInViewport() {\n var _a;\n (_a = this._resolveCodeLensesPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._resolveCodeLensesPromise = undefined;\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n const toResolve = [];\n const lenses = [];\n this._lenses.forEach((lens) => {\n const request = lens.computeIfNecessary(model);\n if (request) {\n toResolve.push(request);\n lenses.push(lens);\n }\n });\n if (toResolve.length === 0) {\n return;\n }\n const t1 = Date.now();\n const resolvePromise = createCancelablePromise(token => {\n const promises = toResolve.map((request, i) => {\n const resolvedSymbols = new Array(request.length);\n const promises = request.map((request, i) => {\n if (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\n return Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\n resolvedSymbols[i] = symbol;\n }, onUnexpectedExternalError);\n }\n else {\n resolvedSymbols[i] = request.symbol;\n return Promise.resolve(undefined);\n }\n });\n return Promise.all(promises).then(() => {\n if (!token.isCancellationRequested && !lenses[i].isDisposed()) {\n lenses[i].updateCommands(resolvedSymbols);\n }\n });\n });\n return Promise.all(promises);\n });\n this._resolveCodeLensesPromise = resolvePromise;\n this._resolveCodeLensesPromise.then(() => {\n // update moving average\n const newDelay = this._resolveCodeLensesDebounce.update(model, Date.now() - t1);\n this._resolveCodeLensesScheduler.delay = newDelay;\n if (this._currentCodeLensModel) { // update the cached state with new resolved items\n this._codeLensCache.put(model, this._currentCodeLensModel);\n }\n this._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\n if (resolvePromise === this._resolveCodeLensesPromise) {\n this._resolveCodeLensesPromise = undefined;\n }\n }, err => {\n onUnexpectedError(err); // can also be cancellation!\n if (resolvePromise === this._resolveCodeLensesPromise) {\n this._resolveCodeLensesPromise = undefined;\n }\n });\n }\n async getModel() {\n var _a;\n await this._getCodeLensModelPromise;\n await this._resolveCodeLensesPromise;\n return !((_a = this._currentCodeLensModel) === null || _a === void 0 ? void 0 : _a.isDisposed)\n ? this._currentCodeLensModel\n : undefined;\n }\n};\nCodeLensContribution.ID = 'css.editor.codeLens';\nCodeLensContribution = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, ILanguageFeatureDebounceService),\n __param(3, ICommandService),\n __param(4, INotificationService),\n __param(5, ICodeLensCache)\n], CodeLensContribution);\nexport { CodeLensContribution };\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\n constructor() {\n super({\n id: 'codelens.showLensesInCurrentLine',\n precondition: EditorContextKeys.hasCodeLensProvider,\n label: localize('showLensOnLine', \"Show CodeLens Commands For Current Line\"),\n alias: 'Show CodeLens Commands For Current Line',\n });\n }\n async run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const quickInputService = accessor.get(IQuickInputService);\n const commandService = accessor.get(ICommandService);\n const notificationService = accessor.get(INotificationService);\n const lineNumber = editor.getSelection().positionLineNumber;\n const codelensController = editor.getContribution(CodeLensContribution.ID);\n if (!codelensController) {\n return;\n }\n const model = await codelensController.getModel();\n if (!model) {\n // nothing\n return;\n }\n const items = [];\n for (const lens of model.lenses) {\n if (lens.symbol.command && lens.symbol.range.startLineNumber === lineNumber) {\n items.push({\n label: lens.symbol.command.title,\n command: lens.symbol.command\n });\n }\n }\n if (items.length === 0) {\n // We dont want an empty picker\n return;\n }\n const item = await quickInputService.pick(items, {\n canPickMany: false,\n placeHolder: localize('placeHolder', \"Select a command\")\n });\n if (!item) {\n // Nothing picked\n return;\n }\n let command = item.command;\n if (model.isDisposed) {\n // try to find the same command again in-case the model has been re-created in the meantime\n // this is a best attempt approach which shouldn't be needed because eager model re-creates\n // shouldn't happen due to focus in/out anymore\n const newModel = await codelensController.getModel();\n const newLens = newModel === null || newModel === void 0 ? void 0 : newModel.lenses.find(lens => { var _a; return lens.symbol.range.startLineNumber === lineNumber && ((_a = lens.symbol.command) === null || _a === void 0 ? void 0 : _a.title) === command.title; });\n if (!newLens || !newLens.symbol.command) {\n return;\n }\n command = newLens.symbol.command;\n }\n try {\n await commandService.executeCommand(command.id, ...(command.arguments || []));\n }\n catch (err) {\n notificationService.error(err);\n }\n }\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 *--------------------------------------------------------------------------------------------*/\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { DefaultDocumentColorProvider } from './defaultDocumentColorProvider.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport async function getColors(colorProviderRegistry, model, token, isDefaultColorDecoratorsEnabled = true) {\n return _findColorData(new ColorDataCollector(), colorProviderRegistry, model, token, isDefaultColorDecoratorsEnabled);\n}\nexport function getColorPresentations(model, colorInfo, provider, token) {\n return Promise.resolve(provider.provideColorPresentations(model, colorInfo, token));\n}\nclass ColorDataCollector {\n constructor() { }\n async compute(provider, model, token, colors) {\n const documentColors = await provider.provideDocumentColors(model, token);\n if (Array.isArray(documentColors)) {\n for (const colorInfo of documentColors) {\n colors.push({ colorInfo, provider });\n }\n }\n return Array.isArray(documentColors);\n }\n}\nclass ExtColorDataCollector {\n constructor() { }\n async compute(provider, model, token, colors) {\n const documentColors = await provider.provideDocumentColors(model, token);\n if (Array.isArray(documentColors)) {\n for (const colorInfo of documentColors) {\n colors.push({ range: colorInfo.range, color: [colorInfo.color.red, colorInfo.color.green, colorInfo.color.blue, colorInfo.color.alpha] });\n }\n }\n return Array.isArray(documentColors);\n }\n}\nclass ColorPresentationsCollector {\n constructor(colorInfo) {\n this.colorInfo = colorInfo;\n }\n async compute(provider, model, _token, colors) {\n const documentColors = await provider.provideColorPresentations(model, this.colorInfo, CancellationToken.None);\n if (Array.isArray(documentColors)) {\n colors.push(...documentColors);\n }\n return Array.isArray(documentColors);\n }\n}\nasync function _findColorData(collector, colorProviderRegistry, model, token, isDefaultColorDecoratorsEnabled) {\n let validDocumentColorProviderFound = false;\n let defaultProvider;\n const colorData = [];\n const documentColorProviders = colorProviderRegistry.ordered(model);\n for (let i = documentColorProviders.length - 1; i >= 0; i--) {\n const provider = documentColorProviders[i];\n if (provider instanceof DefaultDocumentColorProvider) {\n defaultProvider = provider;\n }\n else {\n try {\n if (await collector.compute(provider, model, token, colorData)) {\n validDocumentColorProviderFound = true;\n }\n }\n catch (e) {\n onUnexpectedExternalError(e);\n }\n }\n }\n if (validDocumentColorProviderFound) {\n return colorData;\n }\n if (defaultProvider && isDefaultColorDecoratorsEnabled) {\n await collector.compute(defaultProvider, model, token, colorData);\n return colorData;\n }\n return [];\n}\nfunction _setupColorCommand(accessor, resource) {\n const { colorProvider: colorProviderRegistry } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(resource);\n if (!model) {\n throw illegalArgument();\n }\n const isDefaultColorDecoratorsEnabled = accessor.get(IConfigurationService).getValue('editor.defaultColorDecorators', { resource });\n return { model, colorProviderRegistry, isDefaultColorDecoratorsEnabled };\n}\nCommandsRegistry.registerCommand('_executeDocumentColorProvider', function (accessor, ...args) {\n const [resource] = args;\n if (!(resource instanceof URI)) {\n throw illegalArgument();\n }\n const { model, colorProviderRegistry, isDefaultColorDecoratorsEnabled } = _setupColorCommand(accessor, resource);\n return _findColorData(new ExtColorDataCollector(), colorProviderRegistry, model, CancellationToken.None, isDefaultColorDecoratorsEnabled);\n});\nCommandsRegistry.registerCommand('_executeColorPresentationProvider', function (accessor, ...args) {\n const [color, context] = args;\n const { uri, range } = context;\n if (!(uri instanceof URI) || !Array.isArray(color) || color.length !== 4 || !Range.isIRange(range)) {\n throw illegalArgument();\n }\n const { model, colorProviderRegistry, isDefaultColorDecoratorsEnabled } = _setupColorCommand(accessor, uri);\n const [red, green, blue, alpha] = color;\n return _findColorData(new ColorPresentationsCollector({ range: range, color: { red, green, blue, alpha } }), colorProviderRegistry, model, CancellationToken.None, isDefaultColorDecoratorsEnabled);\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 *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ColorDecorationInjectedTextMarker } from './colorDetector.js';\nimport { ColorHoverParticipant } from './colorHoverParticipant.js';\nimport { HoverController } from '../../hover/browser/hoverController.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nexport class ColorContribution extends Disposable {\n constructor(_editor) {\n super();\n this._editor = _editor;\n this._register(_editor.onMouseDown((e) => this.onMouseDown(e)));\n }\n dispose() {\n super.dispose();\n }\n onMouseDown(mouseEvent) {\n const colorDecoratorsActivatedOn = this._editor.getOption(148 /* EditorOption.colorDecoratorsActivatedOn */);\n if (colorDecoratorsActivatedOn !== 'click' && colorDecoratorsActivatedOn !== 'clickAndHover') {\n return;\n }\n const target = mouseEvent.target;\n if (target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n return;\n }\n if (!target.detail.injectedText) {\n return;\n }\n if (target.detail.injectedText.options.attachedData !== ColorDecorationInjectedTextMarker) {\n return;\n }\n if (!target.range) {\n return;\n }\n const hoverController = this._editor.getContribution(HoverController.ID);\n if (!hoverController) {\n return;\n }\n if (!hoverController.isColorPickerVisible) {\n const range = new Range(target.range.startLineNumber, target.range.startColumn + 1, target.range.endLineNumber, target.range.endColumn + 1);\n hoverController.showContentHover(range, 1 /* HoverStartMode.Immediate */, 0 /* HoverStartSource.Mouse */, false, true);\n }\n }\n}\nColorContribution.ID = 'editor.contrib.colorContribution'; // ms\nregisterEditorContribution(ColorContribution.ID, ColorContribution, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nHoverParticipantRegistry.register(ColorHoverParticipant);\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ColorDetector_1;\nimport { createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport const ColorDecorationInjectedTextMarker = Object.create({});\nlet ColorDetector = ColorDetector_1 = class ColorDetector extends Disposable {\n constructor(_editor, _configurationService, _languageFeaturesService, languageFeatureDebounceService) {\n super();\n this._editor = _editor;\n this._configurationService = _configurationService;\n this._languageFeaturesService = _languageFeaturesService;\n this._localToDispose = this._register(new DisposableStore());\n this._decorationsIds = [];\n this._colorDatas = new Map();\n this._colorDecoratorIds = this._editor.createDecorationsCollection();\n this._ruleFactory = new DynamicCssRules(this._editor);\n this._decoratorLimitReporter = new DecoratorLimitReporter();\n this._colorDecorationClassRefs = this._register(new DisposableStore());\n this._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector_1.RECOMPUTE_TIME });\n this._register(_editor.onDidChangeModel(() => {\n this._isColorDecoratorsEnabled = this.isEnabled();\n this.updateColors();\n }));\n this._register(_editor.onDidChangeModelLanguage(() => this.updateColors()));\n this._register(_languageFeaturesService.colorProvider.onDidChange(() => this.updateColors()));\n this._register(_editor.onDidChangeConfiguration((e) => {\n const prevIsEnabled = this._isColorDecoratorsEnabled;\n this._isColorDecoratorsEnabled = this.isEnabled();\n this._isDefaultColorDecoratorsEnabled = this._editor.getOption(147 /* EditorOption.defaultColorDecorators */);\n const updatedColorDecoratorsSetting = prevIsEnabled !== this._isColorDecoratorsEnabled || e.hasChanged(21 /* EditorOption.colorDecoratorsLimit */);\n const updatedDefaultColorDecoratorsSetting = e.hasChanged(147 /* EditorOption.defaultColorDecorators */);\n if (updatedColorDecoratorsSetting || updatedDefaultColorDecoratorsSetting) {\n if (this._isColorDecoratorsEnabled) {\n this.updateColors();\n }\n else {\n this.removeAllDecorations();\n }\n }\n }));\n this._timeoutTimer = null;\n this._computePromise = null;\n this._isColorDecoratorsEnabled = this.isEnabled();\n this._isDefaultColorDecoratorsEnabled = this._editor.getOption(147 /* EditorOption.defaultColorDecorators */);\n this.updateColors();\n }\n isEnabled() {\n const model = this._editor.getModel();\n if (!model) {\n return false;\n }\n const languageId = model.getLanguageId();\n // handle deprecated settings. [languageId].colorDecorators.enable\n const deprecatedConfig = this._configurationService.getValue(languageId);\n if (deprecatedConfig && typeof deprecatedConfig === 'object') {\n const colorDecorators = deprecatedConfig['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n if (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n return colorDecorators['enable'];\n }\n }\n return this._editor.getOption(20 /* EditorOption.colorDecorators */);\n }\n static get(editor) {\n return editor.getContribution(this.ID);\n }\n dispose() {\n this.stop();\n this.removeAllDecorations();\n super.dispose();\n }\n updateColors() {\n this.stop();\n if (!this._isColorDecoratorsEnabled) {\n return;\n }\n const model = this._editor.getModel();\n if (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n return;\n }\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n if (!this._timeoutTimer) {\n this._timeoutTimer = new TimeoutTimer();\n this._timeoutTimer.cancelAndSet(() => {\n this._timeoutTimer = null;\n this.beginCompute();\n }, this._debounceInformation.get(model));\n }\n }));\n this.beginCompute();\n }\n async beginCompute() {\n this._computePromise = createCancelablePromise(async (token) => {\n const model = this._editor.getModel();\n if (!model) {\n return [];\n }\n const sw = new StopWatch(false);\n const colors = await getColors(this._languageFeaturesService.colorProvider, model, token, this._isDefaultColorDecoratorsEnabled);\n this._debounceInformation.update(model, sw.elapsed());\n return colors;\n });\n try {\n const colors = await this._computePromise;\n this.updateDecorations(colors);\n this.updateColorDecorators(colors);\n this._computePromise = null;\n }\n catch (e) {\n onUnexpectedError(e);\n }\n }\n stop() {\n if (this._timeoutTimer) {\n this._timeoutTimer.cancel();\n this._timeoutTimer = null;\n }\n if (this._computePromise) {\n this._computePromise.cancel();\n this._computePromise = null;\n }\n this._localToDispose.clear();\n }\n updateDecorations(colorDatas) {\n const decorations = colorDatas.map(c => ({\n range: {\n startLineNumber: c.colorInfo.range.startLineNumber,\n startColumn: c.colorInfo.range.startColumn,\n endLineNumber: c.colorInfo.range.endLineNumber,\n endColumn: c.colorInfo.range.endColumn\n },\n options: ModelDecorationOptions.EMPTY\n }));\n this._editor.changeDecorations((changeAccessor) => {\n this._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n this._colorDatas = new Map();\n this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n });\n }\n updateColorDecorators(colorData) {\n this._colorDecorationClassRefs.clear();\n const decorations = [];\n const limit = this._editor.getOption(21 /* EditorOption.colorDecoratorsLimit */);\n for (let i = 0; i < colorData.length && decorations.length < limit; i++) {\n const { red, green, blue, alpha } = colorData[i].colorInfo.color;\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n const color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n const ref = this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({\n backgroundColor: color\n }));\n decorations.push({\n range: {\n startLineNumber: colorData[i].colorInfo.range.startLineNumber,\n startColumn: colorData[i].colorInfo.range.startColumn,\n endLineNumber: colorData[i].colorInfo.range.endLineNumber,\n endColumn: colorData[i].colorInfo.range.endColumn\n },\n options: {\n description: 'colorDetector',\n before: {\n content: noBreakWhitespace,\n inlineClassName: `${ref.className} colorpicker-color-decoration`,\n inlineClassNameAffectsLetterSpacing: true,\n attachedData: ColorDecorationInjectedTextMarker\n }\n }\n });\n }\n const limited = limit < colorData.length ? limit : false;\n this._decoratorLimitReporter.update(colorData.length, limited);\n this._colorDecoratorIds.set(decorations);\n }\n removeAllDecorations() {\n this._editor.removeDecorations(this._decorationsIds);\n this._decorationsIds = [];\n this._colorDecoratorIds.clear();\n this._colorDecorationClassRefs.clear();\n }\n getColorData(position) {\n const model = this._editor.getModel();\n if (!model) {\n return null;\n }\n const decorations = model\n .getDecorationsInRange(Range.fromPositions(position, position))\n .filter(d => this._colorDatas.has(d.id));\n if (decorations.length === 0) {\n return null;\n }\n return this._colorDatas.get(decorations[0].id);\n }\n isColorDecoration(decoration) {\n return this._colorDecoratorIds.has(decoration);\n }\n};\nColorDetector.ID = 'editor.contrib.colorDetector';\nColorDetector.RECOMPUTE_TIME = 1000; // ms\nColorDetector = ColorDetector_1 = __decorate([\n __param(1, IConfigurationService),\n __param(2, ILanguageFeaturesService),\n __param(3, ILanguageFeatureDebounceService)\n], ColorDetector);\nexport { ColorDetector };\nexport class DecoratorLimitReporter {\n constructor() {\n this._onDidChange = new Emitter();\n this._computed = 0;\n this._limited = false;\n }\n update(computed, limited) {\n if (computed !== this._computed || limited !== this._limited) {\n this._computed = computed;\n this._limited = limited;\n this._onDidChange.fire();\n }\n }\n}\nregisterEditorContribution(ColorDetector.ID, ColorDetector, 1 /* EditorContributionInstantiation.AfterFirstRender */);\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 *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nexport class ColorPickerModel {\n get color() {\n return this._color;\n }\n set color(color) {\n if (this._color.equals(color)) {\n return;\n }\n this._color = color;\n this._onDidChangeColor.fire(color);\n }\n get presentation() { return this.colorPresentations[this.presentationIndex]; }\n get colorPresentations() {\n return this._colorPresentations;\n }\n set colorPresentations(colorPresentations) {\n this._colorPresentations = colorPresentations;\n if (this.presentationIndex > colorPresentations.length - 1) {\n this.presentationIndex = 0;\n }\n this._onDidChangePresentation.fire(this.presentation);\n }\n constructor(color, availableColorPresentations, presentationIndex) {\n this.presentationIndex = presentationIndex;\n this._onColorFlushed = new Emitter();\n this.onColorFlushed = this._onColorFlushed.event;\n this._onDidChangeColor = new Emitter();\n this.onDidChangeColor = this._onDidChangeColor.event;\n this._onDidChangePresentation = new Emitter();\n this.onDidChangePresentation = this._onDidChangePresentation.event;\n this.originalColor = color;\n this._color = color;\n this._colorPresentations = availableColorPresentations;\n }\n selectNextColorPresentation() {\n this.presentationIndex = (this.presentationIndex + 1) % this.colorPresentations.length;\n this.flushColor();\n this._onDidChangePresentation.fire(this.presentation);\n }\n guessColorPresentation(color, originalText) {\n let presentationIndex = -1;\n for (let i = 0; i < this.colorPresentations.length; i++) {\n if (originalText.toLowerCase() === this.colorPresentations[i].label) {\n presentationIndex = i;\n break;\n }\n }\n if (presentationIndex === -1) {\n // check which color presentation text has same prefix as original text's prefix\n const originalTextPrefix = originalText.split('(')[0].toLowerCase();\n for (let i = 0; i < this.colorPresentations.length; i++) {\n if (this.colorPresentations[i].label.toLowerCase().startsWith(originalTextPrefix)) {\n presentationIndex = i;\n break;\n }\n }\n }\n if (presentationIndex !== -1 && presentationIndex !== this.presentationIndex) {\n this.presentationIndex = presentationIndex;\n this._onDidChangePresentation.fire(this.presentation);\n }\n }\n flushColor() {\n this._onColorFlushed.fire(this._color);\n }\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 *--------------------------------------------------------------------------------------------*/\nimport { PixelRatio } from '../../../../base/browser/pixelRatio.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { GlobalPointerMoveMonitor } from '../../../../base/browser/globalPointerMoveMonitor.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Color, HSVA, RGBA } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport './colorPicker.css';\nimport { localize } from '../../../../nls.js';\nimport { editorHoverBackground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nconst $ = dom.$;\nexport class ColorPickerHeader extends Disposable {\n constructor(container, model, themeService, showingStandaloneColorPicker = false) {\n super();\n this.model = model;\n this.showingStandaloneColorPicker = showingStandaloneColorPicker;\n this._closeButton = null;\n this._domNode = $('.colorpicker-header');\n dom.append(container, this._domNode);\n this._pickedColorNode = dom.append(this._domNode, $('.picked-color'));\n dom.append(this._pickedColorNode, $('span.codicon.codicon-color-mode'));\n this._pickedColorPresentation = dom.append(this._pickedColorNode, document.createElement('span'));\n this._pickedColorPresentation.classList.add('picked-color-presentation');\n const tooltip = localize('clickToToggleColorOptions', \"Click to toggle color options (rgb/hsl/hex)\");\n this._pickedColorNode.setAttribute('title', tooltip);\n this._originalColorNode = dom.append(this._domNode, $('.original-color'));\n this._originalColorNode.style.backgroundColor = Color.Format.CSS.format(this.model.originalColor) || '';\n this.backgroundColor = themeService.getColorTheme().getColor(editorHoverBackground) || Color.white;\n this._register(themeService.onDidColorThemeChange(theme => {\n this.backgroundColor = theme.getColor(editorHoverBackground) || Color.white;\n }));\n this._register(dom.addDisposableListener(this._pickedColorNode, dom.EventType.CLICK, () => this.model.selectNextColorPresentation()));\n this._register(dom.addDisposableListener(this._originalColorNode, dom.EventType.CLICK, () => {\n this.model.color = this.model.originalColor;\n this.model.flushColor();\n }));\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\n this._register(model.onDidChangePresentation(this.onDidChangePresentation, this));\n this._pickedColorNode.style.backgroundColor = Color.Format.CSS.format(model.color) || '';\n this._pickedColorNode.classList.toggle('light', model.color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : model.color.isLighter());\n this.onDidChangeColor(this.model.color);\n // When the color picker widget is a standalone color picker widget, then add a close button\n if (this.showingStandaloneColorPicker) {\n this._domNode.classList.add('standalone-colorpicker');\n this._closeButton = this._register(new CloseButton(this._domNode));\n }\n }\n get closeButton() {\n return this._closeButton;\n }\n get pickedColorNode() {\n return this._pickedColorNode;\n }\n get originalColorNode() {\n return this._originalColorNode;\n }\n onDidChangeColor(color) {\n this._pickedColorNode.style.backgroundColor = Color.Format.CSS.format(color) || '';\n this._pickedColorNode.classList.toggle('light', color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : color.isLighter());\n this.onDidChangePresentation();\n }\n onDidChangePresentation() {\n this._pickedColorPresentation.textContent = this.model.presentation ? this.model.presentation.label : '';\n }\n}\nclass CloseButton extends Disposable {\n constructor(container) {\n super();\n this._onClicked = this._register(new Emitter());\n this.onClicked = this._onClicked.event;\n this._button = document.createElement('div');\n this._button.classList.add('close-button');\n dom.append(container, this._button);\n const innerDiv = document.createElement('div');\n innerDiv.classList.add('close-button-inner-div');\n dom.append(this._button, innerDiv);\n const closeButton = dom.append(innerDiv, $('.button' + ThemeIcon.asCSSSelector(registerIcon('color-picker-close', Codicon.close, localize('closeIcon', 'Icon to close the color picker')))));\n closeButton.classList.add('close-icon');\n this._register(dom.addDisposableListener(this._button, dom.EventType.CLICK, () => {\n this._onClicked.fire();\n }));\n }\n}\nexport class ColorPickerBody extends Disposable {\n constructor(container, model, pixelRatio, isStandaloneColorPicker = false) {\n super();\n this.model = model;\n this.pixelRatio = pixelRatio;\n this._insertButton = null;\n this._domNode = $('.colorpicker-body');\n dom.append(container, this._domNode);\n this._saturationBox = new SaturationBox(this._domNode, this.model, this.pixelRatio);\n this._register(this._saturationBox);\n this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange, this));\n this._register(this._saturationBox.onColorFlushed(this.flushColor, this));\n this._opacityStrip = new OpacityStrip(this._domNode, this.model, isStandaloneColorPicker);\n this._register(this._opacityStrip);\n this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange, this));\n this._register(this._opacityStrip.onColorFlushed(this.flushColor, this));\n this._hueStrip = new HueStrip(this._domNode, this.model, isStandaloneColorPicker);\n this._register(this._hueStrip);\n this._register(this._hueStrip.onDidChange(this.onDidHueChange, this));\n this._register(this._hueStrip.onColorFlushed(this.flushColor, this));\n if (isStandaloneColorPicker) {\n this._insertButton = this._register(new InsertButton(this._domNode));\n this._domNode.classList.add('standalone-colorpicker');\n }\n }\n flushColor() {\n this.model.flushColor();\n }\n onDidSaturationValueChange({ s, v }) {\n const hsva = this.model.color.hsva;\n this.model.color = new Color(new HSVA(hsva.h, s, v, hsva.a));\n }\n onDidOpacityChange(a) {\n const hsva = this.model.color.hsva;\n this.model.color = new Color(new HSVA(hsva.h, hsva.s, hsva.v, a));\n }\n onDidHueChange(value) {\n const hsva = this.model.color.hsva;\n const h = (1 - value) * 360;\n this.model.color = new Color(new HSVA(h === 360 ? 0 : h, hsva.s, hsva.v, hsva.a));\n }\n get domNode() {\n return this._domNode;\n }\n get saturationBox() {\n return this._saturationBox;\n }\n get enterButton() {\n return this._insertButton;\n }\n layout() {\n this._saturationBox.layout();\n this._opacityStrip.layout();\n this._hueStrip.layout();\n }\n}\nclass SaturationBox extends Disposable {\n constructor(container, model, pixelRatio) {\n super();\n this.model = model;\n this.pixelRatio = pixelRatio;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onColorFlushed = new Emitter();\n this.onColorFlushed = this._onColorFlushed.event;\n this._domNode = $('.saturation-wrap');\n dom.append(container, this._domNode);\n // Create canvas, draw selected color\n this._canvas = document.createElement('canvas');\n this._canvas.className = 'saturation-box';\n dom.append(this._domNode, this._canvas);\n // Add selection circle\n this.selection = $('.saturation-selection');\n dom.append(this._domNode, this.selection);\n this.layout();\n this._register(dom.addDisposableListener(this._domNode, dom.EventType.POINTER_DOWN, e => this.onPointerDown(e)));\n this._register(this.model.onDidChangeColor(this.onDidChangeColor, this));\n this.monitor = null;\n }\n get domNode() {\n return this._domNode;\n }\n onPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n this.monitor = this._register(new GlobalPointerMoveMonitor());\n const origin = dom.getDomNodePagePosition(this._domNode);\n if (e.target !== this.selection) {\n this.onDidChangePosition(e.offsetX, e.offsetY);\n }\n this.monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangePosition(event.pageX - origin.left, event.pageY - origin.top), () => null);\n const pointerUpListener = dom.addDisposableListener(e.target.ownerDocument, dom.EventType.POINTER_UP, () => {\n this._onColorFlushed.fire();\n pointerUpListener.dispose();\n if (this.monitor) {\n this.monitor.stopMonitoring(true);\n this.monitor = null;\n }\n }, true);\n }\n onDidChangePosition(left, top) {\n const s = Math.max(0, Math.min(1, left / this.width));\n const v = Math.max(0, Math.min(1, 1 - (top / this.height)));\n this.paintSelection(s, v);\n this._onDidChange.fire({ s, v });\n }\n layout() {\n this.width = this._domNode.offsetWidth;\n this.height = this._domNode.offsetHeight;\n this._canvas.width = this.width * this.pixelRatio;\n this._canvas.height = this.height * this.pixelRatio;\n this.paint();\n const hsva = this.model.color.hsva;\n this.paintSelection(hsva.s, hsva.v);\n }\n paint() {\n const hsva = this.model.color.hsva;\n const saturatedColor = new Color(new HSVA(hsva.h, 1, 1, 1));\n const ctx = this._canvas.getContext('2d');\n const whiteGradient = ctx.createLinearGradient(0, 0, this._canvas.width, 0);\n whiteGradient.addColorStop(0, 'rgba(255, 255, 255, 1)');\n whiteGradient.addColorStop(0.5, 'rgba(255, 255, 255, 0.5)');\n whiteGradient.addColorStop(1, 'rgba(255, 255, 255, 0)');\n const blackGradient = ctx.createLinearGradient(0, 0, 0, this._canvas.height);\n blackGradient.addColorStop(0, 'rgba(0, 0, 0, 0)');\n blackGradient.addColorStop(1, 'rgba(0, 0, 0, 1)');\n ctx.rect(0, 0, this._canvas.width, this._canvas.height);\n ctx.fillStyle = Color.Format.CSS.format(saturatedColor);\n ctx.fill();\n ctx.fillStyle = whiteGradient;\n ctx.fill();\n ctx.fillStyle = blackGradient;\n ctx.fill();\n }\n paintSelection(s, v) {\n this.selection.style.left = `${s * this.width}px`;\n this.selection.style.top = `${this.height - v * this.height}px`;\n }\n onDidChangeColor(color) {\n if (this.monitor && this.monitor.isMonitoring()) {\n return;\n }\n this.paint();\n const hsva = color.hsva;\n this.paintSelection(hsva.s, hsva.v);\n }\n}\nclass Strip extends Disposable {\n constructor(container, model, showingStandaloneColorPicker = false) {\n super();\n this.model = model;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onColorFlushed = new Emitter();\n this.onColorFlushed = this._onColorFlushed.event;\n if (showingStandaloneColorPicker) {\n this.domNode = dom.append(container, $('.standalone-strip'));\n this.overlay = dom.append(this.domNode, $('.standalone-overlay'));\n }\n else {\n this.domNode = dom.append(container, $('.strip'));\n this.overlay = dom.append(this.domNode, $('.overlay'));\n }\n this.slider = dom.append(this.domNode, $('.slider'));\n this.slider.style.top = `0px`;\n this._register(dom.addDisposableListener(this.domNode, dom.EventType.POINTER_DOWN, e => this.onPointerDown(e)));\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\n this.layout();\n }\n layout() {\n this.height = this.domNode.offsetHeight - this.slider.offsetHeight;\n const value = this.getValue(this.model.color);\n this.updateSliderPosition(value);\n }\n onDidChangeColor(color) {\n const value = this.getValue(color);\n this.updateSliderPosition(value);\n }\n onPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n const monitor = this._register(new GlobalPointerMoveMonitor());\n const origin = dom.getDomNodePagePosition(this.domNode);\n this.domNode.classList.add('grabbing');\n if (e.target !== this.slider) {\n this.onDidChangeTop(e.offsetY);\n }\n monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangeTop(event.pageY - origin.top), () => null);\n const pointerUpListener = dom.addDisposableListener(e.target.ownerDocument, dom.EventType.POINTER_UP, () => {\n this._onColorFlushed.fire();\n pointerUpListener.dispose();\n monitor.stopMonitoring(true);\n this.domNode.classList.remove('grabbing');\n }, true);\n }\n onDidChangeTop(top) {\n const value = Math.max(0, Math.min(1, 1 - (top / this.height)));\n this.updateSliderPosition(value);\n this._onDidChange.fire(value);\n }\n updateSliderPosition(value) {\n this.slider.style.top = `${(1 - value) * this.height}px`;\n }\n}\nclass OpacityStrip extends Strip {\n constructor(container, model, showingStandaloneColorPicker = false) {\n super(container, model, showingStandaloneColorPicker);\n this.domNode.classList.add('opacity-strip');\n this.onDidChangeColor(this.model.color);\n }\n onDidChangeColor(color) {\n super.onDidChangeColor(color);\n const { r, g, b } = color.rgba;\n const opaque = new Color(new RGBA(r, g, b, 1));\n const transparent = new Color(new RGBA(r, g, b, 0));\n this.overlay.style.background = `linear-gradient(to bottom, ${opaque} 0%, ${transparent} 100%)`;\n }\n getValue(color) {\n return color.hsva.a;\n }\n}\nclass HueStrip extends Strip {\n constructor(container, model, showingStandaloneColorPicker = false) {\n super(container, model, showingStandaloneColorPicker);\n this.domNode.classList.add('hue-strip');\n }\n getValue(color) {\n return 1 - (color.hsva.h / 360);\n }\n}\nexport class InsertButton extends Disposable {\n constructor(container) {\n super();\n this._onClicked = this._register(new Emitter());\n this.onClicked = this._onClicked.event;\n this._button = dom.append(container, document.createElement('button'));\n this._button.classList.add('insert-button');\n this._button.textContent = 'Insert';\n this._register(dom.addDisposableListener(this._button, dom.EventType.CLICK, () => {\n this._onClicked.fire();\n }));\n }\n get button() {\n return this._button;\n }\n}\nexport class ColorPickerWidget extends Widget {\n constructor(container, model, pixelRatio, themeService, standaloneColorPicker = false) {\n super();\n this.model = model;\n this.pixelRatio = pixelRatio;\n this._register(PixelRatio.getInstance(dom.getWindow(container)).onDidChange(() => this.layout()));\n const element = $('.colorpicker-widget');\n container.appendChild(element);\n this.header = this._register(new ColorPickerHeader(element, this.model, themeService, standaloneColorPicker));\n this.body = this._register(new ColorPickerBody(element, this.model, this.pixelRatio, standaloneColorPicker));\n }\n layout() {\n this.body.layout();\n }\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Color, RGBA } from '../../../../base/common/color.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Range } from '../../../common/core/range.js';\nimport { getColorPresentations, getColors } from './color.js';\nimport { ColorDetector } from './colorDetector.js';\nimport { ColorPickerModel } from './colorPickerModel.js';\nimport { ColorPickerWidget } from './colorPickerWidget.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { Dimension } from '../../../../base/browser/dom.js';\nexport class ColorHover {\n constructor(owner, range, model, provider) {\n this.owner = owner;\n this.range = range;\n this.model = model;\n this.provider = provider;\n /**\n * Force the hover to always be rendered at this specific range,\n * even in the case of multiple hover parts.\n */\n this.forceShowAtRange = true;\n }\n isValidForHoverAnchor(anchor) {\n return (anchor.type === 1 /* HoverAnchorType.Range */\n && this.range.startColumn <= anchor.range.startColumn\n && this.range.endColumn >= anchor.range.endColumn);\n }\n}\nlet ColorHoverParticipant = class ColorHoverParticipant {\n constructor(_editor, _themeService) {\n this._editor = _editor;\n this._themeService = _themeService;\n this.hoverOrdinal = 2;\n }\n computeSync(_anchor, _lineDecorations) {\n return [];\n }\n computeAsync(anchor, lineDecorations, token) {\n return AsyncIterableObject.fromPromise(this._computeAsync(anchor, lineDecorations, token));\n }\n async _computeAsync(_anchor, lineDecorations, _token) {\n if (!this._editor.hasModel()) {\n return [];\n }\n const colorDetector = ColorDetector.get(this._editor);\n if (!colorDetector) {\n return [];\n }\n for (const d of lineDecorations) {\n if (!colorDetector.isColorDecoration(d)) {\n continue;\n }\n const colorData = colorDetector.getColorData(d.range.getStartPosition());\n if (colorData) {\n const colorHover = await _createColorHover(this, this._editor.getModel(), colorData.colorInfo, colorData.provider);\n return [colorHover];\n }\n }\n return [];\n }\n renderHoverParts(context, hoverParts) {\n return renderHoverParts(this, this._editor, this._themeService, hoverParts, context);\n }\n};\nColorHoverParticipant = __decorate([\n __param(1, IThemeService)\n], ColorHoverParticipant);\nexport { ColorHoverParticipant };\nexport class StandaloneColorPickerHover {\n constructor(owner, range, model, provider) {\n this.owner = owner;\n this.range = range;\n this.model = model;\n this.provider = provider;\n }\n}\nlet StandaloneColorPickerParticipant = class StandaloneColorPickerParticipant {\n constructor(_editor, _themeService) {\n this._editor = _editor;\n this._themeService = _themeService;\n this._color = null;\n }\n async createColorHover(defaultColorInfo, defaultColorProvider, colorProviderRegistry) {\n if (!this._editor.hasModel()) {\n return null;\n }\n const colorDetector = ColorDetector.get(this._editor);\n if (!colorDetector) {\n return null;\n }\n const colors = await getColors(colorProviderRegistry, this._editor.getModel(), CancellationToken.None);\n let foundColorInfo = null;\n let foundColorProvider = null;\n for (const colorData of colors) {\n const colorInfo = colorData.colorInfo;\n if (Range.containsRange(colorInfo.range, defaultColorInfo.range)) {\n foundColorInfo = colorInfo;\n foundColorProvider = colorData.provider;\n }\n }\n const colorInfo = foundColorInfo !== null && foundColorInfo !== void 0 ? foundColorInfo : defaultColorInfo;\n const colorProvider = foundColorProvider !== null && foundColorProvider !== void 0 ? foundColorProvider : defaultColorProvider;\n const foundInEditor = !!foundColorInfo;\n return { colorHover: await _createColorHover(this, this._editor.getModel(), colorInfo, colorProvider), foundInEditor: foundInEditor };\n }\n async updateEditorModel(colorHoverData) {\n if (!this._editor.hasModel()) {\n return;\n }\n const colorPickerModel = colorHoverData.model;\n let range = new Range(colorHoverData.range.startLineNumber, colorHoverData.range.startColumn, colorHoverData.range.endLineNumber, colorHoverData.range.endColumn);\n if (this._color) {\n await _updateColorPresentations(this._editor.getModel(), colorPickerModel, this._color, range, colorHoverData);\n range = _updateEditorModel(this._editor, range, colorPickerModel);\n }\n }\n renderHoverParts(context, hoverParts) {\n return renderHoverParts(this, this._editor, this._themeService, hoverParts, context);\n }\n set color(color) {\n this._color = color;\n }\n get color() {\n return this._color;\n }\n};\nStandaloneColorPickerParticipant = __decorate([\n __param(1, IThemeService)\n], StandaloneColorPickerParticipant);\nexport { StandaloneColorPickerParticipant };\nasync function _createColorHover(participant, editorModel, colorInfo, provider) {\n const originalText = editorModel.getValueInRange(colorInfo.range);\n const { red, green, blue, alpha } = colorInfo.color;\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n const color = new Color(rgba);\n const colorPresentations = await getColorPresentations(editorModel, colorInfo, provider, CancellationToken.None);\n const model = new ColorPickerModel(color, [], 0);\n model.colorPresentations = colorPresentations || [];\n model.guessColorPresentation(color, originalText);\n if (participant instanceof ColorHoverParticipant) {\n return new ColorHover(participant, Range.lift(colorInfo.range), model, provider);\n }\n else {\n return new StandaloneColorPickerHover(participant, Range.lift(colorInfo.range), model, provider);\n }\n}\nfunction renderHoverParts(participant, editor, themeService, hoverParts, context) {\n if (hoverParts.length === 0 || !editor.hasModel()) {\n return Disposable.None;\n }\n if (context.setMinimumDimensions) {\n const minimumHeight = editor.getOption(67 /* EditorOption.lineHeight */) + 8;\n context.setMinimumDimensions(new Dimension(302, minimumHeight));\n }\n const disposables = new DisposableStore();\n const colorHover = hoverParts[0];\n const editorModel = editor.getModel();\n const model = colorHover.model;\n const widget = disposables.add(new ColorPickerWidget(context.fragment, model, editor.getOption(143 /* EditorOption.pixelRatio */), themeService, participant instanceof StandaloneColorPickerParticipant));\n context.setColorPicker(widget);\n let editorUpdatedByColorPicker = false;\n let range = new Range(colorHover.range.startLineNumber, colorHover.range.startColumn, colorHover.range.endLineNumber, colorHover.range.endColumn);\n if (participant instanceof StandaloneColorPickerParticipant) {\n const color = hoverParts[0].model.color;\n participant.color = color;\n _updateColorPresentations(editorModel, model, color, range, colorHover);\n disposables.add(model.onColorFlushed((color) => {\n participant.color = color;\n }));\n }\n else {\n disposables.add(model.onColorFlushed(async (color) => {\n await _updateColorPresentations(editorModel, model, color, range, colorHover);\n editorUpdatedByColorPicker = true;\n range = _updateEditorModel(editor, range, model);\n }));\n }\n disposables.add(model.onDidChangeColor((color) => {\n _updateColorPresentations(editorModel, model, color, range, colorHover);\n }));\n disposables.add(editor.onDidChangeModelContent((e) => {\n if (editorUpdatedByColorPicker) {\n editorUpdatedByColorPicker = false;\n }\n else {\n context.hide();\n editor.focus();\n }\n }));\n return disposables;\n}\nfunction _updateEditorModel(editor, range, model) {\n var _a, _b;\n const textEdits = [];\n const edit = (_a = model.presentation.textEdit) !== null && _a !== void 0 ? _a : { range, text: model.presentation.label, forceMoveMarkers: false };\n textEdits.push(edit);\n if (model.presentation.additionalTextEdits) {\n textEdits.push(...model.presentation.additionalTextEdits);\n }\n const replaceRange = Range.lift(edit.range);\n const trackedRange = editor.getModel()._setTrackedRange(null, replaceRange, 3 /* TrackedRangeStickiness.GrowsOnlyWhenTypingAfter */);\n editor.executeEdits('colorpicker', textEdits);\n editor.pushUndoStop();\n return (_b = editor.getModel()._getTrackedRange(trackedRange)) !== null && _b !== void 0 ? _b : replaceRange;\n}\nasync function _updateColorPresentations(editorModel, colorPickerModel, color, range, colorHover) {\n const colorPresentations = await getColorPresentations(editorModel, {\n range: range,\n color: {\n red: color.rgba.r / 255,\n green: color.rgba.g / 255,\n blue: color.rgba.b / 255,\n alpha: color.rgba.a\n }\n }, colorHover.provider, CancellationToken.None);\n colorPickerModel.colorPresentations = colorPresentations || [];\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Color, RGBA } from '../../../../base/common/color.js';\nimport { EditorWorkerClient } from '../../../browser/services/editorWorkerService.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { registerEditorFeature } from '../../../common/editorFeatures.js';\nexport class DefaultDocumentColorProvider {\n constructor(modelService, languageConfigurationService) {\n this._editorWorkerClient = new EditorWorkerClient(modelService, false, 'editorWorkerService', languageConfigurationService);\n }\n async provideDocumentColors(model, _token) {\n return this._editorWorkerClient.computeDefaultDocumentColors(model.uri);\n }\n provideColorPresentations(_model, colorInfo, _token) {\n const range = colorInfo.range;\n const colorFromInfo = colorInfo.color;\n const alpha = colorFromInfo.alpha;\n const color = new Color(new RGBA(Math.round(255 * colorFromInfo.red), Math.round(255 * colorFromInfo.green), Math.round(255 * colorFromInfo.blue), alpha));\n const rgb = alpha ? Color.Format.CSS.formatRGB(color) : Color.Format.CSS.formatRGBA(color);\n const hsl = alpha ? Color.Format.CSS.formatHSL(color) : Color.Format.CSS.formatHSLA(color);\n const hex = alpha ? Color.Format.CSS.formatHex(color) : Color.Format.CSS.formatHexA(color);\n const colorPresentations = [];\n colorPresentations.push({ label: rgb, textEdit: { range: range, text: rgb } });\n colorPresentations.push({ label: hsl, textEdit: { range: range, text: hsl } });\n colorPresentations.push({ label: hex, textEdit: { range: range, text: hex } });\n return colorPresentations;\n }\n}\nlet DefaultDocumentColorProviderFeature = class DefaultDocumentColorProviderFeature extends Disposable {\n constructor(_modelService, _languageConfigurationService, _languageFeaturesService) {\n super();\n this._register(_languageFeaturesService.colorProvider.register('*', new DefaultDocumentColorProvider(_modelService, _languageConfigurationService)));\n }\n};\nDefaultDocumentColorProviderFeature = __decorate([\n __param(0, IModelService),\n __param(1, ILanguageConfigurationService),\n __param(2, ILanguageFeaturesService)\n], DefaultDocumentColorProviderFeature);\nregisterEditorFeature(DefaultDocumentColorProviderFeature);\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StandaloneColorPickerController_1, StandaloneColorPickerWidget_1;\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { StandaloneColorPickerParticipant } from './colorHoverParticipant.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { EditorHoverStatusBar } from '../../hover/browser/contentHoverStatusBar.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { DefaultDocumentColorProvider } from './defaultDocumentColorProvider.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport './colorPicker.css';\nlet StandaloneColorPickerController = StandaloneColorPickerController_1 = class StandaloneColorPickerController extends Disposable {\n constructor(_editor, _contextKeyService, _modelService, _keybindingService, _instantiationService, _languageFeatureService, _languageConfigurationService) {\n super();\n this._editor = _editor;\n this._modelService = _modelService;\n this._keybindingService = _keybindingService;\n this._instantiationService = _instantiationService;\n this._languageFeatureService = _languageFeatureService;\n this._languageConfigurationService = _languageConfigurationService;\n this._standaloneColorPickerWidget = null;\n this._standaloneColorPickerVisible = EditorContextKeys.standaloneColorPickerVisible.bindTo(_contextKeyService);\n this._standaloneColorPickerFocused = EditorContextKeys.standaloneColorPickerFocused.bindTo(_contextKeyService);\n }\n showOrFocus() {\n var _a;\n if (!this._editor.hasModel()) {\n return;\n }\n if (!this._standaloneColorPickerVisible.get()) {\n this._standaloneColorPickerWidget = new StandaloneColorPickerWidget(this._editor, this._standaloneColorPickerVisible, this._standaloneColorPickerFocused, this._instantiationService, this._modelService, this._keybindingService, this._languageFeatureService, this._languageConfigurationService);\n }\n else if (!this._standaloneColorPickerFocused.get()) {\n (_a = this._standaloneColorPickerWidget) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }\n hide() {\n var _a;\n this._standaloneColorPickerFocused.set(false);\n this._standaloneColorPickerVisible.set(false);\n (_a = this._standaloneColorPickerWidget) === null || _a === void 0 ? void 0 : _a.hide();\n this._editor.focus();\n }\n insertColor() {\n var _a;\n (_a = this._standaloneColorPickerWidget) === null || _a === void 0 ? void 0 : _a.updateEditor();\n this.hide();\n }\n static get(editor) {\n return editor.getContribution(StandaloneColorPickerController_1.ID);\n }\n};\nStandaloneColorPickerController.ID = 'editor.contrib.standaloneColorPickerController';\nStandaloneColorPickerController = StandaloneColorPickerController_1 = __decorate([\n __param(1, IContextKeyService),\n __param(2, IModelService),\n __param(3, IKeybindingService),\n __param(4, IInstantiationService),\n __param(5, ILanguageFeaturesService),\n __param(6, ILanguageConfigurationService)\n], StandaloneColorPickerController);\nexport { StandaloneColorPickerController };\nregisterEditorContribution(StandaloneColorPickerController.ID, StandaloneColorPickerController, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nconst PADDING = 8;\nconst CLOSE_BUTTON_WIDTH = 22;\nlet StandaloneColorPickerWidget = StandaloneColorPickerWidget_1 = class StandaloneColorPickerWidget extends Disposable {\n constructor(_editor, _standaloneColorPickerVisible, _standaloneColorPickerFocused, _instantiationService, _modelService, _keybindingService, _languageFeaturesService, _languageConfigurationService) {\n var _a;\n super();\n this._editor = _editor;\n this._standaloneColorPickerVisible = _standaloneColorPickerVisible;\n this._standaloneColorPickerFocused = _standaloneColorPickerFocused;\n this._modelService = _modelService;\n this._keybindingService = _keybindingService;\n this._languageFeaturesService = _languageFeaturesService;\n this._languageConfigurationService = _languageConfigurationService;\n this.allowEditorOverflow = true;\n this._position = undefined;\n this._body = document.createElement('div');\n this._colorHover = null;\n this._selectionSetInEditor = false;\n this._onResult = this._register(new Emitter());\n this.onResult = this._onResult.event;\n this._standaloneColorPickerVisible.set(true);\n this._standaloneColorPickerParticipant = _instantiationService.createInstance(StandaloneColorPickerParticipant, this._editor);\n this._position = (_a = this._editor._getViewModel()) === null || _a === void 0 ? void 0 : _a.getPrimaryCursorState().modelState.position;\n const editorSelection = this._editor.getSelection();\n const selection = editorSelection ?\n {\n startLineNumber: editorSelection.startLineNumber,\n startColumn: editorSelection.startColumn,\n endLineNumber: editorSelection.endLineNumber,\n endColumn: editorSelection.endColumn\n } : { startLineNumber: 0, endLineNumber: 0, endColumn: 0, startColumn: 0 };\n const focusTracker = this._register(dom.trackFocus(this._body));\n this._register(focusTracker.onDidBlur(_ => {\n this.hide();\n }));\n this._register(focusTracker.onDidFocus(_ => {\n this.focus();\n }));\n // When the cursor position changes, hide the color picker\n this._register(this._editor.onDidChangeCursorPosition(() => {\n // Do not hide the color picker when the cursor changes position due to the keybindings\n if (!this._selectionSetInEditor) {\n this.hide();\n }\n else {\n this._selectionSetInEditor = false;\n }\n }));\n this._register(this._editor.onMouseMove((e) => {\n var _a;\n const classList = (_a = e.target.element) === null || _a === void 0 ? void 0 : _a.classList;\n if (classList && classList.contains('colorpicker-color-decoration')) {\n this.hide();\n }\n }));\n this._register(this.onResult((result) => {\n this._render(result.value, result.foundInEditor);\n }));\n this._start(selection);\n this._body.style.zIndex = '50';\n this._editor.addContentWidget(this);\n }\n updateEditor() {\n if (this._colorHover) {\n this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover);\n }\n }\n getId() {\n return StandaloneColorPickerWidget_1.ID;\n }\n getDomNode() {\n return this._body;\n }\n getPosition() {\n if (!this._position) {\n return null;\n }\n const positionPreference = this._editor.getOption(60 /* EditorOption.hover */).above;\n return {\n position: this._position,\n secondaryPosition: this._position,\n preference: positionPreference ? [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */] : [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */],\n positionAffinity: 2 /* PositionAffinity.None */\n };\n }\n hide() {\n this.dispose();\n this._standaloneColorPickerVisible.set(false);\n this._standaloneColorPickerFocused.set(false);\n this._editor.removeContentWidget(this);\n this._editor.focus();\n }\n focus() {\n this._standaloneColorPickerFocused.set(true);\n this._body.focus();\n }\n async _start(selection) {\n const computeAsyncResult = await this._computeAsync(selection);\n if (!computeAsyncResult) {\n return;\n }\n this._onResult.fire(new StandaloneColorPickerResult(computeAsyncResult.result, computeAsyncResult.foundInEditor));\n }\n async _computeAsync(range) {\n if (!this._editor.hasModel()) {\n return null;\n }\n const colorInfo = {\n range: range,\n color: { red: 0, green: 0, blue: 0, alpha: 1 }\n };\n const colorHoverResult = await this._standaloneColorPickerParticipant.createColorHover(colorInfo, new DefaultDocumentColorProvider(this._modelService, this._languageConfigurationService), this._languageFeaturesService.colorProvider);\n if (!colorHoverResult) {\n return null;\n }\n return { result: colorHoverResult.colorHover, foundInEditor: colorHoverResult.foundInEditor };\n }\n _render(colorHover, foundInEditor) {\n const fragment = document.createDocumentFragment();\n const statusBar = this._register(new EditorHoverStatusBar(this._keybindingService));\n let colorPickerWidget;\n const context = {\n fragment,\n statusBar,\n setColorPicker: (widget) => colorPickerWidget = widget,\n onContentsChanged: () => { },\n hide: () => this.hide()\n };\n this._colorHover = colorHover;\n this._register(this._standaloneColorPickerParticipant.renderHoverParts(context, [colorHover]));\n if (colorPickerWidget === undefined) {\n return;\n }\n this._body.classList.add('standalone-colorpicker-body');\n this._body.style.maxHeight = Math.max(this._editor.getLayoutInfo().height / 4, 250) + 'px';\n this._body.style.maxWidth = Math.max(this._editor.getLayoutInfo().width * 0.66, 500) + 'px';\n this._body.tabIndex = 0;\n this._body.appendChild(fragment);\n colorPickerWidget.layout();\n const colorPickerBody = colorPickerWidget.body;\n const saturationBoxWidth = colorPickerBody.saturationBox.domNode.clientWidth;\n const widthOfOriginalColorBox = colorPickerBody.domNode.clientWidth - saturationBoxWidth - CLOSE_BUTTON_WIDTH - PADDING;\n const enterButton = colorPickerWidget.body.enterButton;\n enterButton === null || enterButton === void 0 ? void 0 : enterButton.onClicked(() => {\n this.updateEditor();\n this.hide();\n });\n const colorPickerHeader = colorPickerWidget.header;\n const pickedColorNode = colorPickerHeader.pickedColorNode;\n pickedColorNode.style.width = saturationBoxWidth + PADDING + 'px';\n const originalColorNode = colorPickerHeader.originalColorNode;\n originalColorNode.style.width = widthOfOriginalColorBox + 'px';\n const closeButton = colorPickerWidget.header.closeButton;\n closeButton === null || closeButton === void 0 ? void 0 : closeButton.onClicked(() => {\n this.hide();\n });\n // When found in the editor, highlight the selection in the editor\n if (foundInEditor) {\n if (enterButton) {\n enterButton.button.textContent = 'Replace';\n }\n this._selectionSetInEditor = true;\n this._editor.setSelection(colorHover.range);\n }\n this._editor.layoutContentWidget(this);\n }\n};\nStandaloneColorPickerWidget.ID = 'editor.contrib.standaloneColorPickerWidget';\nStandaloneColorPickerWidget = StandaloneColorPickerWidget_1 = __decorate([\n __param(3, IInstantiationService),\n __param(4, IModelService),\n __param(5, IKeybindingService),\n __param(6, ILanguageFeaturesService),\n __param(7, ILanguageConfigurationService)\n], StandaloneColorPickerWidget);\nexport { StandaloneColorPickerWidget };\nclass StandaloneColorPickerResult {\n // The color picker result consists of: an array of color results and a boolean indicating if the color was found in the editor\n constructor(value, foundInEditor) {\n this.value = value;\n this.foundInEditor = foundInEditor;\n }\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 *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, EditorAction2, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { localize, localize2 } from '../../../../nls.js';\nimport { StandaloneColorPickerController } from './standaloneColorPickerWidget.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { MenuId, registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport './colorPicker.css';\nexport class ShowOrFocusStandaloneColorPicker extends EditorAction2 {\n constructor() {\n super({\n id: 'editor.action.showOrFocusStandaloneColorPicker',\n title: {\n ...localize2('showOrFocusStandaloneColorPicker', \"Show or Focus Standalone Color Picker\"),\n mnemonicTitle: localize({ key: 'mishowOrFocusStandaloneColorPicker', comment: ['&& denotes a mnemonic'] }, \"&&Show or Focus Standalone Color Picker\"),\n },\n precondition: undefined,\n menu: [\n { id: MenuId.CommandPalette },\n ],\n metadata: {\n description: localize2('showOrFocusStandaloneColorPickerDescription', \"Show or focus a standalone color picker which uses the default color provider. It displays hex/rgb/hsl colors.\"),\n }\n });\n }\n runEditorCommand(_accessor, editor) {\n var _a;\n (_a = StandaloneColorPickerController.get(editor)) === null || _a === void 0 ? void 0 : _a.showOrFocus();\n }\n}\nclass HideStandaloneColorPicker extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.hideColorPicker',\n label: localize({\n key: 'hideColorPicker',\n comment: [\n 'Action that hides the color picker'\n ]\n }, \"Hide the Color Picker\"),\n alias: 'Hide the Color Picker',\n precondition: EditorContextKeys.standaloneColorPickerVisible.isEqualTo(true),\n kbOpts: {\n primary: 9 /* KeyCode.Escape */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n metadata: {\n description: localize2('hideColorPickerDescription', \"Hide the standalone color picker.\"),\n }\n });\n }\n run(_accessor, editor) {\n var _a;\n (_a = StandaloneColorPickerController.get(editor)) === null || _a === void 0 ? void 0 : _a.hide();\n }\n}\nclass InsertColorWithStandaloneColorPicker extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertColorWithStandaloneColorPicker',\n label: localize({\n key: 'insertColorWithStandaloneColorPicker',\n comment: [\n 'Action that inserts color with standalone color picker'\n ]\n }, \"Insert Color with Standalone Color Picker\"),\n alias: 'Insert Color with Standalone Color Picker',\n precondition: EditorContextKeys.standaloneColorPickerFocused.isEqualTo(true),\n kbOpts: {\n primary: 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n metadata: {\n description: localize2('insertColorWithStandaloneColorPickerDescription', \"Insert hex/rgb/hsl colors with the focused standalone color picker.\"),\n }\n });\n }\n run(_accessor, editor) {\n var _a;\n (_a = StandaloneColorPickerController.get(editor)) === null || _a === void 0 ? void 0 : _a.insertColor();\n }\n}\nregisterEditorAction(HideStandaloneColorPicker);\nregisterEditorAction(InsertColorWithStandaloneColorPicker);\nregisterAction2(ShowOrFocusStandaloneColorPicker);\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 *--------------------------------------------------------------------------------------------*/\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class BlockCommentCommand {\n constructor(selection, insertSpace, languageConfigurationService) {\n this.languageConfigurationService = languageConfigurationService;\n this._selection = selection;\n this._insertSpace = insertSpace;\n this._usedEndToken = null;\n }\n static _haystackHasNeedleAtOffset(haystack, needle, offset) {\n if (offset < 0) {\n return false;\n }\n const needleLength = needle.length;\n const haystackLength = haystack.length;\n if (offset + needleLength > haystackLength) {\n return false;\n }\n for (let i = 0; i < needleLength; i++) {\n const codeA = haystack.charCodeAt(offset + i);\n const codeB = needle.charCodeAt(i);\n if (codeA === codeB) {\n continue;\n }\n if (codeA >= 65 /* CharCode.A */ && codeA <= 90 /* CharCode.Z */ && codeA + 32 === codeB) {\n // codeA is upper-case variant of codeB\n continue;\n }\n if (codeB >= 65 /* CharCode.A */ && codeB <= 90 /* CharCode.Z */ && codeB + 32 === codeA) {\n // codeB is upper-case variant of codeA\n continue;\n }\n return false;\n }\n return true;\n }\n _createOperationsForBlockComment(selection, startToken, endToken, insertSpace, model, builder) {\n const startLineNumber = selection.startLineNumber;\n const startColumn = selection.startColumn;\n const endLineNumber = selection.endLineNumber;\n const endColumn = selection.endColumn;\n const startLineText = model.getLineContent(startLineNumber);\n const endLineText = model.getLineContent(endLineNumber);\n let startTokenIndex = startLineText.lastIndexOf(startToken, startColumn - 1 + startToken.length);\n let endTokenIndex = endLineText.indexOf(endToken, endColumn - 1 - endToken.length);\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n if (startLineNumber === endLineNumber) {\n const lineBetweenTokens = startLineText.substring(startTokenIndex + startToken.length, endTokenIndex);\n if (lineBetweenTokens.indexOf(endToken) >= 0) {\n // force to add a block comment\n startTokenIndex = -1;\n endTokenIndex = -1;\n }\n }\n else {\n const startLineAfterStartToken = startLineText.substring(startTokenIndex + startToken.length);\n const endLineBeforeEndToken = endLineText.substring(0, endTokenIndex);\n if (startLineAfterStartToken.indexOf(endToken) >= 0 || endLineBeforeEndToken.indexOf(endToken) >= 0) {\n // force to add a block comment\n startTokenIndex = -1;\n endTokenIndex = -1;\n }\n }\n }\n let ops;\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n // Consider spaces as part of the comment tokens\n if (insertSpace && startTokenIndex + startToken.length < startLineText.length && startLineText.charCodeAt(startTokenIndex + startToken.length) === 32 /* CharCode.Space */) {\n // Pretend the start token contains a trailing space\n startToken = startToken + ' ';\n }\n if (insertSpace && endTokenIndex > 0 && endLineText.charCodeAt(endTokenIndex - 1) === 32 /* CharCode.Space */) {\n // Pretend the end token contains a leading space\n endToken = ' ' + endToken;\n endTokenIndex -= 1;\n }\n ops = BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\n }\n else {\n ops = BlockCommentCommand._createAddBlockCommentOperations(selection, startToken, endToken, this._insertSpace);\n this._usedEndToken = ops.length === 1 ? endToken : null;\n }\n for (const op of ops) {\n builder.addTrackedEditOperation(op.range, op.text);\n }\n }\n static _createRemoveBlockCommentOperations(r, startToken, endToken) {\n const res = [];\n if (!Range.isEmpty(r)) {\n // Remove block comment start\n res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.startLineNumber, r.startColumn)));\n // Remove block comment end\n res.push(EditOperation.delete(new Range(r.endLineNumber, r.endColumn, r.endLineNumber, r.endColumn + endToken.length)));\n }\n else {\n // Remove both continuously\n res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.endLineNumber, r.endColumn + endToken.length)));\n }\n return res;\n }\n static _createAddBlockCommentOperations(r, startToken, endToken, insertSpace) {\n const res = [];\n if (!Range.isEmpty(r)) {\n // Insert block comment start\n res.push(EditOperation.insert(new Position(r.startLineNumber, r.startColumn), startToken + (insertSpace ? ' ' : '')));\n // Insert block comment end\n res.push(EditOperation.insert(new Position(r.endLineNumber, r.endColumn), (insertSpace ? ' ' : '') + endToken));\n }\n else {\n // Insert both continuously\n res.push(EditOperation.replace(new Range(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn), startToken + ' ' + endToken));\n }\n return res;\n }\n getEditOperations(model, builder) {\n const startLineNumber = this._selection.startLineNumber;\n const startColumn = this._selection.startColumn;\n model.tokenization.tokenizeIfCheap(startLineNumber);\n const languageId = model.getLanguageIdAtPosition(startLineNumber, startColumn);\n const config = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\n // Mode does not support block comments\n return;\n }\n this._createOperationsForBlockComment(this._selection, config.blockCommentStartToken, config.blockCommentEndToken, this._insertSpace, model, builder);\n }\n computeCursorState(model, helper) {\n const inverseEditOperations = helper.getInverseEditOperations();\n if (inverseEditOperations.length === 2) {\n const startTokenEditOperation = inverseEditOperations[0];\n const endTokenEditOperation = inverseEditOperations[1];\n return new Selection(startTokenEditOperation.range.endLineNumber, startTokenEditOperation.range.endColumn, endTokenEditOperation.range.startLineNumber, endTokenEditOperation.range.startColumn);\n }\n else {\n const srcRange = inverseEditOperations[0].range;\n const deltaColumn = this._usedEndToken ? -this._usedEndToken.length - 1 : 0; // minus 1 space before endToken\n return new Selection(srcRange.endLineNumber, srcRange.endColumn + deltaColumn, srcRange.endLineNumber, srcRange.endColumn + deltaColumn);\n }\n }\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 *--------------------------------------------------------------------------------------------*/\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { BlockCommentCommand } from './blockCommentCommand.js';\nexport class LineCommentCommand {\n constructor(languageConfigurationService, selection, indentSize, type, insertSpace, ignoreEmptyLines, ignoreFirstLine) {\n this.languageConfigurationService = languageConfigurationService;\n this._selection = selection;\n this._indentSize = indentSize;\n this._type = type;\n this._insertSpace = insertSpace;\n this._selectionId = null;\n this._deltaColumn = 0;\n this._moveEndPositionDown = false;\n this._ignoreEmptyLines = ignoreEmptyLines;\n this._ignoreFirstLine = ignoreFirstLine || false;\n }\n /**\n * Do an initial pass over the lines and gather info about the line comment string.\n * Returns null if any of the lines doesn't support a line comment string.\n */\n static _gatherPreflightCommentStrings(model, startLineNumber, endLineNumber, languageConfigurationService) {\n model.tokenization.tokenizeIfCheap(startLineNumber);\n const languageId = model.getLanguageIdAtPosition(startLineNumber, 1);\n const config = languageConfigurationService.getLanguageConfiguration(languageId).comments;\n const commentStr = (config ? config.lineCommentToken : null);\n if (!commentStr) {\n // Mode does not support line comments\n return null;\n }\n const lines = [];\n for (let i = 0, lineCount = endLineNumber - startLineNumber + 1; i < lineCount; i++) {\n lines[i] = {\n ignore: false,\n commentStr: commentStr,\n commentStrOffset: 0,\n commentStrLength: commentStr.length\n };\n }\n return lines;\n }\n /**\n * Analyze lines and decide which lines are relevant and what the toggle should do.\n * Also, build up several offsets and lengths useful in the generation of editor operations.\n */\n static _analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService) {\n let onlyWhitespaceLines = true;\n let shouldRemoveComments;\n if (type === 0 /* Type.Toggle */) {\n shouldRemoveComments = true;\n }\n else if (type === 1 /* Type.ForceAdd */) {\n shouldRemoveComments = false;\n }\n else {\n shouldRemoveComments = true;\n }\n for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\n const lineData = lines[i];\n const lineNumber = startLineNumber + i;\n if (lineNumber === startLineNumber && ignoreFirstLine) {\n // first line ignored\n lineData.ignore = true;\n continue;\n }\n const lineContent = model.getLineContent(lineNumber);\n const lineContentStartOffset = strings.firstNonWhitespaceIndex(lineContent);\n if (lineContentStartOffset === -1) {\n // Empty or whitespace only line\n lineData.ignore = ignoreEmptyLines;\n lineData.commentStrOffset = lineContent.length;\n continue;\n }\n onlyWhitespaceLines = false;\n lineData.ignore = false;\n lineData.commentStrOffset = lineContentStartOffset;\n if (shouldRemoveComments && !BlockCommentCommand._haystackHasNeedleAtOffset(lineContent, lineData.commentStr, lineContentStartOffset)) {\n if (type === 0 /* Type.Toggle */) {\n // Every line so far has been a line comment, but this one is not\n shouldRemoveComments = false;\n }\n else if (type === 1 /* Type.ForceAdd */) {\n // Will not happen\n }\n else {\n lineData.ignore = true;\n }\n }\n if (shouldRemoveComments && insertSpace) {\n // Remove a following space if present\n const commentStrEndOffset = lineContentStartOffset + lineData.commentStrLength;\n if (commentStrEndOffset < lineContent.length && lineContent.charCodeAt(commentStrEndOffset) === 32 /* CharCode.Space */) {\n lineData.commentStrLength += 1;\n }\n }\n }\n if (type === 0 /* Type.Toggle */ && onlyWhitespaceLines) {\n // For only whitespace lines, we insert comments\n shouldRemoveComments = false;\n // Also, no longer ignore them\n for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\n lines[i].ignore = false;\n }\n }\n return {\n supported: true,\n shouldRemoveComments: shouldRemoveComments,\n lines: lines\n };\n }\n /**\n * Analyze all lines and decide exactly what to do => not supported | insert line comments | remove line comments\n */\n static _gatherPreflightData(type, insertSpace, model, startLineNumber, endLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService) {\n const lines = LineCommentCommand._gatherPreflightCommentStrings(model, startLineNumber, endLineNumber, languageConfigurationService);\n if (lines === null) {\n return {\n supported: false\n };\n }\n return LineCommentCommand._analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService);\n }\n /**\n * Given a successful analysis, execute either insert line comments, either remove line comments\n */\n _executeLineComments(model, builder, data, s) {\n let ops;\n if (data.shouldRemoveComments) {\n ops = LineCommentCommand._createRemoveLineCommentsOperations(data.lines, s.startLineNumber);\n }\n else {\n LineCommentCommand._normalizeInsertionPoint(model, data.lines, s.startLineNumber, this._indentSize);\n ops = this._createAddLineCommentsOperations(data.lines, s.startLineNumber);\n }\n const cursorPosition = new Position(s.positionLineNumber, s.positionColumn);\n for (let i = 0, len = ops.length; i < len; i++) {\n builder.addEditOperation(ops[i].range, ops[i].text);\n if (Range.isEmpty(ops[i].range) && Range.getStartPosition(ops[i].range).equals(cursorPosition)) {\n const lineContent = model.getLineContent(cursorPosition.lineNumber);\n if (lineContent.length + 1 === cursorPosition.column) {\n this._deltaColumn = (ops[i].text || '').length;\n }\n }\n }\n this._selectionId = builder.trackSelection(s);\n }\n _attemptRemoveBlockComment(model, s, startToken, endToken) {\n let startLineNumber = s.startLineNumber;\n let endLineNumber = s.endLineNumber;\n const startTokenAllowedBeforeColumn = endToken.length + Math.max(model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.startColumn);\n let startTokenIndex = model.getLineContent(startLineNumber).lastIndexOf(startToken, startTokenAllowedBeforeColumn - 1);\n let endTokenIndex = model.getLineContent(endLineNumber).indexOf(endToken, s.endColumn - 1 - startToken.length);\n if (startTokenIndex !== -1 && endTokenIndex === -1) {\n endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\n endLineNumber = startLineNumber;\n }\n if (startTokenIndex === -1 && endTokenIndex !== -1) {\n startTokenIndex = model.getLineContent(endLineNumber).lastIndexOf(startToken, endTokenIndex);\n startLineNumber = endLineNumber;\n }\n if (s.isEmpty() && (startTokenIndex === -1 || endTokenIndex === -1)) {\n startTokenIndex = model.getLineContent(startLineNumber).indexOf(startToken);\n if (startTokenIndex !== -1) {\n endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\n }\n }\n // We have to adjust to possible inner white space.\n // For Space after startToken, add Space to startToken - range math will work out.\n if (startTokenIndex !== -1 && model.getLineContent(startLineNumber).charCodeAt(startTokenIndex + startToken.length) === 32 /* CharCode.Space */) {\n startToken += ' ';\n }\n // For Space before endToken, add Space before endToken and shift index one left.\n if (endTokenIndex !== -1 && model.getLineContent(endLineNumber).charCodeAt(endTokenIndex - 1) === 32 /* CharCode.Space */) {\n endToken = ' ' + endToken;\n endTokenIndex -= 1;\n }\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n return BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\n }\n return null;\n }\n /**\n * Given an unsuccessful analysis, delegate to the block comment command\n */\n _executeBlockComment(model, builder, s) {\n model.tokenization.tokenizeIfCheap(s.startLineNumber);\n const languageId = model.getLanguageIdAtPosition(s.startLineNumber, 1);\n const config = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\n // Mode does not support block comments\n return;\n }\n const startToken = config.blockCommentStartToken;\n const endToken = config.blockCommentEndToken;\n let ops = this._attemptRemoveBlockComment(model, s, startToken, endToken);\n if (!ops) {\n if (s.isEmpty()) {\n const lineContent = model.getLineContent(s.startLineNumber);\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n if (firstNonWhitespaceIndex === -1) {\n // Line is empty or contains only whitespace\n firstNonWhitespaceIndex = lineContent.length;\n }\n ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, firstNonWhitespaceIndex + 1, s.startLineNumber, lineContent.length + 1), startToken, endToken, this._insertSpace);\n }\n else {\n ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), startToken, endToken, this._insertSpace);\n }\n if (ops.length === 1) {\n // Leave cursor after token and Space\n this._deltaColumn = startToken.length + 1;\n }\n }\n this._selectionId = builder.trackSelection(s);\n for (const op of ops) {\n builder.addEditOperation(op.range, op.text);\n }\n }\n getEditOperations(model, builder) {\n let s = this._selection;\n this._moveEndPositionDown = false;\n if (s.startLineNumber === s.endLineNumber && this._ignoreFirstLine) {\n builder.addEditOperation(new Range(s.startLineNumber, model.getLineMaxColumn(s.startLineNumber), s.startLineNumber + 1, 1), s.startLineNumber === model.getLineCount() ? '' : '\\n');\n this._selectionId = builder.trackSelection(s);\n return;\n }\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n this._moveEndPositionDown = true;\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n }\n const data = LineCommentCommand._gatherPreflightData(this._type, this._insertSpace, model, s.startLineNumber, s.endLineNumber, this._ignoreEmptyLines, this._ignoreFirstLine, this.languageConfigurationService);\n if (data.supported) {\n return this._executeLineComments(model, builder, data, s);\n }\n return this._executeBlockComment(model, builder, s);\n }\n computeCursorState(model, helper) {\n let result = helper.getTrackedSelection(this._selectionId);\n if (this._moveEndPositionDown) {\n result = result.setEndPosition(result.endLineNumber + 1, 1);\n }\n return new Selection(result.selectionStartLineNumber, result.selectionStartColumn + this._deltaColumn, result.positionLineNumber, result.positionColumn + this._deltaColumn);\n }\n /**\n * Generate edit operations in the remove line comment case\n */\n static _createRemoveLineCommentsOperations(lines, startLineNumber) {\n const res = [];\n for (let i = 0, len = lines.length; i < len; i++) {\n const lineData = lines[i];\n if (lineData.ignore) {\n continue;\n }\n res.push(EditOperation.delete(new Range(startLineNumber + i, lineData.commentStrOffset + 1, startLineNumber + i, lineData.commentStrOffset + lineData.commentStrLength + 1)));\n }\n return res;\n }\n /**\n * Generate edit operations in the add line comment case\n */\n _createAddLineCommentsOperations(lines, startLineNumber) {\n const res = [];\n const afterCommentStr = this._insertSpace ? ' ' : '';\n for (let i = 0, len = lines.length; i < len; i++) {\n const lineData = lines[i];\n if (lineData.ignore) {\n continue;\n }\n res.push(EditOperation.insert(new Position(startLineNumber + i, lineData.commentStrOffset + 1), lineData.commentStr + afterCommentStr));\n }\n return res;\n }\n static nextVisibleColumn(currentVisibleColumn, indentSize, isTab, columnSize) {\n if (isTab) {\n return currentVisibleColumn + (indentSize - (currentVisibleColumn % indentSize));\n }\n return currentVisibleColumn + columnSize;\n }\n /**\n * Adjust insertion points to have them vertically aligned in the add line comment case\n */\n static _normalizeInsertionPoint(model, lines, startLineNumber, indentSize) {\n let minVisibleColumn = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n let j;\n let lenJ;\n for (let i = 0, len = lines.length; i < len; i++) {\n if (lines[i].ignore) {\n continue;\n }\n const lineContent = model.getLineContent(startLineNumber + i);\n let currentVisibleColumn = 0;\n for (let j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\n currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, indentSize, lineContent.charCodeAt(j) === 9 /* CharCode.Tab */, 1);\n }\n if (currentVisibleColumn < minVisibleColumn) {\n minVisibleColumn = currentVisibleColumn;\n }\n }\n minVisibleColumn = Math.floor(minVisibleColumn / indentSize) * indentSize;\n for (let i = 0, len = lines.length; i < len; i++) {\n if (lines[i].ignore) {\n continue;\n }\n const lineContent = model.getLineContent(startLineNumber + i);\n let currentVisibleColumn = 0;\n for (j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\n currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, indentSize, lineContent.charCodeAt(j) === 9 /* CharCode.Tab */, 1);\n }\n if (currentVisibleColumn > minVisibleColumn) {\n lines[i].commentStrOffset = j - 1;\n }\n else {\n lines[i].commentStrOffset = j;\n }\n }\n }\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 *--------------------------------------------------------------------------------------------*/\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { BlockCommentCommand } from './blockCommentCommand.js';\nimport { LineCommentCommand } from './lineCommentCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nclass CommentLineAction extends EditorAction {\n constructor(type, opts) {\n super(opts);\n this._type = type;\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n const commands = [];\n const modelOptions = model.getOptions();\n const commentsOptions = editor.getOption(23 /* EditorOption.comments */);\n const selections = editor.getSelections().map((selection, index) => ({ selection, index, ignoreFirstLine: false }));\n selections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n // Remove selections that would result in copying the same line\n let prev = selections[0];\n for (let i = 1; i < selections.length; i++) {\n const curr = selections[i];\n if (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n // these two selections would copy the same line\n if (prev.index < curr.index) {\n // prev wins\n curr.ignoreFirstLine = true;\n }\n else {\n // curr wins\n prev.ignoreFirstLine = true;\n prev = curr;\n }\n }\n }\n for (const selection of selections) {\n commands.push(new LineCommentCommand(languageConfigurationService, selection.selection, modelOptions.indentSize, this._type, commentsOptions.insertSpace, commentsOptions.ignoreEmptyLines, selection.ignoreFirstLine));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nclass ToggleCommentLineAction extends CommentLineAction {\n constructor() {\n super(0 /* Type.Toggle */, {\n id: 'editor.action.commentLine',\n label: nls.localize('comment.line', \"Toggle Line Comment\"),\n alias: 'Toggle Line Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 90 /* KeyCode.Slash */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '5_insert',\n title: nls.localize({ key: 'miToggleLineComment', comment: ['&& denotes a mnemonic'] }, \"&&Toggle Line Comment\"),\n order: 1\n }\n });\n }\n}\nclass AddLineCommentAction extends CommentLineAction {\n constructor() {\n super(1 /* Type.ForceAdd */, {\n id: 'editor.action.addCommentLine',\n label: nls.localize('comment.line.add', \"Add Line Comment\"),\n alias: 'Add Line Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nclass RemoveLineCommentAction extends CommentLineAction {\n constructor() {\n super(2 /* Type.ForceRemove */, {\n id: 'editor.action.removeCommentLine',\n label: nls.localize('comment.line.remove', \"Remove Line Comment\"),\n alias: 'Remove Line Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 51 /* KeyCode.KeyU */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nclass BlockCommentAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.blockComment',\n label: nls.localize('comment.block', \"Toggle Block Comment\"),\n alias: 'Toggle Block Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 31 /* KeyCode.KeyA */,\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 31 /* KeyCode.KeyA */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '5_insert',\n title: nls.localize({ key: 'miToggleBlockComment', comment: ['&& denotes a mnemonic'] }, \"Toggle &&Block Comment\"),\n order: 2\n }\n });\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n if (!editor.hasModel()) {\n return;\n }\n const commentsOptions = editor.getOption(23 /* EditorOption.comments */);\n const commands = [];\n const selections = editor.getSelections();\n for (const selection of selections) {\n commands.push(new BlockCommentCommand(selection, commentsOptions.insertSpace, languageConfigurationService));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nregisterEditorAction(ToggleCommentLineAction);\nregisterEditorAction(AddLineCommentAction);\nregisterEditorAction(RemoveLineCommentAction);\nregisterEditorAction(BlockCommentAction);\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ContextMenuController_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionViewItem } from '../../../../base/browser/ui/actionbar/actionViewItems.js';\nimport { Separator, SubmenuAction } from '../../../../base/common/actions.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { isIOS } from '../../../../base/common/platform.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nimport { IMenuService, SubmenuItemAction } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService, IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IWorkspaceContextService, isStandaloneEditorWorkspace } from '../../../../platform/workspace/common/workspace.js';\nlet ContextMenuController = ContextMenuController_1 = class ContextMenuController {\n static get(editor) {\n return editor.getContribution(ContextMenuController_1.ID);\n }\n constructor(editor, _contextMenuService, _contextViewService, _contextKeyService, _keybindingService, _menuService, _configurationService, _workspaceContextService) {\n this._contextMenuService = _contextMenuService;\n this._contextViewService = _contextViewService;\n this._contextKeyService = _contextKeyService;\n this._keybindingService = _keybindingService;\n this._menuService = _menuService;\n this._configurationService = _configurationService;\n this._workspaceContextService = _workspaceContextService;\n this._toDispose = new DisposableStore();\n this._contextMenuIsBeingShownCount = 0;\n this._editor = editor;\n this._toDispose.add(this._editor.onContextMenu((e) => this._onContextMenu(e)));\n this._toDispose.add(this._editor.onMouseWheel((e) => {\n if (this._contextMenuIsBeingShownCount > 0) {\n const view = this._contextViewService.getContextViewElement();\n const target = e.srcElement;\n // Event triggers on shadow root host first\n // Check if the context view is under this host before hiding it #103169\n if (!(target.shadowRoot && dom.getShadowRoot(view) === target.shadowRoot)) {\n this._contextViewService.hideContextView();\n }\n }\n }));\n this._toDispose.add(this._editor.onKeyDown((e) => {\n if (!this._editor.getOption(24 /* EditorOption.contextmenu */)) {\n return; // Context menu is turned off through configuration\n }\n if (e.keyCode === 58 /* KeyCode.ContextMenu */) {\n // Chrome is funny like that\n e.preventDefault();\n e.stopPropagation();\n this.showContextMenu();\n }\n }));\n }\n _onContextMenu(e) {\n if (!this._editor.hasModel()) {\n return;\n }\n if (!this._editor.getOption(24 /* EditorOption.contextmenu */)) {\n this._editor.focus();\n // Ensure the cursor is at the position of the mouse click\n if (e.target.position && !this._editor.getSelection().containsPosition(e.target.position)) {\n this._editor.setPosition(e.target.position);\n }\n return; // Context menu is turned off through configuration\n }\n if (e.target.type === 12 /* MouseTargetType.OVERLAY_WIDGET */) {\n return; // allow native menu on widgets to support right click on input field for example in find\n }\n if (e.target.type === 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.detail.injectedText) {\n return; // allow native menu on injected text\n }\n e.event.preventDefault();\n e.event.stopPropagation();\n if (e.target.type === 11 /* MouseTargetType.SCROLLBAR */) {\n return this._showScrollbarContextMenu(e.event);\n }\n if (e.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.type !== 7 /* MouseTargetType.CONTENT_EMPTY */ && e.target.type !== 1 /* MouseTargetType.TEXTAREA */) {\n return; // only support mouse click into text or native context menu key for now\n }\n // Ensure the editor gets focus if it hasn't, so the right events are being sent to other contributions\n this._editor.focus();\n // Ensure the cursor is at the position of the mouse click\n if (e.target.position) {\n let hasSelectionAtPosition = false;\n for (const selection of this._editor.getSelections()) {\n if (selection.containsPosition(e.target.position)) {\n hasSelectionAtPosition = true;\n break;\n }\n }\n if (!hasSelectionAtPosition) {\n this._editor.setPosition(e.target.position);\n }\n }\n // Unless the user triggerd the context menu through Shift+F10, use the mouse position as menu position\n let anchor = null;\n if (e.target.type !== 1 /* MouseTargetType.TEXTAREA */) {\n anchor = e.event;\n }\n // Show the context menu\n this.showContextMenu(anchor);\n }\n showContextMenu(anchor) {\n if (!this._editor.getOption(24 /* EditorOption.contextmenu */)) {\n return; // Context menu is turned off through configuration\n }\n if (!this._editor.hasModel()) {\n return;\n }\n // Find actions available for menu\n const menuActions = this._getMenuActions(this._editor.getModel(), this._editor.contextMenuId);\n // Show menu if we have actions to show\n if (menuActions.length > 0) {\n this._doShowContextMenu(menuActions, anchor);\n }\n }\n _getMenuActions(model, menuId) {\n const result = [];\n // get menu groups\n const menu = this._menuService.createMenu(menuId, this._contextKeyService);\n const groups = menu.getActions({ arg: model.uri });\n menu.dispose();\n // translate them into other actions\n for (const group of groups) {\n const [, actions] = group;\n let addedItems = 0;\n for (const action of actions) {\n if (action instanceof SubmenuItemAction) {\n const subActions = this._getMenuActions(model, action.item.submenu);\n if (subActions.length > 0) {\n result.push(new SubmenuAction(action.id, action.label, subActions));\n addedItems++;\n }\n }\n else {\n result.push(action);\n addedItems++;\n }\n }\n if (addedItems) {\n result.push(new Separator());\n }\n }\n if (result.length) {\n result.pop(); // remove last separator\n }\n return result;\n }\n _doShowContextMenu(actions, event = null) {\n if (!this._editor.hasModel()) {\n return;\n }\n // Disable hover\n const oldHoverSetting = this._editor.getOption(60 /* EditorOption.hover */);\n this._editor.updateOptions({\n hover: {\n enabled: false\n }\n });\n let anchor = event;\n if (!anchor) {\n // Ensure selection is visible\n this._editor.revealPosition(this._editor.getPosition(), 1 /* ScrollType.Immediate */);\n this._editor.render();\n const cursorCoords = this._editor.getScrolledVisiblePosition(this._editor.getPosition());\n // Translate to absolute editor position\n const editorCoords = dom.getDomNodePagePosition(this._editor.getDomNode());\n const posx = editorCoords.left + cursorCoords.left;\n const posy = editorCoords.top + cursorCoords.top + cursorCoords.height;\n anchor = { x: posx, y: posy };\n }\n const useShadowDOM = this._editor.getOption(127 /* EditorOption.useShadowDOM */) && !isIOS; // Do not use shadow dom on IOS #122035\n // Show menu\n this._contextMenuIsBeingShownCount++;\n this._contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n getAnchor: () => anchor,\n getActions: () => actions,\n getActionViewItem: (action) => {\n const keybinding = this._keybindingFor(action);\n if (keybinding) {\n return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel(), isMenu: true });\n }\n const customActionViewItem = action;\n if (typeof customActionViewItem.getActionViewItem === 'function') {\n return customActionViewItem.getActionViewItem();\n }\n return new ActionViewItem(action, action, { icon: true, label: true, isMenu: true });\n },\n getKeyBinding: (action) => {\n return this._keybindingFor(action);\n },\n onHide: (wasCancelled) => {\n this._contextMenuIsBeingShownCount--;\n this._editor.updateOptions({\n hover: oldHoverSetting\n });\n }\n });\n }\n _showScrollbarContextMenu(anchor) {\n if (!this._editor.hasModel()) {\n return;\n }\n if (isStandaloneEditorWorkspace(this._workspaceContextService.getWorkspace())) {\n // can't update the configuration properly in the standalone editor\n return;\n }\n const minimapOptions = this._editor.getOption(73 /* EditorOption.minimap */);\n let lastId = 0;\n const createAction = (opts) => {\n return {\n id: `menu-action-${++lastId}`,\n label: opts.label,\n tooltip: '',\n class: undefined,\n enabled: (typeof opts.enabled === 'undefined' ? true : opts.enabled),\n checked: opts.checked,\n run: opts.run\n };\n };\n const createSubmenuAction = (label, actions) => {\n return new SubmenuAction(`menu-action-${++lastId}`, label, actions, undefined);\n };\n const createEnumAction = (label, enabled, configName, configuredValue, options) => {\n if (!enabled) {\n return createAction({ label, enabled, run: () => { } });\n }\n const createRunner = (value) => {\n return () => {\n this._configurationService.updateValue(configName, value);\n };\n };\n const actions = [];\n for (const option of options) {\n actions.push(createAction({\n label: option.label,\n checked: configuredValue === option.value,\n run: createRunner(option.value)\n }));\n }\n return createSubmenuAction(label, actions);\n };\n const actions = [];\n actions.push(createAction({\n label: nls.localize('context.minimap.minimap', \"Minimap\"),\n checked: minimapOptions.enabled,\n run: () => {\n this._configurationService.updateValue(`editor.minimap.enabled`, !minimapOptions.enabled);\n }\n }));\n actions.push(new Separator());\n actions.push(createAction({\n label: nls.localize('context.minimap.renderCharacters', \"Render Characters\"),\n enabled: minimapOptions.enabled,\n checked: minimapOptions.renderCharacters,\n run: () => {\n this._configurationService.updateValue(`editor.minimap.renderCharacters`, !minimapOptions.renderCharacters);\n }\n }));\n actions.push(createEnumAction(nls.localize('context.minimap.size', \"Vertical size\"), minimapOptions.enabled, 'editor.minimap.size', minimapOptions.size, [{\n label: nls.localize('context.minimap.size.proportional', \"Proportional\"),\n value: 'proportional'\n }, {\n label: nls.localize('context.minimap.size.fill', \"Fill\"),\n value: 'fill'\n }, {\n label: nls.localize('context.minimap.size.fit', \"Fit\"),\n value: 'fit'\n }]));\n actions.push(createEnumAction(nls.localize('context.minimap.slider', \"Slider\"), minimapOptions.enabled, 'editor.minimap.showSlider', minimapOptions.showSlider, [{\n label: nls.localize('context.minimap.slider.mouseover', \"Mouse Over\"),\n value: 'mouseover'\n }, {\n label: nls.localize('context.minimap.slider.always', \"Always\"),\n value: 'always'\n }]));\n const useShadowDOM = this._editor.getOption(127 /* EditorOption.useShadowDOM */) && !isIOS; // Do not use shadow dom on IOS #122035\n this._contextMenuIsBeingShownCount++;\n this._contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n getAnchor: () => anchor,\n getActions: () => actions,\n onHide: (wasCancelled) => {\n this._contextMenuIsBeingShownCount--;\n this._editor.focus();\n }\n });\n }\n _keybindingFor(action) {\n return this._keybindingService.lookupKeybinding(action.id);\n }\n dispose() {\n if (this._contextMenuIsBeingShownCount > 0) {\n this._contextViewService.hideContextView();\n }\n this._toDispose.dispose();\n }\n};\nContextMenuController.ID = 'editor.contrib.contextmenu';\nContextMenuController = ContextMenuController_1 = __decorate([\n __param(1, IContextMenuService),\n __param(2, IContextViewService),\n __param(3, IContextKeyService),\n __param(4, IKeybindingService),\n __param(5, IMenuService),\n __param(6, IConfigurationService),\n __param(7, IWorkspaceContextService)\n], ContextMenuController);\nexport { ContextMenuController };\nclass ShowContextMenu extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.showContextMenu',\n label: nls.localize('action.showContextMenu.label', \"Show Editor Context Menu\"),\n alias: 'Show Editor Context Menu',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 1024 /* KeyMod.Shift */ | 68 /* KeyCode.F10 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n var _a;\n (_a = ContextMenuController.get(editor)) === null || _a === void 0 ? void 0 : _a.showContextMenu();\n }\n}\nregisterEditorContribution(ContextMenuController.ID, ContextMenuController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(ShowContextMenu);\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 *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nclass CursorState {\n constructor(selections) {\n this.selections = selections;\n }\n equals(other) {\n const thisLen = this.selections.length;\n const otherLen = other.selections.length;\n if (thisLen !== otherLen) {\n return false;\n }\n for (let i = 0; i < thisLen; i++) {\n if (!this.selections[i].equalsSelection(other.selections[i])) {\n return false;\n }\n }\n return true;\n }\n}\nclass StackElement {\n constructor(cursorState, scrollTop, scrollLeft) {\n this.cursorState = cursorState;\n this.scrollTop = scrollTop;\n this.scrollLeft = scrollLeft;\n }\n}\nexport class CursorUndoRedoController extends Disposable {\n static get(editor) {\n return editor.getContribution(CursorUndoRedoController.ID);\n }\n constructor(editor) {\n super();\n this._editor = editor;\n this._isCursorUndoRedo = false;\n this._undoStack = [];\n this._redoStack = [];\n this._register(editor.onDidChangeModel((e) => {\n this._undoStack = [];\n this._redoStack = [];\n }));\n this._register(editor.onDidChangeModelContent((e) => {\n this._undoStack = [];\n this._redoStack = [];\n }));\n this._register(editor.onDidChangeCursorSelection((e) => {\n if (this._isCursorUndoRedo) {\n return;\n }\n if (!e.oldSelections) {\n return;\n }\n if (e.oldModelVersionId !== e.modelVersionId) {\n return;\n }\n const prevState = new CursorState(e.oldSelections);\n const isEqualToLastUndoStack = (this._undoStack.length > 0 && this._undoStack[this._undoStack.length - 1].cursorState.equals(prevState));\n if (!isEqualToLastUndoStack) {\n this._undoStack.push(new StackElement(prevState, editor.getScrollTop(), editor.getScrollLeft()));\n this._redoStack = [];\n if (this._undoStack.length > 50) {\n // keep the cursor undo stack bounded\n this._undoStack.shift();\n }\n }\n }));\n }\n cursorUndo() {\n if (!this._editor.hasModel() || this._undoStack.length === 0) {\n return;\n }\n this._redoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\n this._applyState(this._undoStack.pop());\n }\n cursorRedo() {\n if (!this._editor.hasModel() || this._redoStack.length === 0) {\n return;\n }\n this._undoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\n this._applyState(this._redoStack.pop());\n }\n _applyState(stackElement) {\n this._isCursorUndoRedo = true;\n this._editor.setSelections(stackElement.cursorState.selections);\n this._editor.setScrollPosition({\n scrollTop: stackElement.scrollTop,\n scrollLeft: stackElement.scrollLeft\n });\n this._isCursorUndoRedo = false;\n }\n}\nCursorUndoRedoController.ID = 'editor.contrib.cursorUndoRedoController';\nexport class CursorUndo extends EditorAction {\n constructor() {\n super({\n id: 'cursorUndo',\n label: nls.localize('cursor.undo', \"Cursor Undo\"),\n alias: 'Cursor Undo',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 51 /* KeyCode.KeyU */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor, args) {\n var _a;\n (_a = CursorUndoRedoController.get(editor)) === null || _a === void 0 ? void 0 : _a.cursorUndo();\n }\n}\nexport class CursorRedo extends EditorAction {\n constructor() {\n super({\n id: 'cursorRedo',\n label: nls.localize('cursor.redo', \"Cursor Redo\"),\n alias: 'Cursor Redo',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n var _a;\n (_a = CursorUndoRedoController.get(editor)) === null || _a === void 0 ? void 0 : _a.cursorRedo();\n }\n}\nregisterEditorContribution(CursorUndoRedoController.ID, CursorUndoRedoController, 0 /* EditorContributionInstantiation.Eager */); // eager because it needs to listen to record cursor state ASAP\nregisterEditorAction(CursorUndo);\nregisterEditorAction(CursorRedo);\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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { reverseOrder, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { observableValue, observableSignalFromEvent, autorunWithStore } from '../../../../base/common/observable.js';\nimport { HideUnchangedRegionsFeature } from '../../../browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js';\nimport { DisposableCancellationTokenSource } from '../../../browser/widget/diffEditor/utils.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IOutlineModelService } from '../../documentSymbols/browser/outlineModel.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Event } from '../../../../base/common/event.js';\nlet DiffEditorBreadcrumbsSource = class DiffEditorBreadcrumbsSource extends Disposable {\n constructor(_textModel, _languageFeaturesService, _outlineModelService) {\n super();\n this._textModel = _textModel;\n this._languageFeaturesService = _languageFeaturesService;\n this._outlineModelService = _outlineModelService;\n this._currentModel = observableValue(this, undefined);\n const documentSymbolProviderChanged = observableSignalFromEvent('documentSymbolProvider.onDidChange', this._languageFeaturesService.documentSymbolProvider.onDidChange);\n const textModelChanged = observableSignalFromEvent('_textModel.onDidChangeContent', Event.debounce(e => this._textModel.onDidChangeContent(e), () => undefined, 100));\n this._register(autorunWithStore(async (reader, store) => {\n documentSymbolProviderChanged.read(reader);\n textModelChanged.read(reader);\n const src = store.add(new DisposableCancellationTokenSource());\n const model = await this._outlineModelService.getOrCreate(this._textModel, src.token);\n if (store.isDisposed) {\n return;\n }\n this._currentModel.set(model, undefined);\n }));\n }\n getBreadcrumbItems(startRange, reader) {\n const m = this._currentModel.read(reader);\n if (!m) {\n return [];\n }\n const symbols = m.asListOfDocumentSymbols()\n .filter(s => startRange.contains(s.range.startLineNumber) && !startRange.contains(s.range.endLineNumber));\n symbols.sort(reverseOrder(compareBy(s => s.range.endLineNumber - s.range.startLineNumber, numberComparator)));\n return symbols.map(s => ({ name: s.name, kind: s.kind, startLineNumber: s.range.startLineNumber }));\n }\n};\nDiffEditorBreadcrumbsSource = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, IOutlineModelService)\n], DiffEditorBreadcrumbsSource);\nHideUnchangedRegionsFeature.setBreadcrumbsSourceFactory((textModel, instantiationService) => {\n return instantiationService.createInstance(DiffEditorBreadcrumbsSource, textModel);\n});\n"],"names":["CodeLensModel","constructor","this","lenses","_disposables","dispose","isDisposed","add","list","provider","symbol","push","async","getCodeLensModel","registry","model","token","ordered","providerRanks","Map","result","promises","map","i","set","Promise","resolve","provideCodeLenses","err","all","sort","a","b","range","startLineNumber","get","startColumn","accessor","args","uri","itemResolveCount","codeLensProvider","getModel","disposables","then","value","item","Boolean","command","resolveCodeLens","finally","setTimeout","__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","ICodeLensCache","CacheItem","lineCount","data","CodeLensCache","storageService","_fakeProvider","Error","_cache","remove","raw","_deserialize","onWillSaveState","e","reason","store","_serialize","put","copyItems","_a","id","title","copyModel","getLineCount","toString","undefined","delete","create","lines","Set","values","JSON","stringify","parse","element","line","CodeLensViewZone","afterLineNumber","heightInPx","onHeight","afterColumn","_onHeight","suppressMouseDown","domNode","document","createElement","onComputedHeight","height","_lastHeight","isVisible","hasAttribute","CodeLensContentWidget","editor","allowEditorOverflow","_commands","_isEmpty","_editor","_id","_idPool","updatePosition","_domNode","className","withCommands","animate","clear","children","hasSymbol","lens","trim","dom","$","tooltip","role","classList","getCommand","link","parentElement","getId","getDomNode","column","getLineFirstNonWhitespaceColumn","_widgetPosition","position","lineNumber","preference","getPosition","CodeLensHelper","_removeDecorations","_addDecorations","_addDecorationsCallbacks","addDecoration","decoration","callback","removeDecoration","decorationId","commit","changeAccessor","resultingDecorations","deltaDecorations","len","codeLensDecorationOptions","collapseOnReplaceEdit","description","CodeLensWidget","helper","viewZoneChangeAccessor","updateCallback","_isDisposed","_data","_decorationIds","forEach","codeLensData","options","_viewZone","_viewZoneId","addZone","_createContentWidgetIfNecessary","_contentWidget","layoutContentWidget","addContentWidget","removeZone","removeContentWidget","isValid","some","getDecorationRange","isEmpty","updateCodeLensSymbols","updateHeight","layoutZone","computeIfNecessary","updateCommands","symbols","resolved","getLineNumber","update","CodeLensContribution","_languageFeaturesService","debounceService","_commandService","_notificationService","_codeLensCache","_localToDispose","_lenses","_oldCodeLensModels","_provideCodeLensDebounce","for","min","_resolveCodeLensesDebounce","salt","_resolveCodeLensesScheduler","_resolveCodeLensesInViewport","default","onDidChangeModel","_onModelChange","onDidChangeModelLanguage","onDidChangeConfiguration","hasChanged","_updateLensStyle","onDidChange","_localDispose","_currentCodeLensModel","_getLayoutInfo","lineHeightFactor","Math","max","getOption","fontSize","codeLensHeight","fontFamily","editorFontInfo","style","getContainerDomNode","setProperty","fontFeatureSettings","changeViewZones","_b","_c","_getCodeLensModelPromise","cancel","_resolveCodeLensesPromise","isTooLargeForTokenization","cachedLenses","_renderCodeLensSymbols","has","cachedLensesNow","registration","scheduler","schedule","t1","Date","now","newDelay","delay","_resolveCodeLensesInViewportSoon","onDidChangeModelContent","changeDecorations","decorationsAccessor","viewZonesAccessor","toDispose","lastLensLineNumber","l","splice","indexOf","onDidFocusEditorText","onDidBlurEditorText","onDidScrollChange","scrollTopChanged","onDidLayoutChange","scrollState","_disposeAllLenses","restore","onMouseDown","type","tagName","executeCommand","catch","error","decChangeAccessor","hasModel","maxLineNumber","groups","lastGroup","layoutInfo","viewZoneAccessor","codeLensIndex","groupsIndex","symbolsLineNumber","codeLensLineNumber","toResolve","request","resolvePromise","resolvedSymbols","Array","isCancellationRequested","ID","super","precondition","label","alias","run","quickInputService","commandService","notificationService","getSelection","positionLineNumber","codelensController","getContribution","items","pick","canPickMany","placeHolder","newModel","newLens","find","getColors","colorProviderRegistry","isDefaultColorDecoratorsEnabled","_findColorData","ColorDataCollector","getColorPresentations","colorInfo","provideColorPresentations","compute","colors","documentColors","provideDocumentColors","isArray","ExtColorDataCollector","color","red","green","blue","alpha","ColorPresentationsCollector","_token","collector","defaultProvider","validDocumentColorProviderFound","colorData","documentColorProviders","_setupColorCommand","resource","colorProvider","getValue","context","ColorContribution","_register","mouseEvent","colorDecoratorsActivatedOn","detail","injectedText","attachedData","hoverController","isColorPickerVisible","endLineNumber","endColumn","showContentHover","ColorDetector_1","ColorDecorationInjectedTextMarker","ColorDetector","_configurationService","languageFeatureDebounceService","_decorationsIds","_colorDatas","_colorDecoratorIds","createDecorationsCollection","_ruleFactory","_decoratorLimitReporter","DecoratorLimitReporter","_colorDecorationClassRefs","_debounceInformation","RECOMPUTE_TIME","_isColorDecoratorsEnabled","isEnabled","updateColors","prevIsEnabled","_isDefaultColorDecoratorsEnabled","updatedColorDecoratorsSetting","updatedDefaultColorDecoratorsSetting","removeAllDecorations","_timeoutTimer","_computePromise","languageId","getLanguageId","deprecatedConfig","colorDecorators","stop","cancelAndSet","beginCompute","sw","elapsed","updateDecorations","updateColorDecorators","colorDatas","decorations","limit","rgba","round","g","ref","createClassNameRef","backgroundColor","before","content","inlineClassName","inlineClassNameAffectsLetterSpacing","limited","removeDecorations","getColorData","getDecorationsInRange","filter","isColorDecoration","_onDidChange","_computed","_limited","computed","fire","ColorPickerModel","_color","equals","_onDidChangeColor","presentation","colorPresentations","presentationIndex","_colorPresentations","_onDidChangePresentation","availableColorPresentations","_onColorFlushed","onColorFlushed","event","onDidChangeColor","onDidChangePresentation","originalColor","selectNextColorPresentation","flushColor","guessColorPresentation","originalText","toLowerCase","originalTextPrefix","split","startsWith","ColorPickerHeader","container","themeService","showingStandaloneColorPicker","_closeButton","_pickedColorNode","_pickedColorPresentation","setAttribute","_originalColorNode","getColorTheme","getColor","onDidColorThemeChange","theme","toggle","isLighter","CloseButton","closeButton","pickedColorNode","originalColorNode","textContent","_onClicked","onClicked","_button","innerDiv","ColorPickerBody","pixelRatio","isStandaloneColorPicker","_insertButton","_saturationBox","SaturationBox","onDidSaturationValueChange","_opacityStrip","OpacityStrip","onDidOpacityChange","_hueStrip","HueStrip","onDidHueChange","InsertButton","s","v","hsva","h","saturationBox","enterButton","layout","_canvas","selection","onPointerDown","monitor","Element","origin","onDidChangePosition","offsetX","offsetY","startMonitoring","pointerId","buttons","pageX","left","pageY","top","pointerUpListener","ownerDocument","stopMonitoring","width","paintSelection","offsetWidth","offsetHeight","paint","saturatedColor","ctx","getContext","whiteGradient","createLinearGradient","addColorStop","blackGradient","rect","fillStyle","fill","isMonitoring","Strip","overlay","slider","updateSliderPosition","onDidChangeTop","opaque","transparent","background","button","ColorPickerWidget","standaloneColorPicker","appendChild","header","body","ColorHover","owner","forceShowAtRange","isValidForHoverAnchor","anchor","ColorHoverParticipant","_themeService","hoverOrdinal","computeSync","_anchor","_lineDecorations","computeAsync","lineDecorations","_computeAsync","colorDetector","getStartPosition","_createColorHover","renderHoverParts","hoverParts","StandaloneColorPickerHover","StandaloneColorPickerParticipant","createColorHover","defaultColorInfo","defaultColorProvider","foundColorInfo","foundColorProvider","foundInEditor","colorHover","updateEditorModel","colorHoverData","colorPickerModel","_updateColorPresentations","_updateEditorModel","participant","editorModel","getValueInRange","setMinimumDimensions","minimumHeight","widget","fragment","setColorPicker","editorUpdatedByColorPicker","hide","focus","textEdits","edit","textEdit","text","forceMoveMarkers","additionalTextEdits","replaceRange","trackedRange","_setTrackedRange","executeEdits","pushUndoStop","_getTrackedRange","DefaultDocumentColorProvider","modelService","languageConfigurationService","_editorWorkerClient","computeDefaultDocumentColors","_model","colorFromInfo","rgb","hsl","hex","DefaultDocumentColorProviderFeature","_modelService","_languageConfigurationService","register","StandaloneColorPickerController_1","StandaloneColorPickerWidget_1","StandaloneColorPickerController","_contextKeyService","_keybindingService","_instantiationService","_languageFeatureService","_standaloneColorPickerWidget","_standaloneColorPickerVisible","_standaloneColorPickerFocused","showOrFocus","StandaloneColorPickerWidget","insertColor","updateEditor","_position","_body","_colorHover","_selectionSetInEditor","_onResult","onResult","_standaloneColorPickerParticipant","createInstance","_getViewModel","getPrimaryCursorState","modelState","editorSelection","focusTracker","onDidBlur","_","onDidFocus","onDidChangeCursorPosition","onMouseMove","contains","_render","_start","zIndex","positionPreference","above","secondaryPosition","positionAffinity","computeAsyncResult","StandaloneColorPickerResult","colorHoverResult","createDocumentFragment","colorPickerWidget","statusBar","onContentsChanged","maxHeight","getLayoutInfo","maxWidth","tabIndex","colorPickerBody","saturationBoxWidth","clientWidth","widthOfOriginalColorBox","colorPickerHeader","setSelection","ShowOrFocusStandaloneColorPicker","mnemonicTitle","comment","menu","metadata","runEditorCommand","_accessor","HideStandaloneColorPicker","kbOpts","primary","weight","InsertColorWithStandaloneColorPicker","BlockCommentCommand","insertSpace","_selection","_insertSpace","_usedEndToken","_haystackHasNeedleAtOffset","haystack","needle","offset","needleLength","codeA","charCodeAt","codeB","_createOperationsForBlockComment","startToken","endToken","builder","startLineText","getLineContent","endLineText","ops","startTokenIndex","lastIndexOf","endTokenIndex","substring","startLineAfterStartToken","endLineBeforeEndToken","_createRemoveBlockCommentOperations","_createAddBlockCommentOperations","op","addTrackedEditOperation","res","getEditOperations","tokenization","tokenizeIfCheap","getLanguageIdAtPosition","config","getLanguageConfiguration","comments","blockCommentStartToken","blockCommentEndToken","computeCursorState","inverseEditOperations","getInverseEditOperations","startTokenEditOperation","endTokenEditOperation","srcRange","deltaColumn","LineCommentCommand","indentSize","ignoreEmptyLines","ignoreFirstLine","_indentSize","_type","_selectionId","_deltaColumn","_moveEndPositionDown","_ignoreEmptyLines","_ignoreFirstLine","_gatherPreflightCommentStrings","commentStr","lineCommentToken","ignore","commentStrOffset","commentStrLength","_analyzeLines","shouldRemoveComments","onlyWhitespaceLines","lineData","lineContent","lineContentStartOffset","strings","commentStrEndOffset","supported","_gatherPreflightData","_executeLineComments","_createRemoveLineCommentsOperations","_normalizeInsertionPoint","_createAddLineCommentsOperations","cursorPosition","positionColumn","addEditOperation","trackSelection","_attemptRemoveBlockComment","startTokenAllowedBeforeColumn","_executeBlockComment","firstNonWhitespaceIndex","getLineMaxColumn","setEndPosition","getTrackedSelection","selectionStartLineNumber","selectionStartColumn","afterCommentStr","nextVisibleColumn","currentVisibleColumn","isTab","columnSize","j","lenJ","minVisibleColumn","floor","CommentLineAction","opts","commands","modelOptions","getOptions","commentsOptions","selections","getSelections","index","prev","curr","executeCommands","BlockCommentAction","nls","kbExpr","linux","menuOpts","menuId","group","order","ContextMenuController_1","ContextMenuController","_contextMenuService","_contextViewService","_menuService","_workspaceContextService","_toDispose","_contextMenuIsBeingShownCount","onContextMenu","_onContextMenu","onMouseWheel","view","getContextViewElement","srcElement","shadowRoot","hideContextView","onKeyDown","keyCode","preventDefault","stopPropagation","showContextMenu","containsPosition","setPosition","_showScrollbarContextMenu","hasSelectionAtPosition","menuActions","_getMenuActions","contextMenuId","_doShowContextMenu","createMenu","getActions","arg","actions","addedItems","action","subActions","submenu","pop","oldHoverSetting","updateOptions","hover","enabled","revealPosition","render","cursorCoords","getScrolledVisiblePosition","editorCoords","posx","posy","x","y","useShadowDOM","domForShadowRoot","getAnchor","getActionViewItem","keybinding","_keybindingFor","getLabel","isMenu","customActionViewItem","icon","getKeyBinding","onHide","wasCancelled","getWorkspace","minimapOptions","lastId","createAction","class","checked","createEnumAction","configName","configuredValue","createRunner","updateValue","option","createSubmenuAction","renderCharacters","size","showSlider","lookupKeybinding","ShowContextMenu","CursorState","other","thisLen","equalsSelection","StackElement","cursorState","scrollTop","scrollLeft","CursorUndoRedoController","_isCursorUndoRedo","_undoStack","_redoStack","onDidChangeCursorSelection","oldSelections","oldModelVersionId","modelVersionId","prevState","getScrollTop","getScrollLeft","shift","cursorUndo","_applyState","cursorRedo","stackElement","setSelections","setScrollPosition","CursorUndo","CursorRedo","DiffEditorBreadcrumbsSource","_textModel","_outlineModelService","_currentModel","documentSymbolProviderChanged","documentSymbolProvider","textModelChanged","onDidChangeContent","reader","read","src","getOrCreate","getBreadcrumbItems","startRange","m","asListOfDocumentSymbols","name","kind","textModel","instantiationService"],"sourceRoot":""}