{"version":3,"file":"static/js/487_f1af3c2e0f6316fe12ce.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/diffEditorViewModel.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/utils/editorGutter.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/features/gutterFeature.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/delegatingEditorImpl.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/features/overviewRulerFeature.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/utils.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { AccessibleDiffViewerNext, AccessibleDiffViewerPrev, CollapseAllUnchangedRegions, ExitCompareMove, RevertHunkOrSelection, ShowAllUnchangedRegions, SwitchSide, ToggleCollapseUnchangedRegions, ToggleShowMovedCodeBlocks, ToggleUseInlineViewWhenSpaceIsLimited } from './commands.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuId, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyEqualsExpr, ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport './registrations.contribution.js';\nregisterAction2(ToggleCollapseUnchangedRegions);\nregisterAction2(ToggleShowMovedCodeBlocks);\nregisterAction2(ToggleUseInlineViewWhenSpaceIsLimited);\nMenuRegistry.appendMenuItem(MenuId.EditorTitle, {\n command: {\n id: new ToggleUseInlineViewWhenSpaceIsLimited().desc.id,\n title: localize('useInlineViewWhenSpaceIsLimited', \"Use Inline View When Space Is Limited\"),\n toggled: ContextKeyExpr.has('config.diffEditor.useInlineViewWhenSpaceIsLimited'),\n precondition: ContextKeyExpr.has('isInDiffEditor'),\n },\n order: 11,\n group: '1_diff',\n when: ContextKeyExpr.and(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, ContextKeyExpr.has('isInDiffEditor')),\n});\nMenuRegistry.appendMenuItem(MenuId.EditorTitle, {\n command: {\n id: new ToggleShowMovedCodeBlocks().desc.id,\n title: localize('showMoves', \"Show Moved Code Blocks\"),\n icon: Codicon.move,\n toggled: ContextKeyEqualsExpr.create('config.diffEditor.experimental.showMoves', true),\n precondition: ContextKeyExpr.has('isInDiffEditor'),\n },\n order: 10,\n group: '1_diff',\n when: ContextKeyExpr.has('isInDiffEditor'),\n});\nregisterAction2(RevertHunkOrSelection);\nfor (const ctx of [\n { icon: Codicon.arrowRight, key: EditorContextKeys.diffEditorInlineMode.toNegated() },\n { icon: Codicon.discard, key: EditorContextKeys.diffEditorInlineMode }\n]) {\n MenuRegistry.appendMenuItem(MenuId.DiffEditorHunkToolbar, {\n command: {\n id: new RevertHunkOrSelection().desc.id,\n title: localize('revertHunk', \"Revert Block\"),\n icon: ctx.icon,\n },\n when: ContextKeyExpr.and(EditorContextKeys.diffEditorModifiedWritable, ctx.key),\n order: 5,\n group: 'primary',\n });\n MenuRegistry.appendMenuItem(MenuId.DiffEditorSelectionToolbar, {\n command: {\n id: new RevertHunkOrSelection().desc.id,\n title: localize('revertSelection', \"Revert Selection\"),\n icon: ctx.icon,\n },\n when: ContextKeyExpr.and(EditorContextKeys.diffEditorModifiedWritable, ctx.key),\n order: 5,\n group: 'primary',\n });\n}\nregisterAction2(SwitchSide);\nregisterAction2(ExitCompareMove);\nregisterAction2(CollapseAllUnchangedRegions);\nregisterAction2(ShowAllUnchangedRegions);\nMenuRegistry.appendMenuItem(MenuId.EditorTitle, {\n command: {\n id: AccessibleDiffViewerNext.id,\n title: localize('Open Accessible Diff Viewer', \"Open Accessible Diff Viewer\"),\n precondition: ContextKeyExpr.has('isInDiffEditor'),\n },\n order: 10,\n group: '2_diff',\n when: ContextKeyExpr.and(EditorContextKeys.accessibleDiffViewerVisible.negate(), ContextKeyExpr.has('isInDiffEditor')),\n});\nCommandsRegistry.registerCommandAlias('editor.action.diffReview.next', AccessibleDiffViewerNext.id);\nregisterAction2(AccessibleDiffViewerNext);\nCommandsRegistry.registerCommandAlias('editor.action.diffReview.prev', AccessibleDiffViewerPrev.id);\nregisterAction2(AccessibleDiffViewerPrev);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar WorkerBasedDocumentDiffProvider_1;\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { IInstantiationService, createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { LineRange } from '../../../common/core/lineRange.js';\nimport { DetailedLineRangeMapping, RangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nexport const IDiffProviderFactoryService = createDecorator('diffProviderFactoryService');\nlet WorkerBasedDiffProviderFactoryService = class WorkerBasedDiffProviderFactoryService {\n constructor(instantiationService) {\n this.instantiationService = instantiationService;\n }\n createDiffProvider(options) {\n return this.instantiationService.createInstance(WorkerBasedDocumentDiffProvider, options);\n }\n};\nWorkerBasedDiffProviderFactoryService = __decorate([\n __param(0, IInstantiationService)\n], WorkerBasedDiffProviderFactoryService);\nexport { WorkerBasedDiffProviderFactoryService };\nregisterSingleton(IDiffProviderFactoryService, WorkerBasedDiffProviderFactoryService, 1 /* InstantiationType.Delayed */);\nlet WorkerBasedDocumentDiffProvider = WorkerBasedDocumentDiffProvider_1 = class WorkerBasedDocumentDiffProvider {\n constructor(options, editorWorkerService, telemetryService) {\n this.editorWorkerService = editorWorkerService;\n this.telemetryService = telemetryService;\n this.onDidChangeEventEmitter = new Emitter();\n this.onDidChange = this.onDidChangeEventEmitter.event;\n this.diffAlgorithm = 'advanced';\n this.diffAlgorithmOnDidChangeSubscription = undefined;\n this.setOptions(options);\n }\n dispose() {\n var _a;\n (_a = this.diffAlgorithmOnDidChangeSubscription) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n async computeDiff(original, modified, options, cancellationToken) {\n var _a, _b;\n if (typeof this.diffAlgorithm !== 'string') {\n return this.diffAlgorithm.computeDiff(original, modified, options, cancellationToken);\n }\n if (original.isDisposed() || modified.isDisposed()) {\n // TODO@hediet\n return {\n changes: [],\n identical: true,\n quitEarly: false,\n moves: [],\n };\n }\n // This significantly speeds up the case when the original file is empty\n if (original.getLineCount() === 1 && original.getLineMaxColumn(1) === 1) {\n if (modified.getLineCount() === 1 && modified.getLineMaxColumn(1) === 1) {\n return {\n changes: [],\n identical: true,\n quitEarly: false,\n moves: [],\n };\n }\n return {\n changes: [\n new DetailedLineRangeMapping(new LineRange(1, 2), new LineRange(1, modified.getLineCount() + 1), [\n new RangeMapping(original.getFullModelRange(), modified.getFullModelRange())\n ])\n ],\n identical: false,\n quitEarly: false,\n moves: [],\n };\n }\n const uriKey = JSON.stringify([original.uri.toString(), modified.uri.toString()]);\n const context = JSON.stringify([original.id, modified.id, original.getAlternativeVersionId(), modified.getAlternativeVersionId(), JSON.stringify(options)]);\n const c = WorkerBasedDocumentDiffProvider_1.diffCache.get(uriKey);\n if (c && c.context === context) {\n return c.result;\n }\n const sw = StopWatch.create();\n const result = await this.editorWorkerService.computeDiff(original.uri, modified.uri, options, this.diffAlgorithm);\n const timeMs = sw.elapsed();\n this.telemetryService.publicLog2('diffEditor.computeDiff', {\n timeMs,\n timedOut: (_a = result === null || result === void 0 ? void 0 : result.quitEarly) !== null && _a !== void 0 ? _a : true,\n detectedMoves: options.computeMoves ? ((_b = result === null || result === void 0 ? void 0 : result.moves.length) !== null && _b !== void 0 ? _b : 0) : -1,\n });\n if (cancellationToken.isCancellationRequested) {\n // Text models might be disposed!\n return {\n changes: [],\n identical: false,\n quitEarly: true,\n moves: [],\n };\n }\n if (!result) {\n throw new Error('no diff result available');\n }\n // max 10 items in cache\n if (WorkerBasedDocumentDiffProvider_1.diffCache.size > 10) {\n WorkerBasedDocumentDiffProvider_1.diffCache.delete(WorkerBasedDocumentDiffProvider_1.diffCache.keys().next().value);\n }\n WorkerBasedDocumentDiffProvider_1.diffCache.set(uriKey, { result, context });\n return result;\n }\n setOptions(newOptions) {\n var _a;\n let didChange = false;\n if (newOptions.diffAlgorithm) {\n if (this.diffAlgorithm !== newOptions.diffAlgorithm) {\n (_a = this.diffAlgorithmOnDidChangeSubscription) === null || _a === void 0 ? void 0 : _a.dispose();\n this.diffAlgorithmOnDidChangeSubscription = undefined;\n this.diffAlgorithm = newOptions.diffAlgorithm;\n if (typeof newOptions.diffAlgorithm !== 'string') {\n this.diffAlgorithmOnDidChangeSubscription = newOptions.diffAlgorithm.onDidChange(() => this.onDidChangeEventEmitter.fire());\n }\n didChange = true;\n }\n }\n if (didChange) {\n this.onDidChangeEventEmitter.fire();\n }\n }\n};\nWorkerBasedDocumentDiffProvider.diffCache = new Map();\nWorkerBasedDocumentDiffProvider = WorkerBasedDocumentDiffProvider_1 = __decorate([\n __param(1, IEditorWorkerService),\n __param(2, ITelemetryService)\n], WorkerBasedDocumentDiffProvider);\nexport { WorkerBasedDocumentDiffProvider };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Disposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, derived, observableSignal, observableSignalFromEvent, observableValue, transaction, waitForState } from '../../../../base/common/observable.js';\nimport { IDiffProviderFactoryService } from './diffProviderFactoryService.js';\nimport { filterWithPrevious, readHotReloadableExport } from './utils.js';\nimport { LineRange, LineRangeSet } from '../../../common/core/lineRange.js';\nimport { DefaultLinesDiffComputer } from '../../../common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js';\nimport { DetailedLineRangeMapping, LineRangeMapping, RangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { TextEditInfo } from '../../../common/model/bracketPairsTextModelPart/bracketPairsTree/beforeEditPositionMapper.js';\nimport { combineTextEditInfos } from '../../../common/model/bracketPairsTextModelPart/bracketPairsTree/combineTextEditInfos.js';\nimport { optimizeSequenceDiffs } from '../../../common/diff/defaultLinesDiffComputer/heuristicSequenceOptimizations.js';\nimport { isDefined } from '../../../../base/common/types.js';\nimport { groupAdjacentBy } from '../../../../base/common/arrays.js';\nimport { softAssert } from '../../../../base/common/assert.js';\nlet DiffEditorViewModel = class DiffEditorViewModel extends Disposable {\n setActiveMovedText(movedText) {\n this._activeMovedText.set(movedText, undefined);\n }\n constructor(model, _options, _diffProviderFactoryService) {\n super();\n this.model = model;\n this._options = _options;\n this._diffProviderFactoryService = _diffProviderFactoryService;\n this._isDiffUpToDate = observableValue(this, false);\n this.isDiffUpToDate = this._isDiffUpToDate;\n this._diff = observableValue(this, undefined);\n this.diff = this._diff;\n this._unchangedRegions = observableValue(this, undefined);\n this.unchangedRegions = derived(this, r => {\n var _a, _b;\n if (this._options.hideUnchangedRegions.read(r)) {\n return (_b = (_a = this._unchangedRegions.read(r)) === null || _a === void 0 ? void 0 : _a.regions) !== null && _b !== void 0 ? _b : [];\n }\n else {\n // Reset state\n transaction(tx => {\n var _a;\n for (const r of ((_a = this._unchangedRegions.get()) === null || _a === void 0 ? void 0 : _a.regions) || []) {\n r.collapseAll(tx);\n }\n });\n return [];\n }\n });\n this.movedTextToCompare = observableValue(this, undefined);\n this._activeMovedText = observableValue(this, undefined);\n this._hoveredMovedText = observableValue(this, undefined);\n this.activeMovedText = derived(this, r => { var _a, _b; return (_b = (_a = this.movedTextToCompare.read(r)) !== null && _a !== void 0 ? _a : this._hoveredMovedText.read(r)) !== null && _b !== void 0 ? _b : this._activeMovedText.read(r); });\n this._cancellationTokenSource = new CancellationTokenSource();\n this._diffProvider = derived(this, reader => {\n const diffProvider = this._diffProviderFactoryService.createDiffProvider({\n diffAlgorithm: this._options.diffAlgorithm.read(reader)\n });\n const onChangeSignal = observableSignalFromEvent('onDidChange', diffProvider.onDidChange);\n return {\n diffProvider,\n onChangeSignal,\n };\n });\n this._register(toDisposable(() => this._cancellationTokenSource.cancel()));\n const contentChangedSignal = observableSignal('contentChangedSignal');\n const debouncer = this._register(new RunOnceScheduler(() => contentChangedSignal.trigger(undefined), 200));\n this._register(autorun(reader => {\n /** @description collapse touching unchanged ranges */\n const lastUnchangedRegions = this._unchangedRegions.read(reader);\n if (!lastUnchangedRegions || lastUnchangedRegions.regions.some(r => r.isDragged.read(reader))) {\n return;\n }\n const lastUnchangedRegionsOrigRanges = lastUnchangedRegions.originalDecorationIds\n .map(id => model.original.getDecorationRange(id))\n .map(r => r ? LineRange.fromRangeInclusive(r) : undefined);\n const lastUnchangedRegionsModRanges = lastUnchangedRegions.modifiedDecorationIds\n .map(id => model.modified.getDecorationRange(id))\n .map(r => r ? LineRange.fromRangeInclusive(r) : undefined);\n const updatedLastUnchangedRegions = lastUnchangedRegions.regions.map((r, idx) => (!lastUnchangedRegionsOrigRanges[idx] || !lastUnchangedRegionsModRanges[idx]) ? undefined :\n new UnchangedRegion(lastUnchangedRegionsOrigRanges[idx].startLineNumber, lastUnchangedRegionsModRanges[idx].startLineNumber, lastUnchangedRegionsOrigRanges[idx].length, r.visibleLineCountTop.read(reader), r.visibleLineCountBottom.read(reader))).filter(isDefined);\n const newRanges = [];\n let didChange = false;\n for (const touching of groupAdjacentBy(updatedLastUnchangedRegions, (a, b) => a.getHiddenModifiedRange(reader).endLineNumberExclusive === b.getHiddenModifiedRange(reader).startLineNumber)) {\n if (touching.length > 1) {\n didChange = true;\n const sumLineCount = touching.reduce((sum, r) => sum + r.lineCount, 0);\n const r = new UnchangedRegion(touching[0].originalLineNumber, touching[0].modifiedLineNumber, sumLineCount, touching[0].visibleLineCountTop.get(), touching[touching.length - 1].visibleLineCountBottom.get());\n newRanges.push(r);\n }\n else {\n newRanges.push(touching[0]);\n }\n }\n if (didChange) {\n const originalDecorationIds = model.original.deltaDecorations(lastUnchangedRegions.originalDecorationIds, newRanges.map(r => ({ range: r.originalUnchangedRange.toInclusiveRange(), options: { description: 'unchanged' } })));\n const modifiedDecorationIds = model.modified.deltaDecorations(lastUnchangedRegions.modifiedDecorationIds, newRanges.map(r => ({ range: r.modifiedUnchangedRange.toInclusiveRange(), options: { description: 'unchanged' } })));\n transaction(tx => {\n this._unchangedRegions.set({\n regions: newRanges,\n originalDecorationIds,\n modifiedDecorationIds\n }, tx);\n });\n }\n }));\n const updateUnchangedRegions = (result, tx, reader) => {\n const newUnchangedRegions = UnchangedRegion.fromDiffs(result.changes, model.original.getLineCount(), model.modified.getLineCount(), this._options.hideUnchangedRegionsMinimumLineCount.read(reader), this._options.hideUnchangedRegionsContextLineCount.read(reader));\n // Transfer state from cur state\n let visibleRegions = undefined;\n const lastUnchangedRegions = this._unchangedRegions.get();\n if (lastUnchangedRegions) {\n const lastUnchangedRegionsOrigRanges = lastUnchangedRegions.originalDecorationIds\n .map(id => model.original.getDecorationRange(id))\n .map(r => r ? LineRange.fromRangeInclusive(r) : undefined);\n const lastUnchangedRegionsModRanges = lastUnchangedRegions.modifiedDecorationIds\n .map(id => model.modified.getDecorationRange(id))\n .map(r => r ? LineRange.fromRangeInclusive(r) : undefined);\n const updatedLastUnchangedRegions = filterWithPrevious(lastUnchangedRegions.regions\n .map((r, idx) => {\n if (!lastUnchangedRegionsOrigRanges[idx] || !lastUnchangedRegionsModRanges[idx]) {\n return undefined;\n }\n const length = lastUnchangedRegionsOrigRanges[idx].length;\n return new UnchangedRegion(lastUnchangedRegionsOrigRanges[idx].startLineNumber, lastUnchangedRegionsModRanges[idx].startLineNumber, length, \n // The visible area can shrink by edits -> we have to account for this\n Math.min(r.visibleLineCountTop.get(), length), Math.min(r.visibleLineCountBottom.get(), length - r.visibleLineCountTop.get()));\n }).filter(isDefined), (cur, prev) => !prev || (cur.modifiedLineNumber >= prev.modifiedLineNumber + prev.lineCount && cur.originalLineNumber >= prev.originalLineNumber + prev.lineCount));\n let hiddenRegions = updatedLastUnchangedRegions.map(r => new LineRangeMapping(r.getHiddenOriginalRange(reader), r.getHiddenModifiedRange(reader)));\n hiddenRegions = LineRangeMapping.clip(hiddenRegions, LineRange.ofLength(1, model.original.getLineCount()), LineRange.ofLength(1, model.modified.getLineCount()));\n visibleRegions = LineRangeMapping.inverse(hiddenRegions, model.original.getLineCount(), model.modified.getLineCount());\n }\n const newUnchangedRegions2 = [];\n if (visibleRegions) {\n for (const r of newUnchangedRegions) {\n const intersecting = visibleRegions.filter(f => f.original.intersectsStrict(r.originalUnchangedRange) && f.modified.intersectsStrict(r.modifiedUnchangedRange));\n newUnchangedRegions2.push(...r.setVisibleRanges(intersecting, tx));\n }\n }\n else {\n newUnchangedRegions2.push(...newUnchangedRegions);\n }\n const originalDecorationIds = model.original.deltaDecorations((lastUnchangedRegions === null || lastUnchangedRegions === void 0 ? void 0 : lastUnchangedRegions.originalDecorationIds) || [], newUnchangedRegions2.map(r => ({ range: r.originalUnchangedRange.toInclusiveRange(), options: { description: 'unchanged' } })));\n const modifiedDecorationIds = model.modified.deltaDecorations((lastUnchangedRegions === null || lastUnchangedRegions === void 0 ? void 0 : lastUnchangedRegions.modifiedDecorationIds) || [], newUnchangedRegions2.map(r => ({ range: r.modifiedUnchangedRange.toInclusiveRange(), options: { description: 'unchanged' } })));\n this._unchangedRegions.set({\n regions: newUnchangedRegions2,\n originalDecorationIds,\n modifiedDecorationIds\n }, tx);\n };\n this._register(model.modified.onDidChangeContent((e) => {\n const diff = this._diff.get();\n if (diff) {\n const textEdits = TextEditInfo.fromModelContentChanges(e.changes);\n const result = applyModifiedEdits(this._lastDiff, textEdits, model.original, model.modified);\n if (result) {\n this._lastDiff = result;\n transaction(tx => {\n this._diff.set(DiffState.fromDiffResult(this._lastDiff), tx);\n updateUnchangedRegions(result, tx);\n const currentSyncedMovedText = this.movedTextToCompare.get();\n this.movedTextToCompare.set(currentSyncedMovedText ? this._lastDiff.moves.find(m => m.lineRangeMapping.modified.intersect(currentSyncedMovedText.lineRangeMapping.modified)) : undefined, tx);\n });\n }\n }\n this._isDiffUpToDate.set(false, undefined);\n debouncer.schedule();\n }));\n this._register(model.original.onDidChangeContent((e) => {\n const diff = this._diff.get();\n if (diff) {\n const textEdits = TextEditInfo.fromModelContentChanges(e.changes);\n const result = applyOriginalEdits(this._lastDiff, textEdits, model.original, model.modified);\n if (result) {\n this._lastDiff = result;\n transaction(tx => {\n this._diff.set(DiffState.fromDiffResult(this._lastDiff), tx);\n updateUnchangedRegions(result, tx);\n const currentSyncedMovedText = this.movedTextToCompare.get();\n this.movedTextToCompare.set(currentSyncedMovedText ? this._lastDiff.moves.find(m => m.lineRangeMapping.modified.intersect(currentSyncedMovedText.lineRangeMapping.modified)) : undefined, tx);\n });\n }\n }\n this._isDiffUpToDate.set(false, undefined);\n debouncer.schedule();\n }));\n this._register(autorunWithStore(async (reader, store) => {\n /** @description compute diff */\n var _a, _b;\n // So that they get recomputed when these settings change\n this._options.hideUnchangedRegionsMinimumLineCount.read(reader);\n this._options.hideUnchangedRegionsContextLineCount.read(reader);\n debouncer.cancel();\n contentChangedSignal.read(reader);\n const documentDiffProvider = this._diffProvider.read(reader);\n documentDiffProvider.onChangeSignal.read(reader);\n readHotReloadableExport(DefaultLinesDiffComputer, reader);\n readHotReloadableExport(optimizeSequenceDiffs, reader);\n this._isDiffUpToDate.set(false, undefined);\n let originalTextEditInfos = [];\n store.add(model.original.onDidChangeContent((e) => {\n const edits = TextEditInfo.fromModelContentChanges(e.changes);\n originalTextEditInfos = combineTextEditInfos(originalTextEditInfos, edits);\n }));\n let modifiedTextEditInfos = [];\n store.add(model.modified.onDidChangeContent((e) => {\n const edits = TextEditInfo.fromModelContentChanges(e.changes);\n modifiedTextEditInfos = combineTextEditInfos(modifiedTextEditInfos, edits);\n }));\n let result = await documentDiffProvider.diffProvider.computeDiff(model.original, model.modified, {\n ignoreTrimWhitespace: this._options.ignoreTrimWhitespace.read(reader),\n maxComputationTimeMs: this._options.maxComputationTimeMs.read(reader),\n computeMoves: this._options.showMoves.read(reader),\n }, this._cancellationTokenSource.token);\n if (this._cancellationTokenSource.token.isCancellationRequested) {\n return;\n }\n if (model.original.isDisposed() || model.modified.isDisposed()) {\n // TODO@hediet fishy?\n return;\n }\n result = normalizeDocumentDiff(result, model.original, model.modified);\n result = (_a = applyOriginalEdits(result, originalTextEditInfos, model.original, model.modified)) !== null && _a !== void 0 ? _a : result;\n result = (_b = applyModifiedEdits(result, modifiedTextEditInfos, model.original, model.modified)) !== null && _b !== void 0 ? _b : result;\n transaction(tx => {\n /** @description write diff result */\n updateUnchangedRegions(result, tx);\n this._lastDiff = result;\n const state = DiffState.fromDiffResult(result);\n this._diff.set(state, tx);\n this._isDiffUpToDate.set(true, tx);\n const currentSyncedMovedText = this.movedTextToCompare.get();\n this.movedTextToCompare.set(currentSyncedMovedText ? this._lastDiff.moves.find(m => m.lineRangeMapping.modified.intersect(currentSyncedMovedText.lineRangeMapping.modified)) : undefined, tx);\n });\n }));\n }\n ensureModifiedLineIsVisible(lineNumber, preference, tx) {\n var _a, _b;\n if (((_a = this.diff.get()) === null || _a === void 0 ? void 0 : _a.mappings.length) === 0) {\n return;\n }\n const unchangedRegions = ((_b = this._unchangedRegions.get()) === null || _b === void 0 ? void 0 : _b.regions) || [];\n for (const r of unchangedRegions) {\n if (r.getHiddenModifiedRange(undefined).contains(lineNumber)) {\n r.showModifiedLine(lineNumber, preference, tx);\n return;\n }\n }\n }\n ensureOriginalLineIsVisible(lineNumber, preference, tx) {\n var _a, _b;\n if (((_a = this.diff.get()) === null || _a === void 0 ? void 0 : _a.mappings.length) === 0) {\n return;\n }\n const unchangedRegions = ((_b = this._unchangedRegions.get()) === null || _b === void 0 ? void 0 : _b.regions) || [];\n for (const r of unchangedRegions) {\n if (r.getHiddenOriginalRange(undefined).contains(lineNumber)) {\n r.showOriginalLine(lineNumber, preference, tx);\n return;\n }\n }\n }\n async waitForDiff() {\n await waitForState(this.isDiffUpToDate, s => s);\n }\n serializeState() {\n const regions = this._unchangedRegions.get();\n return {\n collapsedRegions: regions === null || regions === void 0 ? void 0 : regions.regions.map(r => ({ range: r.getHiddenModifiedRange(undefined).serialize() }))\n };\n }\n restoreSerializedState(state) {\n var _a;\n const ranges = (_a = state.collapsedRegions) === null || _a === void 0 ? void 0 : _a.map(r => LineRange.deserialize(r.range));\n const regions = this._unchangedRegions.get();\n if (!regions || !ranges) {\n return;\n }\n transaction(tx => {\n for (const r of regions.regions) {\n for (const range of ranges) {\n if (r.modifiedUnchangedRange.intersect(range)) {\n r.setHiddenModifiedRange(range, tx);\n break;\n }\n }\n }\n });\n }\n};\nDiffEditorViewModel = __decorate([\n __param(2, IDiffProviderFactoryService)\n], DiffEditorViewModel);\nexport { DiffEditorViewModel };\nfunction normalizeDocumentDiff(diff, original, modified) {\n return {\n changes: diff.changes.map(c => new DetailedLineRangeMapping(c.original, c.modified, c.innerChanges ? c.innerChanges.map(i => normalizeRangeMapping(i, original, modified)) : undefined)),\n moves: diff.moves,\n identical: diff.identical,\n quitEarly: diff.quitEarly,\n };\n}\nfunction normalizeRangeMapping(rangeMapping, original, modified) {\n let originalRange = rangeMapping.originalRange;\n let modifiedRange = rangeMapping.modifiedRange;\n if ((originalRange.endColumn !== 1 || modifiedRange.endColumn !== 1) &&\n originalRange.endColumn === original.getLineMaxColumn(originalRange.endLineNumber)\n && modifiedRange.endColumn === modified.getLineMaxColumn(modifiedRange.endLineNumber)\n && originalRange.endLineNumber < original.getLineCount()\n && modifiedRange.endLineNumber < modified.getLineCount()) {\n originalRange = originalRange.setEndPosition(originalRange.endLineNumber + 1, 1);\n modifiedRange = modifiedRange.setEndPosition(modifiedRange.endLineNumber + 1, 1);\n }\n return new RangeMapping(originalRange, modifiedRange);\n}\nexport class DiffState {\n static fromDiffResult(result) {\n return new DiffState(result.changes.map(c => new DiffMapping(c)), result.moves || [], result.identical, result.quitEarly);\n }\n constructor(mappings, movedTexts, identical, quitEarly) {\n this.mappings = mappings;\n this.movedTexts = movedTexts;\n this.identical = identical;\n this.quitEarly = quitEarly;\n }\n}\nexport class DiffMapping {\n constructor(lineRangeMapping) {\n this.lineRangeMapping = lineRangeMapping;\n /*\n readonly movedTo: MovedText | undefined,\n readonly movedFrom: MovedText | undefined,\n\n if (movedTo) {\n assertFn(() =>\n movedTo.lineRangeMapping.modifiedRange.equals(lineRangeMapping.modifiedRange)\n && lineRangeMapping.originalRange.isEmpty\n && !movedFrom\n );\n } else if (movedFrom) {\n assertFn(() =>\n movedFrom.lineRangeMapping.originalRange.equals(lineRangeMapping.originalRange)\n && lineRangeMapping.modifiedRange.isEmpty\n && !movedTo\n );\n }\n */\n }\n}\nexport class UnchangedRegion {\n static fromDiffs(changes, originalLineCount, modifiedLineCount, minHiddenLineCount, minContext) {\n const inversedMappings = DetailedLineRangeMapping.inverse(changes, originalLineCount, modifiedLineCount);\n const result = [];\n for (const mapping of inversedMappings) {\n let origStart = mapping.original.startLineNumber;\n let modStart = mapping.modified.startLineNumber;\n let length = mapping.original.length;\n const atStart = origStart === 1 && modStart === 1;\n const atEnd = origStart + length === originalLineCount + 1 && modStart + length === modifiedLineCount + 1;\n if ((atStart || atEnd) && length >= minContext + minHiddenLineCount) {\n if (atStart && !atEnd) {\n length -= minContext;\n }\n if (atEnd && !atStart) {\n origStart += minContext;\n modStart += minContext;\n length -= minContext;\n }\n result.push(new UnchangedRegion(origStart, modStart, length, 0, 0));\n }\n else if (length >= minContext * 2 + minHiddenLineCount) {\n origStart += minContext;\n modStart += minContext;\n length -= minContext * 2;\n result.push(new UnchangedRegion(origStart, modStart, length, 0, 0));\n }\n }\n return result;\n }\n get originalUnchangedRange() {\n return LineRange.ofLength(this.originalLineNumber, this.lineCount);\n }\n get modifiedUnchangedRange() {\n return LineRange.ofLength(this.modifiedLineNumber, this.lineCount);\n }\n constructor(originalLineNumber, modifiedLineNumber, lineCount, visibleLineCountTop, visibleLineCountBottom) {\n this.originalLineNumber = originalLineNumber;\n this.modifiedLineNumber = modifiedLineNumber;\n this.lineCount = lineCount;\n this._visibleLineCountTop = observableValue(this, 0);\n this.visibleLineCountTop = this._visibleLineCountTop;\n this._visibleLineCountBottom = observableValue(this, 0);\n this.visibleLineCountBottom = this._visibleLineCountBottom;\n this._shouldHideControls = derived(this, reader => /** @description isVisible */ this.visibleLineCountTop.read(reader) + this.visibleLineCountBottom.read(reader) === this.lineCount && !this.isDragged.read(reader));\n this.isDragged = observableValue(this, undefined);\n const visibleLineCountTop2 = Math.max(Math.min(visibleLineCountTop, this.lineCount), 0);\n const visibleLineCountBottom2 = Math.max(Math.min(visibleLineCountBottom, this.lineCount - visibleLineCountTop), 0);\n softAssert(visibleLineCountTop === visibleLineCountTop2);\n softAssert(visibleLineCountBottom === visibleLineCountBottom2);\n this._visibleLineCountTop.set(visibleLineCountTop2, undefined);\n this._visibleLineCountBottom.set(visibleLineCountBottom2, undefined);\n }\n setVisibleRanges(visibleRanges, tx) {\n const result = [];\n const hiddenModified = new LineRangeSet(visibleRanges.map(r => r.modified)).subtractFrom(this.modifiedUnchangedRange);\n let originalStartLineNumber = this.originalLineNumber;\n let modifiedStartLineNumber = this.modifiedLineNumber;\n const modifiedEndLineNumberEx = this.modifiedLineNumber + this.lineCount;\n if (hiddenModified.ranges.length === 0) {\n this.showAll(tx);\n result.push(this);\n }\n else {\n let i = 0;\n for (const r of hiddenModified.ranges) {\n const isLast = i === hiddenModified.ranges.length - 1;\n i++;\n const length = (isLast ? modifiedEndLineNumberEx : r.endLineNumberExclusive) - modifiedStartLineNumber;\n const newR = new UnchangedRegion(originalStartLineNumber, modifiedStartLineNumber, length, 0, 0);\n newR.setHiddenModifiedRange(r, tx);\n result.push(newR);\n originalStartLineNumber = newR.originalUnchangedRange.endLineNumberExclusive;\n modifiedStartLineNumber = newR.modifiedUnchangedRange.endLineNumberExclusive;\n }\n }\n return result;\n }\n shouldHideControls(reader) {\n return this._shouldHideControls.read(reader);\n }\n getHiddenOriginalRange(reader) {\n return LineRange.ofLength(this.originalLineNumber + this._visibleLineCountTop.read(reader), this.lineCount - this._visibleLineCountTop.read(reader) - this._visibleLineCountBottom.read(reader));\n }\n getHiddenModifiedRange(reader) {\n return LineRange.ofLength(this.modifiedLineNumber + this._visibleLineCountTop.read(reader), this.lineCount - this._visibleLineCountTop.read(reader) - this._visibleLineCountBottom.read(reader));\n }\n setHiddenModifiedRange(range, tx) {\n const visibleLineCountTop = range.startLineNumber - this.modifiedLineNumber;\n const visibleLineCountBottom = (this.modifiedLineNumber + this.lineCount) - range.endLineNumberExclusive;\n this.setState(visibleLineCountTop, visibleLineCountBottom, tx);\n }\n getMaxVisibleLineCountTop() {\n return this.lineCount - this._visibleLineCountBottom.get();\n }\n getMaxVisibleLineCountBottom() {\n return this.lineCount - this._visibleLineCountTop.get();\n }\n showMoreAbove(count = 10, tx) {\n const maxVisibleLineCountTop = this.getMaxVisibleLineCountTop();\n this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get() + count, maxVisibleLineCountTop), tx);\n }\n showMoreBelow(count = 10, tx) {\n const maxVisibleLineCountBottom = this.lineCount - this._visibleLineCountTop.get();\n this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get() + count, maxVisibleLineCountBottom), tx);\n }\n showAll(tx) {\n this._visibleLineCountBottom.set(this.lineCount - this._visibleLineCountTop.get(), tx);\n }\n showModifiedLine(lineNumber, preference, tx) {\n const top = lineNumber + 1 - (this.modifiedLineNumber + this._visibleLineCountTop.get());\n const bottom = (this.modifiedLineNumber - this._visibleLineCountBottom.get() + this.lineCount) - lineNumber;\n if (preference === 0 /* RevealPreference.FromCloserSide */ && top < bottom || preference === 1 /* RevealPreference.FromTop */) {\n this._visibleLineCountTop.set(this._visibleLineCountTop.get() + top, tx);\n }\n else {\n this._visibleLineCountBottom.set(this._visibleLineCountBottom.get() + bottom, tx);\n }\n }\n showOriginalLine(lineNumber, preference, tx) {\n const top = lineNumber - this.originalLineNumber;\n const bottom = (this.originalLineNumber + this.lineCount) - lineNumber;\n if (preference === 0 /* RevealPreference.FromCloserSide */ && top < bottom || preference === 1 /* RevealPreference.FromTop */) {\n this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get() + bottom - top, this.getMaxVisibleLineCountTop()), tx);\n }\n else {\n this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get() + top - bottom, this.getMaxVisibleLineCountBottom()), tx);\n }\n }\n collapseAll(tx) {\n this._visibleLineCountTop.set(0, tx);\n this._visibleLineCountBottom.set(0, tx);\n }\n setState(visibleLineCountTop, visibleLineCountBottom, tx) {\n visibleLineCountTop = Math.max(Math.min(visibleLineCountTop, this.lineCount), 0);\n visibleLineCountBottom = Math.max(Math.min(visibleLineCountBottom, this.lineCount - visibleLineCountTop), 0);\n this._visibleLineCountTop.set(visibleLineCountTop, tx);\n this._visibleLineCountBottom.set(visibleLineCountBottom, tx);\n }\n}\nfunction applyOriginalEdits(diff, textEdits, originalTextModel, modifiedTextModel) {\n return undefined;\n /*\n TODO@hediet\n if (textEdits.length === 0) {\n return diff;\n }\n\n const diff2 = flip(diff);\n const diff3 = applyModifiedEdits(diff2, textEdits, modifiedTextModel, originalTextModel);\n if (!diff3) {\n return undefined;\n }\n return flip(diff3);*/\n}\n/*\nfunction flip(diff: IDocumentDiff): IDocumentDiff {\n return {\n changes: diff.changes.map(c => c.flip()),\n moves: diff.moves.map(m => m.flip()),\n identical: diff.identical,\n quitEarly: diff.quitEarly,\n };\n}\n*/\nfunction applyModifiedEdits(diff, textEdits, originalTextModel, modifiedTextModel) {\n return undefined;\n /*\n TODO@hediet\n if (textEdits.length === 0) {\n return diff;\n }\n if (diff.changes.some(c => !c.innerChanges) || diff.moves.length > 0) {\n // TODO support these cases\n return undefined;\n }\n\n const changes = applyModifiedEditsToLineRangeMappings(diff.changes, textEdits, originalTextModel, modifiedTextModel);\n\n const moves = diff.moves.map(m => {\n const newModifiedRange = applyEditToLineRange(m.lineRangeMapping.modified, textEdits);\n return newModifiedRange ? new MovedText(\n new SimpleLineRangeMapping(m.lineRangeMapping.original, newModifiedRange),\n applyModifiedEditsToLineRangeMappings(m.changes, textEdits, originalTextModel, modifiedTextModel),\n ) : undefined;\n }).filter(isDefined);\n\n return {\n identical: false,\n quitEarly: false,\n changes,\n moves,\n };*/\n}\n/*\nfunction applyEditToLineRange(range: LineRange, textEdits: TextEditInfo[]): LineRange | undefined {\n let rangeStartLineNumber = range.startLineNumber;\n let rangeEndLineNumberEx = range.endLineNumberExclusive;\n\n for (let i = textEdits.length - 1; i >= 0; i--) {\n const textEdit = textEdits[i];\n const textEditStartLineNumber = lengthGetLineCount(textEdit.startOffset) + 1;\n const textEditEndLineNumber = lengthGetLineCount(textEdit.endOffset) + 1;\n const newLengthLineCount = lengthGetLineCount(textEdit.newLength);\n const delta = newLengthLineCount - (textEditEndLineNumber - textEditStartLineNumber);\n\n if (textEditEndLineNumber < rangeStartLineNumber) {\n // the text edit is before us\n rangeStartLineNumber += delta;\n rangeEndLineNumberEx += delta;\n } else if (textEditStartLineNumber > rangeEndLineNumberEx) {\n // the text edit is after us\n // NOOP\n } else if (textEditStartLineNumber < rangeStartLineNumber && rangeEndLineNumberEx < textEditEndLineNumber) {\n // the range is fully contained in the text edit\n return undefined;\n } else if (textEditStartLineNumber < rangeStartLineNumber && textEditEndLineNumber <= rangeEndLineNumberEx) {\n // the text edit ends inside our range\n rangeStartLineNumber = textEditEndLineNumber + 1;\n rangeStartLineNumber += delta;\n rangeEndLineNumberEx += delta;\n } else if (rangeStartLineNumber <= textEditStartLineNumber && textEditEndLineNumber < rangeStartLineNumber) {\n // the text edit starts inside our range\n rangeEndLineNumberEx = textEditStartLineNumber;\n } else {\n rangeEndLineNumberEx += delta;\n }\n }\n\n return new LineRange(rangeStartLineNumber, rangeEndLineNumberEx);\n}\n\nfunction applyModifiedEditsToLineRangeMappings(changes: readonly LineRangeMapping[], textEdits: TextEditInfo[], originalTextModel: ITextModel, modifiedTextModel: ITextModel): LineRangeMapping[] {\n const diffTextEdits = changes.flatMap(c => c.innerChanges!.map(c => new TextEditInfo(\n positionToLength(c.originalRange.getStartPosition()),\n positionToLength(c.originalRange.getEndPosition()),\n lengthOfRange(c.modifiedRange).toLength(),\n )));\n\n const combined = combineTextEditInfos(diffTextEdits, textEdits);\n\n let lastOriginalEndOffset = lengthZero;\n let lastModifiedEndOffset = lengthZero;\n const rangeMappings = combined.map(c => {\n const modifiedStartOffset = lengthAdd(lastModifiedEndOffset, lengthDiffNonNegative(lastOriginalEndOffset, c.startOffset));\n lastOriginalEndOffset = c.endOffset;\n lastModifiedEndOffset = lengthAdd(modifiedStartOffset, c.newLength);\n\n return new RangeMapping(\n Range.fromPositions(lengthToPosition(c.startOffset), lengthToPosition(c.endOffset)),\n Range.fromPositions(lengthToPosition(modifiedStartOffset), lengthToPosition(lastModifiedEndOffset)),\n );\n });\n\n const newChanges = lineRangeMappingFromRangeMappings(\n rangeMappings,\n originalTextModel.getLinesContent(),\n modifiedTextModel.getLinesContent(),\n );\n return newChanges;\n}\n*/\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h, reset } from '../../../../../base/browser/dom.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, observableFromEvent, observableSignal, observableSignalFromEvent, observableValue, transaction } from '../../../../../base/common/observable.js';\nimport { LineRange } from '../../../../common/core/lineRange.js';\nimport { OffsetRange } from '../../../../common/core/offsetRange.js';\nexport class EditorGutter extends Disposable {\n constructor(_editor, _domNode, itemProvider) {\n super();\n this._editor = _editor;\n this._domNode = _domNode;\n this.itemProvider = itemProvider;\n this.scrollTop = observableFromEvent(this._editor.onDidScrollChange, (e) => /** @description editor.onDidScrollChange */ this._editor.getScrollTop());\n this.isScrollTopZero = this.scrollTop.map((scrollTop) => /** @description isScrollTopZero */ scrollTop === 0);\n this.modelAttached = observableFromEvent(this._editor.onDidChangeModel, (e) => /** @description editor.onDidChangeModel */ this._editor.hasModel());\n this.editorOnDidChangeViewZones = observableSignalFromEvent('onDidChangeViewZones', this._editor.onDidChangeViewZones);\n this.editorOnDidContentSizeChange = observableSignalFromEvent('onDidContentSizeChange', this._editor.onDidContentSizeChange);\n this.domNodeSizeChanged = observableSignal('domNodeSizeChanged');\n this.views = new Map();\n this._domNode.className = 'gutter monaco-editor';\n const scrollDecoration = this._domNode.appendChild(h('div.scroll-decoration', { role: 'presentation', ariaHidden: 'true', style: { width: '100%' } })\n .root);\n const o = new ResizeObserver(() => {\n transaction(tx => {\n /** @description ResizeObserver: size changed */\n this.domNodeSizeChanged.trigger(tx);\n });\n });\n o.observe(this._domNode);\n this._register(toDisposable(() => o.disconnect()));\n this._register(autorun(reader => {\n /** @description update scroll decoration */\n scrollDecoration.className = this.isScrollTopZero.read(reader) ? '' : 'scroll-decoration';\n }));\n this._register(autorun(reader => /** @description EditorGutter.Render */ this.render(reader)));\n }\n dispose() {\n super.dispose();\n reset(this._domNode);\n }\n render(reader) {\n if (!this.modelAttached.read(reader)) {\n return;\n }\n this.domNodeSizeChanged.read(reader);\n this.editorOnDidChangeViewZones.read(reader);\n this.editorOnDidContentSizeChange.read(reader);\n const scrollTop = this.scrollTop.read(reader);\n const visibleRanges = this._editor.getVisibleRanges();\n const unusedIds = new Set(this.views.keys());\n const viewRange = OffsetRange.ofStartAndLength(0, this._domNode.clientHeight);\n if (!viewRange.isEmpty) {\n for (const visibleRange of visibleRanges) {\n const visibleRange2 = new LineRange(visibleRange.startLineNumber, visibleRange.endLineNumber + 1);\n const gutterItems = this.itemProvider.getIntersectingGutterItems(visibleRange2, reader);\n transaction(tx => {\n /** EditorGutter.render */\n for (const gutterItem of gutterItems) {\n if (!gutterItem.range.intersect(visibleRange2)) {\n continue;\n }\n unusedIds.delete(gutterItem.id);\n let view = this.views.get(gutterItem.id);\n if (!view) {\n const viewDomNode = document.createElement('div');\n this._domNode.appendChild(viewDomNode);\n const gutterItemObs = observableValue('item', gutterItem);\n const itemView = this.itemProvider.createView(gutterItemObs, viewDomNode);\n view = new ManagedGutterItemView(gutterItemObs, itemView, viewDomNode);\n this.views.set(gutterItem.id, view);\n }\n else {\n view.item.set(gutterItem, tx);\n }\n const top = gutterItem.range.startLineNumber <= this._editor.getModel().getLineCount()\n ? this._editor.getTopForLineNumber(gutterItem.range.startLineNumber, true) - scrollTop\n : this._editor.getBottomForLineNumber(gutterItem.range.startLineNumber - 1, false) - scrollTop;\n const bottom = gutterItem.range.isEmpty\n // Don't trust that `getBottomForLineNumber` for the previous line equals `getTopForLineNumber` for the current one.\n ? top\n : (this._editor.getBottomForLineNumber(gutterItem.range.endLineNumberExclusive - 1, true) - scrollTop);\n const height = bottom - top;\n view.domNode.style.top = `${top}px`;\n view.domNode.style.height = `${height}px`;\n view.gutterItemView.layout(OffsetRange.ofStartAndLength(top, height), viewRange);\n }\n });\n }\n }\n for (const id of unusedIds) {\n const view = this.views.get(id);\n view.gutterItemView.dispose();\n this._domNode.removeChild(view.domNode);\n this.views.delete(id);\n }\n }\n}\nclass ManagedGutterItemView {\n constructor(item, gutterItemView, domNode) {\n this.item = item;\n this.gutterItemView = gutterItemView;\n this.domNode = domNode;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { EventType, addDisposableListener, h } from '../../../../../base/browser/dom.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, derived, observableFromEvent, observableValue } from '../../../../../base/common/observable.js';\nimport { derivedDisposable, derivedWithSetter } from '../../../../../base/common/observableInternal/derived.js';\nimport { DiffEditorSash } from '../components/diffEditorSash.js';\nimport { appendRemoveOnDispose, applyStyle, prependRemoveOnDispose } from '../utils.js';\nimport { EditorGutter } from '../utils/editorGutter.js';\nimport { ActionRunnerWithContext } from '../../multiDiffEditor/utils.js';\nimport { LineRange, LineRangeSet } from '../../../../common/core/lineRange.js';\nimport { OffsetRange } from '../../../../common/core/offsetRange.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { TextEdit } from '../../../../common/core/textEdit.js';\nimport { DetailedLineRangeMapping } from '../../../../common/diff/rangeMapping.js';\nimport { TextModelText } from '../../../../common/model/textModelText.js';\nimport { MenuWorkbenchToolBar } from '../../../../../platform/actions/browser/toolbar.js';\nimport { IMenuService, MenuId } from '../../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { WorkbenchHoverDelegate } from '../../../../../platform/hover/browser/hover.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nconst emptyArr = [];\nconst width = 35;\nlet DiffEditorGutter = class DiffEditorGutter extends Disposable {\n constructor(diffEditorRoot, _diffModel, _editors, _options, _sashLayout, _boundarySashes, _instantiationService, _contextKeyService, _menuService) {\n super();\n this._diffModel = _diffModel;\n this._editors = _editors;\n this._options = _options;\n this._sashLayout = _sashLayout;\n this._boundarySashes = _boundarySashes;\n this._instantiationService = _instantiationService;\n this._contextKeyService = _contextKeyService;\n this._menuService = _menuService;\n this._menu = this._register(this._menuService.createMenu(MenuId.DiffEditorHunkToolbar, this._contextKeyService));\n this._actions = observableFromEvent(this._menu.onDidChange, () => this._menu.getActions());\n this._hasActions = this._actions.map(a => a.length > 0);\n this._showSash = derived(this, reader => this._options.renderSideBySide.read(reader) && this._hasActions.read(reader));\n this.width = derived(this, reader => this._hasActions.read(reader) ? width : 0);\n this.elements = h('div.gutter@gutter', { style: { position: 'absolute', height: '100%', width: width + 'px' } }, []);\n this._currentDiff = derived(this, (reader) => {\n var _a;\n const model = this._diffModel.read(reader);\n if (!model) {\n return undefined;\n }\n const mappings = (_a = model.diff.read(reader)) === null || _a === void 0 ? void 0 : _a.mappings;\n const cursorPosition = this._editors.modifiedCursor.read(reader);\n if (!cursorPosition) {\n return undefined;\n }\n return mappings === null || mappings === void 0 ? void 0 : mappings.find(m => m.lineRangeMapping.modified.contains(cursorPosition.lineNumber));\n });\n this._selectedDiffs = derived(this, (reader) => {\n /** @description selectedDiffs */\n const model = this._diffModel.read(reader);\n const diff = model === null || model === void 0 ? void 0 : model.diff.read(reader);\n // Return `emptyArr` because it is a constant. [] is always a new array and would trigger a change.\n if (!diff) {\n return emptyArr;\n }\n const selections = this._editors.modifiedSelections.read(reader);\n if (selections.every(s => s.isEmpty())) {\n return emptyArr;\n }\n const selectedLineNumbers = new LineRangeSet(selections.map(s => LineRange.fromRangeInclusive(s)));\n const selectedMappings = diff.mappings.filter(m => m.lineRangeMapping.innerChanges && selectedLineNumbers.intersects(m.lineRangeMapping.modified));\n const result = selectedMappings.map(mapping => ({\n mapping,\n rangeMappings: mapping.lineRangeMapping.innerChanges.filter(c => selections.some(s => Range.areIntersecting(c.modifiedRange, s)))\n }));\n if (result.length === 0 || result.every(r => r.rangeMappings.length === 0)) {\n return emptyArr;\n }\n return result;\n });\n this._register(prependRemoveOnDispose(diffEditorRoot, this.elements.root));\n this._register(addDisposableListener(this.elements.root, 'click', () => {\n this._editors.modified.focus();\n }));\n this._register(applyStyle(this.elements.root, { display: this._hasActions.map(a => a ? 'block' : 'none') }));\n derivedDisposable(this, reader => {\n const showSash = this._showSash.read(reader);\n return !showSash ? undefined : new DiffEditorSash(diffEditorRoot, this._sashLayout.dimensions, this._options.enableSplitViewResizing, this._boundarySashes, derivedWithSetter(this, reader => this._sashLayout.sashLeft.read(reader) - width, (v, tx) => this._sashLayout.sashLeft.set(v + width, tx)), () => this._sashLayout.resetSash());\n }).recomputeInitiallyAndOnChange(this._store);\n this._register(new EditorGutter(this._editors.modified, this.elements.root, {\n getIntersectingGutterItems: (range, reader) => {\n const model = this._diffModel.read(reader);\n if (!model) {\n return [];\n }\n const diffs = model.diff.read(reader);\n if (!diffs) {\n return [];\n }\n const selection = this._selectedDiffs.read(reader);\n if (selection.length > 0) {\n const m = DetailedLineRangeMapping.fromRangeMappings(selection.flatMap(s => s.rangeMappings));\n return [\n new DiffGutterItem(m, true, MenuId.DiffEditorSelectionToolbar, undefined, model.model.original.uri, model.model.modified.uri)\n ];\n }\n const currentDiff = this._currentDiff.read(reader);\n return diffs.mappings.map(m => new DiffGutterItem(m.lineRangeMapping.withInnerChangesFromLineRanges(), m.lineRangeMapping === (currentDiff === null || currentDiff === void 0 ? void 0 : currentDiff.lineRangeMapping), MenuId.DiffEditorHunkToolbar, undefined, model.model.original.uri, model.model.modified.uri));\n },\n createView: (item, target) => {\n return this._instantiationService.createInstance(DiffToolBar, item, target, this);\n },\n }));\n this._register(addDisposableListener(this.elements.gutter, EventType.MOUSE_WHEEL, (e) => {\n if (this._editors.modified.getOption(103 /* EditorOption.scrollbar */).handleMouseWheel) {\n this._editors.modified.delegateScrollFromMouseWheelEvent(e);\n }\n }, { passive: false }));\n }\n computeStagedValue(mapping) {\n var _a;\n const c = (_a = mapping.innerChanges) !== null && _a !== void 0 ? _a : [];\n const modified = new TextModelText(this._editors.modifiedModel.get());\n const original = new TextModelText(this._editors.original.getModel());\n const edit = new TextEdit(c.map(c => c.toTextEdit(modified)));\n const value = edit.apply(original);\n return value;\n }\n layout(left) {\n this.elements.gutter.style.left = left + 'px';\n }\n};\nDiffEditorGutter = __decorate([\n __param(6, IInstantiationService),\n __param(7, IContextKeyService),\n __param(8, IMenuService)\n], DiffEditorGutter);\nexport { DiffEditorGutter };\nclass DiffGutterItem {\n constructor(mapping, showAlways, menuId, rangeOverride, originalUri, modifiedUri) {\n this.mapping = mapping;\n this.showAlways = showAlways;\n this.menuId = menuId;\n this.rangeOverride = rangeOverride;\n this.originalUri = originalUri;\n this.modifiedUri = modifiedUri;\n }\n get id() { return this.mapping.modified.toString(); }\n get range() { var _a; return (_a = this.rangeOverride) !== null && _a !== void 0 ? _a : this.mapping.modified; }\n}\nlet DiffToolBar = class DiffToolBar extends Disposable {\n constructor(_item, target, gutter, instantiationService) {\n super();\n this._item = _item;\n this._elements = h('div.gutterItem', { style: { height: '20px', width: '34px' } }, [\n h('div.background@background', {}, []),\n h('div.buttons@buttons', {}, []),\n ]);\n this._showAlways = this._item.map(this, item => item.showAlways);\n this._menuId = this._item.map(this, item => item.menuId);\n this._isSmall = observableValue(this, false);\n this._lastItemRange = undefined;\n this._lastViewRange = undefined;\n const hoverDelegate = this._register(instantiationService.createInstance(WorkbenchHoverDelegate, 'element', true, { position: { hoverPosition: 1 /* HoverPosition.RIGHT */ } }));\n this._register(appendRemoveOnDispose(target, this._elements.root));\n this._register(autorun(reader => {\n /** @description update showAlways */\n const showAlways = this._showAlways.read(reader);\n this._elements.root.classList.toggle('noTransition', true);\n this._elements.root.classList.toggle('showAlways', showAlways);\n setTimeout(() => {\n this._elements.root.classList.toggle('noTransition', false);\n }, 0);\n }));\n this._register(autorunWithStore((reader, store) => {\n this._elements.buttons.replaceChildren();\n const i = store.add(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.buttons, this._menuId.read(reader), {\n orientation: 1 /* ActionsOrientation.VERTICAL */,\n hoverDelegate,\n toolbarOptions: {\n primaryGroup: g => g.startsWith('primary'),\n },\n overflowBehavior: { maxItems: this._isSmall.read(reader) ? 1 : 3 },\n hiddenItemStrategy: 0 /* HiddenItemStrategy.Ignore */,\n actionRunner: new ActionRunnerWithContext(() => {\n const item = this._item.get();\n const mapping = item.mapping;\n return {\n mapping,\n originalWithModifiedChanges: gutter.computeStagedValue(mapping),\n originalUri: item.originalUri,\n modifiedUri: item.modifiedUri,\n };\n }),\n menuOptions: {\n shouldForwardArgs: true,\n },\n }));\n store.add(i.onDidChangeMenuItems(() => {\n if (this._lastItemRange) {\n this.layout(this._lastItemRange, this._lastViewRange);\n }\n }));\n }));\n }\n layout(itemRange, viewRange) {\n this._lastItemRange = itemRange;\n this._lastViewRange = viewRange;\n let itemHeight = this._elements.buttons.clientHeight;\n this._isSmall.set(this._item.get().mapping.original.startLineNumber === 1 && itemRange.length < 30, undefined);\n // Item might have changed\n itemHeight = this._elements.buttons.clientHeight;\n const middleHeight = itemRange.length / 2 - itemHeight / 2;\n const margin = itemHeight;\n let effectiveCheckboxTop = itemRange.start + middleHeight;\n const preferredViewPortRange = OffsetRange.tryCreate(margin, viewRange.endExclusive - margin - itemHeight);\n const preferredParentRange = OffsetRange.tryCreate(itemRange.start + margin, itemRange.endExclusive - itemHeight - margin);\n if (preferredParentRange && preferredViewPortRange && preferredParentRange.start < preferredParentRange.endExclusive) {\n effectiveCheckboxTop = preferredViewPortRange.clip(effectiveCheckboxTop);\n effectiveCheckboxTop = preferredParentRange.clip(effectiveCheckboxTop);\n }\n this._elements.buttons.style.top = `${effectiveCheckboxTop - itemRange.start}px`;\n }\n};\nDiffToolBar = __decorate([\n __param(3, IInstantiationService)\n], DiffToolBar);\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 { addDisposableListener, h, EventType } from '../../../../../base/browser/dom.js';\nimport { renderIcon } from '../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { autorunWithStore, derived } from '../../../../../base/common/observable.js';\nimport { LineRange, LineRangeSet } from '../../../../common/core/lineRange.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { LineRangeMapping } from '../../../../common/diff/rangeMapping.js';\nimport { GlyphMarginLane } from '../../../../common/model.js';\nimport { localize } from '../../../../../nls.js';\nconst emptyArr = [];\nexport class RevertButtonsFeature extends Disposable {\n constructor(_editors, _diffModel, _options, _widget) {\n super();\n this._editors = _editors;\n this._diffModel = _diffModel;\n this._options = _options;\n this._widget = _widget;\n this._selectedDiffs = derived(this, (reader) => {\n /** @description selectedDiffs */\n const model = this._diffModel.read(reader);\n const diff = model === null || model === void 0 ? void 0 : model.diff.read(reader);\n // Return `emptyArr` because it is a constant. [] is always a new array and would trigger a change.\n if (!diff) {\n return emptyArr;\n }\n const selections = this._editors.modifiedSelections.read(reader);\n if (selections.every(s => s.isEmpty())) {\n return emptyArr;\n }\n const selectedLineNumbers = new LineRangeSet(selections.map(s => LineRange.fromRangeInclusive(s)));\n const selectedMappings = diff.mappings.filter(m => m.lineRangeMapping.innerChanges && selectedLineNumbers.intersects(m.lineRangeMapping.modified));\n const result = selectedMappings.map(mapping => ({\n mapping,\n rangeMappings: mapping.lineRangeMapping.innerChanges.filter(c => selections.some(s => Range.areIntersecting(c.modifiedRange, s)))\n }));\n if (result.length === 0 || result.every(r => r.rangeMappings.length === 0)) {\n return emptyArr;\n }\n return result;\n });\n this._register(autorunWithStore((reader, store) => {\n if (!this._options.shouldRenderOldRevertArrows.read(reader)) {\n return;\n }\n const model = this._diffModel.read(reader);\n const diff = model === null || model === void 0 ? void 0 : model.diff.read(reader);\n if (!model || !diff) {\n return;\n }\n if (model.movedTextToCompare.read(reader)) {\n return;\n }\n const glyphWidgetsModified = [];\n const selectedDiffs = this._selectedDiffs.read(reader);\n const selectedDiffsSet = new Set(selectedDiffs.map(d => d.mapping));\n if (selectedDiffs.length > 0) {\n // The button to revert the selection\n const selections = this._editors.modifiedSelections.read(reader);\n const btn = store.add(new RevertButton(selections[selections.length - 1].positionLineNumber, this._widget, selectedDiffs.flatMap(d => d.rangeMappings), true));\n this._editors.modified.addGlyphMarginWidget(btn);\n glyphWidgetsModified.push(btn);\n }\n for (const m of diff.mappings) {\n if (selectedDiffsSet.has(m)) {\n continue;\n }\n if (!m.lineRangeMapping.modified.isEmpty && m.lineRangeMapping.innerChanges) {\n const btn = store.add(new RevertButton(m.lineRangeMapping.modified.startLineNumber, this._widget, m.lineRangeMapping, false));\n this._editors.modified.addGlyphMarginWidget(btn);\n glyphWidgetsModified.push(btn);\n }\n }\n store.add(toDisposable(() => {\n for (const w of glyphWidgetsModified) {\n this._editors.modified.removeGlyphMarginWidget(w);\n }\n }));\n }));\n }\n}\nexport class RevertButton extends Disposable {\n getId() { return this._id; }\n constructor(_lineNumber, _widget, _diffs, _revertSelection) {\n super();\n this._lineNumber = _lineNumber;\n this._widget = _widget;\n this._diffs = _diffs;\n this._revertSelection = _revertSelection;\n this._id = `revertButton${RevertButton.counter++}`;\n this._domNode = h('div.revertButton', {\n title: this._revertSelection\n ? localize('revertSelectedChanges', 'Revert Selected Changes')\n : localize('revertChange', 'Revert Change')\n }, [renderIcon(Codicon.arrowRight)]).root;\n this._register(addDisposableListener(this._domNode, EventType.MOUSE_DOWN, e => {\n // don't prevent context menu from showing up\n if (e.button !== 2) {\n e.stopPropagation();\n e.preventDefault();\n }\n }));\n this._register(addDisposableListener(this._domNode, EventType.MOUSE_UP, e => {\n e.stopPropagation();\n e.preventDefault();\n }));\n this._register(addDisposableListener(this._domNode, EventType.CLICK, (e) => {\n if (this._diffs instanceof LineRangeMapping) {\n this._widget.revert(this._diffs);\n }\n else {\n this._widget.revertRangeMappings(this._diffs);\n }\n e.stopPropagation();\n e.preventDefault();\n }));\n }\n /**\n * Get the dom node of the glyph widget.\n */\n getDomNode() {\n return this._domNode;\n }\n /**\n * Get the placement of the glyph widget.\n */\n getPosition() {\n return {\n lane: GlyphMarginLane.Right,\n range: {\n startColumn: 1,\n startLineNumber: this._lineNumber,\n endColumn: 1,\n endLineNumber: this._lineNumber,\n },\n zIndex: 10001,\n };\n }\n}\nRevertButton.counter = 0;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nexport class DelegatingEditor extends Disposable {\n constructor() {\n super(...arguments);\n this._id = ++DelegatingEditor.idCounter;\n this._onDidDispose = this._register(new Emitter());\n this.onDidDispose = this._onDidDispose.event;\n // #endregion\n }\n getId() { return this.getEditorType() + ':v2:' + this._id; }\n // #region editorBrowser.IDiffEditor: Delegating to modified Editor\n getVisibleColumnFromPosition(position) {\n return this._targetEditor.getVisibleColumnFromPosition(position);\n }\n getPosition() {\n return this._targetEditor.getPosition();\n }\n setPosition(position, source = 'api') {\n this._targetEditor.setPosition(position, source);\n }\n revealLine(lineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLine(lineNumber, scrollType);\n }\n revealLineInCenter(lineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLineInCenter(lineNumber, scrollType);\n }\n revealLineInCenterIfOutsideViewport(lineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLineInCenterIfOutsideViewport(lineNumber, scrollType);\n }\n revealLineNearTop(lineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLineNearTop(lineNumber, scrollType);\n }\n revealPosition(position, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealPosition(position, scrollType);\n }\n revealPositionInCenter(position, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealPositionInCenter(position, scrollType);\n }\n revealPositionInCenterIfOutsideViewport(position, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealPositionInCenterIfOutsideViewport(position, scrollType);\n }\n revealPositionNearTop(position, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealPositionNearTop(position, scrollType);\n }\n getSelection() {\n return this._targetEditor.getSelection();\n }\n getSelections() {\n return this._targetEditor.getSelections();\n }\n setSelection(something, source = 'api') {\n this._targetEditor.setSelection(something, source);\n }\n setSelections(ranges, source = 'api') {\n this._targetEditor.setSelections(ranges, source);\n }\n revealLines(startLineNumber, endLineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLines(startLineNumber, endLineNumber, scrollType);\n }\n revealLinesInCenter(startLineNumber, endLineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLinesInCenter(startLineNumber, endLineNumber, scrollType);\n }\n revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType);\n }\n revealLinesNearTop(startLineNumber, endLineNumber, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealLinesNearTop(startLineNumber, endLineNumber, scrollType);\n }\n revealRange(range, scrollType = 0 /* ScrollType.Smooth */, revealVerticalInCenter = false, revealHorizontal = true) {\n this._targetEditor.revealRange(range, scrollType, revealVerticalInCenter, revealHorizontal);\n }\n revealRangeInCenter(range, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealRangeInCenter(range, scrollType);\n }\n revealRangeInCenterIfOutsideViewport(range, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealRangeInCenterIfOutsideViewport(range, scrollType);\n }\n revealRangeNearTop(range, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealRangeNearTop(range, scrollType);\n }\n revealRangeNearTopIfOutsideViewport(range, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealRangeNearTopIfOutsideViewport(range, scrollType);\n }\n revealRangeAtTop(range, scrollType = 0 /* ScrollType.Smooth */) {\n this._targetEditor.revealRangeAtTop(range, scrollType);\n }\n getSupportedActions() {\n return this._targetEditor.getSupportedActions();\n }\n focus() {\n this._targetEditor.focus();\n }\n trigger(source, handlerId, payload) {\n this._targetEditor.trigger(source, handlerId, payload);\n }\n createDecorationsCollection(decorations) {\n return this._targetEditor.createDecorationsCollection(decorations);\n }\n changeDecorations(callback) {\n return this._targetEditor.changeDecorations(callback);\n }\n}\nDelegatingEditor.idCounter = 0;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { derived, observableFromEvent, observableValue } from '../../../../base/common/observable.js';\nimport { diffEditorDefaultOptions } from '../../../common/config/diffEditor.js';\nimport { clampedFloat, clampedInt, boolean as validateBooleanOption, stringSet as validateStringSetOption } from '../../../common/config/editorOptions.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nlet DiffEditorOptions = class DiffEditorOptions {\n get editorOptions() { return this._options; }\n constructor(options, _accessibilityService) {\n this._accessibilityService = _accessibilityService;\n this._diffEditorWidth = observableValue(this, 0);\n this._screenReaderMode = observableFromEvent(this._accessibilityService.onDidChangeScreenReaderOptimized, () => this._accessibilityService.isScreenReaderOptimized());\n this.couldShowInlineViewBecauseOfSize = derived(this, reader => this._options.read(reader).renderSideBySide && this._diffEditorWidth.read(reader) <= this._options.read(reader).renderSideBySideInlineBreakpoint);\n this.renderOverviewRuler = derived(this, reader => this._options.read(reader).renderOverviewRuler);\n this.renderSideBySide = derived(this, reader => this._options.read(reader).renderSideBySide\n && !(this._options.read(reader).useInlineViewWhenSpaceIsLimited && this.couldShowInlineViewBecauseOfSize.read(reader) && !this._screenReaderMode.read(reader)));\n this.readOnly = derived(this, reader => this._options.read(reader).readOnly);\n this.shouldRenderOldRevertArrows = derived(this, reader => {\n if (!this._options.read(reader).renderMarginRevertIcon) {\n return false;\n }\n if (!this.renderSideBySide.read(reader)) {\n return false;\n }\n if (this.readOnly.read(reader)) {\n return false;\n }\n if (this.shouldRenderGutterMenu.read(reader)) {\n return false;\n }\n return true;\n });\n this.shouldRenderGutterMenu = derived(this, reader => this._options.read(reader).renderGutterMenu);\n this.renderIndicators = derived(this, reader => this._options.read(reader).renderIndicators);\n this.enableSplitViewResizing = derived(this, reader => this._options.read(reader).enableSplitViewResizing);\n this.splitViewDefaultRatio = derived(this, reader => this._options.read(reader).splitViewDefaultRatio);\n this.ignoreTrimWhitespace = derived(this, reader => this._options.read(reader).ignoreTrimWhitespace);\n this.maxComputationTimeMs = derived(this, reader => this._options.read(reader).maxComputationTime);\n this.showMoves = derived(this, reader => this._options.read(reader).experimental.showMoves && this.renderSideBySide.read(reader));\n this.isInEmbeddedEditor = derived(this, reader => this._options.read(reader).isInEmbeddedEditor);\n this.diffWordWrap = derived(this, reader => this._options.read(reader).diffWordWrap);\n this.originalEditable = derived(this, reader => this._options.read(reader).originalEditable);\n this.diffCodeLens = derived(this, reader => this._options.read(reader).diffCodeLens);\n this.accessibilityVerbose = derived(this, reader => this._options.read(reader).accessibilityVerbose);\n this.diffAlgorithm = derived(this, reader => this._options.read(reader).diffAlgorithm);\n this.showEmptyDecorations = derived(this, reader => this._options.read(reader).experimental.showEmptyDecorations);\n this.onlyShowAccessibleDiffViewer = derived(this, reader => this._options.read(reader).onlyShowAccessibleDiffViewer);\n this.hideUnchangedRegions = derived(this, reader => this._options.read(reader).hideUnchangedRegions.enabled);\n this.hideUnchangedRegionsRevealLineCount = derived(this, reader => this._options.read(reader).hideUnchangedRegions.revealLineCount);\n this.hideUnchangedRegionsContextLineCount = derived(this, reader => this._options.read(reader).hideUnchangedRegions.contextLineCount);\n this.hideUnchangedRegionsMinimumLineCount = derived(this, reader => this._options.read(reader).hideUnchangedRegions.minimumLineCount);\n const optionsCopy = { ...options, ...validateDiffEditorOptions(options, diffEditorDefaultOptions) };\n this._options = observableValue(this, optionsCopy);\n }\n updateOptions(changedOptions) {\n const newDiffEditorOptions = validateDiffEditorOptions(changedOptions, this._options.get());\n const newOptions = { ...this._options.get(), ...changedOptions, ...newDiffEditorOptions };\n this._options.set(newOptions, undefined, { changedOptions: changedOptions });\n }\n setWidth(width) {\n this._diffEditorWidth.set(width, undefined);\n }\n};\nDiffEditorOptions = __decorate([\n __param(1, IAccessibilityService)\n], DiffEditorOptions);\nexport { DiffEditorOptions };\nfunction validateDiffEditorOptions(options, defaults) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n return {\n enableSplitViewResizing: validateBooleanOption(options.enableSplitViewResizing, defaults.enableSplitViewResizing),\n splitViewDefaultRatio: clampedFloat(options.splitViewDefaultRatio, 0.5, 0.1, 0.9),\n renderSideBySide: validateBooleanOption(options.renderSideBySide, defaults.renderSideBySide),\n renderMarginRevertIcon: validateBooleanOption(options.renderMarginRevertIcon, defaults.renderMarginRevertIcon),\n maxComputationTime: clampedInt(options.maxComputationTime, defaults.maxComputationTime, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n maxFileSize: clampedInt(options.maxFileSize, defaults.maxFileSize, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n ignoreTrimWhitespace: validateBooleanOption(options.ignoreTrimWhitespace, defaults.ignoreTrimWhitespace),\n renderIndicators: validateBooleanOption(options.renderIndicators, defaults.renderIndicators),\n originalEditable: validateBooleanOption(options.originalEditable, defaults.originalEditable),\n diffCodeLens: validateBooleanOption(options.diffCodeLens, defaults.diffCodeLens),\n renderOverviewRuler: validateBooleanOption(options.renderOverviewRuler, defaults.renderOverviewRuler),\n diffWordWrap: validateStringSetOption(options.diffWordWrap, defaults.diffWordWrap, ['off', 'on', 'inherit']),\n diffAlgorithm: validateStringSetOption(options.diffAlgorithm, defaults.diffAlgorithm, ['legacy', 'advanced'], { 'smart': 'legacy', 'experimental': 'advanced' }),\n accessibilityVerbose: validateBooleanOption(options.accessibilityVerbose, defaults.accessibilityVerbose),\n experimental: {\n showMoves: validateBooleanOption((_a = options.experimental) === null || _a === void 0 ? void 0 : _a.showMoves, defaults.experimental.showMoves),\n showEmptyDecorations: validateBooleanOption((_b = options.experimental) === null || _b === void 0 ? void 0 : _b.showEmptyDecorations, defaults.experimental.showEmptyDecorations),\n },\n hideUnchangedRegions: {\n enabled: validateBooleanOption((_d = (_c = options.hideUnchangedRegions) === null || _c === void 0 ? void 0 : _c.enabled) !== null && _d !== void 0 ? _d : (_e = options.experimental) === null || _e === void 0 ? void 0 : _e.collapseUnchangedRegions, defaults.hideUnchangedRegions.enabled),\n contextLineCount: clampedInt((_f = options.hideUnchangedRegions) === null || _f === void 0 ? void 0 : _f.contextLineCount, defaults.hideUnchangedRegions.contextLineCount, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n minimumLineCount: clampedInt((_g = options.hideUnchangedRegions) === null || _g === void 0 ? void 0 : _g.minimumLineCount, defaults.hideUnchangedRegions.minimumLineCount, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n revealLineCount: clampedInt((_h = options.hideUnchangedRegions) === null || _h === void 0 ? void 0 : _h.revealLineCount, defaults.hideUnchangedRegions.revealLineCount, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n },\n isInEmbeddedEditor: validateBooleanOption(options.isInEmbeddedEditor, defaults.isInEmbeddedEditor),\n onlyShowAccessibleDiffViewer: validateBooleanOption(options.onlyShowAccessibleDiffViewer, defaults.onlyShowAccessibleDiffViewer),\n renderSideBySideInlineBreakpoint: clampedInt(options.renderSideBySideInlineBreakpoint, defaults.renderSideBySideInlineBreakpoint, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n useInlineViewWhenSpaceIsLimited: validateBooleanOption(options.useInlineViewWhenSpaceIsLimited, defaults.useInlineViewWhenSpaceIsLimited),\n renderGutterMenu: validateBooleanOption(options.renderGutterMenu, defaults.renderGutterMenu),\n };\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\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 { findLast } from '../../../../base/common/arraysFind.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, derived, observableFromEvent, observableValue, recomputeInitiallyAndOnChange, subtransaction, transaction } from '../../../../base/common/observable.js';\nimport { derivedDisposable } from '../../../../base/common/observableInternal/derived.js';\nimport './style.css';\nimport { EditorExtensionsRegistry } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { StableEditorScrollState } from '../../stableEditorScroll.js';\nimport { CodeEditorWidget } from '../codeEditor/codeEditorWidget.js';\nimport { AccessibleDiffViewer, AccessibleDiffViewerModelFromEditors } from './components/accessibleDiffViewer.js';\nimport { DiffEditorDecorations } from './components/diffEditorDecorations.js';\nimport { DiffEditorSash, SashLayout } from './components/diffEditorSash.js';\nimport { DiffEditorViewZones } from './components/diffEditorViewZones/diffEditorViewZones.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 { ObservableElementSizeObserver, applyStyle, applyViewZones, readHotReloadableExport, translatePosition } from './utils.js';\nimport { bindContextKey } from '../../../../platform/observable/common/platformObservableUtils.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.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 { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { DiffEditorEditors } from './components/diffEditorEditors.js';\nimport { DelegatingEditor } from './delegatingEditorImpl.js';\nimport { DiffEditorOptions } from './diffEditorOptions.js';\nimport { DiffEditorViewModel } from './diffEditorViewModel.js';\nlet DiffEditorWidget = class DiffEditorWidget extends DelegatingEditor {\n get onDidContentSizeChange() { return this._editors.onDidContentSizeChange; }\n constructor(_domElement, options, codeEditorWidgetOptions, _parentContextKeyService, _parentInstantiationService, codeEditorService, _accessibilitySignalService, _editorProgressService) {\n var _a;\n super();\n this._domElement = _domElement;\n this._parentContextKeyService = _parentContextKeyService;\n this._parentInstantiationService = _parentInstantiationService;\n this._accessibilitySignalService = _accessibilitySignalService;\n this._editorProgressService = _editorProgressService;\n this.elements = h('div.monaco-diff-editor.side-by-side', { style: { position: 'relative', height: '100%' } }, [\n h('div.editor.original@original', { style: { position: 'absolute', height: '100%', } }),\n h('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', } }),\n h('div.accessibleDiffViewer@accessibleDiffViewer', { style: { position: 'absolute', height: '100%' } }),\n ]);\n this._diffModel = observableValue(this, undefined);\n this._shouldDisposeDiffModel = false;\n this.onDidChangeModel = Event.fromObservableLight(this._diffModel);\n this._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._domElement));\n this._instantiationService = this._register(this._parentInstantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n this._boundarySashes = observableValue(this, undefined);\n this._accessibleDiffViewerShouldBeVisible = observableValue(this, false);\n this._accessibleDiffViewerVisible = derived(this, reader => this._options.onlyShowAccessibleDiffViewer.read(reader)\n ? true\n : this._accessibleDiffViewerShouldBeVisible.read(reader));\n this._movedBlocksLinesPart = observableValue(this, undefined);\n this._layoutInfo = derived(this, reader => {\n var _a, _b, _c, _d, _e;\n const fullWidth = this._rootSizeObserver.width.read(reader);\n const fullHeight = this._rootSizeObserver.height.read(reader);\n if (this._rootSizeObserver.automaticLayout) {\n this.elements.root.style.height = '100%';\n }\n else {\n this.elements.root.style.height = fullHeight + 'px';\n }\n const sash = this._sash.read(reader);\n const gutter = this._gutter.read(reader);\n const gutterWidth = (_a = gutter === null || gutter === void 0 ? void 0 : gutter.width.read(reader)) !== null && _a !== void 0 ? _a : 0;\n const overviewRulerPartWidth = (_c = (_b = this._overviewRulerPart.read(reader)) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 0;\n let originalLeft, originalWidth, modifiedLeft, modifiedWidth, gutterLeft;\n const sideBySide = !!sash;\n if (sideBySide) {\n const sashLeft = sash.sashLeft.read(reader);\n const movedBlocksLinesWidth = (_e = (_d = this._movedBlocksLinesPart.read(reader)) === null || _d === void 0 ? void 0 : _d.width.read(reader)) !== null && _e !== void 0 ? _e : 0;\n originalLeft = 0;\n originalWidth = sashLeft - gutterWidth - movedBlocksLinesWidth;\n gutterLeft = sashLeft - gutterWidth;\n modifiedLeft = sashLeft;\n modifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n }\n else {\n gutterLeft = 0;\n originalLeft = gutterWidth;\n originalWidth = Math.max(5, this._editors.original.getLayoutInfo().decorationsLeft);\n modifiedLeft = gutterWidth + originalWidth;\n modifiedWidth = fullWidth - modifiedLeft - overviewRulerPartWidth;\n }\n this.elements.original.style.left = originalLeft + 'px';\n this.elements.original.style.width = originalWidth + 'px';\n this._editors.original.layout({ width: originalWidth, height: fullHeight }, true);\n gutter === null || gutter === void 0 ? void 0 : gutter.layout(gutterLeft);\n this.elements.modified.style.left = modifiedLeft + 'px';\n this.elements.modified.style.width = modifiedWidth + 'px';\n this._editors.modified.layout({ width: modifiedWidth, height: fullHeight }, true);\n return {\n modifiedEditor: this._editors.modified.getLayoutInfo(),\n originalEditor: this._editors.original.getLayoutInfo(),\n };\n });\n this._diffValue = this._diffModel.map((m, r) => m === null || m === void 0 ? void 0 : m.diff.read(r));\n this.onDidUpdateDiff = Event.fromObservableLight(this._diffValue);\n codeEditorService.willCreateDiffEditor();\n this._contextKeyService.createKey('isInDiffEditor', true);\n this._domElement.appendChild(this.elements.root);\n this._register(toDisposable(() => this._domElement.removeChild(this.elements.root)));\n this._rootSizeObserver = this._register(new ObservableElementSizeObserver(this.elements.root, options.dimension));\n this._rootSizeObserver.setAutomaticLayout((_a = options.automaticLayout) !== null && _a !== void 0 ? _a : false);\n this._options = this._instantiationService.createInstance(DiffEditorOptions, options);\n this._register(autorun(reader => {\n this._options.setWidth(this._rootSizeObserver.width.read(reader));\n }));\n this._contextKeyService.createKey(EditorContextKeys.isEmbeddedDiffEditor.key, false);\n this._register(bindContextKey(EditorContextKeys.isEmbeddedDiffEditor, this._contextKeyService, reader => this._options.isInEmbeddedEditor.read(reader)));\n this._register(bindContextKey(EditorContextKeys.comparingMovedCode, this._contextKeyService, reader => { var _a; return !!((_a = this._diffModel.read(reader)) === null || _a === void 0 ? void 0 : _a.movedTextToCompare.read(reader)); }));\n this._register(bindContextKey(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, this._contextKeyService, reader => this._options.couldShowInlineViewBecauseOfSize.read(reader)));\n this._register(bindContextKey(EditorContextKeys.diffEditorInlineMode, this._contextKeyService, reader => !this._options.renderSideBySide.read(reader)));\n this._register(bindContextKey(EditorContextKeys.hasChanges, this._contextKeyService, reader => { var _a, _b, _c; return ((_c = (_b = (_a = this._diffModel.read(reader)) === null || _a === void 0 ? void 0 : _a.diff.read(reader)) === null || _b === void 0 ? void 0 : _b.mappings.length) !== null && _c !== void 0 ? _c : 0) > 0; }));\n this._editors = this._register(this._instantiationService.createInstance(DiffEditorEditors, this.elements.original, this.elements.modified, this._options, codeEditorWidgetOptions, (i, c, o, o2) => this._createInnerEditor(i, c, o, o2)));\n this._register(bindContextKey(EditorContextKeys.diffEditorOriginalWritable, this._contextKeyService, reader => this._options.originalEditable.read(reader)));\n this._register(bindContextKey(EditorContextKeys.diffEditorModifiedWritable, this._contextKeyService, reader => !this._options.readOnly.read(reader)));\n this._register(bindContextKey(EditorContextKeys.diffEditorOriginalUri, this._contextKeyService, reader => { var _a, _b; return (_b = (_a = this._diffModel.read(reader)) === null || _a === void 0 ? void 0 : _a.model.original.uri.toString()) !== null && _b !== void 0 ? _b : ''; }));\n this._register(bindContextKey(EditorContextKeys.diffEditorModifiedUri, this._contextKeyService, reader => { var _a, _b; return (_b = (_a = this._diffModel.read(reader)) === null || _a === void 0 ? void 0 : _a.model.modified.uri.toString()) !== null && _b !== void 0 ? _b : ''; }));\n this._overviewRulerPart = derivedDisposable(this, reader => !this._options.renderOverviewRuler.read(reader)\n ? undefined\n : this._instantiationService.createInstance(readHotReloadableExport(OverviewRulerFeature, reader), this._editors, this.elements.root, this._diffModel, this._rootSizeObserver.width, this._rootSizeObserver.height, this._layoutInfo.map(i => i.modifiedEditor))).recomputeInitiallyAndOnChange(this._store);\n const dimensions = {\n height: this._rootSizeObserver.height,\n width: this._rootSizeObserver.width.map((w, reader) => { var _a, _b; return w - ((_b = (_a = this._overviewRulerPart.read(reader)) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 0); }),\n };\n this._sashLayout = new SashLayout(this._options, dimensions);\n this._sash = derivedDisposable(this, reader => {\n const showSash = this._options.renderSideBySide.read(reader);\n this.elements.root.classList.toggle('side-by-side', showSash);\n return !showSash ? undefined : new DiffEditorSash(this.elements.root, dimensions, this._options.enableSplitViewResizing, this._boundarySashes, this._sashLayout.sashLeft, () => this._sashLayout.resetSash());\n }).recomputeInitiallyAndOnChange(this._store);\n const unchangedRangesFeature = derivedDisposable(this, reader => /** @description UnchangedRangesFeature */ this._instantiationService.createInstance(readHotReloadableExport(HideUnchangedRegionsFeature, reader), this._editors, this._diffModel, this._options)).recomputeInitiallyAndOnChange(this._store);\n derivedDisposable(this, reader => /** @description DiffEditorDecorations */ this._instantiationService.createInstance(readHotReloadableExport(DiffEditorDecorations, reader), this._editors, this._diffModel, this._options, this)).recomputeInitiallyAndOnChange(this._store);\n const origViewZoneIdsToIgnore = new Set();\n const modViewZoneIdsToIgnore = new Set();\n let isUpdatingViewZones = false;\n const viewZoneManager = derivedDisposable(this, reader => /** @description ViewZoneManager */ this._instantiationService.createInstance(readHotReloadableExport(DiffEditorViewZones, reader), getWindow(this._domElement), this._editors, this._diffModel, this._options, this, () => isUpdatingViewZones || unchangedRangesFeature.get().isUpdatingHiddenAreas, origViewZoneIdsToIgnore, modViewZoneIdsToIgnore)).recomputeInitiallyAndOnChange(this._store);\n const originalViewZones = derived(this, (reader) => {\n const orig = viewZoneManager.read(reader).viewZones.read(reader).orig;\n const orig2 = unchangedRangesFeature.read(reader).viewZones.read(reader).origViewZones;\n return orig.concat(orig2);\n });\n const modifiedViewZones = derived(this, (reader) => {\n const mod = viewZoneManager.read(reader).viewZones.read(reader).mod;\n const mod2 = unchangedRangesFeature.read(reader).viewZones.read(reader).modViewZones;\n return mod.concat(mod2);\n });\n this._register(applyViewZones(this._editors.original, originalViewZones, isUpdatingOrigViewZones => {\n isUpdatingViewZones = isUpdatingOrigViewZones;\n }, origViewZoneIdsToIgnore));\n let scrollState;\n this._register(applyViewZones(this._editors.modified, modifiedViewZones, isUpdatingModViewZones => {\n isUpdatingViewZones = isUpdatingModViewZones;\n if (isUpdatingViewZones) {\n scrollState = StableEditorScrollState.capture(this._editors.modified);\n }\n else {\n scrollState === null || scrollState === void 0 ? void 0 : scrollState.restore(this._editors.modified);\n scrollState = undefined;\n }\n }, modViewZoneIdsToIgnore));\n this._accessibleDiffViewer = derivedDisposable(this, reader => this._instantiationService.createInstance(readHotReloadableExport(AccessibleDiffViewer, reader), this.elements.accessibleDiffViewer, this._accessibleDiffViewerVisible, (visible, tx) => this._accessibleDiffViewerShouldBeVisible.set(visible, tx), this._options.onlyShowAccessibleDiffViewer.map(v => !v), this._rootSizeObserver.width, this._rootSizeObserver.height, this._diffModel.map((m, r) => { var _a; return (_a = m === null || m === void 0 ? void 0 : m.diff.read(r)) === null || _a === void 0 ? void 0 : _a.mappings.map(m => m.lineRangeMapping); }), new AccessibleDiffViewerModelFromEditors(this._editors))).recomputeInitiallyAndOnChange(this._store);\n const visibility = this._accessibleDiffViewerVisible.map(v => v ? 'hidden' : 'visible');\n this._register(applyStyle(this.elements.modified, { visibility }));\n this._register(applyStyle(this.elements.original, { visibility }));\n this._createDiffEditorContributions();\n codeEditorService.addDiffEditor(this);\n this._gutter = derivedDisposable(this, reader => {\n return this._options.shouldRenderGutterMenu.read(reader)\n ? this._instantiationService.createInstance(readHotReloadableExport(DiffEditorGutter, reader), this.elements.root, this._diffModel, this._editors, this._options, this._sashLayout, this._boundarySashes)\n : undefined;\n });\n this._register(recomputeInitiallyAndOnChange(this._layoutInfo));\n derivedDisposable(this, reader => /** @description MovedBlocksLinesPart */ new (readHotReloadableExport(MovedBlocksLinesFeature, reader))(this.elements.root, this._diffModel, this._layoutInfo.map(i => i.originalEditor), this._layoutInfo.map(i => i.modifiedEditor), this._editors)).recomputeInitiallyAndOnChange(this._store, value => {\n // This is to break the layout info <-> moved blocks lines part dependency cycle.\n this._movedBlocksLinesPart.set(value, undefined);\n });\n this._register(Event.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, true)));\n this._register(Event.runAndSubscribe(this._editors.original.onDidChangeCursorPosition, e => this._handleCursorPositionChange(e, false)));\n const isInitializingDiff = this._diffModel.map(this, (m, reader) => {\n /** @isInitializingDiff isDiffUpToDate */\n if (!m) {\n return undefined;\n }\n return m.diff.read(reader) === undefined && !m.isDiffUpToDate.read(reader);\n });\n this._register(autorunWithStore((reader, store) => {\n /** @description DiffEditorWidgetHelper.ShowProgress */\n if (isInitializingDiff.read(reader) === true) {\n const r = this._editorProgressService.show(true, 1000);\n store.add(toDisposable(() => r.done()));\n }\n }));\n this._register(toDisposable(() => {\n var _a;\n if (this._shouldDisposeDiffModel) {\n (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n }));\n this._register(autorunWithStore((reader, store) => {\n store.add(new (readHotReloadableExport(RevertButtonsFeature, reader))(this._editors, this._diffModel, this._options, this));\n }));\n }\n _createInnerEditor(instantiationService, container, options, editorWidgetOptions) {\n const editor = instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\n return editor;\n }\n _createDiffEditorContributions() {\n const contributions = EditorExtensionsRegistry.getDiffEditorContributions();\n for (const desc of contributions) {\n try {\n this._register(this._instantiationService.createInstance(desc.ctor, this));\n }\n catch (err) {\n onUnexpectedError(err);\n }\n }\n }\n get _targetEditor() { return this._editors.modified; }\n getEditorType() { return EditorType.IDiffEditor; }\n layout(dimension) {\n this._rootSizeObserver.observe(dimension);\n }\n hasTextFocus() { return this._editors.original.hasTextFocus() || this._editors.modified.hasTextFocus(); }\n saveViewState() {\n var _a;\n const originalViewState = this._editors.original.saveViewState();\n const modifiedViewState = this._editors.modified.saveViewState();\n return {\n original: originalViewState,\n modified: modifiedViewState,\n modelState: (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.serializeState(),\n };\n }\n restoreViewState(s) {\n var _a;\n if (s && s.original && s.modified) {\n const diffEditorState = s;\n this._editors.original.restoreViewState(diffEditorState.original);\n this._editors.modified.restoreViewState(diffEditorState.modified);\n if (diffEditorState.modelState) {\n (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.restoreSerializedState(diffEditorState.modelState);\n }\n }\n }\n handleInitialized() {\n this._editors.original.handleInitialized();\n this._editors.modified.handleInitialized();\n }\n createViewModel(model) {\n return this._instantiationService.createInstance(DiffEditorViewModel, model, this._options);\n }\n getModel() { var _a, _b; return (_b = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.model) !== null && _b !== void 0 ? _b : null; }\n setModel(model, tx) {\n if (!model && this._diffModel.get()) {\n // Transitioning from a model to no-model\n this._accessibleDiffViewer.get().close();\n }\n const vm = model ? ('model' in model) ? { model, shouldDispose: false } : { model: this.createViewModel(model), shouldDispose: true } : undefined;\n if (this._diffModel.get() !== (vm === null || vm === void 0 ? void 0 : vm.model)) {\n subtransaction(tx, tx => {\n var _a;\n /** @description DiffEditorWidget.setModel */\n observableFromEvent.batchEventsGlobally(tx, () => {\n this._editors.original.setModel(vm ? vm.model.model.original : null);\n this._editors.modified.setModel(vm ? vm.model.model.modified : null);\n });\n const prevValue = this._diffModel.get();\n const shouldDispose = this._shouldDisposeDiffModel;\n this._shouldDisposeDiffModel = (_a = vm === null || vm === void 0 ? void 0 : vm.shouldDispose) !== null && _a !== void 0 ? _a : false;\n this._diffModel.set(vm === null || vm === void 0 ? void 0 : vm.model, tx);\n if (shouldDispose) {\n prevValue === null || prevValue === void 0 ? void 0 : prevValue.dispose();\n }\n });\n }\n }\n /**\n * @param changedOptions Only has values for top-level options that have actually changed.\n */\n updateOptions(changedOptions) {\n this._options.updateOptions(changedOptions);\n }\n getContainerDomNode() { return this._domElement; }\n getOriginalEditor() { return this._editors.original; }\n getModifiedEditor() { return this._editors.modified; }\n /**\n * @deprecated Use `this.getDiffComputationResult().changes2` instead.\n */\n getLineChanges() {\n var _a;\n const diffState = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.diff.get();\n if (!diffState) {\n return null;\n }\n return toLineChanges(diffState);\n }\n revert(diff) {\n const model = this._diffModel.get();\n if (!model || !model.isDiffUpToDate.get()) {\n return;\n }\n this._editors.modified.executeEdits('diffEditor', [\n {\n range: diff.modified.toExclusiveRange(),\n text: model.model.original.getValueInRange(diff.original.toExclusiveRange())\n }\n ]);\n }\n revertRangeMappings(diffs) {\n const model = this._diffModel.get();\n if (!model || !model.isDiffUpToDate.get()) {\n return;\n }\n const changes = diffs.map(c => ({\n range: c.modifiedRange,\n text: model.model.original.getValueInRange(c.originalRange)\n }));\n this._editors.modified.executeEdits('diffEditor', changes);\n }\n _goTo(diff) {\n this._editors.modified.setPosition(new Position(diff.lineRangeMapping.modified.startLineNumber, 1));\n this._editors.modified.revealRangeInCenter(diff.lineRangeMapping.modified.toExclusiveRange());\n }\n goToDiff(target) {\n var _a, _b, _c, _d;\n const diffs = (_b = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.diff.get()) === null || _b === void 0 ? void 0 : _b.mappings;\n if (!diffs || diffs.length === 0) {\n return;\n }\n const curLineNumber = this._editors.modified.getPosition().lineNumber;\n let diff;\n if (target === 'next') {\n diff = (_c = diffs.find(d => d.lineRangeMapping.modified.startLineNumber > curLineNumber)) !== null && _c !== void 0 ? _c : diffs[0];\n }\n else {\n diff = (_d = findLast(diffs, d => d.lineRangeMapping.modified.startLineNumber < curLineNumber)) !== null && _d !== void 0 ? _d : diffs[diffs.length - 1];\n }\n this._goTo(diff);\n if (diff.lineRangeMapping.modified.isEmpty) {\n this._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.goToDiff' });\n }\n else if (diff.lineRangeMapping.original.isEmpty) {\n this._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.goToDiff' });\n }\n else if (diff) {\n this._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.goToDiff' });\n }\n }\n revealFirstDiff() {\n const diffModel = this._diffModel.get();\n if (!diffModel) {\n return;\n }\n // wait for the diff computation to finish\n this.waitForDiff().then(() => {\n var _a;\n const diffs = (_a = diffModel.diff.get()) === null || _a === void 0 ? void 0 : _a.mappings;\n if (!diffs || diffs.length === 0) {\n return;\n }\n this._goTo(diffs[0]);\n });\n }\n accessibleDiffViewerNext() { this._accessibleDiffViewer.get().next(); }\n accessibleDiffViewerPrev() { this._accessibleDiffViewer.get().prev(); }\n async waitForDiff() {\n const diffModel = this._diffModel.get();\n if (!diffModel) {\n return;\n }\n await diffModel.waitForDiff();\n }\n mapToOtherSide() {\n var _a, _b;\n const isModifiedFocus = this._editors.modified.hasWidgetFocus();\n const source = isModifiedFocus ? this._editors.modified : this._editors.original;\n const destination = isModifiedFocus ? this._editors.original : this._editors.modified;\n let destinationSelection;\n const sourceSelection = source.getSelection();\n if (sourceSelection) {\n const mappings = (_b = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.diff.get()) === null || _b === void 0 ? void 0 : _b.mappings.map(m => isModifiedFocus ? m.lineRangeMapping.flip() : m.lineRangeMapping);\n if (mappings) {\n const newRange1 = translatePosition(sourceSelection.getStartPosition(), mappings);\n const newRange2 = translatePosition(sourceSelection.getEndPosition(), mappings);\n destinationSelection = Range.plusRange(newRange1, newRange2);\n }\n }\n return { destination, destinationSelection };\n }\n switchSide() {\n const { destination, destinationSelection } = this.mapToOtherSide();\n destination.focus();\n if (destinationSelection) {\n destination.setSelection(destinationSelection);\n }\n }\n exitCompareMove() {\n const model = this._diffModel.get();\n if (!model) {\n return;\n }\n model.movedTextToCompare.set(undefined, undefined);\n }\n collapseAllUnchangedRegions() {\n var _a;\n const unchangedRegions = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.unchangedRegions.get();\n if (!unchangedRegions) {\n return;\n }\n transaction(tx => {\n for (const region of unchangedRegions) {\n region.collapseAll(tx);\n }\n });\n }\n showAllUnchangedRegions() {\n var _a;\n const unchangedRegions = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.unchangedRegions.get();\n if (!unchangedRegions) {\n return;\n }\n transaction(tx => {\n for (const region of unchangedRegions) {\n region.showAll(tx);\n }\n });\n }\n _handleCursorPositionChange(e, isModifiedEditor) {\n var _a, _b;\n if ((e === null || e === void 0 ? void 0 : e.reason) === 3 /* CursorChangeReason.Explicit */) {\n const diff = (_b = (_a = this._diffModel.get()) === null || _a === void 0 ? void 0 : _a.diff.get()) === null || _b === void 0 ? void 0 : _b.mappings.find(m => isModifiedEditor ? m.lineRangeMapping.modified.contains(e.position.lineNumber) : m.lineRangeMapping.original.contains(e.position.lineNumber));\n if (diff === null || diff === void 0 ? void 0 : diff.lineRangeMapping.modified.isEmpty) {\n this._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'diffEditor.cursorPositionChanged' });\n }\n else if (diff === null || diff === void 0 ? void 0 : diff.lineRangeMapping.original.isEmpty) {\n this._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'diffEditor.cursorPositionChanged' });\n }\n else if (diff) {\n this._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineModified, { source: 'diffEditor.cursorPositionChanged' });\n }\n }\n }\n};\nDiffEditorWidget = __decorate([\n __param(3, IContextKeyService),\n __param(4, IInstantiationService),\n __param(5, ICodeEditorService),\n __param(6, IAccessibilitySignalService),\n __param(7, IEditorProgressService)\n], DiffEditorWidget);\nexport { DiffEditorWidget };\nfunction toLineChanges(state) {\n return state.mappings.map(x => {\n const m = x.lineRangeMapping;\n let originalStartLineNumber;\n let originalEndLineNumber;\n let modifiedStartLineNumber;\n let modifiedEndLineNumber;\n let innerChanges = m.innerChanges;\n if (m.original.isEmpty) {\n // Insertion\n originalStartLineNumber = m.original.startLineNumber - 1;\n originalEndLineNumber = 0;\n innerChanges = undefined;\n }\n else {\n originalStartLineNumber = m.original.startLineNumber;\n originalEndLineNumber = m.original.endLineNumberExclusive - 1;\n }\n if (m.modified.isEmpty) {\n // Deletion\n modifiedStartLineNumber = m.modified.startLineNumber - 1;\n modifiedEndLineNumber = 0;\n innerChanges = undefined;\n }\n else {\n modifiedStartLineNumber = m.modified.startLineNumber;\n modifiedEndLineNumber = m.modified.endLineNumberExclusive - 1;\n }\n return {\n originalStartLineNumber,\n originalEndLineNumber,\n modifiedStartLineNumber,\n modifiedEndLineNumber,\n charChanges: innerChanges === null || innerChanges === void 0 ? void 0 : innerChanges.map(m => ({\n originalStartLineNumber: m.originalRange.startLineNumber,\n originalStartColumn: m.originalRange.startColumn,\n originalEndLineNumber: m.originalRange.endLineNumber,\n originalEndColumn: m.originalRange.endColumn,\n modifiedStartLineNumber: m.modifiedRange.startLineNumber,\n modifiedStartColumn: m.modifiedRange.startColumn,\n modifiedEndLineNumber: m.modifiedRange.endLineNumber,\n modifiedEndColumn: m.modifiedRange.endColumn,\n }))\n };\n });\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar HideUnchangedRegionsFeature_1;\nimport { $, addDisposableListener, getWindow, h, reset } from '../../../../../base/browser/dom.js';\nimport { renderIcon, renderLabelWithIcons } from '../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, derived, derivedWithStore, observableFromEvent, observableValue, transaction } from '../../../../../base/common/observable.js';\nimport { derivedDisposable } from '../../../../../base/common/observableInternal/derived.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { isDefined } from '../../../../../base/common/types.js';\nimport { PlaceholderViewZone, ViewZoneOverlayWidget, applyObservableDecorations, applyStyle } from '../utils.js';\nimport { LineRange } from '../../../../common/core/lineRange.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { SymbolKinds } from '../../../../common/languages.js';\nimport { localize } from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\n/**\n * Make sure to add the view zones to the editor!\n */\nlet HideUnchangedRegionsFeature = HideUnchangedRegionsFeature_1 = class HideUnchangedRegionsFeature extends Disposable {\n static setBreadcrumbsSourceFactory(factory) {\n this._breadcrumbsSourceFactory.set(factory, undefined);\n }\n get isUpdatingHiddenAreas() { return this._isUpdatingHiddenAreas; }\n constructor(_editors, _diffModel, _options, _instantiationService) {\n super();\n this._editors = _editors;\n this._diffModel = _diffModel;\n this._options = _options;\n this._instantiationService = _instantiationService;\n this._modifiedOutlineSource = derivedDisposable(this, (reader) => {\n const m = this._editors.modifiedModel.read(reader);\n const factory = HideUnchangedRegionsFeature_1._breadcrumbsSourceFactory.read(reader);\n return (!m || !factory) ? undefined : factory(m, this._instantiationService);\n });\n this._isUpdatingHiddenAreas = false;\n this._register(this._editors.original.onDidChangeCursorPosition(e => {\n if (e.reason === 1 /* CursorChangeReason.ContentFlush */) {\n return;\n }\n const m = this._diffModel.get();\n transaction(tx => {\n for (const s of this._editors.original.getSelections() || []) {\n m === null || m === void 0 ? void 0 : m.ensureOriginalLineIsVisible(s.getStartPosition().lineNumber, 0 /* RevealPreference.FromCloserSide */, tx);\n m === null || m === void 0 ? void 0 : m.ensureOriginalLineIsVisible(s.getEndPosition().lineNumber, 0 /* RevealPreference.FromCloserSide */, tx);\n }\n });\n }));\n this._register(this._editors.modified.onDidChangeCursorPosition(e => {\n if (e.reason === 1 /* CursorChangeReason.ContentFlush */) {\n return;\n }\n const m = this._diffModel.get();\n transaction(tx => {\n for (const s of this._editors.modified.getSelections() || []) {\n m === null || m === void 0 ? void 0 : m.ensureModifiedLineIsVisible(s.getStartPosition().lineNumber, 0 /* RevealPreference.FromCloserSide */, tx);\n m === null || m === void 0 ? void 0 : m.ensureModifiedLineIsVisible(s.getEndPosition().lineNumber, 0 /* RevealPreference.FromCloserSide */, tx);\n }\n });\n }));\n const unchangedRegions = this._diffModel.map((m, reader) => {\n var _a, _b;\n const regions = (_a = m === null || m === void 0 ? void 0 : m.unchangedRegions.read(reader)) !== null && _a !== void 0 ? _a : [];\n if (regions.length === 1 && regions[0].modifiedLineNumber === 1 && regions[0].lineCount === ((_b = this._editors.modifiedModel.read(reader)) === null || _b === void 0 ? void 0 : _b.getLineCount())) {\n return [];\n }\n return regions;\n });\n this.viewZones = derivedWithStore(this, (reader, store) => {\n /** @description view Zones */\n const modifiedOutlineSource = this._modifiedOutlineSource.read(reader);\n if (!modifiedOutlineSource) {\n return { origViewZones: [], modViewZones: [] };\n }\n const origViewZones = [];\n const modViewZones = [];\n const sideBySide = this._options.renderSideBySide.read(reader);\n const curUnchangedRegions = unchangedRegions.read(reader);\n for (const r of curUnchangedRegions) {\n if (r.shouldHideControls(reader)) {\n continue;\n }\n {\n const d = derived(this, reader => /** @description hiddenOriginalRangeStart */ r.getHiddenOriginalRange(reader).startLineNumber - 1);\n const origVz = new PlaceholderViewZone(d, 24);\n origViewZones.push(origVz);\n store.add(new CollapsedCodeOverlayWidget(this._editors.original, origVz, r, r.originalUnchangedRange, !sideBySide, modifiedOutlineSource, l => this._diffModel.get().ensureModifiedLineIsVisible(l, 2 /* RevealPreference.FromBottom */, undefined), this._options));\n }\n {\n const d = derived(this, reader => /** @description hiddenModifiedRangeStart */ r.getHiddenModifiedRange(reader).startLineNumber - 1);\n const modViewZone = new PlaceholderViewZone(d, 24);\n modViewZones.push(modViewZone);\n store.add(new CollapsedCodeOverlayWidget(this._editors.modified, modViewZone, r, r.modifiedUnchangedRange, false, modifiedOutlineSource, l => this._diffModel.get().ensureModifiedLineIsVisible(l, 2 /* RevealPreference.FromBottom */, undefined), this._options));\n }\n }\n return { origViewZones, modViewZones, };\n });\n const unchangedLinesDecoration = {\n description: 'unchanged lines',\n className: 'diff-unchanged-lines',\n isWholeLine: true,\n };\n const unchangedLinesDecorationShow = {\n description: 'Fold Unchanged',\n glyphMarginHoverMessage: new MarkdownString(undefined, { isTrusted: true, supportThemeIcons: true })\n .appendMarkdown(localize('foldUnchanged', 'Fold Unchanged Region')),\n glyphMarginClassName: 'fold-unchanged ' + ThemeIcon.asClassName(Codicon.fold),\n zIndex: 10001,\n };\n this._register(applyObservableDecorations(this._editors.original, derived(this, reader => {\n /** @description decorations */\n const curUnchangedRegions = unchangedRegions.read(reader);\n const result = curUnchangedRegions.map(r => ({\n range: r.originalUnchangedRange.toInclusiveRange(),\n options: unchangedLinesDecoration,\n }));\n for (const r of curUnchangedRegions) {\n if (r.shouldHideControls(reader)) {\n result.push({\n range: Range.fromPositions(new Position(r.originalLineNumber, 1)),\n options: unchangedLinesDecorationShow,\n });\n }\n }\n return result;\n })));\n this._register(applyObservableDecorations(this._editors.modified, derived(this, reader => {\n /** @description decorations */\n const curUnchangedRegions = unchangedRegions.read(reader);\n const result = curUnchangedRegions.map(r => ({\n range: r.modifiedUnchangedRange.toInclusiveRange(),\n options: unchangedLinesDecoration,\n }));\n for (const r of curUnchangedRegions) {\n if (r.shouldHideControls(reader)) {\n result.push({\n range: LineRange.ofLength(r.modifiedLineNumber, 1).toInclusiveRange(),\n options: unchangedLinesDecorationShow,\n });\n }\n }\n return result;\n })));\n this._register(autorun((reader) => {\n /** @description update folded unchanged regions */\n const curUnchangedRegions = unchangedRegions.read(reader);\n this._isUpdatingHiddenAreas = true;\n try {\n this._editors.original.setHiddenAreas(curUnchangedRegions.map(r => r.getHiddenOriginalRange(reader).toInclusiveRange()).filter(isDefined));\n this._editors.modified.setHiddenAreas(curUnchangedRegions.map(r => r.getHiddenModifiedRange(reader).toInclusiveRange()).filter(isDefined));\n }\n finally {\n this._isUpdatingHiddenAreas = false;\n }\n }));\n this._register(this._editors.modified.onMouseUp(event => {\n var _a;\n if (!event.event.rightButton && event.target.position && ((_a = event.target.element) === null || _a === void 0 ? void 0 : _a.className.includes('fold-unchanged'))) {\n const lineNumber = event.target.position.lineNumber;\n const model = this._diffModel.get();\n if (!model) {\n return;\n }\n const region = model.unchangedRegions.get().find(r => r.modifiedUnchangedRange.includes(lineNumber));\n if (!region) {\n return;\n }\n region.collapseAll(undefined);\n event.event.stopPropagation();\n event.event.preventDefault();\n }\n }));\n this._register(this._editors.original.onMouseUp(event => {\n var _a;\n if (!event.event.rightButton && event.target.position && ((_a = event.target.element) === null || _a === void 0 ? void 0 : _a.className.includes('fold-unchanged'))) {\n const lineNumber = event.target.position.lineNumber;\n const model = this._diffModel.get();\n if (!model) {\n return;\n }\n const region = model.unchangedRegions.get().find(r => r.originalUnchangedRange.includes(lineNumber));\n if (!region) {\n return;\n }\n region.collapseAll(undefined);\n event.event.stopPropagation();\n event.event.preventDefault();\n }\n }));\n }\n};\nHideUnchangedRegionsFeature._breadcrumbsSourceFactory = observableValue('breadcrumbsSourceFactory', undefined);\nHideUnchangedRegionsFeature = HideUnchangedRegionsFeature_1 = __decorate([\n __param(3, IInstantiationService)\n], HideUnchangedRegionsFeature);\nexport { HideUnchangedRegionsFeature };\nclass CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {\n constructor(_editor, _viewZone, _unchangedRegion, _unchangedRegionRange, _hide, _modifiedOutlineSource, _revealModifiedHiddenLine, _options) {\n const root = h('div.diff-hidden-lines-widget');\n super(_editor, _viewZone, root.root);\n this._editor = _editor;\n this._unchangedRegion = _unchangedRegion;\n this._unchangedRegionRange = _unchangedRegionRange;\n this._hide = _hide;\n this._modifiedOutlineSource = _modifiedOutlineSource;\n this._revealModifiedHiddenLine = _revealModifiedHiddenLine;\n this._options = _options;\n this._nodes = h('div.diff-hidden-lines', [\n h('div.top@top', { title: localize('diff.hiddenLines.top', 'Click or drag to show more above') }),\n h('div.center@content', { style: { display: 'flex' } }, [\n h('div@first', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', flexShrink: '0' } }, [$('a', { title: localize('showUnchangedRegion', 'Show Unchanged Region'), role: 'button', onclick: () => { this._unchangedRegion.showAll(undefined); } }, ...renderLabelWithIcons('$(unfold)'))]),\n h('div@others', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center' } }),\n ]),\n h('div.bottom@bottom', { title: localize('diff.bottom', 'Click or drag to show more below'), role: 'button' }),\n ]);\n root.root.appendChild(this._nodes.root);\n const layoutInfo = observableFromEvent(this._editor.onDidLayoutChange, () => this._editor.getLayoutInfo());\n if (!this._hide) {\n this._register(applyStyle(this._nodes.first, { width: layoutInfo.map((l) => l.contentLeft) }));\n }\n else {\n reset(this._nodes.first);\n }\n this._register(autorun(reader => {\n /** @description Update CollapsedCodeOverlayWidget canMove* css classes */\n const isFullyRevealed = this._unchangedRegion.visibleLineCountTop.read(reader) + this._unchangedRegion.visibleLineCountBottom.read(reader) === this._unchangedRegion.lineCount;\n this._nodes.bottom.classList.toggle('canMoveTop', !isFullyRevealed);\n this._nodes.bottom.classList.toggle('canMoveBottom', this._unchangedRegion.visibleLineCountBottom.read(reader) > 0);\n this._nodes.top.classList.toggle('canMoveTop', this._unchangedRegion.visibleLineCountTop.read(reader) > 0);\n this._nodes.top.classList.toggle('canMoveBottom', !isFullyRevealed);\n const isDragged = this._unchangedRegion.isDragged.read(reader);\n const domNode = this._editor.getDomNode();\n if (domNode) {\n domNode.classList.toggle('draggingUnchangedRegion', !!isDragged);\n if (isDragged === 'top') {\n domNode.classList.toggle('canMoveTop', this._unchangedRegion.visibleLineCountTop.read(reader) > 0);\n domNode.classList.toggle('canMoveBottom', !isFullyRevealed);\n }\n else if (isDragged === 'bottom') {\n domNode.classList.toggle('canMoveTop', !isFullyRevealed);\n domNode.classList.toggle('canMoveBottom', this._unchangedRegion.visibleLineCountBottom.read(reader) > 0);\n }\n else {\n domNode.classList.toggle('canMoveTop', false);\n domNode.classList.toggle('canMoveBottom', false);\n }\n }\n }));\n const editor = this._editor;\n this._register(addDisposableListener(this._nodes.top, 'mousedown', e => {\n if (e.button !== 0) {\n return;\n }\n this._nodes.top.classList.toggle('dragging', true);\n this._nodes.root.classList.toggle('dragging', true);\n e.preventDefault();\n const startTop = e.clientY;\n let didMove = false;\n const cur = this._unchangedRegion.visibleLineCountTop.get();\n this._unchangedRegion.isDragged.set('top', undefined);\n const window = getWindow(this._nodes.top);\n const mouseMoveListener = addDisposableListener(window, 'mousemove', e => {\n const currentTop = e.clientY;\n const delta = currentTop - startTop;\n didMove = didMove || Math.abs(delta) > 2;\n const lineDelta = Math.round(delta / editor.getOption(67 /* EditorOption.lineHeight */));\n const newVal = Math.max(0, Math.min(cur + lineDelta, this._unchangedRegion.getMaxVisibleLineCountTop()));\n this._unchangedRegion.visibleLineCountTop.set(newVal, undefined);\n });\n const mouseUpListener = addDisposableListener(window, 'mouseup', e => {\n if (!didMove) {\n this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);\n }\n this._nodes.top.classList.toggle('dragging', false);\n this._nodes.root.classList.toggle('dragging', false);\n this._unchangedRegion.isDragged.set(undefined, undefined);\n mouseMoveListener.dispose();\n mouseUpListener.dispose();\n });\n }));\n this._register(addDisposableListener(this._nodes.bottom, 'mousedown', e => {\n if (e.button !== 0) {\n return;\n }\n this._nodes.bottom.classList.toggle('dragging', true);\n this._nodes.root.classList.toggle('dragging', true);\n e.preventDefault();\n const startTop = e.clientY;\n let didMove = false;\n const cur = this._unchangedRegion.visibleLineCountBottom.get();\n this._unchangedRegion.isDragged.set('bottom', undefined);\n const window = getWindow(this._nodes.bottom);\n const mouseMoveListener = addDisposableListener(window, 'mousemove', e => {\n const currentTop = e.clientY;\n const delta = currentTop - startTop;\n didMove = didMove || Math.abs(delta) > 2;\n const lineDelta = Math.round(delta / editor.getOption(67 /* EditorOption.lineHeight */));\n const newVal = Math.max(0, Math.min(cur - lineDelta, this._unchangedRegion.getMaxVisibleLineCountBottom()));\n const top = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel().getLineCount()\n ? editor.getContentHeight()\n : editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n this._unchangedRegion.visibleLineCountBottom.set(newVal, undefined);\n const top2 = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel().getLineCount()\n ? editor.getContentHeight()\n : editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n editor.setScrollTop(editor.getScrollTop() + (top2 - top));\n });\n const mouseUpListener = addDisposableListener(window, 'mouseup', e => {\n this._unchangedRegion.isDragged.set(undefined, undefined);\n if (!didMove) {\n const top = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);\n const top2 = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);\n editor.setScrollTop(editor.getScrollTop() + (top2 - top));\n }\n this._nodes.bottom.classList.toggle('dragging', false);\n this._nodes.root.classList.toggle('dragging', false);\n mouseMoveListener.dispose();\n mouseUpListener.dispose();\n });\n }));\n this._register(autorun(reader => {\n /** @description update labels */\n const children = [];\n if (!this._hide) {\n const lineCount = _unchangedRegion.getHiddenModifiedRange(reader).length;\n const linesHiddenText = localize('hiddenLines', '{0} hidden lines', lineCount);\n const span = $('span', { title: localize('diff.hiddenLines.expandAll', 'Double click to unfold') }, linesHiddenText);\n span.addEventListener('dblclick', e => {\n if (e.button !== 0) {\n return;\n }\n e.preventDefault();\n this._unchangedRegion.showAll(undefined);\n });\n children.push(span);\n const range = this._unchangedRegion.getHiddenModifiedRange(reader);\n const items = this._modifiedOutlineSource.getBreadcrumbItems(range, reader);\n if (items.length > 0) {\n children.push($('span', undefined, '\\u00a0\\u00a0|\\u00a0\\u00a0'));\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const icon = SymbolKinds.toIcon(item.kind);\n const divItem = h('div.breadcrumb-item', {\n style: { display: 'flex', alignItems: 'center' },\n }, [\n renderIcon(icon),\n '\\u00a0',\n item.name,\n ...(i === items.length - 1\n ? []\n : [renderIcon(Codicon.chevronRight)])\n ]).root;\n children.push(divItem);\n divItem.onclick = () => {\n this._revealModifiedHiddenLine(item.startLineNumber);\n };\n }\n }\n }\n reset(this._nodes.others, ...children);\n }));\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../../base/browser/ui/actionbar/actionbar.js';\nimport { Action } from '../../../../../base/common/actions.js';\nimport { booleanComparator, compareBy, numberComparator, tieBreakComparators } from '../../../../../base/common/arrays.js';\nimport { findMaxIdx } from '../../../../../base/common/arraysFind.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { Disposable, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, autorunHandleChanges, autorunWithStore, constObservable, derived, derivedWithStore, observableFromEvent, observableSignalFromEvent, observableValue, recomputeInitiallyAndOnChange } from '../../../../../base/common/observable.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { PlaceholderViewZone, ViewZoneOverlayWidget, applyStyle, applyViewZones } from '../utils.js';\nimport { OffsetRange, OffsetRangeSet } from '../../../../common/core/offsetRange.js';\nimport { localize } from '../../../../../nls.js';\nexport class MovedBlocksLinesFeature extends Disposable {\n constructor(_rootElement, _diffModel, _originalEditorLayoutInfo, _modifiedEditorLayoutInfo, _editors) {\n super();\n this._rootElement = _rootElement;\n this._diffModel = _diffModel;\n this._originalEditorLayoutInfo = _originalEditorLayoutInfo;\n this._modifiedEditorLayoutInfo = _modifiedEditorLayoutInfo;\n this._editors = _editors;\n this._originalScrollTop = observableFromEvent(this._editors.original.onDidScrollChange, () => this._editors.original.getScrollTop());\n this._modifiedScrollTop = observableFromEvent(this._editors.modified.onDidScrollChange, () => this._editors.modified.getScrollTop());\n this._viewZonesChanged = observableSignalFromEvent('onDidChangeViewZones', this._editors.modified.onDidChangeViewZones);\n this.width = observableValue(this, 0);\n this._modifiedViewZonesChangedSignal = observableSignalFromEvent('modified.onDidChangeViewZones', this._editors.modified.onDidChangeViewZones);\n this._originalViewZonesChangedSignal = observableSignalFromEvent('original.onDidChangeViewZones', this._editors.original.onDidChangeViewZones);\n this._state = derivedWithStore(this, (reader, store) => {\n /** @description state */\n var _a;\n this._element.replaceChildren();\n const model = this._diffModel.read(reader);\n const moves = (_a = model === null || model === void 0 ? void 0 : model.diff.read(reader)) === null || _a === void 0 ? void 0 : _a.movedTexts;\n if (!moves || moves.length === 0) {\n this.width.set(0, undefined);\n return;\n }\n this._viewZonesChanged.read(reader);\n const infoOrig = this._originalEditorLayoutInfo.read(reader);\n const infoMod = this._modifiedEditorLayoutInfo.read(reader);\n if (!infoOrig || !infoMod) {\n this.width.set(0, undefined);\n return;\n }\n this._modifiedViewZonesChangedSignal.read(reader);\n this._originalViewZonesChangedSignal.read(reader);\n const lines = moves.map((move) => {\n function computeLineStart(range, editor) {\n const t1 = editor.getTopForLineNumber(range.startLineNumber, true);\n const t2 = editor.getTopForLineNumber(range.endLineNumberExclusive, true);\n return (t1 + t2) / 2;\n }\n const start = computeLineStart(move.lineRangeMapping.original, this._editors.original);\n const startOffset = this._originalScrollTop.read(reader);\n const end = computeLineStart(move.lineRangeMapping.modified, this._editors.modified);\n const endOffset = this._modifiedScrollTop.read(reader);\n const from = start - startOffset;\n const to = end - endOffset;\n const top = Math.min(start, end);\n const bottom = Math.max(start, end);\n return { range: new OffsetRange(top, bottom), from, to, fromWithoutScroll: start, toWithoutScroll: end, move };\n });\n lines.sort(tieBreakComparators(compareBy(l => l.fromWithoutScroll > l.toWithoutScroll, booleanComparator), compareBy(l => l.fromWithoutScroll > l.toWithoutScroll ? l.fromWithoutScroll : -l.toWithoutScroll, numberComparator)));\n const layout = LinesLayout.compute(lines.map(l => l.range));\n const padding = 10;\n const lineAreaLeft = infoOrig.verticalScrollbarWidth;\n const lineAreaWidth = (layout.getTrackCount() - 1) * 10 + padding * 2;\n const width = lineAreaLeft + lineAreaWidth + (infoMod.contentLeft - MovedBlocksLinesFeature.movedCodeBlockPadding);\n let idx = 0;\n for (const line of lines) {\n const track = layout.getTrack(idx);\n const verticalY = lineAreaLeft + padding + track * 10;\n const arrowHeight = 15;\n const arrowWidth = 15;\n const right = width;\n const rectWidth = infoMod.glyphMarginWidth + infoMod.lineNumbersWidth;\n const rectHeight = 18;\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.classList.add('arrow-rectangle');\n rect.setAttribute('x', `${right - rectWidth}`);\n rect.setAttribute('y', `${line.to - rectHeight / 2}`);\n rect.setAttribute('width', `${rectWidth}`);\n rect.setAttribute('height', `${rectHeight}`);\n this._element.appendChild(rect);\n const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', `M ${0} ${line.from} L ${verticalY} ${line.from} L ${verticalY} ${line.to} L ${right - arrowWidth} ${line.to}`);\n path.setAttribute('fill', 'none');\n g.appendChild(path);\n const arrowRight = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n arrowRight.classList.add('arrow');\n store.add(autorun(reader => {\n path.classList.toggle('currentMove', line.move === model.activeMovedText.read(reader));\n arrowRight.classList.toggle('currentMove', line.move === model.activeMovedText.read(reader));\n }));\n arrowRight.setAttribute('points', `${right - arrowWidth},${line.to - arrowHeight / 2} ${right},${line.to} ${right - arrowWidth},${line.to + arrowHeight / 2}`);\n g.appendChild(arrowRight);\n this._element.appendChild(g);\n /*\n TODO@hediet\n path.addEventListener('mouseenter', () => {\n model.setHoveredMovedText(line.move);\n });\n path.addEventListener('mouseleave', () => {\n model.setHoveredMovedText(undefined);\n });*/\n idx++;\n }\n this.width.set(lineAreaWidth, undefined);\n });\n this._element = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this._element.setAttribute('class', 'moved-blocks-lines');\n this._rootElement.appendChild(this._element);\n this._register(toDisposable(() => this._element.remove()));\n this._register(autorun(reader => {\n /** @description update moved blocks lines positioning */\n const info = this._originalEditorLayoutInfo.read(reader);\n const info2 = this._modifiedEditorLayoutInfo.read(reader);\n if (!info || !info2) {\n return;\n }\n this._element.style.left = `${info.width - info.verticalScrollbarWidth}px`;\n this._element.style.height = `${info.height}px`;\n this._element.style.width = `${info.verticalScrollbarWidth + info.contentLeft - MovedBlocksLinesFeature.movedCodeBlockPadding + this.width.read(reader)}px`;\n }));\n this._register(recomputeInitiallyAndOnChange(this._state));\n const movedBlockViewZones = derived(reader => {\n const model = this._diffModel.read(reader);\n const d = model === null || model === void 0 ? void 0 : model.diff.read(reader);\n if (!d) {\n return [];\n }\n return d.movedTexts.map(move => ({\n move,\n original: new PlaceholderViewZone(constObservable(move.lineRangeMapping.original.startLineNumber - 1), 18),\n modified: new PlaceholderViewZone(constObservable(move.lineRangeMapping.modified.startLineNumber - 1), 18),\n }));\n });\n this._register(applyViewZones(this._editors.original, movedBlockViewZones.map(zones => /** @description movedBlockViewZones.original */ zones.map(z => z.original))));\n this._register(applyViewZones(this._editors.modified, movedBlockViewZones.map(zones => /** @description movedBlockViewZones.modified */ zones.map(z => z.modified))));\n this._register(autorunWithStore((reader, store) => {\n const blocks = movedBlockViewZones.read(reader);\n for (const b of blocks) {\n store.add(new MovedBlockOverlayWidget(this._editors.original, b.original, b.move, 'original', this._diffModel.get()));\n store.add(new MovedBlockOverlayWidget(this._editors.modified, b.modified, b.move, 'modified', this._diffModel.get()));\n }\n }));\n const originalHasFocus = observableSignalFromEvent('original.onDidFocusEditorWidget', e => this._editors.original.onDidFocusEditorWidget(() => setTimeout(() => e(undefined), 0)));\n const modifiedHasFocus = observableSignalFromEvent('modified.onDidFocusEditorWidget', e => this._editors.modified.onDidFocusEditorWidget(() => setTimeout(() => e(undefined), 0)));\n let lastChangedEditor = 'modified';\n this._register(autorunHandleChanges({\n createEmptyChangeSummary: () => undefined,\n handleChange: (ctx, summary) => {\n if (ctx.didChange(originalHasFocus)) {\n lastChangedEditor = 'original';\n }\n if (ctx.didChange(modifiedHasFocus)) {\n lastChangedEditor = 'modified';\n }\n return true;\n }\n }, reader => {\n /** @description MovedBlocksLines.setActiveMovedTextFromCursor */\n originalHasFocus.read(reader);\n modifiedHasFocus.read(reader);\n const m = this._diffModel.read(reader);\n if (!m) {\n return;\n }\n const diff = m.diff.read(reader);\n let movedText = undefined;\n if (diff && lastChangedEditor === 'original') {\n const originalPos = this._editors.originalCursor.read(reader);\n if (originalPos) {\n movedText = diff.movedTexts.find(m => m.lineRangeMapping.original.contains(originalPos.lineNumber));\n }\n }\n if (diff && lastChangedEditor === 'modified') {\n const modifiedPos = this._editors.modifiedCursor.read(reader);\n if (modifiedPos) {\n movedText = diff.movedTexts.find(m => m.lineRangeMapping.modified.contains(modifiedPos.lineNumber));\n }\n }\n if (movedText !== m.movedTextToCompare.get()) {\n m.movedTextToCompare.set(undefined, undefined);\n }\n m.setActiveMovedText(movedText);\n }));\n }\n}\nMovedBlocksLinesFeature.movedCodeBlockPadding = 4;\nclass LinesLayout {\n static compute(lines) {\n const setsPerTrack = [];\n const trackPerLineIdx = [];\n for (const line of lines) {\n let trackIdx = setsPerTrack.findIndex(set => !set.intersectsStrict(line));\n if (trackIdx === -1) {\n const maxTrackCount = 6;\n if (setsPerTrack.length >= maxTrackCount) {\n trackIdx = findMaxIdx(setsPerTrack, compareBy(set => set.intersectWithRangeLength(line), numberComparator));\n }\n else {\n trackIdx = setsPerTrack.length;\n setsPerTrack.push(new OffsetRangeSet());\n }\n }\n setsPerTrack[trackIdx].addRange(line);\n trackPerLineIdx.push(trackIdx);\n }\n return new LinesLayout(setsPerTrack.length, trackPerLineIdx);\n }\n constructor(_trackCount, trackPerLineIdx) {\n this._trackCount = _trackCount;\n this.trackPerLineIdx = trackPerLineIdx;\n }\n getTrack(lineIdx) {\n return this.trackPerLineIdx[lineIdx];\n }\n getTrackCount() {\n return this._trackCount;\n }\n}\nclass MovedBlockOverlayWidget extends ViewZoneOverlayWidget {\n constructor(_editor, _viewZone, _move, _kind, _diffModel) {\n const root = h('div.diff-hidden-lines-widget');\n super(_editor, _viewZone, root.root);\n this._editor = _editor;\n this._move = _move;\n this._kind = _kind;\n this._diffModel = _diffModel;\n this._nodes = h('div.diff-moved-code-block', { style: { marginRight: '4px' } }, [\n h('div.text-content@textContent'),\n h('div.action-bar@actionBar'),\n ]);\n root.root.appendChild(this._nodes.root);\n const editorLayout = observableFromEvent(this._editor.onDidLayoutChange, () => this._editor.getLayoutInfo());\n this._register(applyStyle(this._nodes.root, {\n paddingRight: editorLayout.map(l => l.verticalScrollbarWidth)\n }));\n let text;\n if (_move.changes.length > 0) {\n text = this._kind === 'original' ? localize('codeMovedToWithChanges', 'Code moved with changes to line {0}-{1}', this._move.lineRangeMapping.modified.startLineNumber, this._move.lineRangeMapping.modified.endLineNumberExclusive - 1) : localize('codeMovedFromWithChanges', 'Code moved with changes from line {0}-{1}', this._move.lineRangeMapping.original.startLineNumber, this._move.lineRangeMapping.original.endLineNumberExclusive - 1);\n }\n else {\n text = this._kind === 'original' ? localize('codeMovedTo', 'Code moved to line {0}-{1}', this._move.lineRangeMapping.modified.startLineNumber, this._move.lineRangeMapping.modified.endLineNumberExclusive - 1) : localize('codeMovedFrom', 'Code moved from line {0}-{1}', this._move.lineRangeMapping.original.startLineNumber, this._move.lineRangeMapping.original.endLineNumberExclusive - 1);\n }\n const actionBar = this._register(new ActionBar(this._nodes.actionBar, {\n highlightToggledItems: true,\n }));\n const caption = new Action('', text, '', false);\n actionBar.push(caption, { icon: false, label: true });\n const actionCompare = new Action('', 'Compare', ThemeIcon.asClassName(Codicon.compareChanges), true, () => {\n this._editor.focus();\n this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get() === _move ? undefined : this._move, undefined);\n });\n this._register(autorun(reader => {\n const isActive = this._diffModel.movedTextToCompare.read(reader) === _move;\n actionCompare.checked = isActive;\n }));\n actionBar.push(actionCompare, { icon: false, label: true });\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar OverviewRulerFeature_1;\nimport { EventType, addDisposableListener, addStandardDisposableListener, h } from '../../../../../base/browser/dom.js';\nimport { createFastDomNode } from '../../../../../base/browser/fastDomNode.js';\nimport { ScrollbarState } from '../../../../../base/browser/ui/scrollbar/scrollbarState.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, derived, observableFromEvent, observableSignalFromEvent } from '../../../../../base/common/observable.js';\nimport { appendRemoveOnDispose } from '../utils.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { OverviewRulerZone } from '../../../../common/viewModel/overviewZoneManager.js';\nimport { defaultInsertColor, defaultRemoveColor, diffInserted, diffOverviewRulerInserted, diffOverviewRulerRemoved, diffRemoved } from '../../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService } from '../../../../../platform/theme/common/themeService.js';\nlet OverviewRulerFeature = OverviewRulerFeature_1 = class OverviewRulerFeature extends Disposable {\n constructor(_editors, _rootElement, _diffModel, _rootWidth, _rootHeight, _modifiedEditorLayoutInfo, _themeService) {\n super();\n this._editors = _editors;\n this._rootElement = _rootElement;\n this._diffModel = _diffModel;\n this._rootWidth = _rootWidth;\n this._rootHeight = _rootHeight;\n this._modifiedEditorLayoutInfo = _modifiedEditorLayoutInfo;\n this._themeService = _themeService;\n this.width = OverviewRulerFeature_1.ENTIRE_DIFF_OVERVIEW_WIDTH;\n const currentColorTheme = observableFromEvent(this._themeService.onDidColorThemeChange, () => this._themeService.getColorTheme());\n const currentColors = derived(reader => {\n /** @description colors */\n const theme = currentColorTheme.read(reader);\n const insertColor = theme.getColor(diffOverviewRulerInserted) || (theme.getColor(diffInserted) || defaultInsertColor).transparent(2);\n const removeColor = theme.getColor(diffOverviewRulerRemoved) || (theme.getColor(diffRemoved) || defaultRemoveColor).transparent(2);\n return { insertColor, removeColor };\n });\n const viewportDomElement = createFastDomNode(document.createElement('div'));\n viewportDomElement.setClassName('diffViewport');\n viewportDomElement.setPosition('absolute');\n const diffOverviewRoot = h('div.diffOverview', {\n style: { position: 'absolute', top: '0px', width: OverviewRulerFeature_1.ENTIRE_DIFF_OVERVIEW_WIDTH + 'px' }\n }).root;\n this._register(appendRemoveOnDispose(diffOverviewRoot, viewportDomElement.domNode));\n this._register(addStandardDisposableListener(diffOverviewRoot, EventType.POINTER_DOWN, (e) => {\n this._editors.modified.delegateVerticalScrollbarPointerDown(e);\n }));\n this._register(addDisposableListener(diffOverviewRoot, EventType.MOUSE_WHEEL, (e) => {\n this._editors.modified.delegateScrollFromMouseWheelEvent(e);\n }, { passive: false }));\n this._register(appendRemoveOnDispose(this._rootElement, diffOverviewRoot));\n this._register(autorunWithStore((reader, store) => {\n /** @description recreate overview rules when model changes */\n const m = this._diffModel.read(reader);\n const originalOverviewRuler = this._editors.original.createOverviewRuler('original diffOverviewRuler');\n if (originalOverviewRuler) {\n store.add(originalOverviewRuler);\n store.add(appendRemoveOnDispose(diffOverviewRoot, originalOverviewRuler.getDomNode()));\n }\n const modifiedOverviewRuler = this._editors.modified.createOverviewRuler('modified diffOverviewRuler');\n if (modifiedOverviewRuler) {\n store.add(modifiedOverviewRuler);\n store.add(appendRemoveOnDispose(diffOverviewRoot, modifiedOverviewRuler.getDomNode()));\n }\n if (!originalOverviewRuler || !modifiedOverviewRuler) {\n // probably no model\n return;\n }\n const origViewZonesChanged = observableSignalFromEvent('viewZoneChanged', this._editors.original.onDidChangeViewZones);\n const modViewZonesChanged = observableSignalFromEvent('viewZoneChanged', this._editors.modified.onDidChangeViewZones);\n const origHiddenRangesChanged = observableSignalFromEvent('hiddenRangesChanged', this._editors.original.onDidChangeHiddenAreas);\n const modHiddenRangesChanged = observableSignalFromEvent('hiddenRangesChanged', this._editors.modified.onDidChangeHiddenAreas);\n store.add(autorun(reader => {\n var _a;\n /** @description set overview ruler zones */\n origViewZonesChanged.read(reader);\n modViewZonesChanged.read(reader);\n origHiddenRangesChanged.read(reader);\n modHiddenRangesChanged.read(reader);\n const colors = currentColors.read(reader);\n const diff = (_a = m === null || m === void 0 ? void 0 : m.diff.read(reader)) === null || _a === void 0 ? void 0 : _a.mappings;\n function createZones(ranges, color, editor) {\n const vm = editor._getViewModel();\n if (!vm) {\n return [];\n }\n return ranges\n .filter(d => d.length > 0)\n .map(r => {\n const start = vm.coordinatesConverter.convertModelPositionToViewPosition(new Position(r.startLineNumber, 1));\n const end = vm.coordinatesConverter.convertModelPositionToViewPosition(new Position(r.endLineNumberExclusive, 1));\n // By computing the lineCount, we won't ask the view model later for the bottom vertical position.\n // (The view model will take into account the alignment viewzones, which will give\n // modifications and deletetions always the same height.)\n const lineCount = end.lineNumber - start.lineNumber;\n return new OverviewRulerZone(start.lineNumber, end.lineNumber, lineCount, color.toString());\n });\n }\n const originalZones = createZones((diff || []).map(d => d.lineRangeMapping.original), colors.removeColor, this._editors.original);\n const modifiedZones = createZones((diff || []).map(d => d.lineRangeMapping.modified), colors.insertColor, this._editors.modified);\n originalOverviewRuler === null || originalOverviewRuler === void 0 ? void 0 : originalOverviewRuler.setZones(originalZones);\n modifiedOverviewRuler === null || modifiedOverviewRuler === void 0 ? void 0 : modifiedOverviewRuler.setZones(modifiedZones);\n }));\n store.add(autorun(reader => {\n /** @description layout overview ruler */\n const height = this._rootHeight.read(reader);\n const width = this._rootWidth.read(reader);\n const layoutInfo = this._modifiedEditorLayoutInfo.read(reader);\n if (layoutInfo) {\n const freeSpace = OverviewRulerFeature_1.ENTIRE_DIFF_OVERVIEW_WIDTH - 2 * OverviewRulerFeature_1.ONE_OVERVIEW_WIDTH;\n originalOverviewRuler.setLayout({\n top: 0,\n height: height,\n right: freeSpace + OverviewRulerFeature_1.ONE_OVERVIEW_WIDTH,\n width: OverviewRulerFeature_1.ONE_OVERVIEW_WIDTH,\n });\n modifiedOverviewRuler.setLayout({\n top: 0,\n height: height,\n right: 0,\n width: OverviewRulerFeature_1.ONE_OVERVIEW_WIDTH,\n });\n const scrollTop = this._editors.modifiedScrollTop.read(reader);\n const scrollHeight = this._editors.modifiedScrollHeight.read(reader);\n const scrollBarOptions = this._editors.modified.getOption(103 /* EditorOption.scrollbar */);\n const state = new ScrollbarState(scrollBarOptions.verticalHasArrows ? scrollBarOptions.arrowSize : 0, scrollBarOptions.verticalScrollbarSize, 0, layoutInfo.height, scrollHeight, scrollTop);\n viewportDomElement.setTop(state.getSliderPosition());\n viewportDomElement.setHeight(state.getSliderSize());\n }\n else {\n viewportDomElement.setTop(0);\n viewportDomElement.setHeight(0);\n }\n diffOverviewRoot.style.height = height + 'px';\n diffOverviewRoot.style.left = (width - OverviewRulerFeature_1.ENTIRE_DIFF_OVERVIEW_WIDTH) + 'px';\n viewportDomElement.setWidth(OverviewRulerFeature_1.ENTIRE_DIFF_OVERVIEW_WIDTH);\n }));\n }));\n }\n};\nOverviewRulerFeature.ONE_OVERVIEW_WIDTH = 15;\nOverviewRulerFeature.ENTIRE_DIFF_OVERVIEW_WIDTH = OverviewRulerFeature_1.ONE_OVERVIEW_WIDTH * 2;\nOverviewRulerFeature = OverviewRulerFeature_1 = __decorate([\n __param(6, IThemeService)\n], OverviewRulerFeature);\nexport { OverviewRulerFeature };\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 { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { localize } from '../../../../nls.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nexport const diffMoveBorder = registerColor('diffEditor.move.border', { dark: '#8b8b8b9c', light: '#8b8b8b9c', hcDark: '#8b8b8b9c', hcLight: '#8b8b8b9c', }, localize('diffEditor.move.border', 'The border color for text that got moved in the diff editor.'));\nexport const diffMoveBorderActive = registerColor('diffEditor.moveActive.border', { dark: '#FFA500', light: '#FFA500', hcDark: '#FFA500', hcLight: '#FFA500', }, localize('diffEditor.moveActive.border', 'The active border color for text that got moved in the diff editor.'));\nexport const diffEditorUnchangedRegionShadow = registerColor('diffEditor.unchangedRegionShadow', { dark: '#000000', light: '#737373BF', hcDark: '#000000', hcLight: '#737373BF', }, localize('diffEditor.unchangedRegionShadow', 'The color of the shadow around unchanged region widgets.'));\nexport const diffInsertIcon = registerIcon('diff-insert', Codicon.add, localize('diffInsertIcon', 'Line decoration for inserts in the diff editor.'));\nexport const diffRemoveIcon = registerIcon('diff-remove', Codicon.remove, localize('diffRemoveIcon', 'Line decoration for removals in the diff editor.'));\nexport const diffLineAddDecorationBackgroundWithIndicator = ModelDecorationOptions.register({\n className: 'line-insert',\n description: 'line-insert',\n isWholeLine: true,\n linesDecorationsClassName: 'insert-sign ' + ThemeIcon.asClassName(diffInsertIcon),\n marginClassName: 'gutter-insert',\n});\nexport const diffLineDeleteDecorationBackgroundWithIndicator = ModelDecorationOptions.register({\n className: 'line-delete',\n description: 'line-delete',\n isWholeLine: true,\n linesDecorationsClassName: 'delete-sign ' + ThemeIcon.asClassName(diffRemoveIcon),\n marginClassName: 'gutter-delete',\n});\nexport const diffLineAddDecorationBackground = ModelDecorationOptions.register({\n className: 'line-insert',\n description: 'line-insert',\n isWholeLine: true,\n marginClassName: 'gutter-insert',\n});\nexport const diffLineDeleteDecorationBackground = ModelDecorationOptions.register({\n className: 'line-delete',\n description: 'line-delete',\n isWholeLine: true,\n marginClassName: 'gutter-delete',\n});\nexport const diffAddDecoration = ModelDecorationOptions.register({\n className: 'char-insert',\n description: 'char-insert',\n shouldFillLineOnLineBreak: true,\n});\nexport const diffWholeLineAddDecoration = ModelDecorationOptions.register({\n className: 'char-insert',\n description: 'char-insert',\n isWholeLine: true,\n});\nexport const diffAddDecorationEmpty = ModelDecorationOptions.register({\n className: 'char-insert diff-range-empty',\n description: 'char-insert diff-range-empty',\n});\nexport const diffDeleteDecoration = ModelDecorationOptions.register({\n className: 'char-delete',\n description: 'char-delete',\n shouldFillLineOnLineBreak: true,\n});\nexport const diffWholeLineDeleteDecoration = ModelDecorationOptions.register({\n className: 'char-delete',\n description: 'char-delete',\n isWholeLine: true,\n});\nexport const diffDeleteDecorationEmpty = ModelDecorationOptions.register({\n className: 'char-delete diff-range-empty',\n description: 'char-delete diff-range-empty',\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 { findLast } from '../../../../base/common/arraysFind.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { isHotReloadEnabled, registerHotReloadHandler } from '../../../../base/common/hotReload.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, autorunHandleChanges, autorunOpts, autorunWithStore, observableSignalFromEvent, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { ElementSizeObserver } from '../../config/elementSizeObserver.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { TextLength } from '../../../common/core/textLength.js';\nexport function joinCombine(arr1, arr2, keySelector, combine) {\n if (arr1.length === 0) {\n return arr2;\n }\n if (arr2.length === 0) {\n return arr1;\n }\n const result = [];\n let i = 0;\n let j = 0;\n while (i < arr1.length && j < arr2.length) {\n const val1 = arr1[i];\n const val2 = arr2[j];\n const key1 = keySelector(val1);\n const key2 = keySelector(val2);\n if (key1 < key2) {\n result.push(val1);\n i++;\n }\n else if (key1 > key2) {\n result.push(val2);\n j++;\n }\n else {\n result.push(combine(val1, val2));\n i++;\n j++;\n }\n }\n while (i < arr1.length) {\n result.push(arr1[i]);\n i++;\n }\n while (j < arr2.length) {\n result.push(arr2[j]);\n j++;\n }\n return result;\n}\n// TODO make utility\nexport function applyObservableDecorations(editor, decorations) {\n const d = new DisposableStore();\n const decorationsCollection = editor.createDecorationsCollection();\n d.add(autorunOpts({ debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n const d = decorations.read(reader);\n decorationsCollection.set(d);\n }));\n d.add({\n dispose: () => {\n decorationsCollection.clear();\n }\n });\n return d;\n}\nexport function appendRemoveOnDispose(parent, child) {\n parent.appendChild(child);\n return toDisposable(() => {\n parent.removeChild(child);\n });\n}\nexport function prependRemoveOnDispose(parent, child) {\n parent.prepend(child);\n return toDisposable(() => {\n parent.removeChild(child);\n });\n}\nexport class ObservableElementSizeObserver extends Disposable {\n get width() { return this._width; }\n get height() { return this._height; }\n get automaticLayout() { return this._automaticLayout; }\n constructor(element, dimension) {\n super();\n this._automaticLayout = false;\n this.elementSizeObserver = this._register(new ElementSizeObserver(element, dimension));\n this._width = observableValue(this, this.elementSizeObserver.getWidth());\n this._height = observableValue(this, this.elementSizeObserver.getHeight());\n this._register(this.elementSizeObserver.onDidChange(e => transaction(tx => {\n /** @description Set width/height from elementSizeObserver */\n this._width.set(this.elementSizeObserver.getWidth(), tx);\n this._height.set(this.elementSizeObserver.getHeight(), tx);\n })));\n }\n observe(dimension) {\n this.elementSizeObserver.observe(dimension);\n }\n setAutomaticLayout(automaticLayout) {\n this._automaticLayout = automaticLayout;\n if (automaticLayout) {\n this.elementSizeObserver.startObserving();\n }\n else {\n this.elementSizeObserver.stopObserving();\n }\n }\n}\nexport function animatedObservable(targetWindow, base, store) {\n let targetVal = base.get();\n let startVal = targetVal;\n let curVal = targetVal;\n const result = observableValue('animatedValue', targetVal);\n let animationStartMs = -1;\n const durationMs = 300;\n let animationFrame = undefined;\n store.add(autorunHandleChanges({\n createEmptyChangeSummary: () => ({ animate: false }),\n handleChange: (ctx, s) => {\n if (ctx.didChange(base)) {\n s.animate = s.animate || ctx.change;\n }\n return true;\n }\n }, (reader, s) => {\n /** @description update value */\n if (animationFrame !== undefined) {\n targetWindow.cancelAnimationFrame(animationFrame);\n animationFrame = undefined;\n }\n startVal = curVal;\n targetVal = base.read(reader);\n animationStartMs = Date.now() - (s.animate ? 0 : durationMs);\n update();\n }));\n function update() {\n const passedMs = Date.now() - animationStartMs;\n curVal = Math.floor(easeOutExpo(passedMs, startVal, targetVal - startVal, durationMs));\n if (passedMs < durationMs) {\n animationFrame = targetWindow.requestAnimationFrame(update);\n }\n else {\n curVal = targetVal;\n }\n result.set(curVal, undefined);\n }\n return result;\n}\nfunction easeOutExpo(t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n}\nexport class ViewZoneOverlayWidget extends Disposable {\n constructor(editor, viewZone, htmlElement) {\n super();\n this._register(new ManagedOverlayWidget(editor, htmlElement));\n this._register(applyStyle(htmlElement, {\n height: viewZone.actualHeight,\n top: viewZone.actualTop,\n }));\n }\n}\nexport class PlaceholderViewZone {\n get afterLineNumber() { return this._afterLineNumber.get(); }\n constructor(_afterLineNumber, heightInPx) {\n this._afterLineNumber = _afterLineNumber;\n this.heightInPx = heightInPx;\n this.domNode = document.createElement('div');\n this._actualTop = observableValue(this, undefined);\n this._actualHeight = observableValue(this, undefined);\n this.actualTop = this._actualTop;\n this.actualHeight = this._actualHeight;\n this.showInHiddenAreas = true;\n this.onChange = this._afterLineNumber;\n this.onDomNodeTop = (top) => {\n this._actualTop.set(top, undefined);\n };\n this.onComputedHeight = (height) => {\n this._actualHeight.set(height, undefined);\n };\n }\n}\nexport class ManagedOverlayWidget {\n constructor(_editor, _domElement) {\n this._editor = _editor;\n this._domElement = _domElement;\n this._overlayWidgetId = `managedOverlayWidget-${ManagedOverlayWidget._counter++}`;\n this._overlayWidget = {\n getId: () => this._overlayWidgetId,\n getDomNode: () => this._domElement,\n getPosition: () => null\n };\n this._editor.addOverlayWidget(this._overlayWidget);\n }\n dispose() {\n this._editor.removeOverlayWidget(this._overlayWidget);\n }\n}\nManagedOverlayWidget._counter = 0;\nexport function applyStyle(domNode, style) {\n return autorun(reader => {\n /** @description applyStyle */\n for (let [key, val] of Object.entries(style)) {\n if (val && typeof val === 'object' && 'read' in val) {\n val = val.read(reader);\n }\n if (typeof val === 'number') {\n val = `${val}px`;\n }\n key = key.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n domNode.style[key] = val;\n }\n });\n}\nexport function readHotReloadableExport(value, reader) {\n observeHotReloadableExports([value], reader);\n return value;\n}\nexport function observeHotReloadableExports(values, reader) {\n if (isHotReloadEnabled()) {\n const o = observableSignalFromEvent('reload', event => registerHotReloadHandler(({ oldExports }) => {\n if (![...Object.values(oldExports)].some(v => values.includes(v))) {\n return undefined;\n }\n return (_newExports) => {\n event(undefined);\n return true;\n };\n }));\n o.read(reader);\n }\n}\nexport function applyViewZones(editor, viewZones, setIsUpdating, zoneIds) {\n const store = new DisposableStore();\n const lastViewZoneIds = [];\n store.add(autorunWithStore((reader, store) => {\n /** @description applyViewZones */\n const curViewZones = viewZones.read(reader);\n const viewZonIdsPerViewZone = new Map();\n const viewZoneIdPerOnChangeObservable = new Map();\n // Add/remove view zones\n if (setIsUpdating) {\n setIsUpdating(true);\n }\n editor.changeViewZones(a => {\n for (const id of lastViewZoneIds) {\n a.removeZone(id);\n zoneIds === null || zoneIds === void 0 ? void 0 : zoneIds.delete(id);\n }\n lastViewZoneIds.length = 0;\n for (const z of curViewZones) {\n const id = a.addZone(z);\n if (z.setZoneId) {\n z.setZoneId(id);\n }\n lastViewZoneIds.push(id);\n zoneIds === null || zoneIds === void 0 ? void 0 : zoneIds.add(id);\n viewZonIdsPerViewZone.set(z, id);\n }\n });\n if (setIsUpdating) {\n setIsUpdating(false);\n }\n // Layout zone on change\n store.add(autorunHandleChanges({\n createEmptyChangeSummary() {\n return { zoneIds: [] };\n },\n handleChange(context, changeSummary) {\n const id = viewZoneIdPerOnChangeObservable.get(context.changedObservable);\n if (id !== undefined) {\n changeSummary.zoneIds.push(id);\n }\n return true;\n },\n }, (reader, changeSummary) => {\n /** @description layoutZone on change */\n for (const vz of curViewZones) {\n if (vz.onChange) {\n viewZoneIdPerOnChangeObservable.set(vz.onChange, viewZonIdsPerViewZone.get(vz));\n vz.onChange.read(reader);\n }\n }\n if (setIsUpdating) {\n setIsUpdating(true);\n }\n editor.changeViewZones(a => { for (const id of changeSummary.zoneIds) {\n a.layoutZone(id);\n } });\n if (setIsUpdating) {\n setIsUpdating(false);\n }\n }));\n }));\n store.add({\n dispose() {\n if (setIsUpdating) {\n setIsUpdating(true);\n }\n editor.changeViewZones(a => { for (const id of lastViewZoneIds) {\n a.removeZone(id);\n } });\n zoneIds === null || zoneIds === void 0 ? void 0 : zoneIds.clear();\n if (setIsUpdating) {\n setIsUpdating(false);\n }\n }\n });\n return store;\n}\nexport class DisposableCancellationTokenSource extends CancellationTokenSource {\n dispose() {\n super.dispose(true);\n }\n}\nexport function translatePosition(posInOriginal, mappings) {\n const mapping = findLast(mappings, m => m.original.startLineNumber <= posInOriginal.lineNumber);\n if (!mapping) {\n // No changes before the position\n return Range.fromPositions(posInOriginal);\n }\n if (mapping.original.endLineNumberExclusive <= posInOriginal.lineNumber) {\n const newLineNumber = posInOriginal.lineNumber - mapping.original.endLineNumberExclusive + mapping.modified.endLineNumberExclusive;\n return Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n }\n if (!mapping.innerChanges) {\n // Only for legacy algorithm\n return Range.fromPositions(new Position(mapping.modified.startLineNumber, 1));\n }\n const innerMapping = findLast(mapping.innerChanges, m => m.originalRange.getStartPosition().isBeforeOrEqual(posInOriginal));\n if (!innerMapping) {\n const newLineNumber = posInOriginal.lineNumber - mapping.original.startLineNumber + mapping.modified.startLineNumber;\n return Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n }\n if (innerMapping.originalRange.containsPosition(posInOriginal)) {\n return innerMapping.modifiedRange;\n }\n else {\n const l = lengthBetweenPositions(innerMapping.originalRange.getEndPosition(), posInOriginal);\n return Range.fromPositions(l.addToPosition(innerMapping.modifiedRange.getEndPosition()));\n }\n}\nfunction lengthBetweenPositions(position1, position2) {\n if (position1.lineNumber === position2.lineNumber) {\n return new TextLength(0, position2.column - position1.column);\n }\n else {\n return new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n }\n}\nexport function filterWithPrevious(arr, filter) {\n let prev;\n return arr.filter(cur => {\n const result = filter(cur, prev);\n prev = cur;\n return result;\n });\n}\n"],"names":["command","id","desc","title","toggled","precondition","order","group","when","icon","ctx","key","WorkerBasedDocumentDiffProvider_1","__decorate","decorators","target","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","IDiffProviderFactoryService","WorkerBasedDiffProviderFactoryService","constructor","instantiationService","this","createDiffProvider","options","createInstance","WorkerBasedDocumentDiffProvider","editorWorkerService","telemetryService","onDidChangeEventEmitter","onDidChange","event","diffAlgorithm","diffAlgorithmOnDidChangeSubscription","undefined","setOptions","dispose","_a","computeDiff","original","modified","cancellationToken","_b","isDisposed","changes","identical","quitEarly","moves","getLineCount","getLineMaxColumn","getFullModelRange","uriKey","JSON","stringify","uri","toString","context","getAlternativeVersionId","diffCache","get","result","sw","timeMs","elapsed","publicLog2","timedOut","detectedMoves","computeMoves","isCancellationRequested","Error","size","delete","keys","next","value","set","newOptions","didChange","fire","Map","DiffEditorViewModel","setActiveMovedText","movedText","_activeMovedText","model","_options","_diffProviderFactoryService","super","_isDiffUpToDate","observable","isDiffUpToDate","_diff","diff","_unchangedRegions","unchangedRegions","hideUnchangedRegions","read","regions","tx","collapseAll","movedTextToCompare","_hoveredMovedText","activeMovedText","_cancellationTokenSource","_diffProvider","reader","diffProvider","onChangeSignal","_register","cancel","contentChangedSignal","debouncer","trigger","lastUnchangedRegions","some","isDragged","lastUnchangedRegionsOrigRanges","originalDecorationIds","map","getDecorationRange","lastUnchangedRegionsModRanges","modifiedDecorationIds","updatedLastUnchangedRegions","idx","UnchangedRegion","startLineNumber","visibleLineCountTop","visibleLineCountBottom","filter","newRanges","touching","a","b","getHiddenModifiedRange","endLineNumberExclusive","sumLineCount","reduce","sum","lineCount","originalLineNumber","modifiedLineNumber","push","deltaDecorations","range","originalUnchangedRange","toInclusiveRange","description","modifiedUnchangedRange","updateUnchangedRegions","newUnchangedRegions","fromDiffs","hideUnchangedRegionsMinimumLineCount","hideUnchangedRegionsContextLineCount","visibleRegions","hiddenRegions","Math","min","cur","prev","getHiddenOriginalRange","newUnchangedRegions2","intersecting","f","intersectsStrict","setVisibleRanges","onDidChangeContent","e","textEdits","applyModifiedEdits","_lastDiff","DiffState","fromDiffResult","currentSyncedMovedText","find","m","lineRangeMapping","intersect","schedule","applyOriginalEdits","async","store","documentDiffProvider","originalTextEditInfos","add","edits","combineTextEditInfos","modifiedTextEditInfos","ignoreTrimWhitespace","maxComputationTimeMs","showMoves","token","innerChanges","rangeMapping","originalRange","modifiedRange","endColumn","endLineNumber","setEndPosition","normalizeRangeMapping","state","ensureModifiedLineIsVisible","lineNumber","preference","mappings","contains","showModifiedLine","ensureOriginalLineIsVisible","showOriginalLine","waitForDiff","s","serializeState","collapsedRegions","serialize","restoreSerializedState","ranges","setHiddenModifiedRange","DiffMapping","movedTexts","originalLineCount","modifiedLineCount","minHiddenLineCount","minContext","inversedMappings","mapping","origStart","modStart","atStart","atEnd","_visibleLineCountTop","_visibleLineCountBottom","_shouldHideControls","visibleLineCountTop2","max","visibleLineCountBottom2","visibleRanges","hiddenModified","subtractFrom","originalStartLineNumber","modifiedStartLineNumber","modifiedEndLineNumberEx","showAll","isLast","newR","shouldHideControls","setState","getMaxVisibleLineCountTop","getMaxVisibleLineCountBottom","showMoreAbove","count","maxVisibleLineCountTop","showMoreBelow","maxVisibleLineCountBottom","top","bottom","originalTextModel","modifiedTextModel","EditorGutter","_editor","_domNode","itemProvider","scrollTop","onDidScrollChange","getScrollTop","isScrollTopZero","modelAttached","onDidChangeModel","hasModel","editorOnDidChangeViewZones","onDidChangeViewZones","editorOnDidContentSizeChange","onDidContentSizeChange","domNodeSizeChanged","views","className","scrollDecoration","appendChild","h","role","ariaHidden","style","width","root","o","ResizeObserver","observe","disconnect","render","getVisibleRanges","unusedIds","Set","viewRange","clientHeight","isEmpty","visibleRange","visibleRange2","gutterItems","getIntersectingGutterItems","gutterItem","view","item","viewDomNode","document","createElement","gutterItemObs","itemView","createView","ManagedGutterItemView","getModel","getTopForLineNumber","getBottomForLineNumber","height","domNode","gutterItemView","layout","removeChild","emptyArr","DiffEditorGutter","diffEditorRoot","_diffModel","_editors","_sashLayout","_boundarySashes","_instantiationService","_contextKeyService","_menuService","_menu","createMenu","_actions","getActions","_hasActions","_showSash","renderSideBySide","elements","position","_currentDiff","cursorPosition","modifiedCursor","_selectedDiffs","selections","modifiedSelections","every","selectedLineNumbers","intersects","rangeMappings","focus","display","derived","dimensions","enableSplitViewResizing","sashLeft","v","resetSash","recomputeInitiallyAndOnChange","_store","diffs","selection","flatMap","DiffGutterItem","currentDiff","withInnerChangesFromLineRanges","DiffToolBar","gutter","getOption","handleMouseWheel","delegateScrollFromMouseWheelEvent","passive","computeStagedValue","modifiedModel","edit","toTextEdit","apply","left","showAlways","menuId","rangeOverride","originalUri","modifiedUri","_item","_elements","_showAlways","_menuId","_isSmall","_lastItemRange","_lastViewRange","hoverDelegate","hoverPosition","classList","toggle","setTimeout","buttons","replaceChildren","orientation","toolbarOptions","primaryGroup","g","startsWith","overflowBehavior","maxItems","hiddenItemStrategy","actionRunner","originalWithModifiedChanges","menuOptions","shouldForwardArgs","onDidChangeMenuItems","itemRange","itemHeight","middleHeight","margin","effectiveCheckboxTop","start","preferredViewPortRange","endExclusive","preferredParentRange","clip","RevertButtonsFeature","_widget","shouldRenderOldRevertArrows","glyphWidgetsModified","selectedDiffs","selectedDiffsSet","btn","RevertButton","positionLineNumber","addGlyphMarginWidget","has","w","removeGlyphMarginWidget","getId","_id","_lineNumber","_diffs","_revertSelection","counter","button","stopPropagation","preventDefault","revert","revertRangeMappings","getDomNode","getPosition","lane","startColumn","zIndex","DelegatingEditor","idCounter","_onDidDispose","onDidDispose","getEditorType","getVisibleColumnFromPosition","_targetEditor","setPosition","source","revealLine","scrollType","revealLineInCenter","revealLineInCenterIfOutsideViewport","revealLineNearTop","revealPosition","revealPositionInCenter","revealPositionInCenterIfOutsideViewport","revealPositionNearTop","getSelection","getSelections","setSelection","something","setSelections","revealLines","revealLinesInCenter","revealLinesInCenterIfOutsideViewport","revealLinesNearTop","revealRange","revealVerticalInCenter","revealHorizontal","revealRangeInCenter","revealRangeInCenterIfOutsideViewport","revealRangeNearTop","revealRangeNearTopIfOutsideViewport","revealRangeAtTop","getSupportedActions","handlerId","payload","createDecorationsCollection","decorations","changeDecorations","callback","DiffEditorOptions","editorOptions","_accessibilityService","_diffEditorWidth","_screenReaderMode","onDidChangeScreenReaderOptimized","isScreenReaderOptimized","couldShowInlineViewBecauseOfSize","renderSideBySideInlineBreakpoint","renderOverviewRuler","useInlineViewWhenSpaceIsLimited","readOnly","renderMarginRevertIcon","shouldRenderGutterMenu","renderGutterMenu","renderIndicators","splitViewDefaultRatio","maxComputationTime","experimental","isInEmbeddedEditor","diffWordWrap","originalEditable","diffCodeLens","accessibilityVerbose","showEmptyDecorations","onlyShowAccessibleDiffViewer","enabled","hideUnchangedRegionsRevealLineCount","revealLineCount","contextLineCount","minimumLineCount","optionsCopy","validateDiffEditorOptions","diffEditor","updateOptions","changedOptions","newDiffEditorOptions","setWidth","defaults","_c","_d","_e","_f","_g","_h","maxFileSize","collapseUnchangedRegions","DiffEditorWidget","_domElement","codeEditorWidgetOptions","_parentContextKeyService","_parentInstantiationService","codeEditorService","_accessibilitySignalService","_editorProgressService","_shouldDisposeDiffModel","createScoped","createChild","_accessibleDiffViewerShouldBeVisible","_accessibleDiffViewerVisible","_movedBlocksLinesPart","_layoutInfo","fullWidth","_rootSizeObserver","fullHeight","automaticLayout","sash","_sash","_gutter","gutterWidth","overviewRulerPartWidth","_overviewRulerPart","originalLeft","originalWidth","modifiedLeft","modifiedWidth","gutterLeft","getLayoutInfo","decorationsLeft","modifiedEditor","originalEditor","_diffValue","onDidUpdateDiff","willCreateDiffEditor","createKey","dimension","setAutomaticLayout","o2","_createInnerEditor","showSash","unchangedRangesFeature","origViewZoneIdsToIgnore","modViewZoneIdsToIgnore","isUpdatingViewZones","viewZoneManager","isUpdatingHiddenAreas","originalViewZones","orig","viewZones","orig2","origViewZones","concat","modifiedViewZones","mod","mod2","modViewZones","scrollState","isUpdatingOrigViewZones","isUpdatingModViewZones","restore","_accessibleDiffViewer","accessibleDiffViewer","visible","visibility","_createDiffEditorContributions","addDiffEditor","onDidChangeCursorPosition","_handleCursorPositionChange","isInitializingDiff","show","done","container","editorWidgetOptions","contributions","ctor","err","hasTextFocus","saveViewState","modelState","restoreViewState","diffEditorState","handleInitialized","createViewModel","setModel","close","vm","shouldDispose","prevValue","getContainerDomNode","getOriginalEditor","getModifiedEditor","getLineChanges","diffState","x","originalEndLineNumber","modifiedEndLineNumber","charChanges","originalStartColumn","originalEndColumn","modifiedStartColumn","modifiedEndColumn","executeEdits","toExclusiveRange","text","getValueInRange","_goTo","goToDiff","curLineNumber","playSignal","revealFirstDiff","diffModel","then","accessibleDiffViewerNext","accessibleDiffViewerPrev","mapToOtherSide","isModifiedFocus","hasWidgetFocus","destination","destinationSelection","sourceSelection","flip","newRange1","getStartPosition","newRange2","getEndPosition","switchSide","exitCompareMove","collapseAllUnchangedRegions","region","showAllUnchangedRegions","isModifiedEditor","reason","HideUnchangedRegionsFeature_1","HideUnchangedRegionsFeature","setBreadcrumbsSourceFactory","factory","_breadcrumbsSourceFactory","_isUpdatingHiddenAreas","_modifiedOutlineSource","modifiedOutlineSource","sideBySide","curUnchangedRegions","origVz","CollapsedCodeOverlayWidget","l","modViewZone","unchangedLinesDecoration","isWholeLine","unchangedLinesDecorationShow","glyphMarginHoverMessage","isTrusted","supportThemeIcons","appendMarkdown","glyphMarginClassName","setHiddenAreas","onMouseUp","rightButton","element","includes","_viewZone","_unchangedRegion","_unchangedRegionRange","_hide","_revealModifiedHiddenLine","_nodes","justifyContent","alignItems","flexShrink","$","onclick","layoutInfo","onDidLayoutChange","first","contentLeft","isFullyRevealed","editor","startTop","clientY","didMove","window","mouseMoveListener","delta","abs","lineDelta","round","newVal","mouseUpListener","getContentHeight","top2","setScrollTop","children","linesHiddenText","span","addEventListener","items","getBreadcrumbItems","kind","divItem","name","others","MovedBlocksLinesFeature","_rootElement","_originalEditorLayoutInfo","_modifiedEditorLayoutInfo","_originalScrollTop","_modifiedScrollTop","_viewZonesChanged","_modifiedViewZonesChangedSignal","_originalViewZonesChangedSignal","_state","_element","infoOrig","infoMod","lines","move","computeLineStart","startOffset","end","from","to","fromWithoutScroll","toWithoutScroll","sort","LinesLayout","compute","lineAreaLeft","verticalScrollbarWidth","lineAreaWidth","getTrackCount","padding","movedCodeBlockPadding","line","verticalY","getTrack","arrowHeight","arrowWidth","right","rectWidth","glyphMarginWidth","lineNumbersWidth","rectHeight","rect","createElementNS","setAttribute","path","arrowRight","remove","info","info2","movedBlockViewZones","zones","z","blocks","MovedBlockOverlayWidget","originalHasFocus","onDidFocusEditorWidget","modifiedHasFocus","lastChangedEditor","createEmptyChangeSummary","handleChange","summary","originalPos","originalCursor","modifiedPos","setsPerTrack","trackPerLineIdx","trackIdx","findIndex","maxTrackCount","intersectWithRangeLength","addRange","_trackCount","lineIdx","_move","_kind","marginRight","editorLayout","paddingRight","actionBar","highlightToggledItems","caption","label","actionCompare","isActive","checked","OverviewRulerFeature_1","OverviewRulerFeature","_rootWidth","_rootHeight","_themeService","ENTIRE_DIFF_OVERVIEW_WIDTH","currentColorTheme","onDidColorThemeChange","getColorTheme","currentColors","theme","insertColor","getColor","transparent","removeColor","viewportDomElement","setClassName","diffOverviewRoot","delegateVerticalScrollbarPointerDown","originalOverviewRuler","createOverviewRuler","modifiedOverviewRuler","origViewZonesChanged","modViewZonesChanged","origHiddenRangesChanged","onDidChangeHiddenAreas","modHiddenRangesChanged","colors","createZones","color","_getViewModel","coordinatesConverter","convertModelPositionToViewPosition","originalZones","modifiedZones","setZones","freeSpace","ONE_OVERVIEW_WIDTH","setLayout","modifiedScrollTop","scrollHeight","modifiedScrollHeight","scrollBarOptions","verticalHasArrows","arrowSize","verticalScrollbarSize","setTop","getSliderPosition","setHeight","getSliderSize","dark","light","hcDark","hcLight","diffInsertIcon","diffRemoveIcon","diffLineAddDecorationBackgroundWithIndicator","linesDecorationsClassName","marginClassName","diffLineDeleteDecorationBackgroundWithIndicator","diffLineAddDecorationBackground","diffLineDeleteDecorationBackground","diffAddDecoration","shouldFillLineOnLineBreak","diffWholeLineAddDecoration","diffAddDecorationEmpty","diffDeleteDecoration","diffWholeLineDeleteDecoration","diffDeleteDecorationEmpty","joinCombine","arr1","arr2","keySelector","combine","j","val1","val2","key1","key2","applyObservableDecorations","decorationsCollection","debugName","clear","appendRemoveOnDispose","parent","child","prependRemoveOnDispose","prepend","ObservableElementSizeObserver","_width","_height","_automaticLayout","elementSizeObserver","getWidth","getHeight","startObserving","stopObserving","animatedObservable","targetWindow","base","targetVal","startVal","curVal","animationStartMs","animationFrame","update","passedMs","Date","now","t","floor","pow","requestAnimationFrame","animate","change","cancelAnimationFrame","ViewZoneOverlayWidget","viewZone","htmlElement","ManagedOverlayWidget","applyStyle","actualHeight","actualTop","PlaceholderViewZone","afterLineNumber","_afterLineNumber","heightInPx","_actualTop","_actualHeight","showInHiddenAreas","onChange","onDomNodeTop","onComputedHeight","_overlayWidgetId","_counter","_overlayWidget","addOverlayWidget","removeOverlayWidget","val","entries","replace","toLowerCase","readHotReloadableExport","values","oldExports","_newExports","observeHotReloadableExports","applyViewZones","setIsUpdating","zoneIds","lastViewZoneIds","curViewZones","viewZonIdsPerViewZone","viewZoneIdPerOnChangeObservable","changeViewZones","removeZone","addZone","setZoneId","changeSummary","changedObservable","vz","layoutZone","DisposableCancellationTokenSource","translatePosition","posInOriginal","newLineNumber","column","innerMapping","isBeforeOrEqual","containsPosition","position1","position2","addToPosition","filterWithPrevious","arr"],"sourceRoot":""}