monaco-editor-core 0.54.0 → 0.55.0-dev-20251007
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.messages.de.js +1 -1
- package/esm/nls.messages.es.js +1 -1
- package/esm/nls.messages.fr.js +1 -1
- package/esm/nls.messages.it.js +1 -1
- package/esm/nls.messages.ja.js +1 -1
- package/esm/nls.messages.ko.js +1 -1
- package/esm/nls.messages.ru.js +1 -1
- package/esm/nls.messages.zh-cn.js +1 -1
- package/esm/nls.messages.zh-tw.js +1 -1
- package/esm/vs/base/browser/canIUse.js +1 -0
- package/esm/vs/base/browser/canIUse.js.map +1 -1
- package/esm/vs/base/browser/dom.js +9 -0
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/fastDomNode.js.map +1 -1
- package/esm/vs/base/browser/mouseEvent.js +3 -0
- package/esm/vs/base/browser/mouseEvent.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +2 -0
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +5 -5
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/sash/sash.css +1 -1
- package/esm/vs/base/browser/ui/sash/sash.js +4 -0
- package/esm/vs/base/browser/ui/sash/sash.js.map +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +1 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/table/table.css +2 -2
- package/esm/vs/base/browser/ui/tree/abstractTree.js +7 -3
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +4 -0
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js +1 -0
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/media/tree.css +2 -2
- package/esm/vs/base/browser/webWorkerFactory.js +3 -0
- package/esm/vs/base/browser/webWorkerFactory.js.map +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/decorators.js +1 -0
- package/esm/vs/base/common/decorators.js.map +1 -1
- package/esm/vs/base/common/errors.js +1 -0
- package/esm/vs/base/common/errors.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -1
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/hash.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -0
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/hotReloadHelpers.js +1 -0
- package/esm/vs/base/common/hotReloadHelpers.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +19 -0
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marshalling.js +4 -0
- package/esm/vs/base/common/marshalling.js.map +1 -1
- package/esm/vs/base/common/network.js +1 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/objects.js +1 -0
- package/esm/vs/base/common/objects.js.map +1 -1
- package/esm/vs/base/common/observableInternal/changeTracker.js +4 -0
- package/esm/vs/base/common/observableInternal/changeTracker.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -0
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +1 -0
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/consoleObservableLogger.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/debuggerRpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js +1 -0
- package/esm/vs/base/common/observableInternal/logging/debugger/rpc.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js +7 -1
- package/esm/vs/base/common/observableInternal/observables/derived.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +2 -0
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -0
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +1 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/process.js +1 -0
- package/esm/vs/base/common/process.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/types.js +2 -0
- package/esm/vs/base/common/types.js.map +1 -1
- package/esm/vs/base/common/worker/webWorker.js +26 -14
- package/esm/vs/base/common/worker/webWorker.js.map +1 -1
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js +2 -0
- package/esm/vs/base/parts/sandbox/common/sandboxTypes.js.map +1 -0
- package/esm/vs/editor/browser/config/editorConfiguration.js +3 -2
- package/esm/vs/editor/browser/config/editorConfiguration.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/editContextFactory.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js +2 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContextUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +2 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseTarget.js +7 -0
- package/esm/vs/editor/browser/controller/mouseTarget.js.map +1 -1
- package/esm/vs/editor/browser/controller/pointerHandler.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorDom.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
- package/esm/vs/editor/browser/gpu/gpuUtils.js +1 -0
- package/esm/vs/editor/browser/gpu/gpuUtils.js.map +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -0
- package/esm/vs/editor/browser/gpu/viewGpuContext.js.map +1 -1
- package/esm/vs/editor/browser/services/abstractCodeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/bulkEditService.js.map +1 -1
- package/esm/vs/editor/browser/services/codeEditorService.js.map +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hover.css +2 -0
- package/esm/vs/editor/browser/services/hoverService/hoverService.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js +8 -8
- package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js.map +1 -1
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +1 -0
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +1 -0
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorContributions.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +4 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/delegatingEditorImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorOptions.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/utils.js +2 -0
- package/esm/vs/editor/browser/widget/diffEditor/utils.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +122 -68
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfo.js +32 -16
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/config/fontInfoFromSettings.js +16 -0
- package/esm/vs/editor/common/config/fontInfoFromSettings.js.map +1 -0
- package/esm/vs/editor/common/core/edits/edit.js +1 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +2 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/position.js +1 -1
- package/esm/vs/editor/common/core/position.js.map +1 -1
- package/esm/vs/editor/common/core/range.js +1 -1
- package/esm/vs/editor/common/core/range.js.map +1 -1
- package/esm/vs/editor/common/core/selection.js +1 -1
- package/esm/vs/editor/common/core/selection.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorCommon.js.map +1 -1
- package/esm/vs/editor/common/languages.js +1 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js +14 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js.map +1 -1
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js +2 -0
- package/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +1 -1
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model.js +1 -1
- package/esm/vs/editor/common/model.js.map +1 -1
- package/esm/vs/editor/common/services/editorBaseApi.js.map +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +1 -0
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorkerHost.js.map +1 -1
- package/esm/vs/editor/common/services/modelService.js +14 -21
- package/esm/vs/editor/common/services/modelService.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +40 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +2 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +1 -0
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +1 -0
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +1 -0
- package/esm/vs/editor/contrib/find/browser/findModel.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -5
- package/esm/vs/editor/contrib/folding/browser/folding.css +4 -4
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +30 -14
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +4 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +56 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/structuredLogger.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +2 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.css +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +2 -0
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +8 -8
- package/esm/vs/editor/editor.api.js +4 -0
- package/esm/vs/editor/editor.api.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +37 -0
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js +3 -0
- package/esm/vs/editor/standalone/common/monarch/monarchCompile.js.map +1 -1
- package/esm/vs/platform/accessibility/browser/accessibilityService.js +2 -2
- package/esm/vs/platform/accessibility/browser/accessibilityService.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/commands/common/commands.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +5 -0
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js +1 -0
- package/esm/vs/platform/dataChannel/browser/forwardingTelemetryService.js.map +1 -1
- package/esm/vs/platform/dnd/browser/dnd.js +2 -0
- package/esm/vs/platform/dnd/browser/dnd.js.map +1 -1
- package/esm/vs/platform/instantiation/common/descriptors.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -0
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +5 -0
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/log/common/logService.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInHotClass.js +2 -0
- package/esm/vs/platform/observable/common/wrapInHotClass.js.map +1 -1
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js +3 -0
- package/esm/vs/platform/observable/common/wrapInReloadableClass.js.map +1 -1
- package/esm/vs/platform/product/common/product.js +69 -0
- package/esm/vs/platform/product/common/product.js.map +1 -0
- package/esm/vs/platform/quickinput/browser/quickInput.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/monaco.d.ts +8 -8
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/diffEditor/utils.ts","vs/editor/browser/widget/diffEditor/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IDimension } from '../../../../base/browser/dom.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, IDisposable, IReference, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, IObservableWithChange, ISettableObservable, autorun, autorunHandleChanges, autorunOpts, autorunWithStore, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { ElementSizeObserver } from '../../config/elementSizeObserver.js';\nimport { ICodeEditor, IOverlayWidget, IViewZone } from '../../editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DetailedLineRangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { IModelDeltaDecoration } from '../../../common/model.js';\nimport { TextLength } from '../../../common/core/text/textLength.js';\n\nexport function joinCombine<T>(arr1: readonly T[], arr2: readonly T[], keySelector: (val: T) => number, combine: (v1: T, v2: T) => T): readonly T[] {\n\tif (arr1.length === 0) {\n\t\treturn arr2;\n\t}\n\tif (arr2.length === 0) {\n\t\treturn arr1;\n\t}\n\n\tconst result: T[] = [];\n\tlet i = 0;\n\tlet j = 0;\n\twhile (i < arr1.length && j < arr2.length) {\n\t\tconst val1 = arr1[i];\n\t\tconst val2 = arr2[j];\n\t\tconst key1 = keySelector(val1);\n\t\tconst key2 = keySelector(val2);\n\n\t\tif (key1 < key2) {\n\t\t\tresult.push(val1);\n\t\t\ti++;\n\t\t} else if (key1 > key2) {\n\t\t\tresult.push(val2);\n\t\t\tj++;\n\t\t} else {\n\t\t\tresult.push(combine(val1, val2));\n\t\t\ti++;\n\t\t\tj++;\n\t\t}\n\t}\n\twhile (i < arr1.length) {\n\t\tresult.push(arr1[i]);\n\t\ti++;\n\t}\n\twhile (j < arr2.length) {\n\t\tresult.push(arr2[j]);\n\t\tj++;\n\t}\n\treturn result;\n}\n\n// TODO make utility\nexport function applyObservableDecorations(editor: ICodeEditor, decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\tconst d = new DisposableStore();\n\tconst decorationsCollection = editor.createDecorationsCollection();\n\td.add(autorunOpts({ debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\tconst d = decorations.read(reader);\n\t\tdecorationsCollection.set(d);\n\t}));\n\td.add({\n\t\tdispose: () => {\n\t\t\tdecorationsCollection.clear();\n\t\t}\n\t});\n\treturn d;\n}\n\nexport function appendRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.appendChild(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport function prependRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.prepend(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport class ObservableElementSizeObserver extends Disposable {\n\tprivate readonly elementSizeObserver: ElementSizeObserver;\n\n\tprivate readonly _width: ISettableObservable<number>;\n\tpublic get width(): IObservable<number> { return this._width; }\n\n\tprivate readonly _height: ISettableObservable<number>;\n\tpublic get height(): IObservable<number> { return this._height; }\n\n\tprivate _automaticLayout: boolean = false;\n\tpublic get automaticLayout(): boolean { return this._automaticLayout; }\n\n\tconstructor(element: HTMLElement | null, dimension: IDimension | undefined) {\n\t\tsuper();\n\n\t\tthis.elementSizeObserver = this._register(new ElementSizeObserver(element, dimension));\n\t\tthis._width = observableValue(this, this.elementSizeObserver.getWidth());\n\t\tthis._height = observableValue(this, this.elementSizeObserver.getHeight());\n\n\t\tthis._register(this.elementSizeObserver.onDidChange(e => transaction(tx => {\n\t\t\t/** @description Set width/height from elementSizeObserver */\n\t\t\tthis._width.set(this.elementSizeObserver.getWidth(), tx);\n\t\t\tthis._height.set(this.elementSizeObserver.getHeight(), tx);\n\t\t})));\n\t}\n\n\tpublic observe(dimension?: IDimension): void {\n\t\tthis.elementSizeObserver.observe(dimension);\n\t}\n\n\tpublic setAutomaticLayout(automaticLayout: boolean): void {\n\t\tthis._automaticLayout = automaticLayout;\n\t\tif (automaticLayout) {\n\t\t\tthis.elementSizeObserver.startObserving();\n\t\t} else {\n\t\t\tthis.elementSizeObserver.stopObserving();\n\t\t}\n\t}\n}\n\nexport function animatedObservable(targetWindow: Window, base: IObservableWithChange<number, boolean>, store: DisposableStore): IObservable<number> {\n\tlet targetVal = base.get();\n\tlet startVal = targetVal;\n\tlet curVal = targetVal;\n\tconst result = observableValue('animatedValue', targetVal);\n\n\tlet animationStartMs: number = -1;\n\tconst durationMs = 300;\n\tlet animationFrame: number | undefined = undefined;\n\n\tstore.add(autorunHandleChanges({\n\t\tchangeTracker: {\n\t\t\tcreateChangeSummary: () => ({ animate: false }),\n\t\t\thandleChange: (ctx, s) => {\n\t\t\t\tif (ctx.didChange(base)) {\n\t\t\t\t\ts.animate = s.animate || ctx.change;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}, (reader, s) => {\n\t\t/** @description update value */\n\t\tif (animationFrame !== undefined) {\n\t\t\ttargetWindow.cancelAnimationFrame(animationFrame);\n\t\t\tanimationFrame = undefined;\n\t\t}\n\n\t\tstartVal = curVal;\n\t\ttargetVal = base.read(reader);\n\t\tanimationStartMs = Date.now() - (s.animate ? 0 : durationMs);\n\n\t\tupdate();\n\t}));\n\n\tfunction update() {\n\t\tconst passedMs = Date.now() - animationStartMs;\n\t\tcurVal = Math.floor(easeOutExpo(passedMs, startVal, targetVal - startVal, durationMs));\n\n\t\tif (passedMs < durationMs) {\n\t\t\tanimationFrame = targetWindow.requestAnimationFrame(update);\n\t\t} else {\n\t\t\tcurVal = targetVal;\n\t\t}\n\n\t\tresult.set(curVal, undefined);\n\t}\n\n\treturn result;\n}\n\nfunction easeOutExpo(t: number, b: number, c: number, d: number): number {\n\treturn t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n}\n\nexport abstract class ViewZoneOverlayWidget extends Disposable {\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tviewZone: PlaceholderViewZone,\n\t\thtmlElement: HTMLElement,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(new ManagedOverlayWidget(editor, htmlElement));\n\t\tthis._register(applyStyle(htmlElement, {\n\t\t\theight: viewZone.actualHeight,\n\t\t\ttop: viewZone.actualTop,\n\t\t}));\n\t}\n}\n\nexport interface IObservableViewZone extends IViewZone {\n\t// Causes the view zone to relayout.\n\tonChange?: IObservable<unknown>;\n\n\t// Tells a view zone its id.\n\tsetZoneId?(zoneId: string): void;\n}\n\nexport class PlaceholderViewZone implements IObservableViewZone {\n\tpublic readonly domNode;\n\n\tprivate readonly _actualTop;\n\tprivate readonly _actualHeight;\n\n\tpublic readonly actualTop: IObservable<number | undefined>;\n\tpublic readonly actualHeight: IObservable<number | undefined>;\n\n\tpublic readonly showInHiddenAreas;\n\n\tpublic get afterLineNumber(): number { return this._afterLineNumber.get(); }\n\n\tpublic readonly onChange?: IObservable<unknown>;\n\n\tconstructor(\n\t\tprivate readonly _afterLineNumber: IObservable<number>,\n\t\tpublic readonly heightInPx: number,\n\t) {\n\t\tthis.domNode = document.createElement('div');\n\t\tthis._actualTop = observableValue<number | undefined>(this, undefined);\n\t\tthis._actualHeight = observableValue<number | undefined>(this, undefined);\n\t\tthis.actualTop = this._actualTop;\n\t\tthis.actualHeight = this._actualHeight;\n\t\tthis.showInHiddenAreas = true;\n\t\tthis.onChange = this._afterLineNumber;\n\t\tthis.onDomNodeTop = (top: number) => {\n\t\t\tthis._actualTop.set(top, undefined);\n\t\t};\n\t\tthis.onComputedHeight = (height: number) => {\n\t\t\tthis._actualHeight.set(height, undefined);\n\t\t};\n\t}\n\n\tonDomNodeTop;\n\n\tonComputedHeight;\n}\n\n\nexport class ManagedOverlayWidget implements IDisposable {\n\tprivate static _counter = 0;\n\tprivate readonly _overlayWidgetId = `managedOverlayWidget-${ManagedOverlayWidget._counter++}`;\n\n\tprivate readonly _overlayWidget: IOverlayWidget = {\n\t\tgetId: () => this._overlayWidgetId,\n\t\tgetDomNode: () => this._domElement,\n\t\tgetPosition: () => null\n\t};\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _domElement: HTMLElement,\n\t) {\n\t\tthis._editor.addOverlayWidget(this._overlayWidget);\n\t}\n\n\tdispose(): void {\n\t\tthis._editor.removeOverlayWidget(this._overlayWidget);\n\t}\n}\n\nexport interface CSSStyle {\n\theight: number | string;\n\twidth: number | string;\n\ttop: number | string;\n\tvisibility: 'visible' | 'hidden' | 'collapse';\n\tdisplay: 'block' | 'inline' | 'inline-block' | 'flex' | 'none';\n\tpaddingRight: number | string;\n}\n\nexport function applyStyle(domNode: HTMLElement, style: Partial<{ [TKey in keyof CSSStyle]: CSSStyle[TKey] | IObservable<CSSStyle[TKey] | undefined> | undefined }>) {\n\treturn autorun(reader => {\n\t\t/** @description applyStyle */\n\t\tfor (let [key, val] of Object.entries(style)) {\n\t\t\tif (val && typeof val === 'object' && 'read' in val) {\n\t\t\t\tval = val.read(reader) as any;\n\t\t\t}\n\t\t\tif (typeof val === 'number') {\n\t\t\t\tval = `${val}px`;\n\t\t\t}\n\t\t\tkey = key.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\t\t\tdomNode.style[key as any] = val as any;\n\t\t}\n\t});\n}\n\nexport function applyViewZones(editor: ICodeEditor, viewZones: IObservable<IObservableViewZone[]>, setIsUpdating?: (isUpdatingViewZones: boolean) => void, zoneIds?: Set<string>): IDisposable {\n\tconst store = new DisposableStore();\n\tconst lastViewZoneIds: string[] = [];\n\n\tstore.add(autorunWithStore((reader, store) => {\n\t\t/** @description applyViewZones */\n\t\tconst curViewZones = viewZones.read(reader);\n\n\t\tconst viewZonIdsPerViewZone = new Map<IObservableViewZone, string>();\n\t\tconst viewZoneIdPerOnChangeObservable = new Map<IObservable<unknown>, string>();\n\n\t\t// Add/remove view zones\n\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\teditor.changeViewZones(a => {\n\t\t\tfor (const id of lastViewZoneIds) { a.removeZone(id); zoneIds?.delete(id); }\n\t\t\tlastViewZoneIds.length = 0;\n\n\t\t\tfor (const z of curViewZones) {\n\t\t\t\tconst id = a.addZone(z);\n\t\t\t\tif (z.setZoneId) {\n\t\t\t\t\tz.setZoneId(id);\n\t\t\t\t}\n\t\t\t\tlastViewZoneIds.push(id);\n\t\t\t\tzoneIds?.add(id);\n\t\t\t\tviewZonIdsPerViewZone.set(z, id);\n\t\t\t}\n\t\t});\n\t\tif (setIsUpdating) { setIsUpdating(false); }\n\n\t\t// Layout zone on change\n\t\tstore.add(autorunHandleChanges({\n\t\t\tchangeTracker: {\n\t\t\t\tcreateChangeSummary() {\n\t\t\t\t\treturn { zoneIds: [] as string[] };\n\t\t\t\t},\n\t\t\t\thandleChange(context, changeSummary) {\n\t\t\t\t\tconst id = viewZoneIdPerOnChangeObservable.get(context.changedObservable);\n\t\t\t\t\tif (id !== undefined) { changeSummary.zoneIds.push(id); }\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t}\n\t\t}, (reader, changeSummary) => {\n\t\t\t/** @description layoutZone on change */\n\t\t\tfor (const vz of curViewZones) {\n\t\t\t\tif (vz.onChange) {\n\t\t\t\t\tviewZoneIdPerOnChangeObservable.set(vz.onChange, viewZonIdsPerViewZone.get(vz)!);\n\t\t\t\t\tvz.onChange.read(reader);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of changeSummary.zoneIds) { a.layoutZone(id); } });\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}));\n\t}));\n\n\tstore.add({\n\t\tdispose() {\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of lastViewZoneIds) { a.removeZone(id); } });\n\t\t\tzoneIds?.clear();\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}\n\t});\n\n\treturn store;\n}\n\nexport class DisposableCancellationTokenSource extends CancellationTokenSource {\n\tpublic override dispose() {\n\t\tsuper.dispose(true);\n\t}\n}\n\nexport function translatePosition(posInOriginal: Position, mappings: DetailedLineRangeMapping[]): Range {\n\tconst mapping = findLast(mappings, m => m.original.startLineNumber <= posInOriginal.lineNumber);\n\tif (!mapping) {\n\t\t// No changes before the position\n\t\treturn Range.fromPositions(posInOriginal);\n\t}\n\n\tif (mapping.original.endLineNumberExclusive <= posInOriginal.lineNumber) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.endLineNumberExclusive + mapping.modified.endLineNumberExclusive;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (!mapping.innerChanges) {\n\t\t// Only for legacy algorithm\n\t\treturn Range.fromPositions(new Position(mapping.modified.startLineNumber, 1));\n\t}\n\n\tconst innerMapping = findLast(mapping.innerChanges, m => m.originalRange.getStartPosition().isBeforeOrEqual(posInOriginal));\n\tif (!innerMapping) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.startLineNumber + mapping.modified.startLineNumber;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (innerMapping.originalRange.containsPosition(posInOriginal)) {\n\t\treturn innerMapping.modifiedRange;\n\t} else {\n\t\tconst l = lengthBetweenPositions(innerMapping.originalRange.getEndPosition(), posInOriginal);\n\t\treturn Range.fromPositions(l.addToPosition(innerMapping.modifiedRange.getEndPosition()));\n\t}\n}\n\nfunction lengthBetweenPositions(position1: Position, position2: Position): TextLength {\n\tif (position1.lineNumber === position2.lineNumber) {\n\t\treturn new TextLength(0, position2.column - position1.column);\n\t} else {\n\t\treturn new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n\t}\n}\n\nexport function filterWithPrevious<T>(arr: T[], filter: (cur: T, prev: T | undefined) => boolean): T[] {\n\tlet prev: T | undefined;\n\treturn arr.filter(cur => {\n\t\tconst result = filter(cur, prev);\n\t\tprev = cur;\n\t\treturn result;\n\t});\n}\n\nexport abstract class RefCounted<T> implements IDisposable, IReference<T> {\n\tpublic static create<T extends IDisposable>(value: T, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\treturn new BaseRefCounted(value, value, debugOwner);\n\t}\n\n\tpublic static createWithDisposable<T extends IDisposable>(value: T, disposable: IDisposable, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\tconst store = new DisposableStore();\n\t\tstore.add(disposable);\n\t\tstore.add(value);\n\t\treturn new BaseRefCounted(value, store, debugOwner);\n\t}\n\n\tpublic abstract createNewRef(debugOwner?: object | undefined): RefCounted<T>;\n\n\tpublic abstract dispose(): void;\n\n\tpublic abstract get object(): T;\n}\n\nclass BaseRefCounted<T> extends RefCounted<T> {\n\tprivate _refCount = 1;\n\tprivate _isDisposed = false;\n\tprivate readonly _owners: object[] = [];\n\n\tconstructor(\n\t\tpublic override readonly object: T,\n\t\tprivate readonly _disposable: IDisposable,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\n\t\tif (_debugOwner) {\n\t\t\tthis._addOwner(_debugOwner);\n\t\t}\n\t}\n\n\tprivate _addOwner(debugOwner: object | undefined) {\n\t\tif (debugOwner) {\n\t\t\tthis._owners.push(debugOwner);\n\t\t}\n\t}\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\tthis._refCount++;\n\t\tif (debugOwner) {\n\t\t\tthis._addOwner(debugOwner);\n\t\t}\n\t\treturn new ClonedRefCounted(this, debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._decreaseRefCount(this._debugOwner);\n\t}\n\n\tpublic _decreaseRefCount(debugOwner?: object | undefined): void {\n\t\tthis._refCount--;\n\t\tif (this._refCount === 0) {\n\t\t\tthis._disposable.dispose();\n\t\t}\n\n\t\tif (debugOwner) {\n\t\t\tconst idx = this._owners.indexOf(debugOwner);\n\t\t\tif (idx !== -1) {\n\t\t\t\tthis._owners.splice(idx, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass ClonedRefCounted<T> extends RefCounted<T> {\n\tprivate _isDisposed = false;\n\tconstructor(\n\t\tprivate readonly _base: BaseRefCounted<T>,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic get object(): T { return this._base.object; }\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\treturn this._base.createNewRef(debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._base._decreaseRefCount(this._debugOwner);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IDimension } from '../../../../base/browser/dom.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, IDisposable, IReference, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, IObservableWithChange, ISettableObservable, autorun, autorunHandleChanges, autorunOpts, autorunWithStore, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { ElementSizeObserver } from '../../config/elementSizeObserver.js';\nimport { ICodeEditor, IOverlayWidget, IViewZone } from '../../editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DetailedLineRangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { IModelDeltaDecoration } from '../../../common/model.js';\nimport { TextLength } from '../../../common/core/text/textLength.js';\n\nexport function joinCombine<T>(arr1: readonly T[], arr2: readonly T[], keySelector: (val: T) => number, combine: (v1: T, v2: T) => T): readonly T[] {\n\tif (arr1.length === 0) {\n\t\treturn arr2;\n\t}\n\tif (arr2.length === 0) {\n\t\treturn arr1;\n\t}\n\n\tconst result: T[] = [];\n\tlet i = 0;\n\tlet j = 0;\n\twhile (i < arr1.length && j < arr2.length) {\n\t\tconst val1 = arr1[i];\n\t\tconst val2 = arr2[j];\n\t\tconst key1 = keySelector(val1);\n\t\tconst key2 = keySelector(val2);\n\n\t\tif (key1 < key2) {\n\t\t\tresult.push(val1);\n\t\t\ti++;\n\t\t} else if (key1 > key2) {\n\t\t\tresult.push(val2);\n\t\t\tj++;\n\t\t} else {\n\t\t\tresult.push(combine(val1, val2));\n\t\t\ti++;\n\t\t\tj++;\n\t\t}\n\t}\n\twhile (i < arr1.length) {\n\t\tresult.push(arr1[i]);\n\t\ti++;\n\t}\n\twhile (j < arr2.length) {\n\t\tresult.push(arr2[j]);\n\t\tj++;\n\t}\n\treturn result;\n}\n\n// TODO make utility\nexport function applyObservableDecorations(editor: ICodeEditor, decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\tconst d = new DisposableStore();\n\tconst decorationsCollection = editor.createDecorationsCollection();\n\td.add(autorunOpts({ debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\tconst d = decorations.read(reader);\n\t\tdecorationsCollection.set(d);\n\t}));\n\td.add({\n\t\tdispose: () => {\n\t\t\tdecorationsCollection.clear();\n\t\t}\n\t});\n\treturn d;\n}\n\nexport function appendRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.appendChild(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport function prependRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.prepend(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport class ObservableElementSizeObserver extends Disposable {\n\tprivate readonly elementSizeObserver: ElementSizeObserver;\n\n\tprivate readonly _width: ISettableObservable<number>;\n\tpublic get width(): IObservable<number> { return this._width; }\n\n\tprivate readonly _height: ISettableObservable<number>;\n\tpublic get height(): IObservable<number> { return this._height; }\n\n\tprivate _automaticLayout: boolean = false;\n\tpublic get automaticLayout(): boolean { return this._automaticLayout; }\n\n\tconstructor(element: HTMLElement | null, dimension: IDimension | undefined) {\n\t\tsuper();\n\n\t\tthis.elementSizeObserver = this._register(new ElementSizeObserver(element, dimension));\n\t\tthis._width = observableValue(this, this.elementSizeObserver.getWidth());\n\t\tthis._height = observableValue(this, this.elementSizeObserver.getHeight());\n\n\t\tthis._register(this.elementSizeObserver.onDidChange(e => transaction(tx => {\n\t\t\t/** @description Set width/height from elementSizeObserver */\n\t\t\tthis._width.set(this.elementSizeObserver.getWidth(), tx);\n\t\t\tthis._height.set(this.elementSizeObserver.getHeight(), tx);\n\t\t})));\n\t}\n\n\tpublic observe(dimension?: IDimension): void {\n\t\tthis.elementSizeObserver.observe(dimension);\n\t}\n\n\tpublic setAutomaticLayout(automaticLayout: boolean): void {\n\t\tthis._automaticLayout = automaticLayout;\n\t\tif (automaticLayout) {\n\t\t\tthis.elementSizeObserver.startObserving();\n\t\t} else {\n\t\t\tthis.elementSizeObserver.stopObserving();\n\t\t}\n\t}\n}\n\nexport function animatedObservable(targetWindow: Window, base: IObservableWithChange<number, boolean>, store: DisposableStore): IObservable<number> {\n\tlet targetVal = base.get();\n\tlet startVal = targetVal;\n\tlet curVal = targetVal;\n\tconst result = observableValue('animatedValue', targetVal);\n\n\tlet animationStartMs: number = -1;\n\tconst durationMs = 300;\n\tlet animationFrame: number | undefined = undefined;\n\n\tstore.add(autorunHandleChanges({\n\t\tchangeTracker: {\n\t\t\tcreateChangeSummary: () => ({ animate: false }),\n\t\t\thandleChange: (ctx, s) => {\n\t\t\t\tif (ctx.didChange(base)) {\n\t\t\t\t\ts.animate = s.animate || ctx.change;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}, (reader, s) => {\n\t\t/** @description update value */\n\t\tif (animationFrame !== undefined) {\n\t\t\ttargetWindow.cancelAnimationFrame(animationFrame);\n\t\t\tanimationFrame = undefined;\n\t\t}\n\n\t\tstartVal = curVal;\n\t\ttargetVal = base.read(reader);\n\t\tanimationStartMs = Date.now() - (s.animate ? 0 : durationMs);\n\n\t\tupdate();\n\t}));\n\n\tfunction update() {\n\t\tconst passedMs = Date.now() - animationStartMs;\n\t\tcurVal = Math.floor(easeOutExpo(passedMs, startVal, targetVal - startVal, durationMs));\n\n\t\tif (passedMs < durationMs) {\n\t\t\tanimationFrame = targetWindow.requestAnimationFrame(update);\n\t\t} else {\n\t\t\tcurVal = targetVal;\n\t\t}\n\n\t\tresult.set(curVal, undefined);\n\t}\n\n\treturn result;\n}\n\nfunction easeOutExpo(t: number, b: number, c: number, d: number): number {\n\treturn t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n}\n\nexport abstract class ViewZoneOverlayWidget extends Disposable {\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tviewZone: PlaceholderViewZone,\n\t\thtmlElement: HTMLElement,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(new ManagedOverlayWidget(editor, htmlElement));\n\t\tthis._register(applyStyle(htmlElement, {\n\t\t\theight: viewZone.actualHeight,\n\t\t\ttop: viewZone.actualTop,\n\t\t}));\n\t}\n}\n\nexport interface IObservableViewZone extends IViewZone {\n\t// Causes the view zone to relayout.\n\tonChange?: IObservable<unknown>;\n\n\t// Tells a view zone its id.\n\tsetZoneId?(zoneId: string): void;\n}\n\nexport class PlaceholderViewZone implements IObservableViewZone {\n\tpublic readonly domNode;\n\n\tprivate readonly _actualTop;\n\tprivate readonly _actualHeight;\n\n\tpublic readonly actualTop: IObservable<number | undefined>;\n\tpublic readonly actualHeight: IObservable<number | undefined>;\n\n\tpublic readonly showInHiddenAreas;\n\n\tpublic get afterLineNumber(): number { return this._afterLineNumber.get(); }\n\n\tpublic readonly onChange?: IObservable<unknown>;\n\n\tconstructor(\n\t\tprivate readonly _afterLineNumber: IObservable<number>,\n\t\tpublic readonly heightInPx: number,\n\t) {\n\t\tthis.domNode = document.createElement('div');\n\t\tthis._actualTop = observableValue<number | undefined>(this, undefined);\n\t\tthis._actualHeight = observableValue<number | undefined>(this, undefined);\n\t\tthis.actualTop = this._actualTop;\n\t\tthis.actualHeight = this._actualHeight;\n\t\tthis.showInHiddenAreas = true;\n\t\tthis.onChange = this._afterLineNumber;\n\t\tthis.onDomNodeTop = (top: number) => {\n\t\t\tthis._actualTop.set(top, undefined);\n\t\t};\n\t\tthis.onComputedHeight = (height: number) => {\n\t\t\tthis._actualHeight.set(height, undefined);\n\t\t};\n\t}\n\n\tonDomNodeTop;\n\n\tonComputedHeight;\n}\n\n\nexport class ManagedOverlayWidget implements IDisposable {\n\tprivate static _counter = 0;\n\tprivate readonly _overlayWidgetId = `managedOverlayWidget-${ManagedOverlayWidget._counter++}`;\n\n\tprivate readonly _overlayWidget: IOverlayWidget = {\n\t\tgetId: () => this._overlayWidgetId,\n\t\tgetDomNode: () => this._domElement,\n\t\tgetPosition: () => null\n\t};\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _domElement: HTMLElement,\n\t) {\n\t\tthis._editor.addOverlayWidget(this._overlayWidget);\n\t}\n\n\tdispose(): void {\n\t\tthis._editor.removeOverlayWidget(this._overlayWidget);\n\t}\n}\n\nexport interface CSSStyle {\n\theight: number | string;\n\twidth: number | string;\n\ttop: number | string;\n\tvisibility: 'visible' | 'hidden' | 'collapse';\n\tdisplay: 'block' | 'inline' | 'inline-block' | 'flex' | 'none';\n\tpaddingRight: number | string;\n}\n\nexport function applyStyle(domNode: HTMLElement, style: Partial<{ [TKey in keyof CSSStyle]: CSSStyle[TKey] | IObservable<CSSStyle[TKey] | undefined> | undefined }>) {\n\treturn autorun(reader => {\n\t\t/** @description applyStyle */\n\t\tfor (let [key, val] of Object.entries(style)) {\n\t\t\tif (val && typeof val === 'object' && 'read' in val) {\n\t\t\t\tval = val.read(reader) as any;\n\t\t\t}\n\t\t\tif (typeof val === 'number') {\n\t\t\t\tval = `${val}px`;\n\t\t\t}\n\t\t\tkey = key.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\t\t\tdomNode.style[key as any] = val as any;\n\t\t}\n\t});\n}\n\nexport function applyViewZones(editor: ICodeEditor, viewZones: IObservable<IObservableViewZone[]>, setIsUpdating?: (isUpdatingViewZones: boolean) => void, zoneIds?: Set<string>): IDisposable {\n\tconst store = new DisposableStore();\n\tconst lastViewZoneIds: string[] = [];\n\n\tstore.add(autorunWithStore((reader, store) => {\n\t\t/** @description applyViewZones */\n\t\tconst curViewZones = viewZones.read(reader);\n\n\t\tconst viewZonIdsPerViewZone = new Map<IObservableViewZone, string>();\n\t\tconst viewZoneIdPerOnChangeObservable = new Map<IObservable<unknown>, string>();\n\n\t\t// Add/remove view zones\n\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\teditor.changeViewZones(a => {\n\t\t\tfor (const id of lastViewZoneIds) { a.removeZone(id); zoneIds?.delete(id); }\n\t\t\tlastViewZoneIds.length = 0;\n\n\t\t\tfor (const z of curViewZones) {\n\t\t\t\tconst id = a.addZone(z);\n\t\t\t\tif (z.setZoneId) {\n\t\t\t\t\tz.setZoneId(id);\n\t\t\t\t}\n\t\t\t\tlastViewZoneIds.push(id);\n\t\t\t\tzoneIds?.add(id);\n\t\t\t\tviewZonIdsPerViewZone.set(z, id);\n\t\t\t}\n\t\t});\n\t\tif (setIsUpdating) { setIsUpdating(false); }\n\n\t\t// Layout zone on change\n\t\tstore.add(autorunHandleChanges({\n\t\t\tchangeTracker: {\n\t\t\t\tcreateChangeSummary() {\n\t\t\t\t\treturn { zoneIds: [] as string[] };\n\t\t\t\t},\n\t\t\t\thandleChange(context, changeSummary) {\n\t\t\t\t\tconst id = viewZoneIdPerOnChangeObservable.get(context.changedObservable);\n\t\t\t\t\tif (id !== undefined) { changeSummary.zoneIds.push(id); }\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t}\n\t\t}, (reader, changeSummary) => {\n\t\t\t/** @description layoutZone on change */\n\t\t\tfor (const vz of curViewZones) {\n\t\t\t\tif (vz.onChange) {\n\t\t\t\t\tviewZoneIdPerOnChangeObservable.set(vz.onChange, viewZonIdsPerViewZone.get(vz)!);\n\t\t\t\t\tvz.onChange.read(reader);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of changeSummary.zoneIds) { a.layoutZone(id); } });\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}));\n\t}));\n\n\tstore.add({\n\t\tdispose() {\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of lastViewZoneIds) { a.removeZone(id); } });\n\t\t\tzoneIds?.clear();\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}\n\t});\n\n\treturn store;\n}\n\nexport class DisposableCancellationTokenSource extends CancellationTokenSource {\n\tpublic override dispose() {\n\t\tsuper.dispose(true);\n\t}\n}\n\nexport function translatePosition(posInOriginal: Position, mappings: DetailedLineRangeMapping[]): Range {\n\tconst mapping = findLast(mappings, m => m.original.startLineNumber <= posInOriginal.lineNumber);\n\tif (!mapping) {\n\t\t// No changes before the position\n\t\treturn Range.fromPositions(posInOriginal);\n\t}\n\n\tif (mapping.original.endLineNumberExclusive <= posInOriginal.lineNumber) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.endLineNumberExclusive + mapping.modified.endLineNumberExclusive;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (!mapping.innerChanges) {\n\t\t// Only for legacy algorithm\n\t\treturn Range.fromPositions(new Position(mapping.modified.startLineNumber, 1));\n\t}\n\n\tconst innerMapping = findLast(mapping.innerChanges, m => m.originalRange.getStartPosition().isBeforeOrEqual(posInOriginal));\n\tif (!innerMapping) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.startLineNumber + mapping.modified.startLineNumber;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (innerMapping.originalRange.containsPosition(posInOriginal)) {\n\t\treturn innerMapping.modifiedRange;\n\t} else {\n\t\tconst l = lengthBetweenPositions(innerMapping.originalRange.getEndPosition(), posInOriginal);\n\t\treturn Range.fromPositions(l.addToPosition(innerMapping.modifiedRange.getEndPosition()));\n\t}\n}\n\nfunction lengthBetweenPositions(position1: Position, position2: Position): TextLength {\n\tif (position1.lineNumber === position2.lineNumber) {\n\t\treturn new TextLength(0, position2.column - position1.column);\n\t} else {\n\t\treturn new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n\t}\n}\n\nexport function filterWithPrevious<T>(arr: T[], filter: (cur: T, prev: T | undefined) => boolean): T[] {\n\tlet prev: T | undefined;\n\treturn arr.filter(cur => {\n\t\tconst result = filter(cur, prev);\n\t\tprev = cur;\n\t\treturn result;\n\t});\n}\n\nexport abstract class RefCounted<T> implements IDisposable, IReference<T> {\n\tpublic static create<T extends IDisposable>(value: T, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\treturn new BaseRefCounted(value, value, debugOwner);\n\t}\n\n\tpublic static createWithDisposable<T extends IDisposable>(value: T, disposable: IDisposable, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\tconst store = new DisposableStore();\n\t\tstore.add(disposable);\n\t\tstore.add(value);\n\t\treturn new BaseRefCounted(value, store, debugOwner);\n\t}\n\n\tpublic abstract createNewRef(debugOwner?: object | undefined): RefCounted<T>;\n\n\tpublic abstract dispose(): void;\n\n\tpublic abstract get object(): T;\n}\n\nclass BaseRefCounted<T> extends RefCounted<T> {\n\tprivate _refCount = 1;\n\tprivate _isDisposed = false;\n\tprivate readonly _owners: object[] = [];\n\n\tconstructor(\n\t\tpublic override readonly object: T,\n\t\tprivate readonly _disposable: IDisposable,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\n\t\tif (_debugOwner) {\n\t\t\tthis._addOwner(_debugOwner);\n\t\t}\n\t}\n\n\tprivate _addOwner(debugOwner: object | undefined) {\n\t\tif (debugOwner) {\n\t\t\tthis._owners.push(debugOwner);\n\t\t}\n\t}\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\tthis._refCount++;\n\t\tif (debugOwner) {\n\t\t\tthis._addOwner(debugOwner);\n\t\t}\n\t\treturn new ClonedRefCounted(this, debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._decreaseRefCount(this._debugOwner);\n\t}\n\n\tpublic _decreaseRefCount(debugOwner?: object | undefined): void {\n\t\tthis._refCount--;\n\t\tif (this._refCount === 0) {\n\t\t\tthis._disposable.dispose();\n\t\t}\n\n\t\tif (debugOwner) {\n\t\t\tconst idx = this._owners.indexOf(debugOwner);\n\t\t\tif (idx !== -1) {\n\t\t\t\tthis._owners.splice(idx, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass ClonedRefCounted<T> extends RefCounted<T> {\n\tprivate _isDisposed = false;\n\tconstructor(\n\t\tprivate readonly _base: BaseRefCounted<T>,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic get object(): T { return this._base.object; }\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\treturn this._base.createNewRef(debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._base._decreaseRefCount(this._debugOwner);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/diffEditor/utils.ts","vs/editor/browser/widget/diffEditor/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IDimension } from '../../../../base/browser/dom.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, IDisposable, IReference, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, IObservableWithChange, ISettableObservable, autorun, autorunHandleChanges, autorunOpts, autorunWithStore, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { ElementSizeObserver } from '../../config/elementSizeObserver.js';\nimport { ICodeEditor, IOverlayWidget, IViewZone } from '../../editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DetailedLineRangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { IModelDeltaDecoration } from '../../../common/model.js';\nimport { TextLength } from '../../../common/core/text/textLength.js';\n\nexport function joinCombine<T>(arr1: readonly T[], arr2: readonly T[], keySelector: (val: T) => number, combine: (v1: T, v2: T) => T): readonly T[] {\n\tif (arr1.length === 0) {\n\t\treturn arr2;\n\t}\n\tif (arr2.length === 0) {\n\t\treturn arr1;\n\t}\n\n\tconst result: T[] = [];\n\tlet i = 0;\n\tlet j = 0;\n\twhile (i < arr1.length && j < arr2.length) {\n\t\tconst val1 = arr1[i];\n\t\tconst val2 = arr2[j];\n\t\tconst key1 = keySelector(val1);\n\t\tconst key2 = keySelector(val2);\n\n\t\tif (key1 < key2) {\n\t\t\tresult.push(val1);\n\t\t\ti++;\n\t\t} else if (key1 > key2) {\n\t\t\tresult.push(val2);\n\t\t\tj++;\n\t\t} else {\n\t\t\tresult.push(combine(val1, val2));\n\t\t\ti++;\n\t\t\tj++;\n\t\t}\n\t}\n\twhile (i < arr1.length) {\n\t\tresult.push(arr1[i]);\n\t\ti++;\n\t}\n\twhile (j < arr2.length) {\n\t\tresult.push(arr2[j]);\n\t\tj++;\n\t}\n\treturn result;\n}\n\n// TODO make utility\nexport function applyObservableDecorations(editor: ICodeEditor, decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\tconst d = new DisposableStore();\n\tconst decorationsCollection = editor.createDecorationsCollection();\n\td.add(autorunOpts({ debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\tconst d = decorations.read(reader);\n\t\tdecorationsCollection.set(d);\n\t}));\n\td.add({\n\t\tdispose: () => {\n\t\t\tdecorationsCollection.clear();\n\t\t}\n\t});\n\treturn d;\n}\n\nexport function appendRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.appendChild(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport function prependRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.prepend(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport class ObservableElementSizeObserver extends Disposable {\n\tprivate readonly elementSizeObserver: ElementSizeObserver;\n\n\tprivate readonly _width: ISettableObservable<number>;\n\tpublic get width(): IObservable<number> { return this._width; }\n\n\tprivate readonly _height: ISettableObservable<number>;\n\tpublic get height(): IObservable<number> { return this._height; }\n\n\tprivate _automaticLayout: boolean = false;\n\tpublic get automaticLayout(): boolean { return this._automaticLayout; }\n\n\tconstructor(element: HTMLElement | null, dimension: IDimension | undefined) {\n\t\tsuper();\n\n\t\tthis.elementSizeObserver = this._register(new ElementSizeObserver(element, dimension));\n\t\tthis._width = observableValue(this, this.elementSizeObserver.getWidth());\n\t\tthis._height = observableValue(this, this.elementSizeObserver.getHeight());\n\n\t\tthis._register(this.elementSizeObserver.onDidChange(e => transaction(tx => {\n\t\t\t/** @description Set width/height from elementSizeObserver */\n\t\t\tthis._width.set(this.elementSizeObserver.getWidth(), tx);\n\t\t\tthis._height.set(this.elementSizeObserver.getHeight(), tx);\n\t\t})));\n\t}\n\n\tpublic observe(dimension?: IDimension): void {\n\t\tthis.elementSizeObserver.observe(dimension);\n\t}\n\n\tpublic setAutomaticLayout(automaticLayout: boolean): void {\n\t\tthis._automaticLayout = automaticLayout;\n\t\tif (automaticLayout) {\n\t\t\tthis.elementSizeObserver.startObserving();\n\t\t} else {\n\t\t\tthis.elementSizeObserver.stopObserving();\n\t\t}\n\t}\n}\n\nexport function animatedObservable(targetWindow: Window, base: IObservableWithChange<number, boolean>, store: DisposableStore): IObservable<number> {\n\tlet targetVal = base.get();\n\tlet startVal = targetVal;\n\tlet curVal = targetVal;\n\tconst result = observableValue('animatedValue', targetVal);\n\n\tlet animationStartMs: number = -1;\n\tconst durationMs = 300;\n\tlet animationFrame: number | undefined = undefined;\n\n\tstore.add(autorunHandleChanges({\n\t\tchangeTracker: {\n\t\t\tcreateChangeSummary: () => ({ animate: false }),\n\t\t\thandleChange: (ctx, s) => {\n\t\t\t\tif (ctx.didChange(base)) {\n\t\t\t\t\ts.animate = s.animate || ctx.change;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}, (reader, s) => {\n\t\t/** @description update value */\n\t\tif (animationFrame !== undefined) {\n\t\t\ttargetWindow.cancelAnimationFrame(animationFrame);\n\t\t\tanimationFrame = undefined;\n\t\t}\n\n\t\tstartVal = curVal;\n\t\ttargetVal = base.read(reader);\n\t\tanimationStartMs = Date.now() - (s.animate ? 0 : durationMs);\n\n\t\tupdate();\n\t}));\n\n\tfunction update() {\n\t\tconst passedMs = Date.now() - animationStartMs;\n\t\tcurVal = Math.floor(easeOutExpo(passedMs, startVal, targetVal - startVal, durationMs));\n\n\t\tif (passedMs < durationMs) {\n\t\t\tanimationFrame = targetWindow.requestAnimationFrame(update);\n\t\t} else {\n\t\t\tcurVal = targetVal;\n\t\t}\n\n\t\tresult.set(curVal, undefined);\n\t}\n\n\treturn result;\n}\n\nfunction easeOutExpo(t: number, b: number, c: number, d: number): number {\n\treturn t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n}\n\nexport abstract class ViewZoneOverlayWidget extends Disposable {\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tviewZone: PlaceholderViewZone,\n\t\thtmlElement: HTMLElement,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(new ManagedOverlayWidget(editor, htmlElement));\n\t\tthis._register(applyStyle(htmlElement, {\n\t\t\theight: viewZone.actualHeight,\n\t\t\ttop: viewZone.actualTop,\n\t\t}));\n\t}\n}\n\nexport interface IObservableViewZone extends IViewZone {\n\t// Causes the view zone to relayout.\n\tonChange?: IObservable<unknown>;\n\n\t// Tells a view zone its id.\n\tsetZoneId?(zoneId: string): void;\n}\n\nexport class PlaceholderViewZone implements IObservableViewZone {\n\tpublic readonly domNode;\n\n\tprivate readonly _actualTop;\n\tprivate readonly _actualHeight;\n\n\tpublic readonly actualTop: IObservable<number | undefined>;\n\tpublic readonly actualHeight: IObservable<number | undefined>;\n\n\tpublic readonly showInHiddenAreas;\n\n\tpublic get afterLineNumber(): number { return this._afterLineNumber.get(); }\n\n\tpublic readonly onChange?: IObservable<unknown>;\n\n\tconstructor(\n\t\tprivate readonly _afterLineNumber: IObservable<number>,\n\t\tpublic readonly heightInPx: number,\n\t) {\n\t\tthis.domNode = document.createElement('div');\n\t\tthis._actualTop = observableValue<number | undefined>(this, undefined);\n\t\tthis._actualHeight = observableValue<number | undefined>(this, undefined);\n\t\tthis.actualTop = this._actualTop;\n\t\tthis.actualHeight = this._actualHeight;\n\t\tthis.showInHiddenAreas = true;\n\t\tthis.onChange = this._afterLineNumber;\n\t\tthis.onDomNodeTop = (top: number) => {\n\t\t\tthis._actualTop.set(top, undefined);\n\t\t};\n\t\tthis.onComputedHeight = (height: number) => {\n\t\t\tthis._actualHeight.set(height, undefined);\n\t\t};\n\t}\n\n\tonDomNodeTop;\n\n\tonComputedHeight;\n}\n\n\nexport class ManagedOverlayWidget implements IDisposable {\n\tprivate static _counter = 0;\n\tprivate readonly _overlayWidgetId = `managedOverlayWidget-${ManagedOverlayWidget._counter++}`;\n\n\tprivate readonly _overlayWidget: IOverlayWidget = {\n\t\tgetId: () => this._overlayWidgetId,\n\t\tgetDomNode: () => this._domElement,\n\t\tgetPosition: () => null\n\t};\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _domElement: HTMLElement,\n\t) {\n\t\tthis._editor.addOverlayWidget(this._overlayWidget);\n\t}\n\n\tdispose(): void {\n\t\tthis._editor.removeOverlayWidget(this._overlayWidget);\n\t}\n}\n\nexport interface CSSStyle {\n\theight: number | string;\n\twidth: number | string;\n\ttop: number | string;\n\tvisibility: 'visible' | 'hidden' | 'collapse';\n\tdisplay: 'block' | 'inline' | 'inline-block' | 'flex' | 'none';\n\tpaddingRight: number | string;\n}\n\nexport function applyStyle(domNode: HTMLElement, style: Partial<{ [TKey in keyof CSSStyle]: CSSStyle[TKey] | IObservable<CSSStyle[TKey] | undefined> | undefined }>) {\n\treturn autorun(reader => {\n\t\t/** @description applyStyle */\n\t\tfor (let [key, val] of Object.entries(style)) {\n\t\t\tif (val && typeof val === 'object' && 'read' in val) {\n\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\tval = val.read(reader) as any;\n\t\t\t}\n\t\t\tif (typeof val === 'number') {\n\t\t\t\tval = `${val}px`;\n\t\t\t}\n\t\t\tkey = key.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\tdomNode.style[key as any] = val as any;\n\t\t}\n\t});\n}\n\nexport function applyViewZones(editor: ICodeEditor, viewZones: IObservable<IObservableViewZone[]>, setIsUpdating?: (isUpdatingViewZones: boolean) => void, zoneIds?: Set<string>): IDisposable {\n\tconst store = new DisposableStore();\n\tconst lastViewZoneIds: string[] = [];\n\n\tstore.add(autorunWithStore((reader, store) => {\n\t\t/** @description applyViewZones */\n\t\tconst curViewZones = viewZones.read(reader);\n\n\t\tconst viewZonIdsPerViewZone = new Map<IObservableViewZone, string>();\n\t\tconst viewZoneIdPerOnChangeObservable = new Map<IObservable<unknown>, string>();\n\n\t\t// Add/remove view zones\n\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\teditor.changeViewZones(a => {\n\t\t\tfor (const id of lastViewZoneIds) { a.removeZone(id); zoneIds?.delete(id); }\n\t\t\tlastViewZoneIds.length = 0;\n\n\t\t\tfor (const z of curViewZones) {\n\t\t\t\tconst id = a.addZone(z);\n\t\t\t\tif (z.setZoneId) {\n\t\t\t\t\tz.setZoneId(id);\n\t\t\t\t}\n\t\t\t\tlastViewZoneIds.push(id);\n\t\t\t\tzoneIds?.add(id);\n\t\t\t\tviewZonIdsPerViewZone.set(z, id);\n\t\t\t}\n\t\t});\n\t\tif (setIsUpdating) { setIsUpdating(false); }\n\n\t\t// Layout zone on change\n\t\tstore.add(autorunHandleChanges({\n\t\t\tchangeTracker: {\n\t\t\t\tcreateChangeSummary() {\n\t\t\t\t\treturn { zoneIds: [] as string[] };\n\t\t\t\t},\n\t\t\t\thandleChange(context, changeSummary) {\n\t\t\t\t\tconst id = viewZoneIdPerOnChangeObservable.get(context.changedObservable);\n\t\t\t\t\tif (id !== undefined) { changeSummary.zoneIds.push(id); }\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t}\n\t\t}, (reader, changeSummary) => {\n\t\t\t/** @description layoutZone on change */\n\t\t\tfor (const vz of curViewZones) {\n\t\t\t\tif (vz.onChange) {\n\t\t\t\t\tviewZoneIdPerOnChangeObservable.set(vz.onChange, viewZonIdsPerViewZone.get(vz)!);\n\t\t\t\t\tvz.onChange.read(reader);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of changeSummary.zoneIds) { a.layoutZone(id); } });\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}));\n\t}));\n\n\tstore.add({\n\t\tdispose() {\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of lastViewZoneIds) { a.removeZone(id); } });\n\t\t\tzoneIds?.clear();\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}\n\t});\n\n\treturn store;\n}\n\nexport class DisposableCancellationTokenSource extends CancellationTokenSource {\n\tpublic override dispose() {\n\t\tsuper.dispose(true);\n\t}\n}\n\nexport function translatePosition(posInOriginal: Position, mappings: DetailedLineRangeMapping[]): Range {\n\tconst mapping = findLast(mappings, m => m.original.startLineNumber <= posInOriginal.lineNumber);\n\tif (!mapping) {\n\t\t// No changes before the position\n\t\treturn Range.fromPositions(posInOriginal);\n\t}\n\n\tif (mapping.original.endLineNumberExclusive <= posInOriginal.lineNumber) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.endLineNumberExclusive + mapping.modified.endLineNumberExclusive;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (!mapping.innerChanges) {\n\t\t// Only for legacy algorithm\n\t\treturn Range.fromPositions(new Position(mapping.modified.startLineNumber, 1));\n\t}\n\n\tconst innerMapping = findLast(mapping.innerChanges, m => m.originalRange.getStartPosition().isBeforeOrEqual(posInOriginal));\n\tif (!innerMapping) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.startLineNumber + mapping.modified.startLineNumber;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (innerMapping.originalRange.containsPosition(posInOriginal)) {\n\t\treturn innerMapping.modifiedRange;\n\t} else {\n\t\tconst l = lengthBetweenPositions(innerMapping.originalRange.getEndPosition(), posInOriginal);\n\t\treturn Range.fromPositions(l.addToPosition(innerMapping.modifiedRange.getEndPosition()));\n\t}\n}\n\nfunction lengthBetweenPositions(position1: Position, position2: Position): TextLength {\n\tif (position1.lineNumber === position2.lineNumber) {\n\t\treturn new TextLength(0, position2.column - position1.column);\n\t} else {\n\t\treturn new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n\t}\n}\n\nexport function filterWithPrevious<T>(arr: T[], filter: (cur: T, prev: T | undefined) => boolean): T[] {\n\tlet prev: T | undefined;\n\treturn arr.filter(cur => {\n\t\tconst result = filter(cur, prev);\n\t\tprev = cur;\n\t\treturn result;\n\t});\n}\n\nexport abstract class RefCounted<T> implements IDisposable, IReference<T> {\n\tpublic static create<T extends IDisposable>(value: T, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\treturn new BaseRefCounted(value, value, debugOwner);\n\t}\n\n\tpublic static createWithDisposable<T extends IDisposable>(value: T, disposable: IDisposable, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\tconst store = new DisposableStore();\n\t\tstore.add(disposable);\n\t\tstore.add(value);\n\t\treturn new BaseRefCounted(value, store, debugOwner);\n\t}\n\n\tpublic abstract createNewRef(debugOwner?: object | undefined): RefCounted<T>;\n\n\tpublic abstract dispose(): void;\n\n\tpublic abstract get object(): T;\n}\n\nclass BaseRefCounted<T> extends RefCounted<T> {\n\tprivate _refCount = 1;\n\tprivate _isDisposed = false;\n\tprivate readonly _owners: object[] = [];\n\n\tconstructor(\n\t\tpublic override readonly object: T,\n\t\tprivate readonly _disposable: IDisposable,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\n\t\tif (_debugOwner) {\n\t\t\tthis._addOwner(_debugOwner);\n\t\t}\n\t}\n\n\tprivate _addOwner(debugOwner: object | undefined) {\n\t\tif (debugOwner) {\n\t\t\tthis._owners.push(debugOwner);\n\t\t}\n\t}\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\tthis._refCount++;\n\t\tif (debugOwner) {\n\t\t\tthis._addOwner(debugOwner);\n\t\t}\n\t\treturn new ClonedRefCounted(this, debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._decreaseRefCount(this._debugOwner);\n\t}\n\n\tpublic _decreaseRefCount(debugOwner?: object | undefined): void {\n\t\tthis._refCount--;\n\t\tif (this._refCount === 0) {\n\t\t\tthis._disposable.dispose();\n\t\t}\n\n\t\tif (debugOwner) {\n\t\t\tconst idx = this._owners.indexOf(debugOwner);\n\t\t\tif (idx !== -1) {\n\t\t\t\tthis._owners.splice(idx, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass ClonedRefCounted<T> extends RefCounted<T> {\n\tprivate _isDisposed = false;\n\tconstructor(\n\t\tprivate readonly _base: BaseRefCounted<T>,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic get object(): T { return this._base.object; }\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\treturn this._base.createNewRef(debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._base._decreaseRefCount(this._debugOwner);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IDimension } from '../../../../base/browser/dom.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, IDisposable, IReference, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, IObservableWithChange, ISettableObservable, autorun, autorunHandleChanges, autorunOpts, autorunWithStore, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { ElementSizeObserver } from '../../config/elementSizeObserver.js';\nimport { ICodeEditor, IOverlayWidget, IViewZone } from '../../editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DetailedLineRangeMapping } from '../../../common/diff/rangeMapping.js';\nimport { IModelDeltaDecoration } from '../../../common/model.js';\nimport { TextLength } from '../../../common/core/text/textLength.js';\n\nexport function joinCombine<T>(arr1: readonly T[], arr2: readonly T[], keySelector: (val: T) => number, combine: (v1: T, v2: T) => T): readonly T[] {\n\tif (arr1.length === 0) {\n\t\treturn arr2;\n\t}\n\tif (arr2.length === 0) {\n\t\treturn arr1;\n\t}\n\n\tconst result: T[] = [];\n\tlet i = 0;\n\tlet j = 0;\n\twhile (i < arr1.length && j < arr2.length) {\n\t\tconst val1 = arr1[i];\n\t\tconst val2 = arr2[j];\n\t\tconst key1 = keySelector(val1);\n\t\tconst key2 = keySelector(val2);\n\n\t\tif (key1 < key2) {\n\t\t\tresult.push(val1);\n\t\t\ti++;\n\t\t} else if (key1 > key2) {\n\t\t\tresult.push(val2);\n\t\t\tj++;\n\t\t} else {\n\t\t\tresult.push(combine(val1, val2));\n\t\t\ti++;\n\t\t\tj++;\n\t\t}\n\t}\n\twhile (i < arr1.length) {\n\t\tresult.push(arr1[i]);\n\t\ti++;\n\t}\n\twhile (j < arr2.length) {\n\t\tresult.push(arr2[j]);\n\t\tj++;\n\t}\n\treturn result;\n}\n\n// TODO make utility\nexport function applyObservableDecorations(editor: ICodeEditor, decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\tconst d = new DisposableStore();\n\tconst decorationsCollection = editor.createDecorationsCollection();\n\td.add(autorunOpts({ debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\tconst d = decorations.read(reader);\n\t\tdecorationsCollection.set(d);\n\t}));\n\td.add({\n\t\tdispose: () => {\n\t\t\tdecorationsCollection.clear();\n\t\t}\n\t});\n\treturn d;\n}\n\nexport function appendRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.appendChild(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport function prependRemoveOnDispose(parent: HTMLElement, child: HTMLElement) {\n\tparent.prepend(child);\n\treturn toDisposable(() => {\n\t\tchild.remove();\n\t});\n}\n\nexport class ObservableElementSizeObserver extends Disposable {\n\tprivate readonly elementSizeObserver: ElementSizeObserver;\n\n\tprivate readonly _width: ISettableObservable<number>;\n\tpublic get width(): IObservable<number> { return this._width; }\n\n\tprivate readonly _height: ISettableObservable<number>;\n\tpublic get height(): IObservable<number> { return this._height; }\n\n\tprivate _automaticLayout: boolean = false;\n\tpublic get automaticLayout(): boolean { return this._automaticLayout; }\n\n\tconstructor(element: HTMLElement | null, dimension: IDimension | undefined) {\n\t\tsuper();\n\n\t\tthis.elementSizeObserver = this._register(new ElementSizeObserver(element, dimension));\n\t\tthis._width = observableValue(this, this.elementSizeObserver.getWidth());\n\t\tthis._height = observableValue(this, this.elementSizeObserver.getHeight());\n\n\t\tthis._register(this.elementSizeObserver.onDidChange(e => transaction(tx => {\n\t\t\t/** @description Set width/height from elementSizeObserver */\n\t\t\tthis._width.set(this.elementSizeObserver.getWidth(), tx);\n\t\t\tthis._height.set(this.elementSizeObserver.getHeight(), tx);\n\t\t})));\n\t}\n\n\tpublic observe(dimension?: IDimension): void {\n\t\tthis.elementSizeObserver.observe(dimension);\n\t}\n\n\tpublic setAutomaticLayout(automaticLayout: boolean): void {\n\t\tthis._automaticLayout = automaticLayout;\n\t\tif (automaticLayout) {\n\t\t\tthis.elementSizeObserver.startObserving();\n\t\t} else {\n\t\t\tthis.elementSizeObserver.stopObserving();\n\t\t}\n\t}\n}\n\nexport function animatedObservable(targetWindow: Window, base: IObservableWithChange<number, boolean>, store: DisposableStore): IObservable<number> {\n\tlet targetVal = base.get();\n\tlet startVal = targetVal;\n\tlet curVal = targetVal;\n\tconst result = observableValue('animatedValue', targetVal);\n\n\tlet animationStartMs: number = -1;\n\tconst durationMs = 300;\n\tlet animationFrame: number | undefined = undefined;\n\n\tstore.add(autorunHandleChanges({\n\t\tchangeTracker: {\n\t\t\tcreateChangeSummary: () => ({ animate: false }),\n\t\t\thandleChange: (ctx, s) => {\n\t\t\t\tif (ctx.didChange(base)) {\n\t\t\t\t\ts.animate = s.animate || ctx.change;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}, (reader, s) => {\n\t\t/** @description update value */\n\t\tif (animationFrame !== undefined) {\n\t\t\ttargetWindow.cancelAnimationFrame(animationFrame);\n\t\t\tanimationFrame = undefined;\n\t\t}\n\n\t\tstartVal = curVal;\n\t\ttargetVal = base.read(reader);\n\t\tanimationStartMs = Date.now() - (s.animate ? 0 : durationMs);\n\n\t\tupdate();\n\t}));\n\n\tfunction update() {\n\t\tconst passedMs = Date.now() - animationStartMs;\n\t\tcurVal = Math.floor(easeOutExpo(passedMs, startVal, targetVal - startVal, durationMs));\n\n\t\tif (passedMs < durationMs) {\n\t\t\tanimationFrame = targetWindow.requestAnimationFrame(update);\n\t\t} else {\n\t\t\tcurVal = targetVal;\n\t\t}\n\n\t\tresult.set(curVal, undefined);\n\t}\n\n\treturn result;\n}\n\nfunction easeOutExpo(t: number, b: number, c: number, d: number): number {\n\treturn t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n}\n\nexport abstract class ViewZoneOverlayWidget extends Disposable {\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\tviewZone: PlaceholderViewZone,\n\t\thtmlElement: HTMLElement,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(new ManagedOverlayWidget(editor, htmlElement));\n\t\tthis._register(applyStyle(htmlElement, {\n\t\t\theight: viewZone.actualHeight,\n\t\t\ttop: viewZone.actualTop,\n\t\t}));\n\t}\n}\n\nexport interface IObservableViewZone extends IViewZone {\n\t// Causes the view zone to relayout.\n\tonChange?: IObservable<unknown>;\n\n\t// Tells a view zone its id.\n\tsetZoneId?(zoneId: string): void;\n}\n\nexport class PlaceholderViewZone implements IObservableViewZone {\n\tpublic readonly domNode;\n\n\tprivate readonly _actualTop;\n\tprivate readonly _actualHeight;\n\n\tpublic readonly actualTop: IObservable<number | undefined>;\n\tpublic readonly actualHeight: IObservable<number | undefined>;\n\n\tpublic readonly showInHiddenAreas;\n\n\tpublic get afterLineNumber(): number { return this._afterLineNumber.get(); }\n\n\tpublic readonly onChange?: IObservable<unknown>;\n\n\tconstructor(\n\t\tprivate readonly _afterLineNumber: IObservable<number>,\n\t\tpublic readonly heightInPx: number,\n\t) {\n\t\tthis.domNode = document.createElement('div');\n\t\tthis._actualTop = observableValue<number | undefined>(this, undefined);\n\t\tthis._actualHeight = observableValue<number | undefined>(this, undefined);\n\t\tthis.actualTop = this._actualTop;\n\t\tthis.actualHeight = this._actualHeight;\n\t\tthis.showInHiddenAreas = true;\n\t\tthis.onChange = this._afterLineNumber;\n\t\tthis.onDomNodeTop = (top: number) => {\n\t\t\tthis._actualTop.set(top, undefined);\n\t\t};\n\t\tthis.onComputedHeight = (height: number) => {\n\t\t\tthis._actualHeight.set(height, undefined);\n\t\t};\n\t}\n\n\tonDomNodeTop;\n\n\tonComputedHeight;\n}\n\n\nexport class ManagedOverlayWidget implements IDisposable {\n\tprivate static _counter = 0;\n\tprivate readonly _overlayWidgetId = `managedOverlayWidget-${ManagedOverlayWidget._counter++}`;\n\n\tprivate readonly _overlayWidget: IOverlayWidget = {\n\t\tgetId: () => this._overlayWidgetId,\n\t\tgetDomNode: () => this._domElement,\n\t\tgetPosition: () => null\n\t};\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _domElement: HTMLElement,\n\t) {\n\t\tthis._editor.addOverlayWidget(this._overlayWidget);\n\t}\n\n\tdispose(): void {\n\t\tthis._editor.removeOverlayWidget(this._overlayWidget);\n\t}\n}\n\nexport interface CSSStyle {\n\theight: number | string;\n\twidth: number | string;\n\ttop: number | string;\n\tvisibility: 'visible' | 'hidden' | 'collapse';\n\tdisplay: 'block' | 'inline' | 'inline-block' | 'flex' | 'none';\n\tpaddingRight: number | string;\n}\n\nexport function applyStyle(domNode: HTMLElement, style: Partial<{ [TKey in keyof CSSStyle]: CSSStyle[TKey] | IObservable<CSSStyle[TKey] | undefined> | undefined }>) {\n\treturn autorun(reader => {\n\t\t/** @description applyStyle */\n\t\tfor (let [key, val] of Object.entries(style)) {\n\t\t\tif (val && typeof val === 'object' && 'read' in val) {\n\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\tval = val.read(reader) as any;\n\t\t\t}\n\t\t\tif (typeof val === 'number') {\n\t\t\t\tval = `${val}px`;\n\t\t\t}\n\t\t\tkey = key.replace(/[A-Z]/g, m => '-' + m.toLowerCase());\n\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\tdomNode.style[key as any] = val as any;\n\t\t}\n\t});\n}\n\nexport function applyViewZones(editor: ICodeEditor, viewZones: IObservable<IObservableViewZone[]>, setIsUpdating?: (isUpdatingViewZones: boolean) => void, zoneIds?: Set<string>): IDisposable {\n\tconst store = new DisposableStore();\n\tconst lastViewZoneIds: string[] = [];\n\n\tstore.add(autorunWithStore((reader, store) => {\n\t\t/** @description applyViewZones */\n\t\tconst curViewZones = viewZones.read(reader);\n\n\t\tconst viewZonIdsPerViewZone = new Map<IObservableViewZone, string>();\n\t\tconst viewZoneIdPerOnChangeObservable = new Map<IObservable<unknown>, string>();\n\n\t\t// Add/remove view zones\n\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\teditor.changeViewZones(a => {\n\t\t\tfor (const id of lastViewZoneIds) { a.removeZone(id); zoneIds?.delete(id); }\n\t\t\tlastViewZoneIds.length = 0;\n\n\t\t\tfor (const z of curViewZones) {\n\t\t\t\tconst id = a.addZone(z);\n\t\t\t\tif (z.setZoneId) {\n\t\t\t\t\tz.setZoneId(id);\n\t\t\t\t}\n\t\t\t\tlastViewZoneIds.push(id);\n\t\t\t\tzoneIds?.add(id);\n\t\t\t\tviewZonIdsPerViewZone.set(z, id);\n\t\t\t}\n\t\t});\n\t\tif (setIsUpdating) { setIsUpdating(false); }\n\n\t\t// Layout zone on change\n\t\tstore.add(autorunHandleChanges({\n\t\t\tchangeTracker: {\n\t\t\t\tcreateChangeSummary() {\n\t\t\t\t\treturn { zoneIds: [] as string[] };\n\t\t\t\t},\n\t\t\t\thandleChange(context, changeSummary) {\n\t\t\t\t\tconst id = viewZoneIdPerOnChangeObservable.get(context.changedObservable);\n\t\t\t\t\tif (id !== undefined) { changeSummary.zoneIds.push(id); }\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t}\n\t\t}, (reader, changeSummary) => {\n\t\t\t/** @description layoutZone on change */\n\t\t\tfor (const vz of curViewZones) {\n\t\t\t\tif (vz.onChange) {\n\t\t\t\t\tviewZoneIdPerOnChangeObservable.set(vz.onChange, viewZonIdsPerViewZone.get(vz)!);\n\t\t\t\t\tvz.onChange.read(reader);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of changeSummary.zoneIds) { a.layoutZone(id); } });\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}));\n\t}));\n\n\tstore.add({\n\t\tdispose() {\n\t\t\tif (setIsUpdating) { setIsUpdating(true); }\n\t\t\teditor.changeViewZones(a => { for (const id of lastViewZoneIds) { a.removeZone(id); } });\n\t\t\tzoneIds?.clear();\n\t\t\tif (setIsUpdating) { setIsUpdating(false); }\n\t\t}\n\t});\n\n\treturn store;\n}\n\nexport class DisposableCancellationTokenSource extends CancellationTokenSource {\n\tpublic override dispose() {\n\t\tsuper.dispose(true);\n\t}\n}\n\nexport function translatePosition(posInOriginal: Position, mappings: DetailedLineRangeMapping[]): Range {\n\tconst mapping = findLast(mappings, m => m.original.startLineNumber <= posInOriginal.lineNumber);\n\tif (!mapping) {\n\t\t// No changes before the position\n\t\treturn Range.fromPositions(posInOriginal);\n\t}\n\n\tif (mapping.original.endLineNumberExclusive <= posInOriginal.lineNumber) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.endLineNumberExclusive + mapping.modified.endLineNumberExclusive;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (!mapping.innerChanges) {\n\t\t// Only for legacy algorithm\n\t\treturn Range.fromPositions(new Position(mapping.modified.startLineNumber, 1));\n\t}\n\n\tconst innerMapping = findLast(mapping.innerChanges, m => m.originalRange.getStartPosition().isBeforeOrEqual(posInOriginal));\n\tif (!innerMapping) {\n\t\tconst newLineNumber = posInOriginal.lineNumber - mapping.original.startLineNumber + mapping.modified.startLineNumber;\n\t\treturn Range.fromPositions(new Position(newLineNumber, posInOriginal.column));\n\t}\n\n\tif (innerMapping.originalRange.containsPosition(posInOriginal)) {\n\t\treturn innerMapping.modifiedRange;\n\t} else {\n\t\tconst l = lengthBetweenPositions(innerMapping.originalRange.getEndPosition(), posInOriginal);\n\t\treturn Range.fromPositions(l.addToPosition(innerMapping.modifiedRange.getEndPosition()));\n\t}\n}\n\nfunction lengthBetweenPositions(position1: Position, position2: Position): TextLength {\n\tif (position1.lineNumber === position2.lineNumber) {\n\t\treturn new TextLength(0, position2.column - position1.column);\n\t} else {\n\t\treturn new TextLength(position2.lineNumber - position1.lineNumber, position2.column - 1);\n\t}\n}\n\nexport function filterWithPrevious<T>(arr: T[], filter: (cur: T, prev: T | undefined) => boolean): T[] {\n\tlet prev: T | undefined;\n\treturn arr.filter(cur => {\n\t\tconst result = filter(cur, prev);\n\t\tprev = cur;\n\t\treturn result;\n\t});\n}\n\nexport abstract class RefCounted<T> implements IDisposable, IReference<T> {\n\tpublic static create<T extends IDisposable>(value: T, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\treturn new BaseRefCounted(value, value, debugOwner);\n\t}\n\n\tpublic static createWithDisposable<T extends IDisposable>(value: T, disposable: IDisposable, debugOwner: object | undefined = undefined): RefCounted<T> {\n\t\tconst store = new DisposableStore();\n\t\tstore.add(disposable);\n\t\tstore.add(value);\n\t\treturn new BaseRefCounted(value, store, debugOwner);\n\t}\n\n\tpublic abstract createNewRef(debugOwner?: object | undefined): RefCounted<T>;\n\n\tpublic abstract dispose(): void;\n\n\tpublic abstract get object(): T;\n}\n\nclass BaseRefCounted<T> extends RefCounted<T> {\n\tprivate _refCount = 1;\n\tprivate _isDisposed = false;\n\tprivate readonly _owners: object[] = [];\n\n\tconstructor(\n\t\tpublic override readonly object: T,\n\t\tprivate readonly _disposable: IDisposable,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\n\t\tif (_debugOwner) {\n\t\t\tthis._addOwner(_debugOwner);\n\t\t}\n\t}\n\n\tprivate _addOwner(debugOwner: object | undefined) {\n\t\tif (debugOwner) {\n\t\t\tthis._owners.push(debugOwner);\n\t\t}\n\t}\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\tthis._refCount++;\n\t\tif (debugOwner) {\n\t\t\tthis._addOwner(debugOwner);\n\t\t}\n\t\treturn new ClonedRefCounted(this, debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._decreaseRefCount(this._debugOwner);\n\t}\n\n\tpublic _decreaseRefCount(debugOwner?: object | undefined): void {\n\t\tthis._refCount--;\n\t\tif (this._refCount === 0) {\n\t\t\tthis._disposable.dispose();\n\t\t}\n\n\t\tif (debugOwner) {\n\t\t\tconst idx = this._owners.indexOf(debugOwner);\n\t\t\tif (idx !== -1) {\n\t\t\t\tthis._owners.splice(idx, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass ClonedRefCounted<T> extends RefCounted<T> {\n\tprivate _isDisposed = false;\n\tconstructor(\n\t\tprivate readonly _base: BaseRefCounted<T>,\n\t\tprivate readonly _debugOwner: object | undefined,\n\t) {\n\t\tsuper();\n\t}\n\n\tpublic get object(): T { return this._base.object; }\n\n\tpublic createNewRef(debugOwner?: object | undefined): RefCounted<T> {\n\t\treturn this._base.createNewRef(debugOwner);\n\t}\n\n\tpublic dispose(): void {\n\t\tif (this._isDisposed) { return; }\n\t\tthis._isDisposed = true;\n\t\tthis._base._decreaseRefCount(this._debugOwner);\n\t}\n}\n"]}
|
|
@@ -67,8 +67,10 @@ let DiffEditorItemTemplate = class DiffEditorItemTemplate extends Disposable {
|
|
|
67
67
|
h('div.header-content', [
|
|
68
68
|
h('div.collapse-button@collapseButton'),
|
|
69
69
|
h('div.file-path', [
|
|
70
|
+
// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any
|
|
70
71
|
h('div.title.modified.show-file-icons@primaryPath', []),
|
|
71
72
|
h('div.status.deleted@status', ['R']),
|
|
73
|
+
// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any
|
|
72
74
|
h('div.title.original.show-file-icons@secondaryPath', []),
|
|
73
75
|
]),
|
|
74
76
|
h('div.actions@actions'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts","vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts"],"names":[],"mappings":"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","file":"diffEditorItemTemplate.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts","vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.ts"],"names":[],"mappings":"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","file":"diffEditorItemTemplate.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { h } from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, globalTransaction, observableValue } from '../../../../base/common/observable.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { MenuWorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, type IScopedContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { IDiffEditorOptions } from '../../../common/config/editorOptions.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { observableCodeEditor } from '../../observableCodeEditor.js';\nimport { DiffEditorWidget } from '../diffEditor/diffEditorWidget.js';\nimport { DocumentDiffItemViewModel } from './multiDiffEditorViewModel.js';\nimport { IObjectData, IPooledObject } from './objectPool.js';\nimport { ActionRunnerWithContext } from './utils.js';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class TemplateData implements IObjectData {\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tpublic readonly deltaScrollVertical: (delta: number) => void,\n\t) { }\n\n\n\tgetId(): unknown {\n\t\treturn this.viewModel;\n\t}\n}\n\nexport class DiffEditorItemTemplate extends Disposable implements IPooledObject<TemplateData> {\n\tprivate readonly _viewModel;\n\n\tprivate readonly _collapsed;\n\n\tprivate readonly _editorContentHeight;\n\tpublic readonly contentHeight;\n\n\tprivate readonly _modifiedContentWidth;\n\tprivate readonly _modifiedWidth;\n\tprivate readonly _originalContentWidth;\n\tprivate readonly _originalWidth;\n\n\tpublic readonly maxScroll;\n\n\tprivate readonly _elements;\n\n\tpublic readonly editor;\n\n\tprivate readonly isModifedFocused;\n\tprivate readonly isOriginalFocused;\n\tpublic readonly isFocused;\n\n\tprivate readonly _resourceLabel;\n\n\tprivate readonly _resourceLabel2;\n\n\tprivate readonly _outerEditorHeight: number;\n\tprivate readonly _contextKeyService: IScopedContextKeyService;\n\n\tconstructor(\n\t\tprivate readonly _container: HTMLElement,\n\t\tprivate readonly _overflowWidgetsDomNode: HTMLElement,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IContextKeyService _parentContextKeyService: IContextKeyService,\n\t) {\n\t\tsuper();\n\t\tthis._viewModel = observableValue<DocumentDiffItemViewModel | undefined>(this, undefined);\n\t\tthis._collapsed = derived(this, reader => this._viewModel.read(reader)?.collapsed.read(reader));\n\t\tthis._editorContentHeight = observableValue<number>(this, 500);\n\t\tthis.contentHeight = derived(this, reader => {\n\t\t\tconst h = this._collapsed.read(reader) ? 0 : this._editorContentHeight.read(reader);\n\t\t\treturn h + this._outerEditorHeight;\n\t\t});\n\t\tthis._modifiedContentWidth = observableValue<number>(this, 0);\n\t\tthis._modifiedWidth = observableValue<number>(this, 0);\n\t\tthis._originalContentWidth = observableValue<number>(this, 0);\n\t\tthis._originalWidth = observableValue<number>(this, 0);\n\t\tthis.maxScroll = derived(this, reader => {\n\t\t\tconst scroll1 = this._modifiedContentWidth.read(reader) - this._modifiedWidth.read(reader);\n\t\t\tconst scroll2 = this._originalContentWidth.read(reader) - this._originalWidth.read(reader);\n\t\t\tif (scroll1 > scroll2) {\n\t\t\t\treturn { maxScroll: scroll1, width: this._modifiedWidth.read(reader) };\n\t\t\t} else {\n\t\t\t\treturn { maxScroll: scroll2, width: this._originalWidth.read(reader) };\n\t\t\t}\n\t\t});\n\t\tthis._elements = h('div.multiDiffEntry', [\n\t\t\th('div.header@header', [\n\t\t\t\th('div.header-content', [\n\t\t\t\t\th('div.collapse-button@collapseButton'),\n\t\t\t\t\th('div.file-path', [\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.modified.show-file-icons@primaryPath', [] as any),\n\t\t\t\t\t\th('div.status.deleted@status', ['R']),\n\t\t\t\t\t\t// eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any\n\t\t\t\t\t\th('div.title.original.show-file-icons@secondaryPath', [] as any),\n\t\t\t\t\t]),\n\t\t\t\t\th('div.actions@actions'),\n\t\t\t\t]),\n\t\t\t]),\n\n\t\t\th('div.editorParent', [\n\t\t\t\th('div.editorContainer@editor'),\n\t\t\t])\n\t\t]) as Record<string, HTMLElement>;\n\t\tthis.editor = this._register(this._instantiationService.createInstance(DiffEditorWidget, this._elements.editor, {\n\t\t\toverflowWidgetsDomNode: this._overflowWidgetsDomNode,\n\t\t}, {}));\n\t\tthis.isModifedFocused = observableCodeEditor(this.editor.getModifiedEditor()).isFocused;\n\t\tthis.isOriginalFocused = observableCodeEditor(this.editor.getOriginalEditor()).isFocused;\n\t\tthis.isFocused = derived(this, reader => this.isModifedFocused.read(reader) || this.isOriginalFocused.read(reader));\n\t\tthis._resourceLabel = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.primaryPath))\n\t\t\t: undefined;\n\t\tthis._resourceLabel2 = this._workbenchUIElementFactory.createResourceLabel\n\t\t\t? this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.secondaryPath))\n\t\t\t: undefined;\n\t\tthis._dataStore = this._register(new DisposableStore());\n\t\tthis._headerHeight = 40;\n\t\tthis._lastScrollTop = -1;\n\t\tthis._isSettingScrollTop = false;\n\n\t\tconst btn = new Button(this._elements.collapseButton, {});\n\n\t\tthis._register(autorun(reader => {\n\t\t\tbtn.element.className = '';\n\t\t\tbtn.icon = this._collapsed.read(reader) ? Codicon.chevronRight : Codicon.chevronDown;\n\t\t}));\n\t\tthis._register(btn.onDidClick(() => {\n\t\t\tthis._viewModel.get()?.collapsed.set(!this._collapsed.get(), undefined);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tthis._elements.editor.style.display = this._collapsed.read(reader) ? 'none' : 'block';\n\t\t}));\n\n\t\tthis._register(this.editor.getModifiedEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getModifiedEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._modifiedWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidLayoutChange(e => {\n\t\t\tconst width = this.editor.getOriginalEditor().getLayoutInfo().contentWidth;\n\t\t\tthis._originalWidth.set(width, undefined);\n\t\t}));\n\n\t\tthis._register(this.editor.onDidContentSizeChange(e => {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._editorContentHeight.set(e.contentHeight, tx);\n\t\t\t\tthis._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(), tx);\n\t\t\t\tthis._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(), tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(this.editor.getOriginalEditor().onDidScrollChange(e => {\n\t\t\tif (this._isSettingScrollTop) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!e.scrollTopChanged || !this._data) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst delta = e.scrollTop - this._lastScrollTop;\n\t\t\tthis._data.deltaScrollVertical(delta);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst isActive = this._viewModel.read(reader)?.isActive.read(reader);\n\t\t\tthis._elements.root.classList.toggle('active', isActive);\n\t\t}));\n\n\t\tthis._container.appendChild(this._elements.root);\n\t\tthis._outerEditorHeight = this._headerHeight;\n\n\t\tthis._contextKeyService = this._register(_parentContextKeyService.createScoped(this._elements.actions));\n\t\tconst instantiationService = this._register(this._instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\t\tthis._register(instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.actions, MenuId.MultiDiffEditorFileToolbar, {\n\t\t\tactionRunner: this._register(new ActionRunnerWithContext(() => (this._viewModel.get()?.modifiedUri))),\n\t\t\tmenuOptions: {\n\t\t\t\tshouldForwardArgs: true,\n\t\t\t},\n\t\t\ttoolbarOptions: { primaryGroup: g => g.startsWith('navigation') },\n\t\t\tactionViewItemProvider: (action, options) => createActionViewItem(instantiationService, action, options),\n\t\t}));\n\t}\n\n\tpublic setScrollLeft(left: number): void {\n\t\tif (this._modifiedContentWidth.get() - this._modifiedWidth.get() > this._originalContentWidth.get() - this._originalWidth.get()) {\n\t\t\tthis.editor.getModifiedEditor().setScrollLeft(left);\n\t\t} else {\n\t\t\tthis.editor.getOriginalEditor().setScrollLeft(left);\n\t\t}\n\t}\n\n\tprivate readonly _dataStore;\n\n\tprivate _data: TemplateData | undefined;\n\n\tpublic setData(data: TemplateData | undefined): void {\n\t\tthis._data = data;\n\t\tfunction updateOptions(options: IDiffEditorOptions): IDiffEditorOptions {\n\t\t\treturn {\n\t\t\t\t...options,\n\t\t\t\tscrollBeyondLastLine: false,\n\t\t\t\thideUnchangedRegions: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t},\n\t\t\t\tscrollbar: {\n\t\t\t\t\tvertical: 'hidden',\n\t\t\t\t\thorizontal: 'hidden',\n\t\t\t\t\thandleMouseWheel: false,\n\t\t\t\t\tuseShadows: false,\n\t\t\t\t},\n\t\t\t\trenderOverviewRuler: false,\n\t\t\t\tfixedOverflowWidgets: true,\n\t\t\t\toverviewRulerBorder: false,\n\t\t\t};\n\t\t}\n\n\t\tif (!data) {\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis._viewModel.set(undefined, tx);\n\t\t\t\tthis.editor.setDiffModel(null, tx);\n\t\t\t\tthis._dataStore.clear();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = data.viewModel.documentDiffItem;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis._resourceLabel?.setUri(data.viewModel.modifiedUri ?? data.viewModel.originalUri!, { strikethrough: data.viewModel.modifiedUri === undefined });\n\n\t\t\tlet isRenamed = false;\n\t\t\tlet isDeleted = false;\n\t\t\tlet isAdded = false;\n\t\t\tlet flag = '';\n\t\t\tif (data.viewModel.modifiedUri && data.viewModel.originalUri && data.viewModel.modifiedUri.path !== data.viewModel.originalUri.path) {\n\t\t\t\tflag = 'R';\n\t\t\t\tisRenamed = true;\n\t\t\t} else if (!data.viewModel.modifiedUri) {\n\t\t\t\tflag = 'D';\n\t\t\t\tisDeleted = true;\n\t\t\t} else if (!data.viewModel.originalUri) {\n\t\t\t\tflag = 'A';\n\t\t\t\tisAdded = true;\n\t\t\t}\n\t\t\tthis._elements.status.classList.toggle('renamed', isRenamed);\n\t\t\tthis._elements.status.classList.toggle('deleted', isDeleted);\n\t\t\tthis._elements.status.classList.toggle('added', isAdded);\n\t\t\tthis._elements.status.innerText = flag;\n\n\t\t\tthis._resourceLabel2?.setUri(isRenamed ? data.viewModel.originalUri : undefined, { strikethrough: true });\n\n\t\t\tthis._dataStore.clear();\n\t\t\tthis._viewModel.set(data.viewModel, tx);\n\t\t\tthis.editor.setDiffModel(data.viewModel.diffEditorViewModelRef, tx);\n\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t});\n\t\tif (value.onOptionsDidChange) {\n\t\t\tthis._dataStore.add(value.onOptionsDidChange(() => {\n\t\t\t\tthis.editor.updateOptions(updateOptions(value.options ?? {}));\n\t\t\t}));\n\t\t}\n\t\tdata.viewModel.isAlive.recomputeInitiallyAndOnChange(this._dataStore, value => {\n\t\t\tif (!value) {\n\t\t\t\tthis.setData(undefined);\n\t\t\t}\n\t\t});\n\n\t\tif (data.viewModel.documentDiffItem.contextKeys) {\n\t\t\tfor (const [key, value] of Object.entries(data.viewModel.documentDiffItem.contextKeys)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate readonly _headerHeight;\n\n\tprivate _lastScrollTop;\n\tprivate _isSettingScrollTop;\n\n\tpublic render(verticalRange: OffsetRange, width: number, editorScroll: number, viewPort: OffsetRange): void {\n\t\tthis._elements.root.style.visibility = 'visible';\n\t\tthis._elements.root.style.top = `${verticalRange.start}px`;\n\t\tthis._elements.root.style.height = `${verticalRange.length}px`;\n\t\tthis._elements.root.style.width = `${width}px`;\n\t\tthis._elements.root.style.position = 'absolute';\n\n\t\t// For sticky scroll\n\t\tconst maxDelta = verticalRange.length - this._headerHeight;\n\t\tconst delta = Math.max(0, Math.min(viewPort.start - verticalRange.start, maxDelta));\n\t\tthis._elements.header.style.transform = `translateY(${delta}px)`;\n\n\t\tglobalTransaction(tx => {\n\t\t\tthis.editor.layout({\n\t\t\t\twidth: width - 2 * 8 - 2 * 1,\n\t\t\t\theight: verticalRange.length - this._outerEditorHeight,\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tthis._isSettingScrollTop = true;\n\t\t\tthis._lastScrollTop = editorScroll;\n\t\t\tthis.editor.getOriginalEditor().setScrollTop(editorScroll);\n\t\t} finally {\n\t\t\tthis._isSettingScrollTop = false;\n\t\t}\n\n\t\tthis._elements.header.classList.toggle('shadow', delta > 0 || editorScroll > 0);\n\t\tthis._elements.header.classList.toggle('collapsed', delta === maxDelta);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._elements.root.style.top = `-100000px`;\n\t\tthis._elements.root.style.visibility = 'hidden'; // Some editor parts are still visible\n\t}\n}\n"]}
|