monaco-editor-core 0.54.0 → 0.55.0-dev-20251007
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/canIUse.js +1 -0
- package/esm/vs/base/browser/canIUse.js.map +1 -1
- package/esm/vs/base/browser/dom.js +9 -0
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/fastDomNode.js.map +1 -1
- package/esm/vs/base/browser/mouseEvent.js +3 -0
- package/esm/vs/base/browser/mouseEvent.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +2 -0
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +5 -5
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/sash/sash.css +1 -1
- package/esm/vs/base/browser/ui/sash/sash.js +4 -0
- package/esm/vs/base/browser/ui/sash/sash.js.map +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/table/table.css +2 -2
- package/esm/vs/base/browser/ui/tree/abstractTree.js +7 -3
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +4 -0
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js +1 -0
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/media/tree.css +2 -2
- package/esm/vs/base/browser/webWorkerFactory.js +3 -0
- package/esm/vs/base/browser/webWorkerFactory.js.map +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/decorators.js +1 -0
- package/esm/vs/base/common/decorators.js.map +1 -1
- package/esm/vs/base/common/errors.js +1 -0
- package/esm/vs/base/common/errors.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -1
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/hash.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -0
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/hotReloadHelpers.js +1 -0
- package/esm/vs/base/common/hotReloadHelpers.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +19 -0
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marshalling.js +4 -0
- package/esm/vs/base/common/marshalling.js.map +1 -1
- package/esm/vs/base/common/network.js +1 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/objects.js +1 -0
- package/esm/vs/base/common/objects.js.map +1 -1
- package/esm/vs/base/common/observableInternal/changeTracker.js +4 -0
- package/esm/vs/base/common/observableInternal/changeTracker.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -0
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +1 -0
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js +7 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +2 -0
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -0
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +1 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/process.js +1 -0
- package/esm/vs/base/common/process.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/types.js +2 -0
- package/esm/vs/base/common/types.js.map +1 -1
- package/esm/vs/base/common/worker/webWorker.js +26 -14
- package/esm/vs/base/common/worker/webWorker.js.map +1 -1
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js +2 -0
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js.map +1 -0
- package/esm/vs/editor/browser/config/editorConfiguration.js +3 -2
- package/esm/vs/editor/browser/config/editorConfiguration.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/editContextFactory.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js +2 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +2 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseTarget.js +7 -0
- package/esm/vs/editor/browser/controller/mouseTarget.js.map +1 -1
- package/esm/vs/editor/browser/controller/pointerHandler.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorDom.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
- package/esm/vs/editor/browser/gpu/gpuUtils.js +1 -0
- package/esm/vs/editor/browser/gpu/gpuUtils.js.map +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -0
- package/esm/vs/editor/browser/gpu/viewGpuContext.js.map +1 -1
- package/esm/vs/editor/browser/services/abstractCodeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/bulkEditService.js.map +1 -1
- package/esm/vs/editor/browser/services/codeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hover.css +2 -0
- package/esm/vs/editor/browser/services/hoverService/hoverService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js +8 -8
- package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js.map +1 -1
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +1 -0
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +1 -0
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorContributions.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +4 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/delegatingEditorImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/utils.js +2 -0
- package/esm/vs/editor/browser/widget/diffEditor/utils.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +122 -68
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfo.js +32 -16
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfoFromSettings.js +16 -0
- package/esm/vs/editor/common/config/fontInfoFromSettings.js.map +1 -0
- package/esm/vs/editor/common/core/edits/edit.js +1 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +2 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/position.js +1 -1
- package/esm/vs/editor/common/core/position.js.map +1 -1
- package/esm/vs/editor/common/core/range.js +1 -1
- package/esm/vs/editor/common/core/range.js.map +1 -1
- package/esm/vs/editor/common/core/selection.js +1 -1
- package/esm/vs/editor/common/core/selection.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorCommon.js.map +1 -1
- package/esm/vs/editor/common/languages.js +1 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js +14 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js +2 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +1 -1
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model.js +1 -1
- package/esm/vs/editor/common/model.js.map +1 -1
- package/esm/vs/editor/common/services/editorBaseApi.js.map +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +1 -0
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorkerHost.js.map +1 -1
- package/esm/vs/editor/common/services/modelService.js +14 -21
- package/esm/vs/editor/common/services/modelService.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +40 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +2 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +1 -0
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +1 -0
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +1 -0
- package/esm/vs/editor/contrib/find/browser/findModel.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -5
- package/esm/vs/editor/contrib/folding/browser/folding.css +4 -4
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +30 -14
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +4 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +56 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +2 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +8 -8
- package/esm/vs/editor/editor.api.js +4 -0
- package/esm/vs/editor/editor.api.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js +3 -0
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js.map +1 -1
- package/esm/vs/platform/accessibility/browser/accessibilityService.js +2 -2
- package/esm/vs/platform/accessibility/browser/accessibilityService.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/commands/common/commands.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +5 -0
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js +1 -0
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js.map +1 -1
- package/esm/vs/platform/dnd/browser/dnd.js +2 -0
- package/esm/vs/platform/dnd/browser/dnd.js.map +1 -1
- package/esm/vs/platform/instantiation/common/descriptors.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -0
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +5 -0
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/log/common/logService.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInHotClass.js +2 -0
- package/esm/vs/platform/observable/common/wrapInHotClass.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js +3 -0
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js.map +1 -1
- package/esm/vs/platform/product/common/product.js +69 -0
- package/esm/vs/platform/product/common/product.js.map +1 -0
- package/esm/vs/platform/quickinput/browser/quickInput.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/monaco.d.ts +8 -8
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/diffEditor/diffEditorWidget.ts","vs/editor/browser/widget/diffEditor/diffEditorWidget.ts"],"names":[],"mappings":"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","file":"diffEditorWidget.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 { getWindow, h } from '../../../../base/browser/dom.js';\nimport { IBoundarySashes } from '../../../../base/browser/ui/sash/sash.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { readHotReloadableExport } from '../../../../base/common/hotReloadHelpers.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, derivedDisposable, disposableObservableValue, observableFromEvent, observableValue, recomputeInitiallyAndOnChange, subtransaction, transaction } from '../../../../base/common/observable.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { bindContextKey } from '../../../../platform/observable/common/platformObservableUtils.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { LineRange } from '../../../common/core/ranges/lineRange.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent } from '../../../common/cursorEvents.js';\nimport { ILineChange } from '../../../common/diff/legacyLinesDiffComputer.js';\nimport { LineRangeMapping, RangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { EditorType, IDiffEditorModel, IDiffEditorViewModel, IDiffEditorViewState } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IIdentifiedSingleEditOperation } from '../../../common/model.js';\nimport { IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { ICodeEditor, IDiffEditor, IDiffEditorConstructionOptions } from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IDiffEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { StableEditorScrollState } from '../../stableEditorScroll.js';\nimport { CodeEditorWidget, ICodeEditorWidgetOptions } from '../codeEditor/codeEditorWidget.js';\nimport { AccessibleDiffViewer, AccessibleDiffViewerModelFromEditors } from './components/accessibleDiffViewer.js';\nimport { DiffEditorDecorations } from './components/diffEditorDecorations.js';\nimport { DiffEditorEditors } from './components/diffEditorEditors.js';\nimport { DiffEditorSash, SashLayout } from './components/diffEditorSash.js';\nimport { DiffEditorViewZones } from './components/diffEditorViewZones/diffEditorViewZones.js';\nimport { DelegatingEditor } from './delegatingEditorImpl.js';\nimport { DiffEditorOptions } from './diffEditorOptions.js';\nimport { DiffEditorViewModel, DiffMapping, DiffState } from './diffEditorViewModel.js';\nimport { DiffEditorGutter } from './features/gutterFeature.js';\nimport { HideUnchangedRegionsFeature } from './features/hideUnchangedRegionsFeature.js';\nimport { MovedBlocksLinesFeature } from './features/movedBlocksLinesFeature.js';\nimport { OverviewRulerFeature } from './features/overviewRulerFeature.js';\nimport { RevertButtonsFeature } from './features/revertButtonsFeature.js';\nimport './style.css';\nimport { CSSStyle, ObservableElementSizeObserver, RefCounted, applyStyle, applyViewZones, translatePosition } from './utils.js';\n\nexport interface IDiffCodeEditorWidgetOptions {\n\toriginalEditor?: ICodeEditorWidgetOptions;\n\tmodifiedEditor?: ICodeEditorWidgetOptions;\n}\n\nexport class DiffEditorWidget extends DelegatingEditor implements IDiffEditor {\n\n\tprivate readonly elements;\n\tprivate readonly _diffModelSrc;\n\tprivate readonly _diffModel;\n\tpublic readonly onDidChangeModel;\n\n\tpublic get onDidContentSizeChange() { return this._editors.onDidContentSizeChange; }\n\n\tprivate readonly _contextKeyService;\n\tprivate readonly _instantiationService;\n\tprivate readonly _rootSizeObserver: ObservableElementSizeObserver;\n\n\n\tprivate readonly _sashLayout: SashLayout;\n\tprivate readonly _sash: IObservable<DiffEditorSash | undefined>;\n\tprivate readonly _boundarySashes;\n\n\tprivate _accessibleDiffViewerShouldBeVisible;\n\tprivate _accessibleDiffViewerVisible;\n\tprivate readonly _accessibleDiffViewer: IObservable<AccessibleDiffViewer>;\n\tprivate readonly _options: DiffEditorOptions;\n\tprivate readonly _editors: DiffEditorEditors;\n\n\tprivate readonly _overviewRulerPart: IObservable<OverviewRulerFeature | undefined>;\n\tprivate readonly _movedBlocksLinesPart;\n\n\tprivate readonly _gutter: IObservable<DiffEditorGutter | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _domElement: HTMLElement,\n\t\toptions: Readonly<IDiffEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: IDiffCodeEditorWidgetOptions,\n\t\t@IContextKeyService private readonly _parentContextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _parentInstantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IEditorProgressService private readonly _editorProgressService: IEditorProgressService,\n\t) {\n\t\tsuper();\n\t\tthis.elements = h('div.monaco-diff-editor.side-by-side', { style: { position: 'relative', height: '100%' } }, [\n\t\t\th('div.editor.original@original', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.accessibleDiffViewer@accessibleDiffViewer', { style: { position: 'absolute', height: '100%' } }),\n\t\t]);\n\t\tthis._diffModelSrc = this._register(disposableObservableValue<RefCounted<DiffEditorViewModel> | undefined>(this, undefined));\n\t\tthis._diffModel = derived<DiffEditorViewModel | undefined>(this, reader => this._diffModelSrc.read(reader)?.object);\n\t\tthis.onDidChangeModel = Event.fromObservableLight(this._diffModel);\n\t\tthis._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._domElement));\n\t\tthis._instantiationService = this._register(this._parentInstantiationService.createChild(\n\t\t\tnew ServiceCollection([IContextKeyService, this._contextKeyService])\n\t\t));\n\t\tthis._boundarySashes = observableValue<IBoundarySashes | undefined>(this, undefined);\n\t\tthis._accessibleDiffViewerShouldBeVisible = observableValue(this, false);\n\t\tthis._accessibleDiffViewerVisible = derived(this, reader =>\n\t\t\tthis._options.onlyShowAccessibleDiffViewer.read(reader)\n\t\t\t\t? true\n\t\t\t\t: this._accessibleDiffViewerShouldBeVisible.read(reader)\n\t\t);\n\t\tthis._movedBlocksLinesPart = observableValue<MovedBlocksLinesFeature | undefined>(this, undefined);\n\t\tthis._layoutInfo = derived(this, reader => {\n\t\t\tconst fullWidth = this._rootSizeObserver.width.read(reader);\n\t\t\tconst fullHeight = this._rootSizeObserver.height.read(reader);\n\n\t\t\tif (this._rootSizeObserver.automaticLayout) {\n\t\t\t\tthis.elements.root.style.height = '100%';\n\t\t\t} else {\n\t\t\t\tthis.elements.root.style.height = fullHeight + 'px';\n\t\t\t}\n\n\t\t\tconst sash = this._sash.read(reader);\n\n\t\t\tconst gutter = this._gutter.read(reader);\n\t\t\tconst gutterWidth = gutter?.width.read(reader) ?? 0;\n\n\t\t\tconst overviewRulerPartWidth = this._overviewRulerPart.read(reader)?.width ?? 0;\n\n\t\t\tlet originalLeft: number, originalWidth: number, modifiedLeft: number, modifiedWidth: number, gutterLeft: number;\n\n\t\t\tconst sideBySide = !!sash;\n\t\t\tif (sideBySide) {\n\t\t\t\tconst sashLeft = sash.sashLeft.read(reader);\n\t\t\t\tconst movedBlocksLinesWidth = this._movedBlocksLinesPart.read(reader)?.width.read(reader) ?? 0;\n\n\t\t\t\toriginalLeft = 0;\n\t\t\t\toriginalWidth = sashLeft - gutterWidth - movedBlocksLinesWidth;\n\n\t\t\t\tgutterLeft = sashLeft - gutterWidth;\n\n\t\t\t\tmodifiedLeft = sashLeft;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t} else {\n\t\t\t\tgutterLeft = 0;\n\n\t\t\t\tconst shouldHideOriginalLineNumbers = this._options.inlineViewHideOriginalLineNumbers.read(reader);\n\t\t\t\toriginalLeft = gutterWidth;\n\t\t\t\tif (shouldHideOriginalLineNumbers) {\n\t\t\t\t\toriginalWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\toriginalWidth = Math.max(5, this._editors.originalObs.layoutInfoDecorationsLeft.read(reader));\n\t\t\t\t}\n\n\t\t\t\tmodifiedLeft = gutterWidth + originalWidth;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t}\n\n\t\t\tthis.elements.original.style.left = originalLeft + 'px';\n\t\t\tthis.elements.original.style.width = originalWidth + 'px';\n\t\t\tthis._editors.original.layout({ width: originalWidth, height: fullHeight }, true);\n\n\t\t\tgutter?.layout(gutterLeft);\n\n\t\t\tthis.elements.modified.style.left = modifiedLeft + 'px';\n\t\t\tthis.elements.modified.style.width = modifiedWidth + 'px';\n\t\t\tthis._editors.modified.layout({ width: modifiedWidth, height: fullHeight }, true);\n\n\t\t\treturn {\n\t\t\t\tmodifiedEditor: this._editors.modified.getLayoutInfo(),\n\t\t\t\toriginalEditor: this._editors.original.getLayoutInfo(),\n\t\t\t};\n\t\t});\n\t\tthis._diffValue = this._diffModel.map((m, r) => m?.diff.read(r));\n\t\tthis.onDidUpdateDiff = Event.fromObservableLight(this._diffValue);\n\t\tcodeEditorService.willCreateDiffEditor();\n\n\t\tthis._contextKeyService.createKey('isInDiffEditor', true);\n\n\t\tthis._domElement.appendChild(this.elements.root);\n\t\tthis._register(toDisposable(() => this.elements.root.remove()));\n\n\t\tthis._rootSizeObserver = this._register(new ObservableElementSizeObserver(this.elements.root, options.dimension));\n\t\tthis._rootSizeObserver.setAutomaticLayout(options.automaticLayout ?? false);\n\n\t\tthis._options = this._instantiationService.createInstance(DiffEditorOptions, options);\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setWidth(this._rootSizeObserver.width.read(reader));\n\t\t}));\n\n\t\tthis._contextKeyService.createKey(EditorContextKeys.isEmbeddedDiffEditor.key, false);\n\t\tthis._register(bindContextKey(EditorContextKeys.isEmbeddedDiffEditor, this._contextKeyService,\n\t\t\treader => this._options.isInEmbeddedEditor.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.comparingMovedCode, this._contextKeyService,\n\t\t\treader => !!this._diffModel.read(reader)?.movedTextToCompare.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, this._contextKeyService,\n\t\t\treader => this._options.couldShowInlineViewBecauseOfSize.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorInlineMode, this._contextKeyService,\n\t\t\treader => !this._options.renderSideBySide.read(reader)\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.hasChanges, this._contextKeyService,\n\t\t\treader => (this._diffModel.read(reader)?.diff.read(reader)?.mappings.length ?? 0) > 0\n\t\t));\n\n\t\tthis._editors = this._register(this._instantiationService.createInstance(\n\t\t\tDiffEditorEditors,\n\t\t\tthis.elements.original,\n\t\t\tthis.elements.modified,\n\t\t\tthis._options,\n\t\t\tcodeEditorWidgetOptions,\n\t\t\t(i, c, o, o2) => this._createInnerEditor(i, c, o, o2),\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalWritable, this._contextKeyService,\n\t\t\treader => this._options.originalEditable.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedWritable, this._contextKeyService,\n\t\t\treader => !this._options.readOnly.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.original.uri.toString() ?? ''\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.modified.uri.toString() ?? ''\n\t\t));\n\n\t\tthis._overviewRulerPart = derivedDisposable(this, reader =>\n\t\t\t!this._options.renderOverviewRuler.read(reader)\n\t\t\t\t? undefined\n\t\t\t\t: this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(OverviewRulerFeature, reader),\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst dimensions = {\n\t\t\theight: this._rootSizeObserver.height,\n\t\t\twidth: this._rootSizeObserver.width.map((w, reader) => w - (this._overviewRulerPart.read(reader)?.width ?? 0)),\n\t\t};\n\n\t\tthis._sashLayout = new SashLayout(this._options, dimensions);\n\n\t\tthis._sash = derivedDisposable(this, reader => {\n\t\t\tconst showSash = this._options.renderSideBySide.read(reader);\n\t\t\tthis.elements.root.classList.toggle('side-by-side', showSash);\n\t\t\treturn !showSash ? undefined : new DiffEditorSash(\n\t\t\t\tthis.elements.root,\n\t\t\t\tdimensions,\n\t\t\t\tthis._options.enableSplitViewResizing,\n\t\t\t\tthis._boundarySashes,\n\t\t\t\tthis._sashLayout.sashLeft,\n\t\t\t\t() => this._sashLayout.resetSash(),\n\t\t\t);\n\t\t}).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst unchangedRangesFeature = derivedDisposable(this, reader => /** @description UnchangedRangesFeature */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(HideUnchangedRegionsFeature, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tderivedDisposable(this, reader => /** @description DiffEditorDecorations */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorDecorations, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options, this,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst origViewZoneIdsToIgnore = new Set<string>();\n\t\tconst modViewZoneIdsToIgnore = new Set<string>();\n\t\tlet isUpdatingViewZones = false;\n\t\tconst viewZoneManager = derivedDisposable(this, reader => /** @description ViewZoneManager */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorViewZones, reader),\n\t\t\t\tgetWindow(this._domElement),\n\t\t\t\tthis._editors,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._options,\n\t\t\t\tthis,\n\t\t\t\t() => isUpdatingViewZones || unchangedRangesFeature.read(undefined).isUpdatingHiddenAreas,\n\t\t\t\torigViewZoneIdsToIgnore,\n\t\t\t\tmodViewZoneIdsToIgnore\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst originalViewZones = derived(this, (reader) => { /** @description originalViewZones */\n\t\t\tconst orig = viewZoneManager.read(reader).viewZones.read(reader).orig;\n\t\t\tconst orig2 = unchangedRangesFeature.read(reader).viewZones.read(reader).origViewZones;\n\t\t\treturn orig.concat(orig2);\n\t\t});\n\t\tconst modifiedViewZones = derived(this, (reader) => { /** @description modifiedViewZones */\n\t\t\tconst mod = viewZoneManager.read(reader).viewZones.read(reader).mod;\n\t\t\tconst mod2 = unchangedRangesFeature.read(reader).viewZones.read(reader).modViewZones;\n\t\t\treturn mod.concat(mod2);\n\t\t});\n\t\tthis._register(applyViewZones(this._editors.original, originalViewZones, isUpdatingOrigViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingOrigViewZones;\n\t\t}, origViewZoneIdsToIgnore));\n\t\tlet scrollState: StableEditorScrollState | undefined;\n\t\tthis._register(applyViewZones(this._editors.modified, modifiedViewZones, isUpdatingModViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingModViewZones;\n\t\t\tif (isUpdatingViewZones) {\n\t\t\t\tscrollState = StableEditorScrollState.capture(this._editors.modified);\n\t\t\t} else {\n\t\t\t\tscrollState?.restore(this._editors.modified);\n\t\t\t\tscrollState = undefined;\n\t\t\t}\n\t\t}, modViewZoneIdsToIgnore));\n\n\t\tthis._accessibleDiffViewer = derivedDisposable(this, reader =>\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(AccessibleDiffViewer, reader),\n\t\t\t\tthis.elements.accessibleDiffViewer,\n\t\t\t\tthis._accessibleDiffViewerVisible,\n\t\t\t\t(visible, tx) => this._accessibleDiffViewerShouldBeVisible.set(visible, tx),\n\t\t\t\tthis._options.onlyShowAccessibleDiffViewer.map(v => !v),\n\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\tthis._diffModel.map((m, r) => m?.diff.read(r)?.mappings.map(m => m.lineRangeMapping)),\n\t\t\t\tnew AccessibleDiffViewerModelFromEditors(this._editors),\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst visibility = this._accessibleDiffViewerVisible.map<CSSStyle['visibility']>(v => v ? 'hidden' : 'visible');\n\t\tthis._register(applyStyle(this.elements.modified, { visibility }));\n\t\tthis._register(applyStyle(this.elements.original, { visibility }));\n\n\t\tthis._createDiffEditorContributions();\n\n\t\tcodeEditorService.addDiffEditor(this);\n\n\t\tthis._gutter = derivedDisposable(this, reader => {\n\t\t\treturn this._options.shouldRenderGutterMenu.read(reader)\n\t\t\t\t? this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(DiffEditorGutter, reader),\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis._options,\n\t\t\t\t\tthis._sashLayout,\n\t\t\t\t\tthis._boundarySashes,\n\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t});\n\n\t\tthis._register(recomputeInitiallyAndOnChange(this._layoutInfo));\n\n\t\tderivedDisposable(this, reader => /** @description MovedBlocksLinesPart */\n\t\t\tnew (readHotReloadableExport(MovedBlocksLinesFeature, reader))(\n\t\t\t\tthis.elements.root,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._layoutInfo.map(i => i.originalEditor),\n\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\tthis._editors,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store, value => {\n\t\t\t// This is to break the layout info <-> moved blocks lines part dependency cycle.\n\t\t\tthis._movedBlocksLinesPart.set(value, undefined);\n\t\t});\n\n\t\tthis._register(Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, true)));\n\t\tthis._register(Event.runAndSubscribe(this._editors.original.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, false)));\n\n\t\tconst isInitializingDiff = this._diffModel.map(this, (m, reader) => {\n\t\t\t/** @isInitializingDiff isDiffUpToDate */\n\t\t\tif (!m) { return undefined; }\n\t\t\treturn m.diff.read(reader) === undefined && !m.isDiffUpToDate.read(reader);\n\t\t});\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description DiffEditorWidgetHelper.ShowProgress */\n\t\t\tif (isInitializingDiff.read(reader) === true) {\n\t\t\t\tconst r = this._editorProgressService.show(true, 1000);\n\t\t\t\tstore.add(toDisposable(() => r.done()));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tstore.add(new (readHotReloadableExport(RevertButtonsFeature, reader))(this._editors, this._diffModel, this._options, this));\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tconst model = this._diffModel.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tfor (const m of [model.model.original, model.model.modified]) {\n\t\t\t\tstore.add(m.onWillDispose(e => {\n\t\t\t\t\tonUnexpectedError(new BugIndicatingError('TextModel got disposed before DiffEditorWidget model got reset'));\n\t\t\t\t\tthis.setModel(null);\n\t\t\t\t}));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setModel(this._diffModel.read(reader));\n\t\t}));\n\t}\n\n\tprotected _createInnerEditor(instantiationService: IInstantiationService, container: HTMLElement, options: Readonly<IEditorConstructionOptions>, editorWidgetOptions: ICodeEditorWidgetOptions): CodeEditorWidget {\n\t\tconst editor = instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\n\t\treturn editor;\n\t}\n\n\tprivate readonly _layoutInfo;\n\n\tprivate _createDiffEditorContributions() {\n\t\tconst contributions: IDiffEditorContributionDescription[] = EditorExtensionsRegistry.getDiffEditorContributions();\n\t\tfor (const desc of contributions) {\n\t\t\ttry {\n\t\t\t\tthis._register(this._instantiationService.createInstance(desc.ctor, this));\n\t\t\t} catch (err) {\n\t\t\t\tonUnexpectedError(err);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected override get _targetEditor(): CodeEditorWidget { return this._editors.modified; }\n\n\toverride getEditorType(): string { return EditorType.IDiffEditor; }\n\n\toverride layout(dimension?: IDimension | undefined): void {\n\t\tthis._rootSizeObserver.observe(dimension);\n\t}\n\n\toverride hasTextFocus(): boolean { return this._editors.original.hasTextFocus() || this._editors.modified.hasTextFocus(); }\n\n\tpublic override saveViewState(): IDiffEditorViewState {\n\t\tconst originalViewState = this._editors.original.saveViewState();\n\t\tconst modifiedViewState = this._editors.modified.saveViewState();\n\t\treturn {\n\t\t\toriginal: originalViewState,\n\t\t\tmodified: modifiedViewState,\n\t\t\tmodelState: this._diffModel.get()?.serializeState(),\n\t\t};\n\t}\n\n\tpublic override restoreViewState(s: IDiffEditorViewState): void {\n\t\tif (s && s.original && s.modified) {\n\t\t\tconst diffEditorState = s as IDiffEditorViewState;\n\t\t\tthis._editors.original.restoreViewState(diffEditorState.original);\n\t\t\tthis._editors.modified.restoreViewState(diffEditorState.modified);\n\t\t\tif (diffEditorState.modelState) {\n\t\t\t\tthis._diffModel.get()?.restoreSerializedState(diffEditorState.modelState as any);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._editors.original.handleInitialized();\n\t\tthis._editors.modified.handleInitialized();\n\t}\n\n\tpublic createViewModel(model: IDiffEditorModel): IDiffEditorViewModel {\n\t\treturn this._instantiationService.createInstance(DiffEditorViewModel, model, this._options);\n\t}\n\n\toverride getModel(): IDiffEditorModel | null { return this._diffModel.get()?.model ?? null; }\n\n\toverride setModel(model: IDiffEditorModel | null | IDiffEditorViewModel): void {\n\t\tconst vm = !model ? null\n\t\t\t: ('model' in model) ? RefCounted.create(model).createNewRef(this)\n\t\t\t\t: RefCounted.create(this.createViewModel(model), this);\n\t\tthis.setDiffModel(vm);\n\t}\n\n\tsetDiffModel(viewModel: RefCounted<IDiffEditorViewModel> | null, tx?: ITransaction): void {\n\t\tconst currentModel = this._diffModel.get();\n\n\t\tif (!viewModel && currentModel) {\n\t\t\t// Transitioning from a model to no-model\n\t\t\tthis._accessibleDiffViewer.get().close();\n\t\t}\n\n\t\tif (this._diffModel.get() !== viewModel?.object) {\n\t\t\tsubtransaction(tx, tx => {\n\t\t\t\tconst vm = viewModel?.object;\n\t\t\t\t/** @description DiffEditorWidget.setModel */\n\t\t\t\tobservableFromEvent.batchEventsGlobally(tx, () => {\n\t\t\t\t\tthis._editors.original.setModel(vm ? vm.model.original : null);\n\t\t\t\t\tthis._editors.modified.setModel(vm ? vm.model.modified : null);\n\t\t\t\t});\n\t\t\t\tconst prevValueRef = this._diffModelSrc.get()?.createNewRef(this);\n\t\t\t\tthis._diffModelSrc.set(viewModel?.createNewRef(this) as RefCounted<DiffEditorViewModel> | undefined, tx);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// async, so that this runs after the transaction finished.\n\t\t\t\t\t// TODO: use the transaction to schedule disposal\n\t\t\t\t\tprevValueRef?.dispose();\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @param changedOptions Only has values for top-level options that have actually changed.\n\t */\n\toverride updateOptions(changedOptions: IDiffEditorOptions): void {\n\t\tthis._options.updateOptions(changedOptions);\n\t}\n\tgetContainerDomNode(): HTMLElement { return this._domElement; }\n\tgetOriginalEditor(): ICodeEditor { return this._editors.original; }\n\tgetModifiedEditor(): ICodeEditor { return this._editors.modified; }\n\n\tprivate readonly _diffValue;\n\treadonly onDidUpdateDiff: Event<void>;\n\n\t/**\n\t * @deprecated Use `this.getDiffComputationResult().changes2` instead.\n\t */\n\tgetLineChanges(): ILineChange[] | null {\n\t\tconst diffState = this._diffModel.get()?.diff.get();\n\t\tif (!diffState) { return null; }\n\t\treturn toLineChanges(diffState);\n\t}\n\n\trevert(diff: LineRangeMapping): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tthis._editors.modified.executeEdits('diffEditor', [\n\t\t\t{\n\t\t\t\trange: diff.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(diff.original.toExclusiveRange())\n\t\t\t}\n\t\t]);\n\t}\n\n\trevertRangeMappings(diffs: RangeMapping[]): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst changes: IIdentifiedSingleEditOperation[] = diffs.map<IIdentifiedSingleEditOperation>(c => ({\n\t\t\trange: c.modifiedRange,\n\t\t\ttext: model.model.original.getValueInRange(c.originalRange)\n\t\t}));\n\n\t\tthis._editors.modified.executeEdits('diffEditor', changes);\n\t}\n\n\trevertFocusedRangeMappings() {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) { return; }\n\n\t\tconst modifiedEditor = this._editors.modified;\n\t\tif (!modifiedEditor.hasTextFocus()) { return; }\n\n\t\tconst curLineNumber = modifiedEditor.getPosition()!.lineNumber;\n\t\tconst selection = modifiedEditor.getSelection();\n\t\tconst selectedRange = LineRange.fromRange(selection || new Range(curLineNumber, 0, curLineNumber, 0));\n\t\tconst diffsToRevert = diffs.filter(d => {\n\t\t\treturn d.lineRangeMapping.modified.intersect(selectedRange);\n\t\t});\n\n\t\tmodifiedEditor.executeEdits('diffEditor', diffsToRevert.map(d => (\n\t\t\t{\n\t\t\t\trange: d.lineRangeMapping.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(d.lineRangeMapping.original.toExclusiveRange())\n\t\t\t}\n\t\t)));\n\t}\n\n\n\tprivate _goTo(diff: DiffMapping): void {\n\t\tthis._editors.modified.setPosition(new Position(diff.lineRangeMapping.modified.startLineNumber, 1));\n\t\tthis._editors.modified.revealRangeInCenter(diff.lineRangeMapping.modified.toExclusiveRange());\n\t}\n\n\tgoToDiff(target: 'previous' | 'next'): void {\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst curLineNumber = this._editors.modified.getPosition()!.lineNumber;\n\t\tlet diff: DiffMapping | undefined;\n\t\tif (target === 'next') {\n\t\t\tconst modifiedLineCount = this._editors.modified.getModel()!.getLineCount();\n\t\t\tif (modifiedLineCount === curLineNumber) {\n\t\t\t\tdiff = diffs[0];\n\t\t\t} else {\n\t\t\t\tdiff = diffs.find(d => d.lineRangeMapping.modified.startLineNumber > curLineNumber) ?? diffs[0];\n\t\t\t}\n\t\t} else {\n\t\t\tdiff = findLast(diffs, d => d.lineRangeMapping.modified.startLineNumber < curLineNumber) ?? diffs[diffs.length - 1];\n\t\t}\n\t\tthis._goTo(diff);\n\n\t\tif (diff.lineRangeMapping.modified.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff.lineRangeMapping.original.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.goToDiff' });\n\t\t}\n\t}\n\n\trevealFirstDiff(): void {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) {\n\t\t\treturn;\n\t\t}\n\t\t// wait for the diff computation to finish\n\t\tthis.waitForDiff().then(() => {\n\t\t\tconst diffs = diffModel.diff.get()?.mappings;\n\t\t\tif (!diffs || diffs.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._goTo(diffs[0]);\n\t\t});\n\t}\n\n\taccessibleDiffViewerNext(): void { this._accessibleDiffViewer.get().next(); }\n\n\taccessibleDiffViewerPrev(): void { this._accessibleDiffViewer.get().prev(); }\n\n\tasync waitForDiff(): Promise<void> {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) { return; }\n\t\tawait diffModel.waitForDiff();\n\t}\n\n\tmapToOtherSide(): { destination: CodeEditorWidget; destinationSelection: Range | undefined } {\n\t\tconst isModifiedFocus = this._editors.modified.hasWidgetFocus();\n\t\tconst source = isModifiedFocus ? this._editors.modified : this._editors.original;\n\t\tconst destination = isModifiedFocus ? this._editors.original : this._editors.modified;\n\n\t\tlet destinationSelection: Range | undefined;\n\n\t\tconst sourceSelection = source.getSelection();\n\t\tif (sourceSelection) {\n\t\t\tconst mappings = this._diffModel.get()?.diff.get()?.mappings.map(m => isModifiedFocus ? m.lineRangeMapping.flip() : m.lineRangeMapping);\n\t\t\tif (mappings) {\n\t\t\t\tconst newRange1 = translatePosition(sourceSelection.getStartPosition(), mappings);\n\t\t\t\tconst newRange2 = translatePosition(sourceSelection.getEndPosition(), mappings);\n\t\t\t\tdestinationSelection = Range.plusRange(newRange1, newRange2);\n\t\t\t}\n\t\t}\n\t\treturn { destination, destinationSelection };\n\t}\n\n\tswitchSide(): void {\n\t\tconst { destination, destinationSelection } = this.mapToOtherSide();\n\t\tdestination.focus();\n\t\tif (destinationSelection) {\n\t\t\tdestination.setSelection(destinationSelection);\n\t\t}\n\t}\n\n\texitCompareMove(): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model) { return; }\n\t\tmodel.movedTextToCompare.set(undefined, undefined);\n\t}\n\n\tcollapseAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.collapseAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tshowAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.showAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _handleCursorPositionChange(e: ICursorPositionChangedEvent | undefined, isModifiedEditor: boolean): void {\n\t\tif (e?.reason === CursorChangeReason.Explicit) {\n\t\t\tconst diff = this._diffModel.get()?.diff.get()?.mappings.find(m => isModifiedEditor ? m.lineRangeMapping.modified.contains(e.position.lineNumber) : m.lineRangeMapping.original.contains(e.position.lineNumber));\n\t\t\tif (diff?.lineRangeMapping.modified.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff?.lineRangeMapping.original.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function toLineChanges(state: DiffState): ILineChange[] {\n\treturn state.mappings.map(x => {\n\t\tconst m = x.lineRangeMapping;\n\t\tlet originalStartLineNumber: number;\n\t\tlet originalEndLineNumber: number;\n\t\tlet modifiedStartLineNumber: number;\n\t\tlet modifiedEndLineNumber: number;\n\t\tlet innerChanges = m.innerChanges;\n\n\t\tif (m.original.isEmpty) {\n\t\t\t// Insertion\n\t\t\toriginalStartLineNumber = m.original.startLineNumber - 1;\n\t\t\toriginalEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\toriginalStartLineNumber = m.original.startLineNumber;\n\t\t\toriginalEndLineNumber = m.original.endLineNumberExclusive - 1;\n\t\t}\n\n\t\tif (m.modified.isEmpty) {\n\t\t\t// Deletion\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber - 1;\n\t\t\tmodifiedEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber;\n\t\t\tmodifiedEndLineNumber = m.modified.endLineNumberExclusive - 1;\n\t\t}\n\n\t\treturn {\n\t\t\toriginalStartLineNumber,\n\t\t\toriginalEndLineNumber,\n\t\t\tmodifiedStartLineNumber,\n\t\t\tmodifiedEndLineNumber,\n\t\t\tcharChanges: innerChanges?.map(m => ({\n\t\t\t\toriginalStartLineNumber: m.originalRange.startLineNumber,\n\t\t\t\toriginalStartColumn: m.originalRange.startColumn,\n\t\t\t\toriginalEndLineNumber: m.originalRange.endLineNumber,\n\t\t\t\toriginalEndColumn: m.originalRange.endColumn,\n\t\t\t\tmodifiedStartLineNumber: m.modifiedRange.startLineNumber,\n\t\t\t\tmodifiedStartColumn: m.modifiedRange.startColumn,\n\t\t\t\tmodifiedEndLineNumber: m.modifiedRange.endLineNumber,\n\t\t\t\tmodifiedEndColumn: m.modifiedRange.endColumn,\n\t\t\t}))\n\t\t};\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 { getWindow, h } from '../../../../base/browser/dom.js';\nimport { IBoundarySashes } from '../../../../base/browser/ui/sash/sash.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { readHotReloadableExport } from '../../../../base/common/hotReloadHelpers.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, derivedDisposable, disposableObservableValue, observableFromEvent, observableValue, recomputeInitiallyAndOnChange, subtransaction, transaction } from '../../../../base/common/observable.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { bindContextKey } from '../../../../platform/observable/common/platformObservableUtils.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { LineRange } from '../../../common/core/ranges/lineRange.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent } from '../../../common/cursorEvents.js';\nimport { ILineChange } from '../../../common/diff/legacyLinesDiffComputer.js';\nimport { LineRangeMapping, RangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { EditorType, IDiffEditorModel, IDiffEditorViewModel, IDiffEditorViewState } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IIdentifiedSingleEditOperation } from '../../../common/model.js';\nimport { IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { ICodeEditor, IDiffEditor, IDiffEditorConstructionOptions } from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IDiffEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { StableEditorScrollState } from '../../stableEditorScroll.js';\nimport { CodeEditorWidget, ICodeEditorWidgetOptions } from '../codeEditor/codeEditorWidget.js';\nimport { AccessibleDiffViewer, AccessibleDiffViewerModelFromEditors } from './components/accessibleDiffViewer.js';\nimport { DiffEditorDecorations } from './components/diffEditorDecorations.js';\nimport { DiffEditorEditors } from './components/diffEditorEditors.js';\nimport { DiffEditorSash, SashLayout } from './components/diffEditorSash.js';\nimport { DiffEditorViewZones } from './components/diffEditorViewZones/diffEditorViewZones.js';\nimport { DelegatingEditor } from './delegatingEditorImpl.js';\nimport { DiffEditorOptions } from './diffEditorOptions.js';\nimport { DiffEditorViewModel, DiffMapping, DiffState } from './diffEditorViewModel.js';\nimport { DiffEditorGutter } from './features/gutterFeature.js';\nimport { HideUnchangedRegionsFeature } from './features/hideUnchangedRegionsFeature.js';\nimport { MovedBlocksLinesFeature } from './features/movedBlocksLinesFeature.js';\nimport { OverviewRulerFeature } from './features/overviewRulerFeature.js';\nimport { RevertButtonsFeature } from './features/revertButtonsFeature.js';\nimport './style.css';\nimport { CSSStyle, ObservableElementSizeObserver, RefCounted, applyStyle, applyViewZones, translatePosition } from './utils.js';\n\nexport interface IDiffCodeEditorWidgetOptions {\n\toriginalEditor?: ICodeEditorWidgetOptions;\n\tmodifiedEditor?: ICodeEditorWidgetOptions;\n}\n\nexport class DiffEditorWidget extends DelegatingEditor implements IDiffEditor {\n\n\tprivate readonly elements;\n\tprivate readonly _diffModelSrc;\n\tprivate readonly _diffModel;\n\tpublic readonly onDidChangeModel;\n\n\tpublic get onDidContentSizeChange() { return this._editors.onDidContentSizeChange; }\n\n\tprivate readonly _contextKeyService;\n\tprivate readonly _instantiationService;\n\tprivate readonly _rootSizeObserver: ObservableElementSizeObserver;\n\n\n\tprivate readonly _sashLayout: SashLayout;\n\tprivate readonly _sash: IObservable<DiffEditorSash | undefined>;\n\tprivate readonly _boundarySashes;\n\n\tprivate _accessibleDiffViewerShouldBeVisible;\n\tprivate _accessibleDiffViewerVisible;\n\tprivate readonly _accessibleDiffViewer: IObservable<AccessibleDiffViewer>;\n\tprivate readonly _options: DiffEditorOptions;\n\tprivate readonly _editors: DiffEditorEditors;\n\n\tprivate readonly _overviewRulerPart: IObservable<OverviewRulerFeature | undefined>;\n\tprivate readonly _movedBlocksLinesPart;\n\n\tprivate readonly _gutter: IObservable<DiffEditorGutter | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _domElement: HTMLElement,\n\t\toptions: Readonly<IDiffEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: IDiffCodeEditorWidgetOptions,\n\t\t@IContextKeyService private readonly _parentContextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _parentInstantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IEditorProgressService private readonly _editorProgressService: IEditorProgressService,\n\t) {\n\t\tsuper();\n\t\tthis.elements = h('div.monaco-diff-editor.side-by-side', { style: { position: 'relative', height: '100%' } }, [\n\t\t\th('div.editor.original@original', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.accessibleDiffViewer@accessibleDiffViewer', { style: { position: 'absolute', height: '100%' } }),\n\t\t]);\n\t\tthis._diffModelSrc = this._register(disposableObservableValue<RefCounted<DiffEditorViewModel> | undefined>(this, undefined));\n\t\tthis._diffModel = derived<DiffEditorViewModel | undefined>(this, reader => this._diffModelSrc.read(reader)?.object);\n\t\tthis.onDidChangeModel = Event.fromObservableLight(this._diffModel);\n\t\tthis._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._domElement));\n\t\tthis._instantiationService = this._register(this._parentInstantiationService.createChild(\n\t\t\tnew ServiceCollection([IContextKeyService, this._contextKeyService])\n\t\t));\n\t\tthis._boundarySashes = observableValue<IBoundarySashes | undefined>(this, undefined);\n\t\tthis._accessibleDiffViewerShouldBeVisible = observableValue(this, false);\n\t\tthis._accessibleDiffViewerVisible = derived(this, reader =>\n\t\t\tthis._options.onlyShowAccessibleDiffViewer.read(reader)\n\t\t\t\t? true\n\t\t\t\t: this._accessibleDiffViewerShouldBeVisible.read(reader)\n\t\t);\n\t\tthis._movedBlocksLinesPart = observableValue<MovedBlocksLinesFeature | undefined>(this, undefined);\n\t\tthis._layoutInfo = derived(this, reader => {\n\t\t\tconst fullWidth = this._rootSizeObserver.width.read(reader);\n\t\t\tconst fullHeight = this._rootSizeObserver.height.read(reader);\n\n\t\t\tif (this._rootSizeObserver.automaticLayout) {\n\t\t\t\tthis.elements.root.style.height = '100%';\n\t\t\t} else {\n\t\t\t\tthis.elements.root.style.height = fullHeight + 'px';\n\t\t\t}\n\n\t\t\tconst sash = this._sash.read(reader);\n\n\t\t\tconst gutter = this._gutter.read(reader);\n\t\t\tconst gutterWidth = gutter?.width.read(reader) ?? 0;\n\n\t\t\tconst overviewRulerPartWidth = this._overviewRulerPart.read(reader)?.width ?? 0;\n\n\t\t\tlet originalLeft: number, originalWidth: number, modifiedLeft: number, modifiedWidth: number, gutterLeft: number;\n\n\t\t\tconst sideBySide = !!sash;\n\t\t\tif (sideBySide) {\n\t\t\t\tconst sashLeft = sash.sashLeft.read(reader);\n\t\t\t\tconst movedBlocksLinesWidth = this._movedBlocksLinesPart.read(reader)?.width.read(reader) ?? 0;\n\n\t\t\t\toriginalLeft = 0;\n\t\t\t\toriginalWidth = sashLeft - gutterWidth - movedBlocksLinesWidth;\n\n\t\t\t\tgutterLeft = sashLeft - gutterWidth;\n\n\t\t\t\tmodifiedLeft = sashLeft;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t} else {\n\t\t\t\tgutterLeft = 0;\n\n\t\t\t\tconst shouldHideOriginalLineNumbers = this._options.inlineViewHideOriginalLineNumbers.read(reader);\n\t\t\t\toriginalLeft = gutterWidth;\n\t\t\t\tif (shouldHideOriginalLineNumbers) {\n\t\t\t\t\toriginalWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\toriginalWidth = Math.max(5, this._editors.originalObs.layoutInfoDecorationsLeft.read(reader));\n\t\t\t\t}\n\n\t\t\t\tmodifiedLeft = gutterWidth + originalWidth;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t}\n\n\t\t\tthis.elements.original.style.left = originalLeft + 'px';\n\t\t\tthis.elements.original.style.width = originalWidth + 'px';\n\t\t\tthis._editors.original.layout({ width: originalWidth, height: fullHeight }, true);\n\n\t\t\tgutter?.layout(gutterLeft);\n\n\t\t\tthis.elements.modified.style.left = modifiedLeft + 'px';\n\t\t\tthis.elements.modified.style.width = modifiedWidth + 'px';\n\t\t\tthis._editors.modified.layout({ width: modifiedWidth, height: fullHeight }, true);\n\n\t\t\treturn {\n\t\t\t\tmodifiedEditor: this._editors.modified.getLayoutInfo(),\n\t\t\t\toriginalEditor: this._editors.original.getLayoutInfo(),\n\t\t\t};\n\t\t});\n\t\tthis._diffValue = this._diffModel.map((m, r) => m?.diff.read(r));\n\t\tthis.onDidUpdateDiff = Event.fromObservableLight(this._diffValue);\n\t\tcodeEditorService.willCreateDiffEditor();\n\n\t\tthis._contextKeyService.createKey('isInDiffEditor', true);\n\n\t\tthis._domElement.appendChild(this.elements.root);\n\t\tthis._register(toDisposable(() => this.elements.root.remove()));\n\n\t\tthis._rootSizeObserver = this._register(new ObservableElementSizeObserver(this.elements.root, options.dimension));\n\t\tthis._rootSizeObserver.setAutomaticLayout(options.automaticLayout ?? false);\n\n\t\tthis._options = this._instantiationService.createInstance(DiffEditorOptions, options);\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setWidth(this._rootSizeObserver.width.read(reader));\n\t\t}));\n\n\t\tthis._contextKeyService.createKey(EditorContextKeys.isEmbeddedDiffEditor.key, false);\n\t\tthis._register(bindContextKey(EditorContextKeys.isEmbeddedDiffEditor, this._contextKeyService,\n\t\t\treader => this._options.isInEmbeddedEditor.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.comparingMovedCode, this._contextKeyService,\n\t\t\treader => !!this._diffModel.read(reader)?.movedTextToCompare.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, this._contextKeyService,\n\t\t\treader => this._options.couldShowInlineViewBecauseOfSize.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorInlineMode, this._contextKeyService,\n\t\t\treader => !this._options.renderSideBySide.read(reader)\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.hasChanges, this._contextKeyService,\n\t\t\treader => (this._diffModel.read(reader)?.diff.read(reader)?.mappings.length ?? 0) > 0\n\t\t));\n\n\t\tthis._editors = this._register(this._instantiationService.createInstance(\n\t\t\tDiffEditorEditors,\n\t\t\tthis.elements.original,\n\t\t\tthis.elements.modified,\n\t\t\tthis._options,\n\t\t\tcodeEditorWidgetOptions,\n\t\t\t(i, c, o, o2) => this._createInnerEditor(i, c, o, o2),\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalWritable, this._contextKeyService,\n\t\t\treader => this._options.originalEditable.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedWritable, this._contextKeyService,\n\t\t\treader => !this._options.readOnly.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.original.uri.toString() ?? ''\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.modified.uri.toString() ?? ''\n\t\t));\n\n\t\tthis._overviewRulerPart = derivedDisposable(this, reader =>\n\t\t\t!this._options.renderOverviewRuler.read(reader)\n\t\t\t\t? undefined\n\t\t\t\t: this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(OverviewRulerFeature, reader),\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst dimensions = {\n\t\t\theight: this._rootSizeObserver.height,\n\t\t\twidth: this._rootSizeObserver.width.map((w, reader) => w - (this._overviewRulerPart.read(reader)?.width ?? 0)),\n\t\t};\n\n\t\tthis._sashLayout = new SashLayout(this._options, dimensions);\n\n\t\tthis._sash = derivedDisposable(this, reader => {\n\t\t\tconst showSash = this._options.renderSideBySide.read(reader);\n\t\t\tthis.elements.root.classList.toggle('side-by-side', showSash);\n\t\t\treturn !showSash ? undefined : new DiffEditorSash(\n\t\t\t\tthis.elements.root,\n\t\t\t\tdimensions,\n\t\t\t\tthis._options.enableSplitViewResizing,\n\t\t\t\tthis._boundarySashes,\n\t\t\t\tthis._sashLayout.sashLeft,\n\t\t\t\t() => this._sashLayout.resetSash(),\n\t\t\t);\n\t\t}).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst unchangedRangesFeature = derivedDisposable(this, reader => /** @description UnchangedRangesFeature */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(HideUnchangedRegionsFeature, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tderivedDisposable(this, reader => /** @description DiffEditorDecorations */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorDecorations, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options, this,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst origViewZoneIdsToIgnore = new Set<string>();\n\t\tconst modViewZoneIdsToIgnore = new Set<string>();\n\t\tlet isUpdatingViewZones = false;\n\t\tconst viewZoneManager = derivedDisposable(this, reader => /** @description ViewZoneManager */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorViewZones, reader),\n\t\t\t\tgetWindow(this._domElement),\n\t\t\t\tthis._editors,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._options,\n\t\t\t\tthis,\n\t\t\t\t() => isUpdatingViewZones || unchangedRangesFeature.read(undefined).isUpdatingHiddenAreas,\n\t\t\t\torigViewZoneIdsToIgnore,\n\t\t\t\tmodViewZoneIdsToIgnore\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst originalViewZones = derived(this, (reader) => { /** @description originalViewZones */\n\t\t\tconst orig = viewZoneManager.read(reader).viewZones.read(reader).orig;\n\t\t\tconst orig2 = unchangedRangesFeature.read(reader).viewZones.read(reader).origViewZones;\n\t\t\treturn orig.concat(orig2);\n\t\t});\n\t\tconst modifiedViewZones = derived(this, (reader) => { /** @description modifiedViewZones */\n\t\t\tconst mod = viewZoneManager.read(reader).viewZones.read(reader).mod;\n\t\t\tconst mod2 = unchangedRangesFeature.read(reader).viewZones.read(reader).modViewZones;\n\t\t\treturn mod.concat(mod2);\n\t\t});\n\t\tthis._register(applyViewZones(this._editors.original, originalViewZones, isUpdatingOrigViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingOrigViewZones;\n\t\t}, origViewZoneIdsToIgnore));\n\t\tlet scrollState: StableEditorScrollState | undefined;\n\t\tthis._register(applyViewZones(this._editors.modified, modifiedViewZones, isUpdatingModViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingModViewZones;\n\t\t\tif (isUpdatingViewZones) {\n\t\t\t\tscrollState = StableEditorScrollState.capture(this._editors.modified);\n\t\t\t} else {\n\t\t\t\tscrollState?.restore(this._editors.modified);\n\t\t\t\tscrollState = undefined;\n\t\t\t}\n\t\t}, modViewZoneIdsToIgnore));\n\n\t\tthis._accessibleDiffViewer = derivedDisposable(this, reader =>\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(AccessibleDiffViewer, reader),\n\t\t\t\tthis.elements.accessibleDiffViewer,\n\t\t\t\tthis._accessibleDiffViewerVisible,\n\t\t\t\t(visible, tx) => this._accessibleDiffViewerShouldBeVisible.set(visible, tx),\n\t\t\t\tthis._options.onlyShowAccessibleDiffViewer.map(v => !v),\n\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\tthis._diffModel.map((m, r) => m?.diff.read(r)?.mappings.map(m => m.lineRangeMapping)),\n\t\t\t\tnew AccessibleDiffViewerModelFromEditors(this._editors),\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst visibility = this._accessibleDiffViewerVisible.map<CSSStyle['visibility']>(v => v ? 'hidden' : 'visible');\n\t\tthis._register(applyStyle(this.elements.modified, { visibility }));\n\t\tthis._register(applyStyle(this.elements.original, { visibility }));\n\n\t\tthis._createDiffEditorContributions();\n\n\t\tcodeEditorService.addDiffEditor(this);\n\n\t\tthis._gutter = derivedDisposable(this, reader => {\n\t\t\treturn this._options.shouldRenderGutterMenu.read(reader)\n\t\t\t\t? this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(DiffEditorGutter, reader),\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis._options,\n\t\t\t\t\tthis._sashLayout,\n\t\t\t\t\tthis._boundarySashes,\n\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t});\n\n\t\tthis._register(recomputeInitiallyAndOnChange(this._layoutInfo));\n\n\t\tderivedDisposable(this, reader => /** @description MovedBlocksLinesPart */\n\t\t\tnew (readHotReloadableExport(MovedBlocksLinesFeature, reader))(\n\t\t\t\tthis.elements.root,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._layoutInfo.map(i => i.originalEditor),\n\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\tthis._editors,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store, value => {\n\t\t\t// This is to break the layout info <-> moved blocks lines part dependency cycle.\n\t\t\tthis._movedBlocksLinesPart.set(value, undefined);\n\t\t});\n\n\t\tthis._register(Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, true)));\n\t\tthis._register(Event.runAndSubscribe(this._editors.original.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, false)));\n\n\t\tconst isInitializingDiff = this._diffModel.map(this, (m, reader) => {\n\t\t\t/** @isInitializingDiff isDiffUpToDate */\n\t\t\tif (!m) { return undefined; }\n\t\t\treturn m.diff.read(reader) === undefined && !m.isDiffUpToDate.read(reader);\n\t\t});\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description DiffEditorWidgetHelper.ShowProgress */\n\t\t\tif (isInitializingDiff.read(reader) === true) {\n\t\t\t\tconst r = this._editorProgressService.show(true, 1000);\n\t\t\t\tstore.add(toDisposable(() => r.done()));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tstore.add(new (readHotReloadableExport(RevertButtonsFeature, reader))(this._editors, this._diffModel, this._options, this));\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tconst model = this._diffModel.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tfor (const m of [model.model.original, model.model.modified]) {\n\t\t\t\tstore.add(m.onWillDispose(e => {\n\t\t\t\t\tonUnexpectedError(new BugIndicatingError('TextModel got disposed before DiffEditorWidget model got reset'));\n\t\t\t\t\tthis.setModel(null);\n\t\t\t\t}));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setModel(this._diffModel.read(reader));\n\t\t}));\n\t}\n\n\tprotected _createInnerEditor(instantiationService: IInstantiationService, container: HTMLElement, options: Readonly<IEditorConstructionOptions>, editorWidgetOptions: ICodeEditorWidgetOptions): CodeEditorWidget {\n\t\tconst editor = instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\n\t\treturn editor;\n\t}\n\n\tprivate readonly _layoutInfo;\n\n\tprivate _createDiffEditorContributions() {\n\t\tconst contributions: IDiffEditorContributionDescription[] = EditorExtensionsRegistry.getDiffEditorContributions();\n\t\tfor (const desc of contributions) {\n\t\t\ttry {\n\t\t\t\tthis._register(this._instantiationService.createInstance(desc.ctor, this));\n\t\t\t} catch (err) {\n\t\t\t\tonUnexpectedError(err);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected override get _targetEditor(): CodeEditorWidget { return this._editors.modified; }\n\n\toverride getEditorType(): string { return EditorType.IDiffEditor; }\n\n\toverride layout(dimension?: IDimension | undefined): void {\n\t\tthis._rootSizeObserver.observe(dimension);\n\t}\n\n\toverride hasTextFocus(): boolean { return this._editors.original.hasTextFocus() || this._editors.modified.hasTextFocus(); }\n\n\tpublic override saveViewState(): IDiffEditorViewState {\n\t\tconst originalViewState = this._editors.original.saveViewState();\n\t\tconst modifiedViewState = this._editors.modified.saveViewState();\n\t\treturn {\n\t\t\toriginal: originalViewState,\n\t\t\tmodified: modifiedViewState,\n\t\t\tmodelState: this._diffModel.get()?.serializeState(),\n\t\t};\n\t}\n\n\tpublic override restoreViewState(s: IDiffEditorViewState): void {\n\t\tif (s && s.original && s.modified) {\n\t\t\tconst diffEditorState = s as IDiffEditorViewState;\n\t\t\tthis._editors.original.restoreViewState(diffEditorState.original);\n\t\t\tthis._editors.modified.restoreViewState(diffEditorState.modified);\n\t\t\tif (diffEditorState.modelState) {\n\t\t\t\tthis._diffModel.get()?.restoreSerializedState(diffEditorState.modelState as any);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._editors.original.handleInitialized();\n\t\tthis._editors.modified.handleInitialized();\n\t}\n\n\tpublic createViewModel(model: IDiffEditorModel): IDiffEditorViewModel {\n\t\treturn this._instantiationService.createInstance(DiffEditorViewModel, model, this._options);\n\t}\n\n\toverride getModel(): IDiffEditorModel | null { return this._diffModel.get()?.model ?? null; }\n\n\toverride setModel(model: IDiffEditorModel | null | IDiffEditorViewModel): void {\n\t\tconst vm = !model ? null\n\t\t\t: ('model' in model) ? RefCounted.create(model).createNewRef(this)\n\t\t\t\t: RefCounted.create(this.createViewModel(model), this);\n\t\tthis.setDiffModel(vm);\n\t}\n\n\tsetDiffModel(viewModel: RefCounted<IDiffEditorViewModel> | null, tx?: ITransaction): void {\n\t\tconst currentModel = this._diffModel.get();\n\n\t\tif (!viewModel && currentModel) {\n\t\t\t// Transitioning from a model to no-model\n\t\t\tthis._accessibleDiffViewer.get().close();\n\t\t}\n\n\t\tif (this._diffModel.get() !== viewModel?.object) {\n\t\t\tsubtransaction(tx, tx => {\n\t\t\t\tconst vm = viewModel?.object;\n\t\t\t\t/** @description DiffEditorWidget.setModel */\n\t\t\t\tobservableFromEvent.batchEventsGlobally(tx, () => {\n\t\t\t\t\tthis._editors.original.setModel(vm ? vm.model.original : null);\n\t\t\t\t\tthis._editors.modified.setModel(vm ? vm.model.modified : null);\n\t\t\t\t});\n\t\t\t\tconst prevValueRef = this._diffModelSrc.get()?.createNewRef(this);\n\t\t\t\tthis._diffModelSrc.set(viewModel?.createNewRef(this) as RefCounted<DiffEditorViewModel> | undefined, tx);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// async, so that this runs after the transaction finished.\n\t\t\t\t\t// TODO: use the transaction to schedule disposal\n\t\t\t\t\tprevValueRef?.dispose();\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @param changedOptions Only has values for top-level options that have actually changed.\n\t */\n\toverride updateOptions(changedOptions: IDiffEditorOptions): void {\n\t\tthis._options.updateOptions(changedOptions);\n\t}\n\tgetContainerDomNode(): HTMLElement { return this._domElement; }\n\tgetOriginalEditor(): ICodeEditor { return this._editors.original; }\n\tgetModifiedEditor(): ICodeEditor { return this._editors.modified; }\n\n\tprivate readonly _diffValue;\n\treadonly onDidUpdateDiff: Event<void>;\n\n\t/**\n\t * @deprecated Use `this.getDiffComputationResult().changes2` instead.\n\t */\n\tgetLineChanges(): ILineChange[] | null {\n\t\tconst diffState = this._diffModel.get()?.diff.get();\n\t\tif (!diffState) { return null; }\n\t\treturn toLineChanges(diffState);\n\t}\n\n\trevert(diff: LineRangeMapping): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tthis._editors.modified.executeEdits('diffEditor', [\n\t\t\t{\n\t\t\t\trange: diff.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(diff.original.toExclusiveRange())\n\t\t\t}\n\t\t]);\n\t}\n\n\trevertRangeMappings(diffs: RangeMapping[]): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst changes: IIdentifiedSingleEditOperation[] = diffs.map<IIdentifiedSingleEditOperation>(c => ({\n\t\t\trange: c.modifiedRange,\n\t\t\ttext: model.model.original.getValueInRange(c.originalRange)\n\t\t}));\n\n\t\tthis._editors.modified.executeEdits('diffEditor', changes);\n\t}\n\n\trevertFocusedRangeMappings() {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) { return; }\n\n\t\tconst modifiedEditor = this._editors.modified;\n\t\tif (!modifiedEditor.hasTextFocus()) { return; }\n\n\t\tconst curLineNumber = modifiedEditor.getPosition()!.lineNumber;\n\t\tconst selection = modifiedEditor.getSelection();\n\t\tconst selectedRange = LineRange.fromRange(selection || new Range(curLineNumber, 0, curLineNumber, 0));\n\t\tconst diffsToRevert = diffs.filter(d => {\n\t\t\treturn d.lineRangeMapping.modified.intersect(selectedRange);\n\t\t});\n\n\t\tmodifiedEditor.executeEdits('diffEditor', diffsToRevert.map(d => (\n\t\t\t{\n\t\t\t\trange: d.lineRangeMapping.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(d.lineRangeMapping.original.toExclusiveRange())\n\t\t\t}\n\t\t)));\n\t}\n\n\n\tprivate _goTo(diff: DiffMapping): void {\n\t\tthis._editors.modified.setPosition(new Position(diff.lineRangeMapping.modified.startLineNumber, 1));\n\t\tthis._editors.modified.revealRangeInCenter(diff.lineRangeMapping.modified.toExclusiveRange());\n\t}\n\n\tgoToDiff(target: 'previous' | 'next'): void {\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst curLineNumber = this._editors.modified.getPosition()!.lineNumber;\n\t\tlet diff: DiffMapping | undefined;\n\t\tif (target === 'next') {\n\t\t\tconst modifiedLineCount = this._editors.modified.getModel()!.getLineCount();\n\t\t\tif (modifiedLineCount === curLineNumber) {\n\t\t\t\tdiff = diffs[0];\n\t\t\t} else {\n\t\t\t\tdiff = diffs.find(d => d.lineRangeMapping.modified.startLineNumber > curLineNumber) ?? diffs[0];\n\t\t\t}\n\t\t} else {\n\t\t\tdiff = findLast(diffs, d => d.lineRangeMapping.modified.startLineNumber < curLineNumber) ?? diffs[diffs.length - 1];\n\t\t}\n\t\tthis._goTo(diff);\n\n\t\tif (diff.lineRangeMapping.modified.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff.lineRangeMapping.original.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.goToDiff' });\n\t\t}\n\t}\n\n\trevealFirstDiff(): void {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) {\n\t\t\treturn;\n\t\t}\n\t\t// wait for the diff computation to finish\n\t\tthis.waitForDiff().then(() => {\n\t\t\tconst diffs = diffModel.diff.get()?.mappings;\n\t\t\tif (!diffs || diffs.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._goTo(diffs[0]);\n\t\t});\n\t}\n\n\taccessibleDiffViewerNext(): void { this._accessibleDiffViewer.get().next(); }\n\n\taccessibleDiffViewerPrev(): void { this._accessibleDiffViewer.get().prev(); }\n\n\tasync waitForDiff(): Promise<void> {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) { return; }\n\t\tawait diffModel.waitForDiff();\n\t}\n\n\tmapToOtherSide(): { destination: CodeEditorWidget; destinationSelection: Range | undefined } {\n\t\tconst isModifiedFocus = this._editors.modified.hasWidgetFocus();\n\t\tconst source = isModifiedFocus ? this._editors.modified : this._editors.original;\n\t\tconst destination = isModifiedFocus ? this._editors.original : this._editors.modified;\n\n\t\tlet destinationSelection: Range | undefined;\n\n\t\tconst sourceSelection = source.getSelection();\n\t\tif (sourceSelection) {\n\t\t\tconst mappings = this._diffModel.get()?.diff.get()?.mappings.map(m => isModifiedFocus ? m.lineRangeMapping.flip() : m.lineRangeMapping);\n\t\t\tif (mappings) {\n\t\t\t\tconst newRange1 = translatePosition(sourceSelection.getStartPosition(), mappings);\n\t\t\t\tconst newRange2 = translatePosition(sourceSelection.getEndPosition(), mappings);\n\t\t\t\tdestinationSelection = Range.plusRange(newRange1, newRange2);\n\t\t\t}\n\t\t}\n\t\treturn { destination, destinationSelection };\n\t}\n\n\tswitchSide(): void {\n\t\tconst { destination, destinationSelection } = this.mapToOtherSide();\n\t\tdestination.focus();\n\t\tif (destinationSelection) {\n\t\t\tdestination.setSelection(destinationSelection);\n\t\t}\n\t}\n\n\texitCompareMove(): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model) { return; }\n\t\tmodel.movedTextToCompare.set(undefined, undefined);\n\t}\n\n\tcollapseAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.collapseAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tshowAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.showAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _handleCursorPositionChange(e: ICursorPositionChangedEvent | undefined, isModifiedEditor: boolean): void {\n\t\tif (e?.reason === CursorChangeReason.Explicit) {\n\t\t\tconst diff = this._diffModel.get()?.diff.get()?.mappings.find(m => isModifiedEditor ? m.lineRangeMapping.modified.contains(e.position.lineNumber) : m.lineRangeMapping.original.contains(e.position.lineNumber));\n\t\t\tif (diff?.lineRangeMapping.modified.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff?.lineRangeMapping.original.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function toLineChanges(state: DiffState): ILineChange[] {\n\treturn state.mappings.map(x => {\n\t\tconst m = x.lineRangeMapping;\n\t\tlet originalStartLineNumber: number;\n\t\tlet originalEndLineNumber: number;\n\t\tlet modifiedStartLineNumber: number;\n\t\tlet modifiedEndLineNumber: number;\n\t\tlet innerChanges = m.innerChanges;\n\n\t\tif (m.original.isEmpty) {\n\t\t\t// Insertion\n\t\t\toriginalStartLineNumber = m.original.startLineNumber - 1;\n\t\t\toriginalEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\toriginalStartLineNumber = m.original.startLineNumber;\n\t\t\toriginalEndLineNumber = m.original.endLineNumberExclusive - 1;\n\t\t}\n\n\t\tif (m.modified.isEmpty) {\n\t\t\t// Deletion\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber - 1;\n\t\t\tmodifiedEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber;\n\t\t\tmodifiedEndLineNumber = m.modified.endLineNumberExclusive - 1;\n\t\t}\n\n\t\treturn {\n\t\t\toriginalStartLineNumber,\n\t\t\toriginalEndLineNumber,\n\t\t\tmodifiedStartLineNumber,\n\t\t\tmodifiedEndLineNumber,\n\t\t\tcharChanges: innerChanges?.map(m => ({\n\t\t\t\toriginalStartLineNumber: m.originalRange.startLineNumber,\n\t\t\t\toriginalStartColumn: m.originalRange.startColumn,\n\t\t\t\toriginalEndLineNumber: m.originalRange.endLineNumber,\n\t\t\t\toriginalEndColumn: m.originalRange.endColumn,\n\t\t\t\tmodifiedStartLineNumber: m.modifiedRange.startLineNumber,\n\t\t\t\tmodifiedStartColumn: m.modifiedRange.startColumn,\n\t\t\t\tmodifiedEndLineNumber: m.modifiedRange.endLineNumber,\n\t\t\t\tmodifiedEndColumn: m.modifiedRange.endColumn,\n\t\t\t}))\n\t\t};\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/diffEditor/diffEditorWidget.ts","vs/editor/browser/widget/diffEditor/diffEditorWidget.ts"],"names":[],"mappings":"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","file":"diffEditorWidget.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 { getWindow, h } from '../../../../base/browser/dom.js';\nimport { IBoundarySashes } from '../../../../base/browser/ui/sash/sash.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { readHotReloadableExport } from '../../../../base/common/hotReloadHelpers.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, derivedDisposable, disposableObservableValue, observableFromEvent, observableValue, recomputeInitiallyAndOnChange, subtransaction, transaction } from '../../../../base/common/observable.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { bindContextKey } from '../../../../platform/observable/common/platformObservableUtils.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { LineRange } from '../../../common/core/ranges/lineRange.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent } from '../../../common/cursorEvents.js';\nimport { ILineChange } from '../../../common/diff/legacyLinesDiffComputer.js';\nimport { LineRangeMapping, RangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { EditorType, IDiffEditorModel, IDiffEditorViewModel, IDiffEditorViewState } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IIdentifiedSingleEditOperation } from '../../../common/model.js';\nimport { IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { ICodeEditor, IDiffEditor, IDiffEditorConstructionOptions } from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IDiffEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { StableEditorScrollState } from '../../stableEditorScroll.js';\nimport { CodeEditorWidget, ICodeEditorWidgetOptions } from '../codeEditor/codeEditorWidget.js';\nimport { AccessibleDiffViewer, AccessibleDiffViewerModelFromEditors } from './components/accessibleDiffViewer.js';\nimport { DiffEditorDecorations } from './components/diffEditorDecorations.js';\nimport { DiffEditorEditors } from './components/diffEditorEditors.js';\nimport { DiffEditorSash, SashLayout } from './components/diffEditorSash.js';\nimport { DiffEditorViewZones } from './components/diffEditorViewZones/diffEditorViewZones.js';\nimport { DelegatingEditor } from './delegatingEditorImpl.js';\nimport { DiffEditorOptions } from './diffEditorOptions.js';\nimport { DiffEditorViewModel, DiffMapping, DiffState } from './diffEditorViewModel.js';\nimport { DiffEditorGutter } from './features/gutterFeature.js';\nimport { HideUnchangedRegionsFeature } from './features/hideUnchangedRegionsFeature.js';\nimport { MovedBlocksLinesFeature } from './features/movedBlocksLinesFeature.js';\nimport { OverviewRulerFeature } from './features/overviewRulerFeature.js';\nimport { RevertButtonsFeature } from './features/revertButtonsFeature.js';\nimport './style.css';\nimport { CSSStyle, ObservableElementSizeObserver, RefCounted, applyStyle, applyViewZones, translatePosition } from './utils.js';\n\nexport interface IDiffCodeEditorWidgetOptions {\n\toriginalEditor?: ICodeEditorWidgetOptions;\n\tmodifiedEditor?: ICodeEditorWidgetOptions;\n}\n\nexport class DiffEditorWidget extends DelegatingEditor implements IDiffEditor {\n\n\tprivate readonly elements;\n\tprivate readonly _diffModelSrc;\n\tprivate readonly _diffModel;\n\tpublic readonly onDidChangeModel;\n\n\tpublic get onDidContentSizeChange() { return this._editors.onDidContentSizeChange; }\n\n\tprivate readonly _contextKeyService;\n\tprivate readonly _instantiationService;\n\tprivate readonly _rootSizeObserver: ObservableElementSizeObserver;\n\n\n\tprivate readonly _sashLayout: SashLayout;\n\tprivate readonly _sash: IObservable<DiffEditorSash | undefined>;\n\tprivate readonly _boundarySashes;\n\n\tprivate _accessibleDiffViewerShouldBeVisible;\n\tprivate _accessibleDiffViewerVisible;\n\tprivate readonly _accessibleDiffViewer: IObservable<AccessibleDiffViewer>;\n\tprivate readonly _options: DiffEditorOptions;\n\tprivate readonly _editors: DiffEditorEditors;\n\n\tprivate readonly _overviewRulerPart: IObservable<OverviewRulerFeature | undefined>;\n\tprivate readonly _movedBlocksLinesPart;\n\n\tprivate readonly _gutter: IObservable<DiffEditorGutter | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _domElement: HTMLElement,\n\t\toptions: Readonly<IDiffEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: IDiffCodeEditorWidgetOptions,\n\t\t@IContextKeyService private readonly _parentContextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _parentInstantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IEditorProgressService private readonly _editorProgressService: IEditorProgressService,\n\t) {\n\t\tsuper();\n\t\tthis.elements = h('div.monaco-diff-editor.side-by-side', { style: { position: 'relative', height: '100%' } }, [\n\t\t\th('div.editor.original@original', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.accessibleDiffViewer@accessibleDiffViewer', { style: { position: 'absolute', height: '100%' } }),\n\t\t]);\n\t\tthis._diffModelSrc = this._register(disposableObservableValue<RefCounted<DiffEditorViewModel> | undefined>(this, undefined));\n\t\tthis._diffModel = derived<DiffEditorViewModel | undefined>(this, reader => this._diffModelSrc.read(reader)?.object);\n\t\tthis.onDidChangeModel = Event.fromObservableLight(this._diffModel);\n\t\tthis._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._domElement));\n\t\tthis._instantiationService = this._register(this._parentInstantiationService.createChild(\n\t\t\tnew ServiceCollection([IContextKeyService, this._contextKeyService])\n\t\t));\n\t\tthis._boundarySashes = observableValue<IBoundarySashes | undefined>(this, undefined);\n\t\tthis._accessibleDiffViewerShouldBeVisible = observableValue(this, false);\n\t\tthis._accessibleDiffViewerVisible = derived(this, reader =>\n\t\t\tthis._options.onlyShowAccessibleDiffViewer.read(reader)\n\t\t\t\t? true\n\t\t\t\t: this._accessibleDiffViewerShouldBeVisible.read(reader)\n\t\t);\n\t\tthis._movedBlocksLinesPart = observableValue<MovedBlocksLinesFeature | undefined>(this, undefined);\n\t\tthis._layoutInfo = derived(this, reader => {\n\t\t\tconst fullWidth = this._rootSizeObserver.width.read(reader);\n\t\t\tconst fullHeight = this._rootSizeObserver.height.read(reader);\n\n\t\t\tif (this._rootSizeObserver.automaticLayout) {\n\t\t\t\tthis.elements.root.style.height = '100%';\n\t\t\t} else {\n\t\t\t\tthis.elements.root.style.height = fullHeight + 'px';\n\t\t\t}\n\n\t\t\tconst sash = this._sash.read(reader);\n\n\t\t\tconst gutter = this._gutter.read(reader);\n\t\t\tconst gutterWidth = gutter?.width.read(reader) ?? 0;\n\n\t\t\tconst overviewRulerPartWidth = this._overviewRulerPart.read(reader)?.width ?? 0;\n\n\t\t\tlet originalLeft: number, originalWidth: number, modifiedLeft: number, modifiedWidth: number, gutterLeft: number;\n\n\t\t\tconst sideBySide = !!sash;\n\t\t\tif (sideBySide) {\n\t\t\t\tconst sashLeft = sash.sashLeft.read(reader);\n\t\t\t\tconst movedBlocksLinesWidth = this._movedBlocksLinesPart.read(reader)?.width.read(reader) ?? 0;\n\n\t\t\t\toriginalLeft = 0;\n\t\t\t\toriginalWidth = sashLeft - gutterWidth - movedBlocksLinesWidth;\n\n\t\t\t\tgutterLeft = sashLeft - gutterWidth;\n\n\t\t\t\tmodifiedLeft = sashLeft;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t} else {\n\t\t\t\tgutterLeft = 0;\n\n\t\t\t\tconst shouldHideOriginalLineNumbers = this._options.inlineViewHideOriginalLineNumbers.read(reader);\n\t\t\t\toriginalLeft = gutterWidth;\n\t\t\t\tif (shouldHideOriginalLineNumbers) {\n\t\t\t\t\toriginalWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\toriginalWidth = Math.max(5, this._editors.originalObs.layoutInfoDecorationsLeft.read(reader));\n\t\t\t\t}\n\n\t\t\t\tmodifiedLeft = gutterWidth + originalWidth;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t}\n\n\t\t\tthis.elements.original.style.left = originalLeft + 'px';\n\t\t\tthis.elements.original.style.width = originalWidth + 'px';\n\t\t\tthis._editors.original.layout({ width: originalWidth, height: fullHeight }, true);\n\n\t\t\tgutter?.layout(gutterLeft);\n\n\t\t\tthis.elements.modified.style.left = modifiedLeft + 'px';\n\t\t\tthis.elements.modified.style.width = modifiedWidth + 'px';\n\t\t\tthis._editors.modified.layout({ width: modifiedWidth, height: fullHeight }, true);\n\n\t\t\treturn {\n\t\t\t\tmodifiedEditor: this._editors.modified.getLayoutInfo(),\n\t\t\t\toriginalEditor: this._editors.original.getLayoutInfo(),\n\t\t\t};\n\t\t});\n\t\tthis._diffValue = this._diffModel.map((m, r) => m?.diff.read(r));\n\t\tthis.onDidUpdateDiff = Event.fromObservableLight(this._diffValue);\n\t\tcodeEditorService.willCreateDiffEditor();\n\n\t\tthis._contextKeyService.createKey('isInDiffEditor', true);\n\n\t\tthis._domElement.appendChild(this.elements.root);\n\t\tthis._register(toDisposable(() => this.elements.root.remove()));\n\n\t\tthis._rootSizeObserver = this._register(new ObservableElementSizeObserver(this.elements.root, options.dimension));\n\t\tthis._rootSizeObserver.setAutomaticLayout(options.automaticLayout ?? false);\n\n\t\tthis._options = this._instantiationService.createInstance(DiffEditorOptions, options);\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setWidth(this._rootSizeObserver.width.read(reader));\n\t\t}));\n\n\t\tthis._contextKeyService.createKey(EditorContextKeys.isEmbeddedDiffEditor.key, false);\n\t\tthis._register(bindContextKey(EditorContextKeys.isEmbeddedDiffEditor, this._contextKeyService,\n\t\t\treader => this._options.isInEmbeddedEditor.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.comparingMovedCode, this._contextKeyService,\n\t\t\treader => !!this._diffModel.read(reader)?.movedTextToCompare.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, this._contextKeyService,\n\t\t\treader => this._options.couldShowInlineViewBecauseOfSize.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorInlineMode, this._contextKeyService,\n\t\t\treader => !this._options.renderSideBySide.read(reader)\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.hasChanges, this._contextKeyService,\n\t\t\treader => (this._diffModel.read(reader)?.diff.read(reader)?.mappings.length ?? 0) > 0\n\t\t));\n\n\t\tthis._editors = this._register(this._instantiationService.createInstance(\n\t\t\tDiffEditorEditors,\n\t\t\tthis.elements.original,\n\t\t\tthis.elements.modified,\n\t\t\tthis._options,\n\t\t\tcodeEditorWidgetOptions,\n\t\t\t(i, c, o, o2) => this._createInnerEditor(i, c, o, o2),\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalWritable, this._contextKeyService,\n\t\t\treader => this._options.originalEditable.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedWritable, this._contextKeyService,\n\t\t\treader => !this._options.readOnly.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.original.uri.toString() ?? ''\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.modified.uri.toString() ?? ''\n\t\t));\n\n\t\tthis._overviewRulerPart = derivedDisposable(this, reader =>\n\t\t\t!this._options.renderOverviewRuler.read(reader)\n\t\t\t\t? undefined\n\t\t\t\t: this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(OverviewRulerFeature, reader),\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst dimensions = {\n\t\t\theight: this._rootSizeObserver.height,\n\t\t\twidth: this._rootSizeObserver.width.map((w, reader) => w - (this._overviewRulerPart.read(reader)?.width ?? 0)),\n\t\t};\n\n\t\tthis._sashLayout = new SashLayout(this._options, dimensions);\n\n\t\tthis._sash = derivedDisposable(this, reader => {\n\t\t\tconst showSash = this._options.renderSideBySide.read(reader);\n\t\t\tthis.elements.root.classList.toggle('side-by-side', showSash);\n\t\t\treturn !showSash ? undefined : new DiffEditorSash(\n\t\t\t\tthis.elements.root,\n\t\t\t\tdimensions,\n\t\t\t\tthis._options.enableSplitViewResizing,\n\t\t\t\tthis._boundarySashes,\n\t\t\t\tthis._sashLayout.sashLeft,\n\t\t\t\t() => this._sashLayout.resetSash(),\n\t\t\t);\n\t\t}).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst unchangedRangesFeature = derivedDisposable(this, reader => /** @description UnchangedRangesFeature */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(HideUnchangedRegionsFeature, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tderivedDisposable(this, reader => /** @description DiffEditorDecorations */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorDecorations, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options, this,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst origViewZoneIdsToIgnore = new Set<string>();\n\t\tconst modViewZoneIdsToIgnore = new Set<string>();\n\t\tlet isUpdatingViewZones = false;\n\t\tconst viewZoneManager = derivedDisposable(this, reader => /** @description ViewZoneManager */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorViewZones, reader),\n\t\t\t\tgetWindow(this._domElement),\n\t\t\t\tthis._editors,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._options,\n\t\t\t\tthis,\n\t\t\t\t() => isUpdatingViewZones || unchangedRangesFeature.read(undefined).isUpdatingHiddenAreas,\n\t\t\t\torigViewZoneIdsToIgnore,\n\t\t\t\tmodViewZoneIdsToIgnore\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst originalViewZones = derived(this, (reader) => { /** @description originalViewZones */\n\t\t\tconst orig = viewZoneManager.read(reader).viewZones.read(reader).orig;\n\t\t\tconst orig2 = unchangedRangesFeature.read(reader).viewZones.read(reader).origViewZones;\n\t\t\treturn orig.concat(orig2);\n\t\t});\n\t\tconst modifiedViewZones = derived(this, (reader) => { /** @description modifiedViewZones */\n\t\t\tconst mod = viewZoneManager.read(reader).viewZones.read(reader).mod;\n\t\t\tconst mod2 = unchangedRangesFeature.read(reader).viewZones.read(reader).modViewZones;\n\t\t\treturn mod.concat(mod2);\n\t\t});\n\t\tthis._register(applyViewZones(this._editors.original, originalViewZones, isUpdatingOrigViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingOrigViewZones;\n\t\t}, origViewZoneIdsToIgnore));\n\t\tlet scrollState: StableEditorScrollState | undefined;\n\t\tthis._register(applyViewZones(this._editors.modified, modifiedViewZones, isUpdatingModViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingModViewZones;\n\t\t\tif (isUpdatingViewZones) {\n\t\t\t\tscrollState = StableEditorScrollState.capture(this._editors.modified);\n\t\t\t} else {\n\t\t\t\tscrollState?.restore(this._editors.modified);\n\t\t\t\tscrollState = undefined;\n\t\t\t}\n\t\t}, modViewZoneIdsToIgnore));\n\n\t\tthis._accessibleDiffViewer = derivedDisposable(this, reader =>\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(AccessibleDiffViewer, reader),\n\t\t\t\tthis.elements.accessibleDiffViewer,\n\t\t\t\tthis._accessibleDiffViewerVisible,\n\t\t\t\t(visible, tx) => this._accessibleDiffViewerShouldBeVisible.set(visible, tx),\n\t\t\t\tthis._options.onlyShowAccessibleDiffViewer.map(v => !v),\n\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\tthis._diffModel.map((m, r) => m?.diff.read(r)?.mappings.map(m => m.lineRangeMapping)),\n\t\t\t\tnew AccessibleDiffViewerModelFromEditors(this._editors),\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst visibility = this._accessibleDiffViewerVisible.map<CSSStyle['visibility']>(v => v ? 'hidden' : 'visible');\n\t\tthis._register(applyStyle(this.elements.modified, { visibility }));\n\t\tthis._register(applyStyle(this.elements.original, { visibility }));\n\n\t\tthis._createDiffEditorContributions();\n\n\t\tcodeEditorService.addDiffEditor(this);\n\n\t\tthis._gutter = derivedDisposable(this, reader => {\n\t\t\treturn this._options.shouldRenderGutterMenu.read(reader)\n\t\t\t\t? this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(DiffEditorGutter, reader),\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis._options,\n\t\t\t\t\tthis._sashLayout,\n\t\t\t\t\tthis._boundarySashes,\n\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t});\n\n\t\tthis._register(recomputeInitiallyAndOnChange(this._layoutInfo));\n\n\t\tderivedDisposable(this, reader => /** @description MovedBlocksLinesPart */\n\t\t\tnew (readHotReloadableExport(MovedBlocksLinesFeature, reader))(\n\t\t\t\tthis.elements.root,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._layoutInfo.map(i => i.originalEditor),\n\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\tthis._editors,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store, value => {\n\t\t\t// This is to break the layout info <-> moved blocks lines part dependency cycle.\n\t\t\tthis._movedBlocksLinesPart.set(value, undefined);\n\t\t});\n\n\t\tthis._register(Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, true)));\n\t\tthis._register(Event.runAndSubscribe(this._editors.original.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, false)));\n\n\t\tconst isInitializingDiff = this._diffModel.map(this, (m, reader) => {\n\t\t\t/** @isInitializingDiff isDiffUpToDate */\n\t\t\tif (!m) { return undefined; }\n\t\t\treturn m.diff.read(reader) === undefined && !m.isDiffUpToDate.read(reader);\n\t\t});\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description DiffEditorWidgetHelper.ShowProgress */\n\t\t\tif (isInitializingDiff.read(reader) === true) {\n\t\t\t\tconst r = this._editorProgressService.show(true, 1000);\n\t\t\t\tstore.add(toDisposable(() => r.done()));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tstore.add(new (readHotReloadableExport(RevertButtonsFeature, reader))(this._editors, this._diffModel, this._options, this));\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tconst model = this._diffModel.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tfor (const m of [model.model.original, model.model.modified]) {\n\t\t\t\tstore.add(m.onWillDispose(e => {\n\t\t\t\t\tonUnexpectedError(new BugIndicatingError('TextModel got disposed before DiffEditorWidget model got reset'));\n\t\t\t\t\tthis.setModel(null);\n\t\t\t\t}));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setModel(this._diffModel.read(reader));\n\t\t}));\n\t}\n\n\tprotected _createInnerEditor(instantiationService: IInstantiationService, container: HTMLElement, options: Readonly<IEditorConstructionOptions>, editorWidgetOptions: ICodeEditorWidgetOptions): CodeEditorWidget {\n\t\tconst editor = instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\n\t\treturn editor;\n\t}\n\n\tprivate readonly _layoutInfo;\n\n\tprivate _createDiffEditorContributions() {\n\t\tconst contributions: IDiffEditorContributionDescription[] = EditorExtensionsRegistry.getDiffEditorContributions();\n\t\tfor (const desc of contributions) {\n\t\t\ttry {\n\t\t\t\tthis._register(this._instantiationService.createInstance(desc.ctor, this));\n\t\t\t} catch (err) {\n\t\t\t\tonUnexpectedError(err);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected override get _targetEditor(): CodeEditorWidget { return this._editors.modified; }\n\n\toverride getEditorType(): string { return EditorType.IDiffEditor; }\n\n\toverride layout(dimension?: IDimension | undefined): void {\n\t\tthis._rootSizeObserver.observe(dimension);\n\t}\n\n\toverride hasTextFocus(): boolean { return this._editors.original.hasTextFocus() || this._editors.modified.hasTextFocus(); }\n\n\tpublic override saveViewState(): IDiffEditorViewState {\n\t\tconst originalViewState = this._editors.original.saveViewState();\n\t\tconst modifiedViewState = this._editors.modified.saveViewState();\n\t\treturn {\n\t\t\toriginal: originalViewState,\n\t\t\tmodified: modifiedViewState,\n\t\t\tmodelState: this._diffModel.get()?.serializeState(),\n\t\t};\n\t}\n\n\tpublic override restoreViewState(s: IDiffEditorViewState): void {\n\t\tif (s && s.original && s.modified) {\n\t\t\tconst diffEditorState = s as IDiffEditorViewState;\n\t\t\tthis._editors.original.restoreViewState(diffEditorState.original);\n\t\t\tthis._editors.modified.restoreViewState(diffEditorState.modified);\n\t\t\tif (diffEditorState.modelState) {\n\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\tthis._diffModel.get()?.restoreSerializedState(diffEditorState.modelState as any);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._editors.original.handleInitialized();\n\t\tthis._editors.modified.handleInitialized();\n\t}\n\n\tpublic createViewModel(model: IDiffEditorModel): IDiffEditorViewModel {\n\t\treturn this._instantiationService.createInstance(DiffEditorViewModel, model, this._options);\n\t}\n\n\toverride getModel(): IDiffEditorModel | null { return this._diffModel.get()?.model ?? null; }\n\n\toverride setModel(model: IDiffEditorModel | null | IDiffEditorViewModel): void {\n\t\tconst vm = !model ? null\n\t\t\t: ('model' in model) ? RefCounted.create(model).createNewRef(this)\n\t\t\t\t: RefCounted.create(this.createViewModel(model), this);\n\t\tthis.setDiffModel(vm);\n\t}\n\n\tsetDiffModel(viewModel: RefCounted<IDiffEditorViewModel> | null, tx?: ITransaction): void {\n\t\tconst currentModel = this._diffModel.get();\n\n\t\tif (!viewModel && currentModel) {\n\t\t\t// Transitioning from a model to no-model\n\t\t\tthis._accessibleDiffViewer.get().close();\n\t\t}\n\n\t\tif (this._diffModel.get() !== viewModel?.object) {\n\t\t\tsubtransaction(tx, tx => {\n\t\t\t\tconst vm = viewModel?.object;\n\t\t\t\t/** @description DiffEditorWidget.setModel */\n\t\t\t\tobservableFromEvent.batchEventsGlobally(tx, () => {\n\t\t\t\t\tthis._editors.original.setModel(vm ? vm.model.original : null);\n\t\t\t\t\tthis._editors.modified.setModel(vm ? vm.model.modified : null);\n\t\t\t\t});\n\t\t\t\tconst prevValueRef = this._diffModelSrc.get()?.createNewRef(this);\n\t\t\t\tthis._diffModelSrc.set(viewModel?.createNewRef(this) as RefCounted<DiffEditorViewModel> | undefined, tx);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// async, so that this runs after the transaction finished.\n\t\t\t\t\t// TODO: use the transaction to schedule disposal\n\t\t\t\t\tprevValueRef?.dispose();\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @param changedOptions Only has values for top-level options that have actually changed.\n\t */\n\toverride updateOptions(changedOptions: IDiffEditorOptions): void {\n\t\tthis._options.updateOptions(changedOptions);\n\t}\n\tgetContainerDomNode(): HTMLElement { return this._domElement; }\n\tgetOriginalEditor(): ICodeEditor { return this._editors.original; }\n\tgetModifiedEditor(): ICodeEditor { return this._editors.modified; }\n\n\tprivate readonly _diffValue;\n\treadonly onDidUpdateDiff: Event<void>;\n\n\t/**\n\t * @deprecated Use `this.getDiffComputationResult().changes2` instead.\n\t */\n\tgetLineChanges(): ILineChange[] | null {\n\t\tconst diffState = this._diffModel.get()?.diff.get();\n\t\tif (!diffState) { return null; }\n\t\treturn toLineChanges(diffState);\n\t}\n\n\trevert(diff: LineRangeMapping): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tthis._editors.modified.executeEdits('diffEditor', [\n\t\t\t{\n\t\t\t\trange: diff.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(diff.original.toExclusiveRange())\n\t\t\t}\n\t\t]);\n\t}\n\n\trevertRangeMappings(diffs: RangeMapping[]): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst changes: IIdentifiedSingleEditOperation[] = diffs.map<IIdentifiedSingleEditOperation>(c => ({\n\t\t\trange: c.modifiedRange,\n\t\t\ttext: model.model.original.getValueInRange(c.originalRange)\n\t\t}));\n\n\t\tthis._editors.modified.executeEdits('diffEditor', changes);\n\t}\n\n\trevertFocusedRangeMappings() {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) { return; }\n\n\t\tconst modifiedEditor = this._editors.modified;\n\t\tif (!modifiedEditor.hasTextFocus()) { return; }\n\n\t\tconst curLineNumber = modifiedEditor.getPosition()!.lineNumber;\n\t\tconst selection = modifiedEditor.getSelection();\n\t\tconst selectedRange = LineRange.fromRange(selection || new Range(curLineNumber, 0, curLineNumber, 0));\n\t\tconst diffsToRevert = diffs.filter(d => {\n\t\t\treturn d.lineRangeMapping.modified.intersect(selectedRange);\n\t\t});\n\n\t\tmodifiedEditor.executeEdits('diffEditor', diffsToRevert.map(d => (\n\t\t\t{\n\t\t\t\trange: d.lineRangeMapping.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(d.lineRangeMapping.original.toExclusiveRange())\n\t\t\t}\n\t\t)));\n\t}\n\n\n\tprivate _goTo(diff: DiffMapping): void {\n\t\tthis._editors.modified.setPosition(new Position(diff.lineRangeMapping.modified.startLineNumber, 1));\n\t\tthis._editors.modified.revealRangeInCenter(diff.lineRangeMapping.modified.toExclusiveRange());\n\t}\n\n\tgoToDiff(target: 'previous' | 'next'): void {\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst curLineNumber = this._editors.modified.getPosition()!.lineNumber;\n\t\tlet diff: DiffMapping | undefined;\n\t\tif (target === 'next') {\n\t\t\tconst modifiedLineCount = this._editors.modified.getModel()!.getLineCount();\n\t\t\tif (modifiedLineCount === curLineNumber) {\n\t\t\t\tdiff = diffs[0];\n\t\t\t} else {\n\t\t\t\tdiff = diffs.find(d => d.lineRangeMapping.modified.startLineNumber > curLineNumber) ?? diffs[0];\n\t\t\t}\n\t\t} else {\n\t\t\tdiff = findLast(diffs, d => d.lineRangeMapping.modified.startLineNumber < curLineNumber) ?? diffs[diffs.length - 1];\n\t\t}\n\t\tthis._goTo(diff);\n\n\t\tif (diff.lineRangeMapping.modified.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff.lineRangeMapping.original.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.goToDiff' });\n\t\t}\n\t}\n\n\trevealFirstDiff(): void {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) {\n\t\t\treturn;\n\t\t}\n\t\t// wait for the diff computation to finish\n\t\tthis.waitForDiff().then(() => {\n\t\t\tconst diffs = diffModel.diff.get()?.mappings;\n\t\t\tif (!diffs || diffs.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._goTo(diffs[0]);\n\t\t});\n\t}\n\n\taccessibleDiffViewerNext(): void { this._accessibleDiffViewer.get().next(); }\n\n\taccessibleDiffViewerPrev(): void { this._accessibleDiffViewer.get().prev(); }\n\n\tasync waitForDiff(): Promise<void> {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) { return; }\n\t\tawait diffModel.waitForDiff();\n\t}\n\n\tmapToOtherSide(): { destination: CodeEditorWidget; destinationSelection: Range | undefined } {\n\t\tconst isModifiedFocus = this._editors.modified.hasWidgetFocus();\n\t\tconst source = isModifiedFocus ? this._editors.modified : this._editors.original;\n\t\tconst destination = isModifiedFocus ? this._editors.original : this._editors.modified;\n\n\t\tlet destinationSelection: Range | undefined;\n\n\t\tconst sourceSelection = source.getSelection();\n\t\tif (sourceSelection) {\n\t\t\tconst mappings = this._diffModel.get()?.diff.get()?.mappings.map(m => isModifiedFocus ? m.lineRangeMapping.flip() : m.lineRangeMapping);\n\t\t\tif (mappings) {\n\t\t\t\tconst newRange1 = translatePosition(sourceSelection.getStartPosition(), mappings);\n\t\t\t\tconst newRange2 = translatePosition(sourceSelection.getEndPosition(), mappings);\n\t\t\t\tdestinationSelection = Range.plusRange(newRange1, newRange2);\n\t\t\t}\n\t\t}\n\t\treturn { destination, destinationSelection };\n\t}\n\n\tswitchSide(): void {\n\t\tconst { destination, destinationSelection } = this.mapToOtherSide();\n\t\tdestination.focus();\n\t\tif (destinationSelection) {\n\t\t\tdestination.setSelection(destinationSelection);\n\t\t}\n\t}\n\n\texitCompareMove(): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model) { return; }\n\t\tmodel.movedTextToCompare.set(undefined, undefined);\n\t}\n\n\tcollapseAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.collapseAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tshowAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.showAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _handleCursorPositionChange(e: ICursorPositionChangedEvent | undefined, isModifiedEditor: boolean): void {\n\t\tif (e?.reason === CursorChangeReason.Explicit) {\n\t\t\tconst diff = this._diffModel.get()?.diff.get()?.mappings.find(m => isModifiedEditor ? m.lineRangeMapping.modified.contains(e.position.lineNumber) : m.lineRangeMapping.original.contains(e.position.lineNumber));\n\t\t\tif (diff?.lineRangeMapping.modified.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff?.lineRangeMapping.original.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function toLineChanges(state: DiffState): ILineChange[] {\n\treturn state.mappings.map(x => {\n\t\tconst m = x.lineRangeMapping;\n\t\tlet originalStartLineNumber: number;\n\t\tlet originalEndLineNumber: number;\n\t\tlet modifiedStartLineNumber: number;\n\t\tlet modifiedEndLineNumber: number;\n\t\tlet innerChanges = m.innerChanges;\n\n\t\tif (m.original.isEmpty) {\n\t\t\t// Insertion\n\t\t\toriginalStartLineNumber = m.original.startLineNumber - 1;\n\t\t\toriginalEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\toriginalStartLineNumber = m.original.startLineNumber;\n\t\t\toriginalEndLineNumber = m.original.endLineNumberExclusive - 1;\n\t\t}\n\n\t\tif (m.modified.isEmpty) {\n\t\t\t// Deletion\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber - 1;\n\t\t\tmodifiedEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber;\n\t\t\tmodifiedEndLineNumber = m.modified.endLineNumberExclusive - 1;\n\t\t}\n\n\t\treturn {\n\t\t\toriginalStartLineNumber,\n\t\t\toriginalEndLineNumber,\n\t\t\tmodifiedStartLineNumber,\n\t\t\tmodifiedEndLineNumber,\n\t\t\tcharChanges: innerChanges?.map(m => ({\n\t\t\t\toriginalStartLineNumber: m.originalRange.startLineNumber,\n\t\t\t\toriginalStartColumn: m.originalRange.startColumn,\n\t\t\t\toriginalEndLineNumber: m.originalRange.endLineNumber,\n\t\t\t\toriginalEndColumn: m.originalRange.endColumn,\n\t\t\t\tmodifiedStartLineNumber: m.modifiedRange.startLineNumber,\n\t\t\t\tmodifiedStartColumn: m.modifiedRange.startColumn,\n\t\t\t\tmodifiedEndLineNumber: m.modifiedRange.endLineNumber,\n\t\t\t\tmodifiedEndColumn: m.modifiedRange.endColumn,\n\t\t\t}))\n\t\t};\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 { getWindow, h } from '../../../../base/browser/dom.js';\nimport { IBoundarySashes } from '../../../../base/browser/ui/sash/sash.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { readHotReloadableExport } from '../../../../base/common/hotReloadHelpers.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, derivedDisposable, disposableObservableValue, observableFromEvent, observableValue, recomputeInitiallyAndOnChange, subtransaction, transaction } from '../../../../base/common/observable.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { bindContextKey } from '../../../../platform/observable/common/platformObservableUtils.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { LineRange } from '../../../common/core/ranges/lineRange.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent } from '../../../common/cursorEvents.js';\nimport { ILineChange } from '../../../common/diff/legacyLinesDiffComputer.js';\nimport { LineRangeMapping, RangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { EditorType, IDiffEditorModel, IDiffEditorViewModel, IDiffEditorViewState } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IIdentifiedSingleEditOperation } from '../../../common/model.js';\nimport { IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { ICodeEditor, IDiffEditor, IDiffEditorConstructionOptions } from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IDiffEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { StableEditorScrollState } from '../../stableEditorScroll.js';\nimport { CodeEditorWidget, ICodeEditorWidgetOptions } from '../codeEditor/codeEditorWidget.js';\nimport { AccessibleDiffViewer, AccessibleDiffViewerModelFromEditors } from './components/accessibleDiffViewer.js';\nimport { DiffEditorDecorations } from './components/diffEditorDecorations.js';\nimport { DiffEditorEditors } from './components/diffEditorEditors.js';\nimport { DiffEditorSash, SashLayout } from './components/diffEditorSash.js';\nimport { DiffEditorViewZones } from './components/diffEditorViewZones/diffEditorViewZones.js';\nimport { DelegatingEditor } from './delegatingEditorImpl.js';\nimport { DiffEditorOptions } from './diffEditorOptions.js';\nimport { DiffEditorViewModel, DiffMapping, DiffState } from './diffEditorViewModel.js';\nimport { DiffEditorGutter } from './features/gutterFeature.js';\nimport { HideUnchangedRegionsFeature } from './features/hideUnchangedRegionsFeature.js';\nimport { MovedBlocksLinesFeature } from './features/movedBlocksLinesFeature.js';\nimport { OverviewRulerFeature } from './features/overviewRulerFeature.js';\nimport { RevertButtonsFeature } from './features/revertButtonsFeature.js';\nimport './style.css';\nimport { CSSStyle, ObservableElementSizeObserver, RefCounted, applyStyle, applyViewZones, translatePosition } from './utils.js';\n\nexport interface IDiffCodeEditorWidgetOptions {\n\toriginalEditor?: ICodeEditorWidgetOptions;\n\tmodifiedEditor?: ICodeEditorWidgetOptions;\n}\n\nexport class DiffEditorWidget extends DelegatingEditor implements IDiffEditor {\n\n\tprivate readonly elements;\n\tprivate readonly _diffModelSrc;\n\tprivate readonly _diffModel;\n\tpublic readonly onDidChangeModel;\n\n\tpublic get onDidContentSizeChange() { return this._editors.onDidContentSizeChange; }\n\n\tprivate readonly _contextKeyService;\n\tprivate readonly _instantiationService;\n\tprivate readonly _rootSizeObserver: ObservableElementSizeObserver;\n\n\n\tprivate readonly _sashLayout: SashLayout;\n\tprivate readonly _sash: IObservable<DiffEditorSash | undefined>;\n\tprivate readonly _boundarySashes;\n\n\tprivate _accessibleDiffViewerShouldBeVisible;\n\tprivate _accessibleDiffViewerVisible;\n\tprivate readonly _accessibleDiffViewer: IObservable<AccessibleDiffViewer>;\n\tprivate readonly _options: DiffEditorOptions;\n\tprivate readonly _editors: DiffEditorEditors;\n\n\tprivate readonly _overviewRulerPart: IObservable<OverviewRulerFeature | undefined>;\n\tprivate readonly _movedBlocksLinesPart;\n\n\tprivate readonly _gutter: IObservable<DiffEditorGutter | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _domElement: HTMLElement,\n\t\toptions: Readonly<IDiffEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: IDiffCodeEditorWidgetOptions,\n\t\t@IContextKeyService private readonly _parentContextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _parentInstantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t\t@IEditorProgressService private readonly _editorProgressService: IEditorProgressService,\n\t) {\n\t\tsuper();\n\t\tthis.elements = h('div.monaco-diff-editor.side-by-side', { style: { position: 'relative', height: '100%' } }, [\n\t\t\th('div.editor.original@original', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', } }),\n\t\t\th('div.accessibleDiffViewer@accessibleDiffViewer', { style: { position: 'absolute', height: '100%' } }),\n\t\t]);\n\t\tthis._diffModelSrc = this._register(disposableObservableValue<RefCounted<DiffEditorViewModel> | undefined>(this, undefined));\n\t\tthis._diffModel = derived<DiffEditorViewModel | undefined>(this, reader => this._diffModelSrc.read(reader)?.object);\n\t\tthis.onDidChangeModel = Event.fromObservableLight(this._diffModel);\n\t\tthis._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._domElement));\n\t\tthis._instantiationService = this._register(this._parentInstantiationService.createChild(\n\t\t\tnew ServiceCollection([IContextKeyService, this._contextKeyService])\n\t\t));\n\t\tthis._boundarySashes = observableValue<IBoundarySashes | undefined>(this, undefined);\n\t\tthis._accessibleDiffViewerShouldBeVisible = observableValue(this, false);\n\t\tthis._accessibleDiffViewerVisible = derived(this, reader =>\n\t\t\tthis._options.onlyShowAccessibleDiffViewer.read(reader)\n\t\t\t\t? true\n\t\t\t\t: this._accessibleDiffViewerShouldBeVisible.read(reader)\n\t\t);\n\t\tthis._movedBlocksLinesPart = observableValue<MovedBlocksLinesFeature | undefined>(this, undefined);\n\t\tthis._layoutInfo = derived(this, reader => {\n\t\t\tconst fullWidth = this._rootSizeObserver.width.read(reader);\n\t\t\tconst fullHeight = this._rootSizeObserver.height.read(reader);\n\n\t\t\tif (this._rootSizeObserver.automaticLayout) {\n\t\t\t\tthis.elements.root.style.height = '100%';\n\t\t\t} else {\n\t\t\t\tthis.elements.root.style.height = fullHeight + 'px';\n\t\t\t}\n\n\t\t\tconst sash = this._sash.read(reader);\n\n\t\t\tconst gutter = this._gutter.read(reader);\n\t\t\tconst gutterWidth = gutter?.width.read(reader) ?? 0;\n\n\t\t\tconst overviewRulerPartWidth = this._overviewRulerPart.read(reader)?.width ?? 0;\n\n\t\t\tlet originalLeft: number, originalWidth: number, modifiedLeft: number, modifiedWidth: number, gutterLeft: number;\n\n\t\t\tconst sideBySide = !!sash;\n\t\t\tif (sideBySide) {\n\t\t\t\tconst sashLeft = sash.sashLeft.read(reader);\n\t\t\t\tconst movedBlocksLinesWidth = this._movedBlocksLinesPart.read(reader)?.width.read(reader) ?? 0;\n\n\t\t\t\toriginalLeft = 0;\n\t\t\t\toriginalWidth = sashLeft - gutterWidth - movedBlocksLinesWidth;\n\n\t\t\t\tgutterLeft = sashLeft - gutterWidth;\n\n\t\t\t\tmodifiedLeft = sashLeft;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t} else {\n\t\t\t\tgutterLeft = 0;\n\n\t\t\t\tconst shouldHideOriginalLineNumbers = this._options.inlineViewHideOriginalLineNumbers.read(reader);\n\t\t\t\toriginalLeft = gutterWidth;\n\t\t\t\tif (shouldHideOriginalLineNumbers) {\n\t\t\t\t\toriginalWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\toriginalWidth = Math.max(5, this._editors.originalObs.layoutInfoDecorationsLeft.read(reader));\n\t\t\t\t}\n\n\t\t\t\tmodifiedLeft = gutterWidth + originalWidth;\n\t\t\t\tmodifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n\t\t\t}\n\n\t\t\tthis.elements.original.style.left = originalLeft + 'px';\n\t\t\tthis.elements.original.style.width = originalWidth + 'px';\n\t\t\tthis._editors.original.layout({ width: originalWidth, height: fullHeight }, true);\n\n\t\t\tgutter?.layout(gutterLeft);\n\n\t\t\tthis.elements.modified.style.left = modifiedLeft + 'px';\n\t\t\tthis.elements.modified.style.width = modifiedWidth + 'px';\n\t\t\tthis._editors.modified.layout({ width: modifiedWidth, height: fullHeight }, true);\n\n\t\t\treturn {\n\t\t\t\tmodifiedEditor: this._editors.modified.getLayoutInfo(),\n\t\t\t\toriginalEditor: this._editors.original.getLayoutInfo(),\n\t\t\t};\n\t\t});\n\t\tthis._diffValue = this._diffModel.map((m, r) => m?.diff.read(r));\n\t\tthis.onDidUpdateDiff = Event.fromObservableLight(this._diffValue);\n\t\tcodeEditorService.willCreateDiffEditor();\n\n\t\tthis._contextKeyService.createKey('isInDiffEditor', true);\n\n\t\tthis._domElement.appendChild(this.elements.root);\n\t\tthis._register(toDisposable(() => this.elements.root.remove()));\n\n\t\tthis._rootSizeObserver = this._register(new ObservableElementSizeObserver(this.elements.root, options.dimension));\n\t\tthis._rootSizeObserver.setAutomaticLayout(options.automaticLayout ?? false);\n\n\t\tthis._options = this._instantiationService.createInstance(DiffEditorOptions, options);\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setWidth(this._rootSizeObserver.width.read(reader));\n\t\t}));\n\n\t\tthis._contextKeyService.createKey(EditorContextKeys.isEmbeddedDiffEditor.key, false);\n\t\tthis._register(bindContextKey(EditorContextKeys.isEmbeddedDiffEditor, this._contextKeyService,\n\t\t\treader => this._options.isInEmbeddedEditor.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.comparingMovedCode, this._contextKeyService,\n\t\t\treader => !!this._diffModel.read(reader)?.movedTextToCompare.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, this._contextKeyService,\n\t\t\treader => this._options.couldShowInlineViewBecauseOfSize.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorInlineMode, this._contextKeyService,\n\t\t\treader => !this._options.renderSideBySide.read(reader)\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.hasChanges, this._contextKeyService,\n\t\t\treader => (this._diffModel.read(reader)?.diff.read(reader)?.mappings.length ?? 0) > 0\n\t\t));\n\n\t\tthis._editors = this._register(this._instantiationService.createInstance(\n\t\t\tDiffEditorEditors,\n\t\t\tthis.elements.original,\n\t\t\tthis.elements.modified,\n\t\t\tthis._options,\n\t\t\tcodeEditorWidgetOptions,\n\t\t\t(i, c, o, o2) => this._createInnerEditor(i, c, o, o2),\n\t\t));\n\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalWritable, this._contextKeyService,\n\t\t\treader => this._options.originalEditable.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedWritable, this._contextKeyService,\n\t\t\treader => !this._options.readOnly.read(reader)\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorOriginalUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.original.uri.toString() ?? ''\n\t\t));\n\t\tthis._register(bindContextKey(EditorContextKeys.diffEditorModifiedUri, this._contextKeyService,\n\t\t\treader => this._diffModel.read(reader)?.model.modified.uri.toString() ?? ''\n\t\t));\n\n\t\tthis._overviewRulerPart = derivedDisposable(this, reader =>\n\t\t\t!this._options.renderOverviewRuler.read(reader)\n\t\t\t\t? undefined\n\t\t\t\t: this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(OverviewRulerFeature, reader),\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst dimensions = {\n\t\t\theight: this._rootSizeObserver.height,\n\t\t\twidth: this._rootSizeObserver.width.map((w, reader) => w - (this._overviewRulerPart.read(reader)?.width ?? 0)),\n\t\t};\n\n\t\tthis._sashLayout = new SashLayout(this._options, dimensions);\n\n\t\tthis._sash = derivedDisposable(this, reader => {\n\t\t\tconst showSash = this._options.renderSideBySide.read(reader);\n\t\t\tthis.elements.root.classList.toggle('side-by-side', showSash);\n\t\t\treturn !showSash ? undefined : new DiffEditorSash(\n\t\t\t\tthis.elements.root,\n\t\t\t\tdimensions,\n\t\t\t\tthis._options.enableSplitViewResizing,\n\t\t\t\tthis._boundarySashes,\n\t\t\t\tthis._sashLayout.sashLeft,\n\t\t\t\t() => this._sashLayout.resetSash(),\n\t\t\t);\n\t\t}).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst unchangedRangesFeature = derivedDisposable(this, reader => /** @description UnchangedRangesFeature */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(HideUnchangedRegionsFeature, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tderivedDisposable(this, reader => /** @description DiffEditorDecorations */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorDecorations, reader),\n\t\t\t\tthis._editors, this._diffModel, this._options, this,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst origViewZoneIdsToIgnore = new Set<string>();\n\t\tconst modViewZoneIdsToIgnore = new Set<string>();\n\t\tlet isUpdatingViewZones = false;\n\t\tconst viewZoneManager = derivedDisposable(this, reader => /** @description ViewZoneManager */\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(DiffEditorViewZones, reader),\n\t\t\t\tgetWindow(this._domElement),\n\t\t\t\tthis._editors,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._options,\n\t\t\t\tthis,\n\t\t\t\t() => isUpdatingViewZones || unchangedRangesFeature.read(undefined).isUpdatingHiddenAreas,\n\t\t\t\torigViewZoneIdsToIgnore,\n\t\t\t\tmodViewZoneIdsToIgnore\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst originalViewZones = derived(this, (reader) => { /** @description originalViewZones */\n\t\t\tconst orig = viewZoneManager.read(reader).viewZones.read(reader).orig;\n\t\t\tconst orig2 = unchangedRangesFeature.read(reader).viewZones.read(reader).origViewZones;\n\t\t\treturn orig.concat(orig2);\n\t\t});\n\t\tconst modifiedViewZones = derived(this, (reader) => { /** @description modifiedViewZones */\n\t\t\tconst mod = viewZoneManager.read(reader).viewZones.read(reader).mod;\n\t\t\tconst mod2 = unchangedRangesFeature.read(reader).viewZones.read(reader).modViewZones;\n\t\t\treturn mod.concat(mod2);\n\t\t});\n\t\tthis._register(applyViewZones(this._editors.original, originalViewZones, isUpdatingOrigViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingOrigViewZones;\n\t\t}, origViewZoneIdsToIgnore));\n\t\tlet scrollState: StableEditorScrollState | undefined;\n\t\tthis._register(applyViewZones(this._editors.modified, modifiedViewZones, isUpdatingModViewZones => {\n\t\t\tisUpdatingViewZones = isUpdatingModViewZones;\n\t\t\tif (isUpdatingViewZones) {\n\t\t\t\tscrollState = StableEditorScrollState.capture(this._editors.modified);\n\t\t\t} else {\n\t\t\t\tscrollState?.restore(this._editors.modified);\n\t\t\t\tscrollState = undefined;\n\t\t\t}\n\t\t}, modViewZoneIdsToIgnore));\n\n\t\tthis._accessibleDiffViewer = derivedDisposable(this, reader =>\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\treadHotReloadableExport(AccessibleDiffViewer, reader),\n\t\t\t\tthis.elements.accessibleDiffViewer,\n\t\t\t\tthis._accessibleDiffViewerVisible,\n\t\t\t\t(visible, tx) => this._accessibleDiffViewerShouldBeVisible.set(visible, tx),\n\t\t\t\tthis._options.onlyShowAccessibleDiffViewer.map(v => !v),\n\t\t\t\tthis._rootSizeObserver.width,\n\t\t\t\tthis._rootSizeObserver.height,\n\t\t\t\tthis._diffModel.map((m, r) => m?.diff.read(r)?.mappings.map(m => m.lineRangeMapping)),\n\t\t\t\tnew AccessibleDiffViewerModelFromEditors(this._editors),\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store);\n\n\t\tconst visibility = this._accessibleDiffViewerVisible.map<CSSStyle['visibility']>(v => v ? 'hidden' : 'visible');\n\t\tthis._register(applyStyle(this.elements.modified, { visibility }));\n\t\tthis._register(applyStyle(this.elements.original, { visibility }));\n\n\t\tthis._createDiffEditorContributions();\n\n\t\tcodeEditorService.addDiffEditor(this);\n\n\t\tthis._gutter = derivedDisposable(this, reader => {\n\t\t\treturn this._options.shouldRenderGutterMenu.read(reader)\n\t\t\t\t? this._instantiationService.createInstance(\n\t\t\t\t\treadHotReloadableExport(DiffEditorGutter, reader),\n\t\t\t\t\tthis.elements.root,\n\t\t\t\t\tthis._diffModel,\n\t\t\t\t\tthis._editors,\n\t\t\t\t\tthis._options,\n\t\t\t\t\tthis._sashLayout,\n\t\t\t\t\tthis._boundarySashes,\n\t\t\t\t)\n\t\t\t\t: undefined;\n\t\t});\n\n\t\tthis._register(recomputeInitiallyAndOnChange(this._layoutInfo));\n\n\t\tderivedDisposable(this, reader => /** @description MovedBlocksLinesPart */\n\t\t\tnew (readHotReloadableExport(MovedBlocksLinesFeature, reader))(\n\t\t\t\tthis.elements.root,\n\t\t\t\tthis._diffModel,\n\t\t\t\tthis._layoutInfo.map(i => i.originalEditor),\n\t\t\t\tthis._layoutInfo.map(i => i.modifiedEditor),\n\t\t\t\tthis._editors,\n\t\t\t)\n\t\t).recomputeInitiallyAndOnChange(this._store, value => {\n\t\t\t// This is to break the layout info <-> moved blocks lines part dependency cycle.\n\t\t\tthis._movedBlocksLinesPart.set(value, undefined);\n\t\t});\n\n\t\tthis._register(Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, true)));\n\t\tthis._register(Event.runAndSubscribe(this._editors.original.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, false)));\n\n\t\tconst isInitializingDiff = this._diffModel.map(this, (m, reader) => {\n\t\t\t/** @isInitializingDiff isDiffUpToDate */\n\t\t\tif (!m) { return undefined; }\n\t\t\treturn m.diff.read(reader) === undefined && !m.isDiffUpToDate.read(reader);\n\t\t});\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description DiffEditorWidgetHelper.ShowProgress */\n\t\t\tif (isInitializingDiff.read(reader) === true) {\n\t\t\t\tconst r = this._editorProgressService.show(true, 1000);\n\t\t\t\tstore.add(toDisposable(() => r.done()));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tstore.add(new (readHotReloadableExport(RevertButtonsFeature, reader))(this._editors, this._diffModel, this._options, this));\n\t\t}));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tconst model = this._diffModel.read(reader);\n\t\t\tif (!model) { return; }\n\t\t\tfor (const m of [model.model.original, model.model.modified]) {\n\t\t\t\tstore.add(m.onWillDispose(e => {\n\t\t\t\t\tonUnexpectedError(new BugIndicatingError('TextModel got disposed before DiffEditorWidget model got reset'));\n\t\t\t\t\tthis.setModel(null);\n\t\t\t\t}));\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._options.setModel(this._diffModel.read(reader));\n\t\t}));\n\t}\n\n\tprotected _createInnerEditor(instantiationService: IInstantiationService, container: HTMLElement, options: Readonly<IEditorConstructionOptions>, editorWidgetOptions: ICodeEditorWidgetOptions): CodeEditorWidget {\n\t\tconst editor = instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\n\t\treturn editor;\n\t}\n\n\tprivate readonly _layoutInfo;\n\n\tprivate _createDiffEditorContributions() {\n\t\tconst contributions: IDiffEditorContributionDescription[] = EditorExtensionsRegistry.getDiffEditorContributions();\n\t\tfor (const desc of contributions) {\n\t\t\ttry {\n\t\t\t\tthis._register(this._instantiationService.createInstance(desc.ctor, this));\n\t\t\t} catch (err) {\n\t\t\t\tonUnexpectedError(err);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected override get _targetEditor(): CodeEditorWidget { return this._editors.modified; }\n\n\toverride getEditorType(): string { return EditorType.IDiffEditor; }\n\n\toverride layout(dimension?: IDimension | undefined): void {\n\t\tthis._rootSizeObserver.observe(dimension);\n\t}\n\n\toverride hasTextFocus(): boolean { return this._editors.original.hasTextFocus() || this._editors.modified.hasTextFocus(); }\n\n\tpublic override saveViewState(): IDiffEditorViewState {\n\t\tconst originalViewState = this._editors.original.saveViewState();\n\t\tconst modifiedViewState = this._editors.modified.saveViewState();\n\t\treturn {\n\t\t\toriginal: originalViewState,\n\t\t\tmodified: modifiedViewState,\n\t\t\tmodelState: this._diffModel.get()?.serializeState(),\n\t\t};\n\t}\n\n\tpublic override restoreViewState(s: IDiffEditorViewState): void {\n\t\tif (s && s.original && s.modified) {\n\t\t\tconst diffEditorState = s as IDiffEditorViewState;\n\t\t\tthis._editors.original.restoreViewState(diffEditorState.original);\n\t\t\tthis._editors.modified.restoreViewState(diffEditorState.modified);\n\t\t\tif (diffEditorState.modelState) {\n\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\tthis._diffModel.get()?.restoreSerializedState(diffEditorState.modelState as any);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._editors.original.handleInitialized();\n\t\tthis._editors.modified.handleInitialized();\n\t}\n\n\tpublic createViewModel(model: IDiffEditorModel): IDiffEditorViewModel {\n\t\treturn this._instantiationService.createInstance(DiffEditorViewModel, model, this._options);\n\t}\n\n\toverride getModel(): IDiffEditorModel | null { return this._diffModel.get()?.model ?? null; }\n\n\toverride setModel(model: IDiffEditorModel | null | IDiffEditorViewModel): void {\n\t\tconst vm = !model ? null\n\t\t\t: ('model' in model) ? RefCounted.create(model).createNewRef(this)\n\t\t\t\t: RefCounted.create(this.createViewModel(model), this);\n\t\tthis.setDiffModel(vm);\n\t}\n\n\tsetDiffModel(viewModel: RefCounted<IDiffEditorViewModel> | null, tx?: ITransaction): void {\n\t\tconst currentModel = this._diffModel.get();\n\n\t\tif (!viewModel && currentModel) {\n\t\t\t// Transitioning from a model to no-model\n\t\t\tthis._accessibleDiffViewer.get().close();\n\t\t}\n\n\t\tif (this._diffModel.get() !== viewModel?.object) {\n\t\t\tsubtransaction(tx, tx => {\n\t\t\t\tconst vm = viewModel?.object;\n\t\t\t\t/** @description DiffEditorWidget.setModel */\n\t\t\t\tobservableFromEvent.batchEventsGlobally(tx, () => {\n\t\t\t\t\tthis._editors.original.setModel(vm ? vm.model.original : null);\n\t\t\t\t\tthis._editors.modified.setModel(vm ? vm.model.modified : null);\n\t\t\t\t});\n\t\t\t\tconst prevValueRef = this._diffModelSrc.get()?.createNewRef(this);\n\t\t\t\tthis._diffModelSrc.set(viewModel?.createNewRef(this) as RefCounted<DiffEditorViewModel> | undefined, tx);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t// async, so that this runs after the transaction finished.\n\t\t\t\t\t// TODO: use the transaction to schedule disposal\n\t\t\t\t\tprevValueRef?.dispose();\n\t\t\t\t}, 0);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @param changedOptions Only has values for top-level options that have actually changed.\n\t */\n\toverride updateOptions(changedOptions: IDiffEditorOptions): void {\n\t\tthis._options.updateOptions(changedOptions);\n\t}\n\tgetContainerDomNode(): HTMLElement { return this._domElement; }\n\tgetOriginalEditor(): ICodeEditor { return this._editors.original; }\n\tgetModifiedEditor(): ICodeEditor { return this._editors.modified; }\n\n\tprivate readonly _diffValue;\n\treadonly onDidUpdateDiff: Event<void>;\n\n\t/**\n\t * @deprecated Use `this.getDiffComputationResult().changes2` instead.\n\t */\n\tgetLineChanges(): ILineChange[] | null {\n\t\tconst diffState = this._diffModel.get()?.diff.get();\n\t\tif (!diffState) { return null; }\n\t\treturn toLineChanges(diffState);\n\t}\n\n\trevert(diff: LineRangeMapping): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tthis._editors.modified.executeEdits('diffEditor', [\n\t\t\t{\n\t\t\t\trange: diff.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(diff.original.toExclusiveRange())\n\t\t\t}\n\t\t]);\n\t}\n\n\trevertRangeMappings(diffs: RangeMapping[]): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst changes: IIdentifiedSingleEditOperation[] = diffs.map<IIdentifiedSingleEditOperation>(c => ({\n\t\t\trange: c.modifiedRange,\n\t\t\ttext: model.model.original.getValueInRange(c.originalRange)\n\t\t}));\n\n\t\tthis._editors.modified.executeEdits('diffEditor', changes);\n\t}\n\n\trevertFocusedRangeMappings() {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model || !model.isDiffUpToDate.get()) { return; }\n\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) { return; }\n\n\t\tconst modifiedEditor = this._editors.modified;\n\t\tif (!modifiedEditor.hasTextFocus()) { return; }\n\n\t\tconst curLineNumber = modifiedEditor.getPosition()!.lineNumber;\n\t\tconst selection = modifiedEditor.getSelection();\n\t\tconst selectedRange = LineRange.fromRange(selection || new Range(curLineNumber, 0, curLineNumber, 0));\n\t\tconst diffsToRevert = diffs.filter(d => {\n\t\t\treturn d.lineRangeMapping.modified.intersect(selectedRange);\n\t\t});\n\n\t\tmodifiedEditor.executeEdits('diffEditor', diffsToRevert.map(d => (\n\t\t\t{\n\t\t\t\trange: d.lineRangeMapping.modified.toExclusiveRange(),\n\t\t\t\ttext: model.model.original.getValueInRange(d.lineRangeMapping.original.toExclusiveRange())\n\t\t\t}\n\t\t)));\n\t}\n\n\n\tprivate _goTo(diff: DiffMapping): void {\n\t\tthis._editors.modified.setPosition(new Position(diff.lineRangeMapping.modified.startLineNumber, 1));\n\t\tthis._editors.modified.revealRangeInCenter(diff.lineRangeMapping.modified.toExclusiveRange());\n\t}\n\n\tgoToDiff(target: 'previous' | 'next'): void {\n\t\tconst diffs = this._diffModel.get()?.diff.get()?.mappings;\n\t\tif (!diffs || diffs.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst curLineNumber = this._editors.modified.getPosition()!.lineNumber;\n\t\tlet diff: DiffMapping | undefined;\n\t\tif (target === 'next') {\n\t\t\tconst modifiedLineCount = this._editors.modified.getModel()!.getLineCount();\n\t\t\tif (modifiedLineCount === curLineNumber) {\n\t\t\t\tdiff = diffs[0];\n\t\t\t} else {\n\t\t\t\tdiff = diffs.find(d => d.lineRangeMapping.modified.startLineNumber > curLineNumber) ?? diffs[0];\n\t\t\t}\n\t\t} else {\n\t\t\tdiff = findLast(diffs, d => d.lineRangeMapping.modified.startLineNumber < curLineNumber) ?? diffs[diffs.length - 1];\n\t\t}\n\t\tthis._goTo(diff);\n\n\t\tif (diff.lineRangeMapping.modified.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff.lineRangeMapping.original.isEmpty) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.goToDiff' });\n\t\t} else if (diff) {\n\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.goToDiff' });\n\t\t}\n\t}\n\n\trevealFirstDiff(): void {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) {\n\t\t\treturn;\n\t\t}\n\t\t// wait for the diff computation to finish\n\t\tthis.waitForDiff().then(() => {\n\t\t\tconst diffs = diffModel.diff.get()?.mappings;\n\t\t\tif (!diffs || diffs.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._goTo(diffs[0]);\n\t\t});\n\t}\n\n\taccessibleDiffViewerNext(): void { this._accessibleDiffViewer.get().next(); }\n\n\taccessibleDiffViewerPrev(): void { this._accessibleDiffViewer.get().prev(); }\n\n\tasync waitForDiff(): Promise<void> {\n\t\tconst diffModel = this._diffModel.get();\n\t\tif (!diffModel) { return; }\n\t\tawait diffModel.waitForDiff();\n\t}\n\n\tmapToOtherSide(): { destination: CodeEditorWidget; destinationSelection: Range | undefined } {\n\t\tconst isModifiedFocus = this._editors.modified.hasWidgetFocus();\n\t\tconst source = isModifiedFocus ? this._editors.modified : this._editors.original;\n\t\tconst destination = isModifiedFocus ? this._editors.original : this._editors.modified;\n\n\t\tlet destinationSelection: Range | undefined;\n\n\t\tconst sourceSelection = source.getSelection();\n\t\tif (sourceSelection) {\n\t\t\tconst mappings = this._diffModel.get()?.diff.get()?.mappings.map(m => isModifiedFocus ? m.lineRangeMapping.flip() : m.lineRangeMapping);\n\t\t\tif (mappings) {\n\t\t\t\tconst newRange1 = translatePosition(sourceSelection.getStartPosition(), mappings);\n\t\t\t\tconst newRange2 = translatePosition(sourceSelection.getEndPosition(), mappings);\n\t\t\t\tdestinationSelection = Range.plusRange(newRange1, newRange2);\n\t\t\t}\n\t\t}\n\t\treturn { destination, destinationSelection };\n\t}\n\n\tswitchSide(): void {\n\t\tconst { destination, destinationSelection } = this.mapToOtherSide();\n\t\tdestination.focus();\n\t\tif (destinationSelection) {\n\t\t\tdestination.setSelection(destinationSelection);\n\t\t}\n\t}\n\n\texitCompareMove(): void {\n\t\tconst model = this._diffModel.get();\n\t\tif (!model) { return; }\n\t\tmodel.movedTextToCompare.set(undefined, undefined);\n\t}\n\n\tcollapseAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.collapseAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tshowAllUnchangedRegions(): void {\n\t\tconst unchangedRegions = this._diffModel.get()?.unchangedRegions.get();\n\t\tif (!unchangedRegions) { return; }\n\t\ttransaction(tx => {\n\t\t\tfor (const region of unchangedRegions) {\n\t\t\t\tregion.showAll(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _handleCursorPositionChange(e: ICursorPositionChangedEvent | undefined, isModifiedEditor: boolean): void {\n\t\tif (e?.reason === CursorChangeReason.Explicit) {\n\t\t\tconst diff = this._diffModel.get()?.diff.get()?.mappings.find(m => isModifiedEditor ? m.lineRangeMapping.modified.contains(e.position.lineNumber) : m.lineRangeMapping.original.contains(e.position.lineNumber));\n\t\t\tif (diff?.lineRangeMapping.modified.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff?.lineRangeMapping.original.isEmpty) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t} else if (diff) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.cursorPositionChanged' });\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function toLineChanges(state: DiffState): ILineChange[] {\n\treturn state.mappings.map(x => {\n\t\tconst m = x.lineRangeMapping;\n\t\tlet originalStartLineNumber: number;\n\t\tlet originalEndLineNumber: number;\n\t\tlet modifiedStartLineNumber: number;\n\t\tlet modifiedEndLineNumber: number;\n\t\tlet innerChanges = m.innerChanges;\n\n\t\tif (m.original.isEmpty) {\n\t\t\t// Insertion\n\t\t\toriginalStartLineNumber = m.original.startLineNumber - 1;\n\t\t\toriginalEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\toriginalStartLineNumber = m.original.startLineNumber;\n\t\t\toriginalEndLineNumber = m.original.endLineNumberExclusive - 1;\n\t\t}\n\n\t\tif (m.modified.isEmpty) {\n\t\t\t// Deletion\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber - 1;\n\t\t\tmodifiedEndLineNumber = 0;\n\t\t\tinnerChanges = undefined;\n\t\t} else {\n\t\t\tmodifiedStartLineNumber = m.modified.startLineNumber;\n\t\t\tmodifiedEndLineNumber = m.modified.endLineNumberExclusive - 1;\n\t\t}\n\n\t\treturn {\n\t\t\toriginalStartLineNumber,\n\t\t\toriginalEndLineNumber,\n\t\t\tmodifiedStartLineNumber,\n\t\t\tmodifiedEndLineNumber,\n\t\t\tcharChanges: innerChanges?.map(m => ({\n\t\t\t\toriginalStartLineNumber: m.originalRange.startLineNumber,\n\t\t\t\toriginalStartColumn: m.originalRange.startColumn,\n\t\t\t\toriginalEndLineNumber: m.originalRange.endLineNumber,\n\t\t\t\toriginalEndColumn: m.originalRange.endColumn,\n\t\t\t\tmodifiedStartLineNumber: m.modifiedRange.startLineNumber,\n\t\t\t\tmodifiedStartColumn: m.modifiedRange.startColumn,\n\t\t\t\tmodifiedEndLineNumber: m.modifiedRange.endLineNumber,\n\t\t\t\tmodifiedEndColumn: m.modifiedRange.endColumn,\n\t\t\t}))\n\t\t};\n\t});\n}\n"]}
|
|
@@ -202,12 +202,14 @@ export function applyStyle(domNode, style) {
|
|
|
202
202
|
/** @description applyStyle */
|
|
203
203
|
for (let [key, val] of Object.entries(style)) {
|
|
204
204
|
if (val && typeof val === 'object' && 'read' in val) {
|
|
205
|
+
// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any
|
|
205
206
|
val = val.read(reader);
|
|
206
207
|
}
|
|
207
208
|
if (typeof val === 'number') {
|
|
208
209
|
val = `${val}px`;
|
|
209
210
|
}
|
|
210
211
|
key = key.replace(/[A-Z]/g, m => '-' + m.toLowerCase());
|
|
212
|
+
// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any
|
|
211
213
|
domNode.style[key] = val;
|
|
212
214
|
}
|
|
213
215
|
});
|