monaco-editor-core 0.55.0-dev-20251019 → 0.55.0-dev-20251021
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.messages.cs.js +1 -1
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.pl.js +1 -1
- package/esm/nls.messages.pt-br.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.tr.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/ui/findinput/findInput.js +4 -5
- package/esm/vs/base/browser/ui/findinput/findInput.js.map +1 -1
- package/esm/vs/base/browser/ui/findinput/findInputToggles.js +3 -4
- package/esm/vs/base/browser/ui/findinput/findInputToggles.js.map +1 -1
- package/esm/vs/base/browser/ui/findinput/replaceInput.js +2 -2
- package/esm/vs/base/browser/ui/findinput/replaceInput.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
- package/esm/vs/base/browser/ui/toggle/toggle.js +9 -6
- package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +7 -6
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/common/actions.js +5 -0
- package/esm/vs/base/common/actions.js.map +1 -1
- package/esm/vs/base/common/async.js +5 -5
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +20 -12
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +15 -0
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +6 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +1 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findOptionsWidget.js +4 -5
- package/esm/vs/editor/contrib/find/browser/findOptionsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.js +12 -12
- package/esm/vs/editor/contrib/find/browser/findWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +22 -2
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +0 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +1 -4
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/package.json +2 -2
- package/version.txt +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts","vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts"],"names":[],"mappings":"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","file":"diffEditorItemTemplate.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts","vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts"],"names":[],"mappings":"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","file":"diffEditorItemTemplate.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t\tfixedOverflowWidgets: true\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t\tfixedOverflowWidgets: true\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n"]}
|
|
@@ -9,7 +9,6 @@ import { Widget } from '../../../../base/browser/ui/widget.js';
|
|
|
9
9
|
import { RunOnceScheduler } from '../../../../base/common/async.js';
|
|
10
10
|
import { FIND_IDS } from './findModel.js';
|
|
11
11
|
import { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';
|
|
12
|
-
import { createInstantHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';
|
|
13
12
|
export class FindOptionsWidget extends Widget {
|
|
14
13
|
static { this.ID = 'editor.contrib.findOptionsWidget'; }
|
|
15
14
|
constructor(editor, state, keybindingService) {
|
|
@@ -31,11 +30,11 @@ export class FindOptionsWidget extends Widget {
|
|
|
31
30
|
inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),
|
|
32
31
|
inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),
|
|
33
32
|
};
|
|
34
|
-
const
|
|
33
|
+
const hoverLifecycleOptions = { groupId: 'find-options-widget' };
|
|
35
34
|
this.caseSensitive = this._register(new CaseSensitiveToggle({
|
|
36
35
|
appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),
|
|
37
36
|
isChecked: this._state.matchCase,
|
|
38
|
-
|
|
37
|
+
hoverLifecycleOptions,
|
|
39
38
|
...toggleStyles
|
|
40
39
|
}));
|
|
41
40
|
this._domNode.appendChild(this.caseSensitive.domNode);
|
|
@@ -47,7 +46,7 @@ export class FindOptionsWidget extends Widget {
|
|
|
47
46
|
this.wholeWords = this._register(new WholeWordsToggle({
|
|
48
47
|
appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),
|
|
49
48
|
isChecked: this._state.wholeWord,
|
|
50
|
-
|
|
49
|
+
hoverLifecycleOptions,
|
|
51
50
|
...toggleStyles
|
|
52
51
|
}));
|
|
53
52
|
this._domNode.appendChild(this.wholeWords.domNode);
|
|
@@ -59,7 +58,7 @@ export class FindOptionsWidget extends Widget {
|
|
|
59
58
|
this.regex = this._register(new RegexToggle({
|
|
60
59
|
appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),
|
|
61
60
|
isChecked: this._state.isRegex,
|
|
62
|
-
|
|
61
|
+
hoverLifecycleOptions,
|
|
63
62
|
...toggleStyles
|
|
64
63
|
}));
|
|
65
64
|
this._domNode.appendChild(this.regex.domNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/find/browser/findOptionsWidget.ts","vs/editor/contrib/find/browser/findOptionsWidget.ts"],"names":[],"mappings":"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","file":"findOptionsWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport './findOptionsWidget.css';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, OverlayWidgetPositionPreference } from '../../../browser/editorBrowser.js';\nimport { FIND_IDS } from './findModel.js';\nimport { FindReplaceState } from './findState.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { createInstantHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\n\nexport class FindOptionsWidget extends Widget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.findOptionsWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _state: FindReplaceState;\n\tprivate readonly _keybindingService: IKeybindingService;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly regex: RegexToggle;\n\tprivate readonly wholeWords: WholeWordsToggle;\n\tprivate readonly caseSensitive: CaseSensitiveToggle;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tstate: FindReplaceState,\n\t\tkeybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\t\tthis._state = state;\n\t\tthis._keybindingService = keybindingService;\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'findOptionsWidget';\n\t\tthis._domNode.style.display = 'none';\n\t\tthis._domNode.style.top = '10px';\n\t\tthis._domNode.style.zIndex = '12';\n\t\tthis._domNode.setAttribute('role', 'presentation');\n\t\tthis._domNode.setAttribute('aria-hidden', 'true');\n\n\t\tconst toggleStyles = {\n\t\t\tinputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n\t\t\tinputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n\t\t\tinputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n\t\t};\n\n\t\tconst hoverDelegate = this._register(createInstantHoverDelegate());\n\n\t\tthis.caseSensitive = this._register(new CaseSensitiveToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n\t\t\tisChecked: this._state.matchCase,\n\t\t\thoverDelegate,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.caseSensitive.domNode);\n\t\tthis._register(this.caseSensitive.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tmatchCase: this.caseSensitive.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.wholeWords = this._register(new WholeWordsToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n\t\t\tisChecked: this._state.wholeWord,\n\t\t\thoverDelegate,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.wholeWords.domNode);\n\t\tthis._register(this.wholeWords.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\twholeWord: this.wholeWords.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.regex = this._register(new RegexToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n\t\t\tisChecked: this._state.isRegex,\n\t\t\thoverDelegate,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.regex.domNode);\n\t\tthis._register(this.regex.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tisRegex: this.regex.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis._editor.addOverlayWidget(this);\n\n\t\tthis._register(this._state.onFindReplaceStateChange((e) => {\n\t\t\tlet somethingChanged = false;\n\t\t\tif (e.isRegex) {\n\t\t\t\tthis.regex.checked = this._state.isRegex;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.wholeWord) {\n\t\t\t\tthis.wholeWords.checked = this._state.wholeWord;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.matchCase) {\n\t\t\t\tthis.caseSensitive.checked = this._state.matchCase;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (!this._state.isRevealed && somethingChanged) {\n\t\t\t\tthis._revealTemporarily();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n\t\tthis._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n\t}\n\n\tprivate _keybindingLabelFor(actionId: string): string {\n\t\tconst kb = this._keybindingService.lookupKeybinding(actionId);\n\t\tif (!kb) {\n\t\t\treturn '';\n\t\t}\n\t\treturn ` (${kb.getLabel()})`;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\t// ----- IOverlayWidget API\n\n\tpublic getId(): string {\n\t\treturn FindOptionsWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._domNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition {\n\t\treturn {\n\t\t\tpreference: OverlayWidgetPositionPreference.TOP_RIGHT_CORNER\n\t\t};\n\t}\n\n\tpublic highlightFindOptions(): void {\n\t\tthis._revealTemporarily();\n\t}\n\n\tprivate _hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n\n\tprivate _revealTemporarily(): void {\n\t\tthis._show();\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseLeave(): void {\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseOver(): void {\n\t\tthis._hideSoon.cancel();\n\t}\n\n\tprivate _isVisible: boolean = false;\n\n\tprivate _show(): void {\n\t\tif (this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = true;\n\t\tthis._domNode.style.display = 'block';\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._domNode.style.display = 'none';\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport './findOptionsWidget.css';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, OverlayWidgetPositionPreference } from '../../../browser/editorBrowser.js';\nimport { FIND_IDS } from './findModel.js';\nimport { FindReplaceState } from './findState.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { createInstantHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\n\nexport class FindOptionsWidget extends Widget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.findOptionsWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _state: FindReplaceState;\n\tprivate readonly _keybindingService: IKeybindingService;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly regex: RegexToggle;\n\tprivate readonly wholeWords: WholeWordsToggle;\n\tprivate readonly caseSensitive: CaseSensitiveToggle;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tstate: FindReplaceState,\n\t\tkeybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\t\tthis._state = state;\n\t\tthis._keybindingService = keybindingService;\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'findOptionsWidget';\n\t\tthis._domNode.style.display = 'none';\n\t\tthis._domNode.style.top = '10px';\n\t\tthis._domNode.style.zIndex = '12';\n\t\tthis._domNode.setAttribute('role', 'presentation');\n\t\tthis._domNode.setAttribute('aria-hidden', 'true');\n\n\t\tconst toggleStyles = {\n\t\t\tinputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n\t\t\tinputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n\t\t\tinputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n\t\t};\n\n\t\tconst hoverDelegate = this._register(createInstantHoverDelegate());\n\n\t\tthis.caseSensitive = this._register(new CaseSensitiveToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n\t\t\tisChecked: this._state.matchCase,\n\t\t\thoverDelegate,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.caseSensitive.domNode);\n\t\tthis._register(this.caseSensitive.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tmatchCase: this.caseSensitive.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.wholeWords = this._register(new WholeWordsToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n\t\t\tisChecked: this._state.wholeWord,\n\t\t\thoverDelegate,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.wholeWords.domNode);\n\t\tthis._register(this.wholeWords.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\twholeWord: this.wholeWords.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.regex = this._register(new RegexToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n\t\t\tisChecked: this._state.isRegex,\n\t\t\thoverDelegate,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.regex.domNode);\n\t\tthis._register(this.regex.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tisRegex: this.regex.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis._editor.addOverlayWidget(this);\n\n\t\tthis._register(this._state.onFindReplaceStateChange((e) => {\n\t\t\tlet somethingChanged = false;\n\t\t\tif (e.isRegex) {\n\t\t\t\tthis.regex.checked = this._state.isRegex;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.wholeWord) {\n\t\t\t\tthis.wholeWords.checked = this._state.wholeWord;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.matchCase) {\n\t\t\t\tthis.caseSensitive.checked = this._state.matchCase;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (!this._state.isRevealed && somethingChanged) {\n\t\t\t\tthis._revealTemporarily();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n\t\tthis._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n\t}\n\n\tprivate _keybindingLabelFor(actionId: string): string {\n\t\tconst kb = this._keybindingService.lookupKeybinding(actionId);\n\t\tif (!kb) {\n\t\t\treturn '';\n\t\t}\n\t\treturn ` (${kb.getLabel()})`;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\t// ----- IOverlayWidget API\n\n\tpublic getId(): string {\n\t\treturn FindOptionsWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._domNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition {\n\t\treturn {\n\t\t\tpreference: OverlayWidgetPositionPreference.TOP_RIGHT_CORNER\n\t\t};\n\t}\n\n\tpublic highlightFindOptions(): void {\n\t\tthis._revealTemporarily();\n\t}\n\n\tprivate _hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n\n\tprivate _revealTemporarily(): void {\n\t\tthis._show();\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseLeave(): void {\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseOver(): void {\n\t\tthis._hideSoon.cancel();\n\t}\n\n\tprivate _isVisible: boolean = false;\n\n\tprivate _show(): void {\n\t\tif (this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = true;\n\t\tthis._domNode.style.display = 'block';\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._domNode.style.display = 'none';\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/find/browser/findOptionsWidget.ts","vs/editor/contrib/find/browser/findOptionsWidget.ts"],"names":[],"mappings":"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","file":"findOptionsWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport './findOptionsWidget.css';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, OverlayWidgetPositionPreference } from '../../../browser/editorBrowser.js';\nimport { FIND_IDS } from './findModel.js';\nimport { FindReplaceState } from './findState.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IHoverLifecycleOptions } from '../../../../base/browser/ui/hover/hover.js';\n\nexport class FindOptionsWidget extends Widget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.findOptionsWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _state: FindReplaceState;\n\tprivate readonly _keybindingService: IKeybindingService;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly regex: RegexToggle;\n\tprivate readonly wholeWords: WholeWordsToggle;\n\tprivate readonly caseSensitive: CaseSensitiveToggle;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tstate: FindReplaceState,\n\t\tkeybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\t\tthis._state = state;\n\t\tthis._keybindingService = keybindingService;\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'findOptionsWidget';\n\t\tthis._domNode.style.display = 'none';\n\t\tthis._domNode.style.top = '10px';\n\t\tthis._domNode.style.zIndex = '12';\n\t\tthis._domNode.setAttribute('role', 'presentation');\n\t\tthis._domNode.setAttribute('aria-hidden', 'true');\n\n\t\tconst toggleStyles = {\n\t\t\tinputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n\t\t\tinputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n\t\t\tinputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n\t\t};\n\n\t\tconst hoverLifecycleOptions: IHoverLifecycleOptions = { groupId: 'find-options-widget' };\n\n\t\tthis.caseSensitive = this._register(new CaseSensitiveToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n\t\t\tisChecked: this._state.matchCase,\n\t\t\thoverLifecycleOptions,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.caseSensitive.domNode);\n\t\tthis._register(this.caseSensitive.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tmatchCase: this.caseSensitive.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.wholeWords = this._register(new WholeWordsToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n\t\t\tisChecked: this._state.wholeWord,\n\t\t\thoverLifecycleOptions,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.wholeWords.domNode);\n\t\tthis._register(this.wholeWords.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\twholeWord: this.wholeWords.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.regex = this._register(new RegexToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n\t\t\tisChecked: this._state.isRegex,\n\t\t\thoverLifecycleOptions,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.regex.domNode);\n\t\tthis._register(this.regex.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tisRegex: this.regex.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis._editor.addOverlayWidget(this);\n\n\t\tthis._register(this._state.onFindReplaceStateChange((e) => {\n\t\t\tlet somethingChanged = false;\n\t\t\tif (e.isRegex) {\n\t\t\t\tthis.regex.checked = this._state.isRegex;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.wholeWord) {\n\t\t\t\tthis.wholeWords.checked = this._state.wholeWord;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.matchCase) {\n\t\t\t\tthis.caseSensitive.checked = this._state.matchCase;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (!this._state.isRevealed && somethingChanged) {\n\t\t\t\tthis._revealTemporarily();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n\t\tthis._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n\t}\n\n\tprivate _keybindingLabelFor(actionId: string): string {\n\t\tconst kb = this._keybindingService.lookupKeybinding(actionId);\n\t\tif (!kb) {\n\t\t\treturn '';\n\t\t}\n\t\treturn ` (${kb.getLabel()})`;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\t// ----- IOverlayWidget API\n\n\tpublic getId(): string {\n\t\treturn FindOptionsWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._domNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition {\n\t\treturn {\n\t\t\tpreference: OverlayWidgetPositionPreference.TOP_RIGHT_CORNER\n\t\t};\n\t}\n\n\tpublic highlightFindOptions(): void {\n\t\tthis._revealTemporarily();\n\t}\n\n\tprivate _hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n\n\tprivate _revealTemporarily(): void {\n\t\tthis._show();\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseLeave(): void {\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseOver(): void {\n\t\tthis._hideSoon.cancel();\n\t}\n\n\tprivate _isVisible: boolean = false;\n\n\tprivate _show(): void {\n\t\tif (this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = true;\n\t\tthis._domNode.style.display = 'block';\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._domNode.style.display = 'none';\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport './findOptionsWidget.css';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, OverlayWidgetPositionPreference } from '../../../browser/editorBrowser.js';\nimport { FIND_IDS } from './findModel.js';\nimport { FindReplaceState } from './findState.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IHoverLifecycleOptions } from '../../../../base/browser/ui/hover/hover.js';\n\nexport class FindOptionsWidget extends Widget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.findOptionsWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _state: FindReplaceState;\n\tprivate readonly _keybindingService: IKeybindingService;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly regex: RegexToggle;\n\tprivate readonly wholeWords: WholeWordsToggle;\n\tprivate readonly caseSensitive: CaseSensitiveToggle;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tstate: FindReplaceState,\n\t\tkeybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\t\tthis._state = state;\n\t\tthis._keybindingService = keybindingService;\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'findOptionsWidget';\n\t\tthis._domNode.style.display = 'none';\n\t\tthis._domNode.style.top = '10px';\n\t\tthis._domNode.style.zIndex = '12';\n\t\tthis._domNode.setAttribute('role', 'presentation');\n\t\tthis._domNode.setAttribute('aria-hidden', 'true');\n\n\t\tconst toggleStyles = {\n\t\t\tinputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n\t\t\tinputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n\t\t\tinputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n\t\t};\n\n\t\tconst hoverLifecycleOptions: IHoverLifecycleOptions = { groupId: 'find-options-widget' };\n\n\t\tthis.caseSensitive = this._register(new CaseSensitiveToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n\t\t\tisChecked: this._state.matchCase,\n\t\t\thoverLifecycleOptions,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.caseSensitive.domNode);\n\t\tthis._register(this.caseSensitive.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tmatchCase: this.caseSensitive.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.wholeWords = this._register(new WholeWordsToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n\t\t\tisChecked: this._state.wholeWord,\n\t\t\thoverLifecycleOptions,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.wholeWords.domNode);\n\t\tthis._register(this.wholeWords.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\twholeWord: this.wholeWords.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis.regex = this._register(new RegexToggle({\n\t\t\tappendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n\t\t\tisChecked: this._state.isRegex,\n\t\t\thoverLifecycleOptions,\n\t\t\t...toggleStyles\n\t\t}));\n\t\tthis._domNode.appendChild(this.regex.domNode);\n\t\tthis._register(this.regex.onChange(() => {\n\t\t\tthis._state.change({\n\t\t\t\tisRegex: this.regex.checked\n\t\t\t}, false);\n\t\t}));\n\n\t\tthis._editor.addOverlayWidget(this);\n\n\t\tthis._register(this._state.onFindReplaceStateChange((e) => {\n\t\t\tlet somethingChanged = false;\n\t\t\tif (e.isRegex) {\n\t\t\t\tthis.regex.checked = this._state.isRegex;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.wholeWord) {\n\t\t\t\tthis.wholeWords.checked = this._state.wholeWord;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (e.matchCase) {\n\t\t\t\tthis.caseSensitive.checked = this._state.matchCase;\n\t\t\t\tsomethingChanged = true;\n\t\t\t}\n\t\t\tif (!this._state.isRevealed && somethingChanged) {\n\t\t\t\tthis._revealTemporarily();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n\t\tthis._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n\t}\n\n\tprivate _keybindingLabelFor(actionId: string): string {\n\t\tconst kb = this._keybindingService.lookupKeybinding(actionId);\n\t\tif (!kb) {\n\t\t\treturn '';\n\t\t}\n\t\treturn ` (${kb.getLabel()})`;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\t// ----- IOverlayWidget API\n\n\tpublic getId(): string {\n\t\treturn FindOptionsWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._domNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition {\n\t\treturn {\n\t\t\tpreference: OverlayWidgetPositionPreference.TOP_RIGHT_CORNER\n\t\t};\n\t}\n\n\tpublic highlightFindOptions(): void {\n\t\tthis._revealTemporarily();\n\t}\n\n\tprivate _hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n\n\tprivate _revealTemporarily(): void {\n\t\tthis._show();\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseLeave(): void {\n\t\tthis._hideSoon.schedule();\n\t}\n\n\tprivate _onMouseOver(): void {\n\t\tthis._hideSoon.cancel();\n\t}\n\n\tprivate _isVisible: boolean = false;\n\n\tprivate _show(): void {\n\t\tif (this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = true;\n\t\tthis._domNode.style.display = 'block';\n\t}\n\n\tprivate _hide(): void {\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._domNode.style.display = 'none';\n\t}\n}\n"]}
|
|
@@ -26,7 +26,6 @@ import { ThemeIcon } from '../../../../base/common/themables.js';
|
|
|
26
26
|
import { isHighContrast } from '../../../../platform/theme/common/theme.js';
|
|
27
27
|
import { assertReturnsDefined } from '../../../../base/common/types.js';
|
|
28
28
|
import { defaultInputBoxStyles, defaultToggleStyles } from '../../../../platform/theme/browser/defaultStyles.js';
|
|
29
|
-
import { createInstantHoverDelegate, getDefaultHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';
|
|
30
29
|
const findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize(952, 'Icon to indicate that the editor find widget is collapsed.'));
|
|
31
30
|
const findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize(953, 'Icon to indicate that the editor find widget is expanded.'));
|
|
32
31
|
export const findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize(954, 'Icon for \'Find in Selection\' in the editor find widget.'));
|
|
@@ -813,13 +812,12 @@ export class FindWidget extends Widget {
|
|
|
813
812
|
this._matchesCount = document.createElement('div');
|
|
814
813
|
this._matchesCount.className = 'matchesCount';
|
|
815
814
|
this._updateMatchesCount();
|
|
816
|
-
|
|
817
|
-
const hoverDelegate = this._register(createInstantHoverDelegate());
|
|
815
|
+
const hoverLifecycleOptions = { groupId: 'find-widget' };
|
|
818
816
|
// Previous button
|
|
819
817
|
this._prevBtn = this._register(new SimpleButton({
|
|
820
818
|
label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),
|
|
821
819
|
icon: findPreviousMatchIcon,
|
|
822
|
-
|
|
820
|
+
hoverLifecycleOptions,
|
|
823
821
|
onTrigger: () => {
|
|
824
822
|
assertReturnsDefined(this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction)).run().then(undefined, onUnexpectedError);
|
|
825
823
|
}
|
|
@@ -828,7 +826,7 @@ export class FindWidget extends Widget {
|
|
|
828
826
|
this._nextBtn = this._register(new SimpleButton({
|
|
829
827
|
label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),
|
|
830
828
|
icon: findNextMatchIcon,
|
|
831
|
-
|
|
829
|
+
hoverLifecycleOptions,
|
|
832
830
|
onTrigger: () => {
|
|
833
831
|
assertReturnsDefined(this._codeEditor.getAction(FIND_IDS.NextMatchFindAction)).run().then(undefined, onUnexpectedError);
|
|
834
832
|
}
|
|
@@ -847,7 +845,7 @@ export class FindWidget extends Widget {
|
|
|
847
845
|
icon: findSelectionIcon,
|
|
848
846
|
title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),
|
|
849
847
|
isChecked: false,
|
|
850
|
-
|
|
848
|
+
hoverLifecycleOptions,
|
|
851
849
|
inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),
|
|
852
850
|
inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),
|
|
853
851
|
inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),
|
|
@@ -879,7 +877,7 @@ export class FindWidget extends Widget {
|
|
|
879
877
|
this._closeBtn = this._register(new SimpleButton({
|
|
880
878
|
label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),
|
|
881
879
|
icon: widgetClose,
|
|
882
|
-
|
|
880
|
+
hoverLifecycleOptions,
|
|
883
881
|
onTrigger: () => {
|
|
884
882
|
this._state.change({ isRevealed: false, searchScope: null }, false);
|
|
885
883
|
},
|
|
@@ -909,6 +907,7 @@ export class FindWidget extends Widget {
|
|
|
909
907
|
showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),
|
|
910
908
|
inputBoxStyles: defaultInputBoxStyles,
|
|
911
909
|
toggleStyles: defaultToggleStyles,
|
|
910
|
+
hoverLifecycleOptions,
|
|
912
911
|
}, this._contextKeyService, true));
|
|
913
912
|
this._replaceInput.setPreserveCase(!!this._state.preserveCase);
|
|
914
913
|
this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));
|
|
@@ -942,13 +941,11 @@ export class FindWidget extends Widget {
|
|
|
942
941
|
e.preventDefault();
|
|
943
942
|
}
|
|
944
943
|
}));
|
|
945
|
-
// Create scoped hover delegate for replace actions
|
|
946
|
-
const replaceHoverDelegate = this._register(createInstantHoverDelegate());
|
|
947
944
|
// Replace one button
|
|
948
945
|
this._replaceBtn = this._register(new SimpleButton({
|
|
949
946
|
label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),
|
|
950
947
|
icon: findReplaceIcon,
|
|
951
|
-
|
|
948
|
+
hoverLifecycleOptions,
|
|
952
949
|
onTrigger: () => {
|
|
953
950
|
this._controller.replace();
|
|
954
951
|
},
|
|
@@ -963,7 +960,7 @@ export class FindWidget extends Widget {
|
|
|
963
960
|
this._replaceAllBtn = this._register(new SimpleButton({
|
|
964
961
|
label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),
|
|
965
962
|
icon: findReplaceAllIcon,
|
|
966
|
-
|
|
963
|
+
hoverLifecycleOptions,
|
|
967
964
|
onTrigger: () => {
|
|
968
965
|
this._controller.replaceAll();
|
|
969
966
|
}
|
|
@@ -1093,7 +1090,10 @@ export class SimpleButton extends Widget {
|
|
|
1093
1090
|
this._domNode.className = className;
|
|
1094
1091
|
this._domNode.setAttribute('role', 'button');
|
|
1095
1092
|
this._domNode.setAttribute('aria-label', this._opts.label);
|
|
1096
|
-
this._register(hoverService.
|
|
1093
|
+
this._register(hoverService.setupDelayedHover(this._domNode, {
|
|
1094
|
+
content: this._opts.label,
|
|
1095
|
+
style: 1 /* HoverStyle.Pointer */,
|
|
1096
|
+
}, opts.hoverLifecycleOptions));
|
|
1097
1097
|
this.onclick(this._domNode, (e) => {
|
|
1098
1098
|
this._opts.onTrigger();
|
|
1099
1099
|
e.preventDefault();
|