monaco-editor-core 0.55.0-dev-20251020 → 0.55.0-dev-20251022

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.
Files changed (210) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +17 -5
  18. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  19. package/esm/vs/base/browser/ui/iconLabel/iconlabel.css +2 -3
  20. package/esm/vs/base/common/actions.js +5 -0
  21. package/esm/vs/base/common/actions.js.map +1 -1
  22. package/esm/vs/base/common/async.js +5 -5
  23. package/esm/vs/base/common/async.js.map +1 -1
  24. package/esm/vs/base/common/codiconsLibrary.js +1 -0
  25. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  26. package/esm/vs/base/common/policy.js +40 -1
  27. package/esm/vs/base/common/policy.js.map +1 -1
  28. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +20 -12
  29. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  30. package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +1 -1
  31. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js +4 -4
  32. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +1 -1
  33. package/esm/vs/editor/browser/coreCommands.js +3 -3
  34. package/esm/vs/editor/browser/editorExtensions.js +9 -9
  35. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
  36. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -3
  37. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  38. package/esm/vs/editor/browser/services/hoverService/updatableHoverWidget.js +1 -1
  39. package/esm/vs/editor/browser/services/inlineCompletionsService.js +4 -4
  40. package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
  41. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +2 -2
  42. package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
  43. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +14 -14
  44. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js.map +1 -1
  45. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
  46. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/copySelection.js +1 -1
  47. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +7 -7
  48. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
  49. package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +6 -0
  50. package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
  51. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
  52. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  53. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  54. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  55. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  56. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +1 -0
  57. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
  58. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
  59. package/esm/vs/editor/common/config/editorConfigurationSchema.js +54 -54
  60. package/esm/vs/editor/common/config/editorOptions.js +406 -406
  61. package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
  62. package/esm/vs/editor/common/editorContextKeys.js +46 -46
  63. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  64. package/esm/vs/editor/common/languages.js +56 -56
  65. package/esm/vs/editor/common/model/editStack.js +1 -1
  66. package/esm/vs/editor/common/standaloneStrings.js +10 -10
  67. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  68. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  69. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  70. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  71. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  72. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  73. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  74. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  75. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  76. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  77. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  78. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  79. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  80. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  81. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  82. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  83. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  84. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  85. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  86. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  87. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  88. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  89. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  90. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  91. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  92. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  93. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  94. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  95. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  96. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  97. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
  98. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  99. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  100. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  101. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  102. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  103. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  104. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  105. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  106. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  107. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  108. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  109. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  110. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +22 -2
  111. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  112. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  113. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  114. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  115. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  116. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  117. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  118. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  119. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +18 -51
  120. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  121. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  122. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  123. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +1 -1
  124. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  125. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -4
  126. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  127. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +0 -1
  128. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  129. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  130. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  131. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  132. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  133. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  134. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  135. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  136. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  137. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  138. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  139. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  140. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  141. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  142. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  143. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  144. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +35 -28
  145. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  146. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  147. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  148. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  149. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +8 -11
  150. package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
  151. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  152. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  153. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  154. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  155. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  156. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  157. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  158. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  159. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  160. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  161. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  162. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  163. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  164. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  165. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  166. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  167. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  168. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  169. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  170. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  171. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  172. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  173. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  174. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  175. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  176. package/esm/vs/platform/actions/common/menuService.js +2 -2
  177. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  178. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  179. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  180. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  181. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  182. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  183. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  184. package/esm/vs/platform/list/browser/listService.js +27 -27
  185. package/esm/vs/platform/markers/common/markerService.js +2 -2
  186. package/esm/vs/platform/markers/common/markers.js +6 -6
  187. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  188. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  189. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  190. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  191. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  192. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  193. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  194. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  195. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  196. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  197. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  198. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  199. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  200. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  201. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  202. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  203. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  204. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  205. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  206. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  207. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  208. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  209. package/package.json +2 -2
  210. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.ts"],"names":[],"mappings":"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","file":"accessibleDiffViewer.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 { addDisposableListener, addStandardDisposableListener, reset } from '../../../../../base/browser/dom.js';\nimport { createTrustedTypesPolicy } from '../../../../../base/browser/trustedTypes.js';\nimport { ActionBar } from '../../../../../base/browser/ui/actionbar/actionbar.js';\nimport { DomScrollableElement } from '../../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { forEachAdjacent, groupAdjacentBy } from '../../../../../base/common/arrays.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { KeyCode, KeyMod } from '../../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, observableValue, subtransaction, transaction } from '../../../../../base/common/observable.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { applyFontInfo } from '../../../config/domFontInfo.js';\nimport { applyStyle } from '../utils.js';\nimport { EditorFontLigatures, EditorOption, IComputedEditorOptions } from '../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { DetailedLineRangeMapping, LineRangeMapping } from '../../../../common/diff/rangeMapping.js';\nimport { ILanguageIdCodec } from '../../../../common/languages.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModel, TextModelResolvedOptions } from '../../../../common/model.js';\nimport { LineTokens } from '../../../../common/tokens/lineTokens.js';\nimport { RenderLineInput, renderViewLine2 } from '../../../../common/viewLayout/viewLineRenderer.js';\nimport { ViewLineRenderingData } from '../../../../common/viewModel.js';\nimport { localize } from '../../../../../nls.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { registerIcon } from '../../../../../platform/theme/common/iconRegistry.js';\nimport './accessibleDiffViewer.css';\nimport { DiffEditorEditors } from './diffEditorEditors.js';\nimport { toAction } from '../../../../../base/common/actions.js';\n\nconst accessibleDiffViewerInsertIcon = registerIcon('diff-review-insert', Codicon.add, localize('accessibleDiffViewerInsertIcon', 'Icon for \\'Insert\\' in accessible diff viewer.'));\nconst accessibleDiffViewerRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, localize('accessibleDiffViewerRemoveIcon', 'Icon for \\'Remove\\' in accessible diff viewer.'));\nconst accessibleDiffViewerCloseIcon = registerIcon('diff-review-close', Codicon.close, localize('accessibleDiffViewerCloseIcon', 'Icon for \\'Close\\' in accessible diff viewer.'));\n\nexport interface IAccessibleDiffViewerModel {\n\tgetOriginalModel(): ITextModel;\n\tgetOriginalOptions(): IComputedEditorOptions;\n\n\t/**\n\t * Should do: `setSelection`, `revealLine` and `focus`\n\t */\n\toriginalReveal(range: Range): void;\n\n\tgetModifiedModel(): ITextModel;\n\tgetModifiedOptions(): IComputedEditorOptions;\n\t/**\n\t * Should do: `setSelection`, `revealLine` and `focus`\n\t */\n\tmodifiedReveal(range?: Range): void;\n\tmodifiedSetSelection(range: Range): void;\n\tmodifiedFocus(): void;\n\n\tgetModifiedPosition(): Position | undefined;\n}\n\nexport class AccessibleDiffViewer extends Disposable {\n\tpublic static _ttPolicy = createTrustedTypesPolicy('diffReview', { createHTML: value => value });\n\n\tconstructor(\n\t\tprivate readonly _parentNode: HTMLElement,\n\t\tprivate readonly _visible: IObservable<boolean>,\n\t\tprivate readonly _setVisible: (visible: boolean, tx: ITransaction | undefined) => void,\n\t\tprivate readonly _canClose: IObservable<boolean>,\n\t\tprivate readonly _width: IObservable<number>,\n\t\tprivate readonly _height: IObservable<number>,\n\t\tprivate readonly _diffs: IObservable<DetailedLineRangeMapping[] | undefined>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate readonly _state = derived(this, (reader) => {\n\t\tconst visible = this._visible.read(reader);\n\t\tthis._parentNode.style.visibility = visible ? 'visible' : 'hidden';\n\t\tif (!visible) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = reader.store.add(this._instantiationService.createInstance(ViewModel, this._diffs, this._models, this._setVisible, this._canClose));\n\t\tconst view = reader.store.add(this._instantiationService.createInstance(View, this._parentNode, model, this._width, this._height, this._models));\n\t\treturn { model, view, };\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tnext(): void {\n\t\ttransaction(tx => {\n\t\t\tconst isVisible = this._visible.get();\n\t\t\tthis._setVisible(true, tx);\n\t\t\tif (isVisible) {\n\t\t\t\tthis._state.get()!.model.nextGroup(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprev(): void {\n\t\ttransaction(tx => {\n\t\t\tthis._setVisible(true, tx);\n\t\t\tthis._state.get()!.model.previousGroup(tx);\n\t\t});\n\t}\n\n\tclose(): void {\n\t\ttransaction(tx => {\n\t\t\tthis._setVisible(false, tx);\n\t\t});\n\t}\n}\n\nclass ViewModel extends Disposable {\n\tprivate readonly _groups = observableValue<ViewElementGroup[]>(this, []);\n\tprivate readonly _currentGroupIdx = observableValue(this, 0);\n\tprivate readonly _currentElementIdx = observableValue(this, 0);\n\n\tpublic readonly groups: IObservable<ViewElementGroup[]> = this._groups;\n\tpublic readonly currentGroup: IObservable<ViewElementGroup | undefined>\n\t\t= this._currentGroupIdx.map((idx, r) => this._groups.read(r)[idx]);\n\tpublic readonly currentGroupIndex: IObservable<number> = this._currentGroupIdx;\n\n\tpublic readonly currentElement: IObservable<ViewElement | undefined>\n\t\t= this._currentElementIdx.map((idx, r) => this.currentGroup.read(r)?.lines[idx]);\n\n\tconstructor(\n\t\tprivate readonly _diffs: IObservable<DetailedLineRangeMapping[] | undefined>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\tprivate readonly _setVisible: (visible: boolean, tx: ITransaction | undefined) => void,\n\t\tpublic readonly canClose: IObservable<boolean>,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update groups */\n\t\t\tconst diffs = this._diffs.read(reader);\n\t\t\tif (!diffs) {\n\t\t\t\tthis._groups.set([], undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groups = computeViewElementGroups(\n\t\t\t\tdiffs,\n\t\t\t\tthis._models.getOriginalModel().getLineCount(),\n\t\t\t\tthis._models.getModifiedModel().getLineCount()\n\t\t\t);\n\n\t\t\ttransaction(tx => {\n\t\t\t\tconst p = this._models.getModifiedPosition();\n\t\t\t\tif (p) {\n\t\t\t\t\tconst nextGroup = groups.findIndex(g => p?.lineNumber < g.range.modified.endLineNumberExclusive);\n\t\t\t\t\tif (nextGroup !== -1) {\n\t\t\t\t\t\tthis._currentGroupIdx.set(nextGroup, tx);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._groups.set(groups, tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description play audio-cue for diff */\n\t\t\tconst currentViewItem = this.currentElement.read(reader);\n\t\t\tif (currentViewItem?.type === LineType.Deleted) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'accessibleDiffViewer.currentElementChanged' });\n\t\t\t} else if (currentViewItem?.type === LineType.Added) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'accessibleDiffViewer.currentElementChanged' });\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description select lines in editor */\n\t\t\t// This ensures editor commands (like revert/stage) work\n\t\t\tconst currentViewItem = this.currentElement.read(reader);\n\t\t\tif (currentViewItem && currentViewItem.type !== LineType.Header) {\n\t\t\t\tconst lineNumber = currentViewItem.modifiedLineNumber ?? currentViewItem.diff.modified.startLineNumber;\n\t\t\t\tthis._models.modifiedSetSelection(Range.fromPositions(new Position(lineNumber, 1)));\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate _goToGroupDelta(delta: number, tx?: ITransaction): void {\n\t\tconst groups = this.groups.get();\n\t\tif (!groups || groups.length <= 1) { return; }\n\t\tsubtransaction(tx, tx => {\n\t\t\tthis._currentGroupIdx.set(OffsetRange.ofLength(groups.length).clipCyclic(this._currentGroupIdx.get() + delta), tx);\n\t\t\tthis._currentElementIdx.set(0, tx);\n\t\t});\n\t}\n\n\tnextGroup(tx?: ITransaction): void { this._goToGroupDelta(1, tx); }\n\tpreviousGroup(tx?: ITransaction): void { this._goToGroupDelta(-1, tx); }\n\n\tprivate _goToLineDelta(delta: number): void {\n\t\tconst group = this.currentGroup.get();\n\t\tif (!group || group.lines.length <= 1) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._currentElementIdx.set(OffsetRange.ofLength(group.lines.length).clip(this._currentElementIdx.get() + delta), tx);\n\t\t});\n\t}\n\n\tgoToNextLine(): void { this._goToLineDelta(1); }\n\tgoToPreviousLine(): void { this._goToLineDelta(-1); }\n\n\tgoToLine(line: ViewElement): void {\n\t\tconst group = this.currentGroup.get();\n\t\tif (!group) { return; }\n\t\tconst idx = group.lines.indexOf(line);\n\t\tif (idx === -1) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._currentElementIdx.set(idx, tx);\n\t\t});\n\t}\n\n\trevealCurrentElementInEditor(): void {\n\t\tif (!this.canClose.get()) { return; }\n\t\tthis._setVisible(false, undefined);\n\n\t\tconst curElem = this.currentElement.get();\n\t\tif (curElem) {\n\t\t\tif (curElem.type === LineType.Deleted) {\n\t\t\t\tthis._models.originalReveal(Range.fromPositions(new Position(curElem.originalLineNumber, 1)));\n\t\t\t} else {\n\t\t\t\tthis._models.modifiedReveal(\n\t\t\t\t\tcurElem.type !== LineType.Header\n\t\t\t\t\t\t? Range.fromPositions(new Position(curElem.modifiedLineNumber, 1))\n\t\t\t\t\t\t: undefined\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tif (!this.canClose.get()) { return; }\n\t\tthis._setVisible(false, undefined);\n\t\tthis._models.modifiedFocus();\n\t}\n}\n\n\nconst viewElementGroupLineMargin = 3;\n\nfunction computeViewElementGroups(diffs: DetailedLineRangeMapping[], originalLineCount: number, modifiedLineCount: number): ViewElementGroup[] {\n\tconst result: ViewElementGroup[] = [];\n\n\tfor (const g of groupAdjacentBy(diffs, (a, b) => (b.modified.startLineNumber - a.modified.endLineNumberExclusive < 2 * viewElementGroupLineMargin))) {\n\t\tconst viewElements: ViewElement[] = [];\n\t\tviewElements.push(new HeaderViewElement());\n\n\t\tconst origFullRange = new LineRange(\n\t\t\tMath.max(1, g[0].original.startLineNumber - viewElementGroupLineMargin),\n\t\t\tMath.min(g[g.length - 1].original.endLineNumberExclusive + viewElementGroupLineMargin, originalLineCount + 1)\n\t\t);\n\t\tconst modifiedFullRange = new LineRange(\n\t\t\tMath.max(1, g[0].modified.startLineNumber - viewElementGroupLineMargin),\n\t\t\tMath.min(g[g.length - 1].modified.endLineNumberExclusive + viewElementGroupLineMargin, modifiedLineCount + 1)\n\t\t);\n\n\t\tforEachAdjacent(g, (a, b) => {\n\t\t\tconst origRange = new LineRange(a ? a.original.endLineNumberExclusive : origFullRange.startLineNumber, b ? b.original.startLineNumber : origFullRange.endLineNumberExclusive);\n\t\t\tconst modifiedRange = new LineRange(a ? a.modified.endLineNumberExclusive : modifiedFullRange.startLineNumber, b ? b.modified.startLineNumber : modifiedFullRange.endLineNumberExclusive);\n\n\t\t\torigRange.forEach(origLineNumber => {\n\t\t\t\tviewElements.push(new UnchangedLineViewElement(origLineNumber, modifiedRange.startLineNumber + (origLineNumber - origRange.startLineNumber)));\n\t\t\t});\n\n\t\t\tif (b) {\n\t\t\t\tb.original.forEach(origLineNumber => {\n\t\t\t\t\tviewElements.push(new DeletedLineViewElement(b, origLineNumber));\n\t\t\t\t});\n\t\t\t\tb.modified.forEach(modifiedLineNumber => {\n\t\t\t\t\tviewElements.push(new AddedLineViewElement(b, modifiedLineNumber));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst modifiedRange = g[0].modified.join(g[g.length - 1].modified);\n\t\tconst originalRange = g[0].original.join(g[g.length - 1].original);\n\n\t\tresult.push(new ViewElementGroup(new LineRangeMapping(modifiedRange, originalRange), viewElements));\n\t}\n\treturn result;\n}\n\nenum LineType {\n\tHeader,\n\tUnchanged,\n\tDeleted,\n\tAdded,\n}\n\nclass ViewElementGroup {\n\tconstructor(\n\t\tpublic readonly range: LineRangeMapping,\n\t\tpublic readonly lines: readonly ViewElement[],\n\t) { }\n}\n\ntype ViewElement = HeaderViewElement | UnchangedLineViewElement | DeletedLineViewElement | AddedLineViewElement;\n\nclass HeaderViewElement {\n\tpublic readonly type = LineType.Header;\n}\n\nclass DeletedLineViewElement {\n\tpublic readonly type = LineType.Deleted;\n\n\tpublic readonly modifiedLineNumber = undefined;\n\n\tconstructor(\n\t\tpublic readonly diff: DetailedLineRangeMapping,\n\t\tpublic readonly originalLineNumber: number,\n\t) {\n\t}\n}\n\nclass AddedLineViewElement {\n\tpublic readonly type = LineType.Added;\n\n\tpublic readonly originalLineNumber = undefined;\n\n\tconstructor(\n\t\tpublic readonly diff: DetailedLineRangeMapping,\n\t\tpublic readonly modifiedLineNumber: number,\n\t) {\n\t}\n}\n\nclass UnchangedLineViewElement {\n\tpublic readonly type = LineType.Unchanged;\n\tconstructor(\n\t\tpublic readonly originalLineNumber: number,\n\t\tpublic readonly modifiedLineNumber: number,\n\t) {\n\t}\n}\n\nclass View extends Disposable {\n\tpublic readonly domNode: HTMLElement;\n\tprivate readonly _content: HTMLElement;\n\tprivate readonly _scrollbar: DomScrollableElement;\n\tprivate readonly _actionBar: ActionBar;\n\n\tconstructor(\n\t\tprivate readonly _element: HTMLElement,\n\t\tprivate readonly _model: ViewModel,\n\t\tprivate readonly _width: IObservable<number>,\n\t\tprivate readonly _height: IObservable<number>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis.domNode = this._element;\n\t\tthis.domNode.className = 'monaco-component diff-review monaco-editor-background';\n\n\t\tconst actionBarContainer = document.createElement('div');\n\t\tactionBarContainer.className = 'diff-review-actions';\n\t\tthis._actionBar = this._register(new ActionBar(\n\t\t\tactionBarContainer\n\t\t));\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update actions */\n\t\t\tthis._actionBar.clear();\n\t\t\tif (this._model.canClose.read(reader)) {\n\t\t\t\tthis._actionBar.push(toAction({\n\t\t\t\t\tid: 'diffreview.close',\n\t\t\t\t\tlabel: localize('label.close', \"Close\"),\n\t\t\t\t\tclass: 'close-diff-review ' + ThemeIcon.asClassName(accessibleDiffViewerCloseIcon),\n\t\t\t\t\tenabled: true,\n\t\t\t\t\trun: async () => _model.close()\n\t\t\t\t}), { label: false, icon: true });\n\t\t\t}\n\t\t}));\n\n\t\tthis._content = document.createElement('div');\n\t\tthis._content.className = 'diff-review-content';\n\t\tthis._content.setAttribute('role', 'code');\n\t\tthis._scrollbar = this._register(new DomScrollableElement(this._content, {}));\n\t\treset(this.domNode, this._scrollbar.getDomNode(), actionBarContainer);\n\n\t\tthis._register(autorun(r => {\n\t\t\tthis._height.read(r);\n\t\t\tthis._width.read(r);\n\t\t\tthis._scrollbar.scanDomNode();\n\t\t}));\n\n\t\tthis._register(toDisposable(() => { reset(this.domNode); }));\n\n\t\tthis._register(applyStyle(this.domNode, { width: this._width, height: this._height }));\n\t\tthis._register(applyStyle(this._content, { width: this._width, height: this._height }));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description render */\n\t\t\tthis._model.currentGroup.read(reader);\n\t\t\tthis._render(store);\n\t\t}));\n\n\t\t// TODO@hediet use commands\n\t\tthis._register(addStandardDisposableListener(this.domNode, 'keydown', (e) => {\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.DownArrow)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.DownArrow)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.DownArrow)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.goToNextLine();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.UpArrow)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.UpArrow)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.UpArrow)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.goToPreviousLine();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.Shift | KeyCode.Escape)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.close();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.Space)\n\t\t\t\t|| e.equals(KeyCode.Enter)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.revealCurrentElementInEditor();\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate _render(store: DisposableStore): void {\n\t\tconst originalOptions = this._models.getOriginalOptions();\n\t\tconst modifiedOptions = this._models.getModifiedOptions();\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'diff-review-table';\n\t\tcontainer.setAttribute('role', 'list');\n\t\tcontainer.setAttribute('aria-label', localize('ariaLabel', 'Accessible Diff Viewer. Use arrow up and down to navigate.'));\n\t\tapplyFontInfo(container, modifiedOptions.get(EditorOption.fontInfo));\n\n\t\treset(this._content, container);\n\n\t\tconst originalModel = this._models.getOriginalModel();\n\t\tconst modifiedModel = this._models.getModifiedModel();\n\t\tif (!originalModel || !modifiedModel) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst originalModelOpts = originalModel.getOptions();\n\t\tconst modifiedModelOpts = modifiedModel.getOptions();\n\n\t\tconst lineHeight = modifiedOptions.get(EditorOption.lineHeight);\n\t\tconst group = this._model.currentGroup.get();\n\t\tfor (const viewItem of group?.lines || []) {\n\t\t\tif (!group) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlet row: HTMLDivElement;\n\n\t\t\tif (viewItem.type === LineType.Header) {\n\n\t\t\t\tconst header = document.createElement('div');\n\t\t\t\theader.className = 'diff-review-row';\n\t\t\t\theader.setAttribute('role', 'listitem');\n\n\t\t\t\tconst r = group.range;\n\t\t\t\tconst diffIndex = this._model.currentGroupIndex.get();\n\t\t\t\tconst diffsLength = this._model.groups.get().length;\n\t\t\t\tconst getAriaLines = (lines: number) =>\n\t\t\t\t\tlines === 0 ? localize('no_lines_changed', \"no lines changed\")\n\t\t\t\t\t\t: lines === 1 ? localize('one_line_changed', \"1 line changed\")\n\t\t\t\t\t\t\t: localize('more_lines_changed', \"{0} lines changed\", lines);\n\n\t\t\t\tconst originalChangedLinesCntAria = getAriaLines(r.original.length);\n\t\t\t\tconst modifiedChangedLinesCntAria = getAriaLines(r.modified.length);\n\t\t\t\theader.setAttribute('aria-label', localize({\n\t\t\t\t\tkey: 'header',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'This is the ARIA label for a git diff header.',\n\t\t\t\t\t\t'A git diff header looks like this: @@ -154,12 +159,39 @@.',\n\t\t\t\t\t\t'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',\n\t\t\t\t\t\t'Variables 0 and 1 refer to the diff index out of total number of diffs.',\n\t\t\t\t\t\t'Variables 2 and 4 will be numbers (a line number).',\n\t\t\t\t\t\t'Variables 3 and 5 will be \"no lines changed\", \"1 line changed\" or \"X lines changed\", localized separately.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\",\n\t\t\t\t\t(diffIndex + 1),\n\t\t\t\t\tdiffsLength,\n\t\t\t\t\tr.original.startLineNumber,\n\t\t\t\t\toriginalChangedLinesCntAria,\n\t\t\t\t\tr.modified.startLineNumber,\n\t\t\t\t\tmodifiedChangedLinesCntAria\n\t\t\t\t));\n\n\t\t\t\tconst cell = document.createElement('div');\n\t\t\t\tcell.className = 'diff-review-cell diff-review-summary';\n\t\t\t\t// e.g.: `1/10: @@ -504,7 +517,7 @@`\n\t\t\t\tcell.appendChild(document.createTextNode(`${diffIndex + 1}/${diffsLength}: @@ -${r.original.startLineNumber},${r.original.length} +${r.modified.startLineNumber},${r.modified.length} @@`));\n\t\t\t\theader.appendChild(cell);\n\n\t\t\t\trow = header;\n\t\t\t} else {\n\t\t\t\trow = this._createRow(viewItem, lineHeight,\n\t\t\t\t\tthis._width.get(), originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcontainer.appendChild(row);\n\n\t\t\tconst isSelectedObs = derived(reader => /** @description isSelected */ this._model.currentElement.read(reader) === viewItem);\n\n\t\t\tstore.add(autorun(reader => {\n\t\t\t\t/** @description update tab index */\n\t\t\t\tconst isSelected = isSelectedObs.read(reader);\n\t\t\t\trow.tabIndex = isSelected ? 0 : -1;\n\t\t\t\tif (isSelected) {\n\t\t\t\t\trow.focus();\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tstore.add(addDisposableListener(row, 'focus', () => {\n\t\t\t\tthis._model.goToLine(viewItem);\n\t\t\t}));\n\t\t}\n\n\t\tthis._scrollbar.scanDomNode();\n\t}\n\n\tprivate _createRow(\n\t\titem: DeletedLineViewElement | AddedLineViewElement | UnchangedLineViewElement,\n\t\tlineHeight: number,\n\t\twidth: number,\n\t\toriginalOptions: IComputedEditorOptions, originalModel: ITextModel, originalModelOpts: TextModelResolvedOptions,\n\t\tmodifiedOptions: IComputedEditorOptions, modifiedModel: ITextModel, modifiedModelOpts: TextModelResolvedOptions,\n\t): HTMLDivElement {\n\t\tconst originalLayoutInfo = originalOptions.get(EditorOption.layoutInfo);\n\t\tconst originalLineNumbersWidth = originalLayoutInfo.glyphMarginWidth + originalLayoutInfo.lineNumbersWidth;\n\n\t\tconst modifiedLayoutInfo = modifiedOptions.get(EditorOption.layoutInfo);\n\t\tconst modifiedLineNumbersWidth = 10 + modifiedLayoutInfo.glyphMarginWidth + modifiedLayoutInfo.lineNumbersWidth;\n\n\t\tlet rowClassName: string = 'diff-review-row';\n\t\tlet lineNumbersExtraClassName: string = '';\n\t\tconst spacerClassName: string = 'diff-review-spacer';\n\t\tlet spacerIcon: ThemeIcon | null = null;\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Added:\n\t\t\t\trowClassName = 'diff-review-row line-insert';\n\t\t\t\tlineNumbersExtraClassName = ' char-insert';\n\t\t\t\tspacerIcon = accessibleDiffViewerInsertIcon;\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\trowClassName = 'diff-review-row line-delete';\n\t\t\t\tlineNumbersExtraClassName = ' char-delete';\n\t\t\t\tspacerIcon = accessibleDiffViewerRemoveIcon;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst row = document.createElement('div');\n\t\trow.style.minWidth = width + 'px';\n\t\trow.className = rowClassName;\n\t\trow.setAttribute('role', 'listitem');\n\t\trow.ariaLevel = '';\n\n\t\tconst cell = document.createElement('div');\n\t\tcell.className = 'diff-review-cell';\n\t\tcell.style.height = `${lineHeight}px`;\n\t\trow.appendChild(cell);\n\n\t\tconst originalLineNumber = document.createElement('span');\n\t\toriginalLineNumber.style.width = (originalLineNumbersWidth + 'px');\n\t\toriginalLineNumber.style.minWidth = (originalLineNumbersWidth + 'px');\n\t\toriginalLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n\t\tif (item.originalLineNumber !== undefined) {\n\t\t\toriginalLineNumber.appendChild(document.createTextNode(String(item.originalLineNumber)));\n\t\t} else {\n\t\t\toriginalLineNumber.innerText = '\\u00a0';\n\t\t}\n\t\tcell.appendChild(originalLineNumber);\n\n\t\tconst modifiedLineNumber = document.createElement('span');\n\t\tmodifiedLineNumber.style.width = (modifiedLineNumbersWidth + 'px');\n\t\tmodifiedLineNumber.style.minWidth = (modifiedLineNumbersWidth + 'px');\n\t\tmodifiedLineNumber.style.paddingRight = '10px';\n\t\tmodifiedLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n\t\tif (item.modifiedLineNumber !== undefined) {\n\t\t\tmodifiedLineNumber.appendChild(document.createTextNode(String(item.modifiedLineNumber)));\n\t\t} else {\n\t\t\tmodifiedLineNumber.innerText = '\\u00a0';\n\t\t}\n\t\tcell.appendChild(modifiedLineNumber);\n\n\t\tconst spacer = document.createElement('span');\n\t\tspacer.className = spacerClassName;\n\n\t\tif (spacerIcon) {\n\t\t\tconst spacerCodicon = document.createElement('span');\n\t\t\tspacerCodicon.className = ThemeIcon.asClassName(spacerIcon);\n\t\t\tspacerCodicon.innerText = '\\u00a0\\u00a0';\n\t\t\tspacer.appendChild(spacerCodicon);\n\t\t} else {\n\t\t\tspacer.innerText = '\\u00a0\\u00a0';\n\t\t}\n\t\tcell.appendChild(spacer);\n\n\t\tlet lineContent: string;\n\t\tif (item.modifiedLineNumber !== undefined) {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(modifiedModel, modifiedOptions, modifiedModelOpts.tabSize, item.modifiedLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = modifiedModel.getLineContent(item.modifiedLineNumber);\n\t\t} else {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(originalModel, originalOptions, originalModelOpts.tabSize, item.originalLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = originalModel.getLineContent(item.originalLineNumber);\n\t\t}\n\n\t\tif (lineContent.length === 0) {\n\t\t\tlineContent = localize('blankLine', \"blank\");\n\t\t}\n\n\t\tlet ariaLabel: string = '';\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Unchanged:\n\t\t\t\tif (item.originalLineNumber === item.modifiedLineNumber) {\n\t\t\t\t\tariaLabel = localize({ key: 'unchangedLine', comment: ['The placeholders are contents of the line and should not be translated.'] }, \"{0} unchanged line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel = localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, item.originalLineNumber, item.modifiedLineNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LineType.Added:\n\t\t\t\tariaLabel = localize('insertLine', \"+ {0} modified line {1}\", lineContent, item.modifiedLineNumber);\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\tariaLabel = localize('deleteLine', \"- {0} original line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\tbreak;\n\t\t}\n\t\trow.setAttribute('aria-label', ariaLabel);\n\n\t\treturn row;\n\t}\n\n\tprivate _getLineHtml(model: ITextModel, options: IComputedEditorOptions, tabSize: number, lineNumber: number, languageIdCodec: ILanguageIdCodec): string {\n\t\tconst lineContent = model.getLineContent(lineNumber);\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst verticalScrollbarSize = options.get(EditorOption.scrollbar).verticalScrollbarSize;\n\t\tconst lineTokens = LineTokens.createEmpty(lineContent, languageIdCodec);\n\t\tconst isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\n\t\tconst containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\n\t\tconst r = renderViewLine2(new RenderLineInput(\n\t\t\t(fontInfo.isMonospace && !options.get(EditorOption.disableMonospaceOptimizations)),\n\t\t\tfontInfo.canUseHalfwidthRightwardsArrow,\n\t\t\tlineContent,\n\t\t\tfalse,\n\t\t\tisBasicASCII,\n\t\t\tcontainsRTL,\n\t\t\t0,\n\t\t\tlineTokens,\n\t\t\t[],\n\t\t\ttabSize,\n\t\t\t0,\n\t\t\tfontInfo.spaceWidth,\n\t\t\tfontInfo.middotWidth,\n\t\t\tfontInfo.wsmiddotWidth,\n\t\t\toptions.get(EditorOption.stopRenderingLineAfter),\n\t\t\toptions.get(EditorOption.renderWhitespace),\n\t\t\toptions.get(EditorOption.renderControlCharacters),\n\t\t\toptions.get(EditorOption.fontLigatures) !== EditorFontLigatures.OFF,\n\t\t\tnull,\n\t\t\tnull,\n\t\t\tverticalScrollbarSize\n\t\t));\n\n\t\treturn r.html;\n\t}\n}\n\nexport class AccessibleDiffViewerModelFromEditors implements IAccessibleDiffViewerModel {\n\tconstructor(private readonly editors: DiffEditorEditors) { }\n\n\tgetOriginalModel(): ITextModel {\n\t\treturn this.editors.original.getModel()!;\n\t}\n\n\tgetOriginalOptions(): IComputedEditorOptions {\n\t\treturn this.editors.original.getOptions();\n\t}\n\n\toriginalReveal(range: Range): void {\n\t\tthis.editors.original.revealRange(range);\n\t\tthis.editors.original.setSelection(range);\n\t\tthis.editors.original.focus();\n\t}\n\n\tgetModifiedModel(): ITextModel {\n\t\treturn this.editors.modified.getModel()!;\n\t}\n\n\tgetModifiedOptions(): IComputedEditorOptions {\n\t\treturn this.editors.modified.getOptions();\n\t}\n\n\tmodifiedReveal(range?: Range | undefined): void {\n\t\tif (range) {\n\t\t\tthis.editors.modified.revealRange(range);\n\t\t\tthis.editors.modified.setSelection(range);\n\t\t}\n\t\tthis.editors.modified.focus();\n\t}\n\n\tmodifiedSetSelection(range: Range): void {\n\t\tthis.editors.modified.setSelection(range);\n\t}\n\n\tmodifiedFocus(): void {\n\t\tthis.editors.modified.focus();\n\t}\n\n\tgetModifiedPosition(): Position | undefined {\n\t\treturn this.editors.modified.getPosition() ?? undefined;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.ts"],"names":[],"mappings":"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","file":"accessibleDiffViewer.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 { addDisposableListener, addStandardDisposableListener, reset } from '../../../../../base/browser/dom.js';\nimport { createTrustedTypesPolicy } from '../../../../../base/browser/trustedTypes.js';\nimport { ActionBar } from '../../../../../base/browser/ui/actionbar/actionbar.js';\nimport { DomScrollableElement } from '../../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { forEachAdjacent, groupAdjacentBy } from '../../../../../base/common/arrays.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { KeyCode, KeyMod } from '../../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, observableValue, subtransaction, transaction } from '../../../../../base/common/observable.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { applyFontInfo } from '../../../config/domFontInfo.js';\nimport { applyStyle } from '../utils.js';\nimport { EditorFontLigatures, EditorOption, IComputedEditorOptions } from '../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { DetailedLineRangeMapping, LineRangeMapping } from '../../../../common/diff/rangeMapping.js';\nimport { ILanguageIdCodec } from '../../../../common/languages.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModel, TextModelResolvedOptions } from '../../../../common/model.js';\nimport { LineTokens } from '../../../../common/tokens/lineTokens.js';\nimport { RenderLineInput, renderViewLine2 } from '../../../../common/viewLayout/viewLineRenderer.js';\nimport { ViewLineRenderingData } from '../../../../common/viewModel.js';\nimport { localize } from '../../../../../nls.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { registerIcon } from '../../../../../platform/theme/common/iconRegistry.js';\nimport './accessibleDiffViewer.css';\nimport { DiffEditorEditors } from './diffEditorEditors.js';\nimport { toAction } from '../../../../../base/common/actions.js';\n\nconst accessibleDiffViewerInsertIcon = registerIcon('diff-review-insert', Codicon.add, localize('accessibleDiffViewerInsertIcon', 'Icon for \\'Insert\\' in accessible diff viewer.'));\nconst accessibleDiffViewerRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, localize('accessibleDiffViewerRemoveIcon', 'Icon for \\'Remove\\' in accessible diff viewer.'));\nconst accessibleDiffViewerCloseIcon = registerIcon('diff-review-close', Codicon.close, localize('accessibleDiffViewerCloseIcon', 'Icon for \\'Close\\' in accessible diff viewer.'));\n\nexport interface IAccessibleDiffViewerModel {\n\tgetOriginalModel(): ITextModel;\n\tgetOriginalOptions(): IComputedEditorOptions;\n\n\t/**\n\t * Should do: `setSelection`, `revealLine` and `focus`\n\t */\n\toriginalReveal(range: Range): void;\n\n\tgetModifiedModel(): ITextModel;\n\tgetModifiedOptions(): IComputedEditorOptions;\n\t/**\n\t * Should do: `setSelection`, `revealLine` and `focus`\n\t */\n\tmodifiedReveal(range?: Range): void;\n\tmodifiedSetSelection(range: Range): void;\n\tmodifiedFocus(): void;\n\n\tgetModifiedPosition(): Position | undefined;\n}\n\nexport class AccessibleDiffViewer extends Disposable {\n\tpublic static _ttPolicy = createTrustedTypesPolicy('diffReview', { createHTML: value => value });\n\n\tconstructor(\n\t\tprivate readonly _parentNode: HTMLElement,\n\t\tprivate readonly _visible: IObservable<boolean>,\n\t\tprivate readonly _setVisible: (visible: boolean, tx: ITransaction | undefined) => void,\n\t\tprivate readonly _canClose: IObservable<boolean>,\n\t\tprivate readonly _width: IObservable<number>,\n\t\tprivate readonly _height: IObservable<number>,\n\t\tprivate readonly _diffs: IObservable<DetailedLineRangeMapping[] | undefined>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate readonly _state = derived(this, (reader) => {\n\t\tconst visible = this._visible.read(reader);\n\t\tthis._parentNode.style.visibility = visible ? 'visible' : 'hidden';\n\t\tif (!visible) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = reader.store.add(this._instantiationService.createInstance(ViewModel, this._diffs, this._models, this._setVisible, this._canClose));\n\t\tconst view = reader.store.add(this._instantiationService.createInstance(View, this._parentNode, model, this._width, this._height, this._models));\n\t\treturn { model, view, };\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tnext(): void {\n\t\ttransaction(tx => {\n\t\t\tconst isVisible = this._visible.get();\n\t\t\tthis._setVisible(true, tx);\n\t\t\tif (isVisible) {\n\t\t\t\tthis._state.get()!.model.nextGroup(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprev(): void {\n\t\ttransaction(tx => {\n\t\t\tthis._setVisible(true, tx);\n\t\t\tthis._state.get()!.model.previousGroup(tx);\n\t\t});\n\t}\n\n\tclose(): void {\n\t\ttransaction(tx => {\n\t\t\tthis._setVisible(false, tx);\n\t\t});\n\t}\n}\n\nclass ViewModel extends Disposable {\n\tprivate readonly _groups = observableValue<ViewElementGroup[]>(this, []);\n\tprivate readonly _currentGroupIdx = observableValue(this, 0);\n\tprivate readonly _currentElementIdx = observableValue(this, 0);\n\n\tpublic readonly groups: IObservable<ViewElementGroup[]> = this._groups;\n\tpublic readonly currentGroup: IObservable<ViewElementGroup | undefined>\n\t\t= this._currentGroupIdx.map((idx, r) => this._groups.read(r)[idx]);\n\tpublic readonly currentGroupIndex: IObservable<number> = this._currentGroupIdx;\n\n\tpublic readonly currentElement: IObservable<ViewElement | undefined>\n\t\t= this._currentElementIdx.map((idx, r) => this.currentGroup.read(r)?.lines[idx]);\n\n\tconstructor(\n\t\tprivate readonly _diffs: IObservable<DetailedLineRangeMapping[] | undefined>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\tprivate readonly _setVisible: (visible: boolean, tx: ITransaction | undefined) => void,\n\t\tpublic readonly canClose: IObservable<boolean>,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update groups */\n\t\t\tconst diffs = this._diffs.read(reader);\n\t\t\tif (!diffs) {\n\t\t\t\tthis._groups.set([], undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groups = computeViewElementGroups(\n\t\t\t\tdiffs,\n\t\t\t\tthis._models.getOriginalModel().getLineCount(),\n\t\t\t\tthis._models.getModifiedModel().getLineCount()\n\t\t\t);\n\n\t\t\ttransaction(tx => {\n\t\t\t\tconst p = this._models.getModifiedPosition();\n\t\t\t\tif (p) {\n\t\t\t\t\tconst nextGroup = groups.findIndex(g => p?.lineNumber < g.range.modified.endLineNumberExclusive);\n\t\t\t\t\tif (nextGroup !== -1) {\n\t\t\t\t\t\tthis._currentGroupIdx.set(nextGroup, tx);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._groups.set(groups, tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description play audio-cue for diff */\n\t\t\tconst currentViewItem = this.currentElement.read(reader);\n\t\t\tif (currentViewItem?.type === LineType.Deleted) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'accessibleDiffViewer.currentElementChanged' });\n\t\t\t} else if (currentViewItem?.type === LineType.Added) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'accessibleDiffViewer.currentElementChanged' });\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description select lines in editor */\n\t\t\t// This ensures editor commands (like revert/stage) work\n\t\t\tconst currentViewItem = this.currentElement.read(reader);\n\t\t\tif (currentViewItem && currentViewItem.type !== LineType.Header) {\n\t\t\t\tconst lineNumber = currentViewItem.modifiedLineNumber ?? currentViewItem.diff.modified.startLineNumber;\n\t\t\t\tthis._models.modifiedSetSelection(Range.fromPositions(new Position(lineNumber, 1)));\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate _goToGroupDelta(delta: number, tx?: ITransaction): void {\n\t\tconst groups = this.groups.get();\n\t\tif (!groups || groups.length <= 1) { return; }\n\t\tsubtransaction(tx, tx => {\n\t\t\tthis._currentGroupIdx.set(OffsetRange.ofLength(groups.length).clipCyclic(this._currentGroupIdx.get() + delta), tx);\n\t\t\tthis._currentElementIdx.set(0, tx);\n\t\t});\n\t}\n\n\tnextGroup(tx?: ITransaction): void { this._goToGroupDelta(1, tx); }\n\tpreviousGroup(tx?: ITransaction): void { this._goToGroupDelta(-1, tx); }\n\n\tprivate _goToLineDelta(delta: number): void {\n\t\tconst group = this.currentGroup.get();\n\t\tif (!group || group.lines.length <= 1) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._currentElementIdx.set(OffsetRange.ofLength(group.lines.length).clip(this._currentElementIdx.get() + delta), tx);\n\t\t});\n\t}\n\n\tgoToNextLine(): void { this._goToLineDelta(1); }\n\tgoToPreviousLine(): void { this._goToLineDelta(-1); }\n\n\tgoToLine(line: ViewElement): void {\n\t\tconst group = this.currentGroup.get();\n\t\tif (!group) { return; }\n\t\tconst idx = group.lines.indexOf(line);\n\t\tif (idx === -1) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._currentElementIdx.set(idx, tx);\n\t\t});\n\t}\n\n\trevealCurrentElementInEditor(): void {\n\t\tif (!this.canClose.get()) { return; }\n\t\tthis._setVisible(false, undefined);\n\n\t\tconst curElem = this.currentElement.get();\n\t\tif (curElem) {\n\t\t\tif (curElem.type === LineType.Deleted) {\n\t\t\t\tthis._models.originalReveal(Range.fromPositions(new Position(curElem.originalLineNumber, 1)));\n\t\t\t} else {\n\t\t\t\tthis._models.modifiedReveal(\n\t\t\t\t\tcurElem.type !== LineType.Header\n\t\t\t\t\t\t? Range.fromPositions(new Position(curElem.modifiedLineNumber, 1))\n\t\t\t\t\t\t: undefined\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tif (!this.canClose.get()) { return; }\n\t\tthis._setVisible(false, undefined);\n\t\tthis._models.modifiedFocus();\n\t}\n}\n\n\nconst viewElementGroupLineMargin = 3;\n\nfunction computeViewElementGroups(diffs: DetailedLineRangeMapping[], originalLineCount: number, modifiedLineCount: number): ViewElementGroup[] {\n\tconst result: ViewElementGroup[] = [];\n\n\tfor (const g of groupAdjacentBy(diffs, (a, b) => (b.modified.startLineNumber - a.modified.endLineNumberExclusive < 2 * viewElementGroupLineMargin))) {\n\t\tconst viewElements: ViewElement[] = [];\n\t\tviewElements.push(new HeaderViewElement());\n\n\t\tconst origFullRange = new LineRange(\n\t\t\tMath.max(1, g[0].original.startLineNumber - viewElementGroupLineMargin),\n\t\t\tMath.min(g[g.length - 1].original.endLineNumberExclusive + viewElementGroupLineMargin, originalLineCount + 1)\n\t\t);\n\t\tconst modifiedFullRange = new LineRange(\n\t\t\tMath.max(1, g[0].modified.startLineNumber - viewElementGroupLineMargin),\n\t\t\tMath.min(g[g.length - 1].modified.endLineNumberExclusive + viewElementGroupLineMargin, modifiedLineCount + 1)\n\t\t);\n\n\t\tforEachAdjacent(g, (a, b) => {\n\t\t\tconst origRange = new LineRange(a ? a.original.endLineNumberExclusive : origFullRange.startLineNumber, b ? b.original.startLineNumber : origFullRange.endLineNumberExclusive);\n\t\t\tconst modifiedRange = new LineRange(a ? a.modified.endLineNumberExclusive : modifiedFullRange.startLineNumber, b ? b.modified.startLineNumber : modifiedFullRange.endLineNumberExclusive);\n\n\t\t\torigRange.forEach(origLineNumber => {\n\t\t\t\tviewElements.push(new UnchangedLineViewElement(origLineNumber, modifiedRange.startLineNumber + (origLineNumber - origRange.startLineNumber)));\n\t\t\t});\n\n\t\t\tif (b) {\n\t\t\t\tb.original.forEach(origLineNumber => {\n\t\t\t\t\tviewElements.push(new DeletedLineViewElement(b, origLineNumber));\n\t\t\t\t});\n\t\t\t\tb.modified.forEach(modifiedLineNumber => {\n\t\t\t\t\tviewElements.push(new AddedLineViewElement(b, modifiedLineNumber));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst modifiedRange = g[0].modified.join(g[g.length - 1].modified);\n\t\tconst originalRange = g[0].original.join(g[g.length - 1].original);\n\n\t\tresult.push(new ViewElementGroup(new LineRangeMapping(modifiedRange, originalRange), viewElements));\n\t}\n\treturn result;\n}\n\nenum LineType {\n\tHeader,\n\tUnchanged,\n\tDeleted,\n\tAdded,\n}\n\nclass ViewElementGroup {\n\tconstructor(\n\t\tpublic readonly range: LineRangeMapping,\n\t\tpublic readonly lines: readonly ViewElement[],\n\t) { }\n}\n\ntype ViewElement = HeaderViewElement | UnchangedLineViewElement | DeletedLineViewElement | AddedLineViewElement;\n\nclass HeaderViewElement {\n\tpublic readonly type = LineType.Header;\n}\n\nclass DeletedLineViewElement {\n\tpublic readonly type = LineType.Deleted;\n\n\tpublic readonly modifiedLineNumber = undefined;\n\n\tconstructor(\n\t\tpublic readonly diff: DetailedLineRangeMapping,\n\t\tpublic readonly originalLineNumber: number,\n\t) {\n\t}\n}\n\nclass AddedLineViewElement {\n\tpublic readonly type = LineType.Added;\n\n\tpublic readonly originalLineNumber = undefined;\n\n\tconstructor(\n\t\tpublic readonly diff: DetailedLineRangeMapping,\n\t\tpublic readonly modifiedLineNumber: number,\n\t) {\n\t}\n}\n\nclass UnchangedLineViewElement {\n\tpublic readonly type = LineType.Unchanged;\n\tconstructor(\n\t\tpublic readonly originalLineNumber: number,\n\t\tpublic readonly modifiedLineNumber: number,\n\t) {\n\t}\n}\n\nclass View extends Disposable {\n\tpublic readonly domNode: HTMLElement;\n\tprivate readonly _content: HTMLElement;\n\tprivate readonly _scrollbar: DomScrollableElement;\n\tprivate readonly _actionBar: ActionBar;\n\n\tconstructor(\n\t\tprivate readonly _element: HTMLElement,\n\t\tprivate readonly _model: ViewModel,\n\t\tprivate readonly _width: IObservable<number>,\n\t\tprivate readonly _height: IObservable<number>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis.domNode = this._element;\n\t\tthis.domNode.className = 'monaco-component diff-review monaco-editor-background';\n\n\t\tconst actionBarContainer = document.createElement('div');\n\t\tactionBarContainer.className = 'diff-review-actions';\n\t\tthis._actionBar = this._register(new ActionBar(\n\t\t\tactionBarContainer\n\t\t));\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update actions */\n\t\t\tthis._actionBar.clear();\n\t\t\tif (this._model.canClose.read(reader)) {\n\t\t\t\tthis._actionBar.push(toAction({\n\t\t\t\t\tid: 'diffreview.close',\n\t\t\t\t\tlabel: localize('label.close', \"Close\"),\n\t\t\t\t\tclass: 'close-diff-review ' + ThemeIcon.asClassName(accessibleDiffViewerCloseIcon),\n\t\t\t\t\tenabled: true,\n\t\t\t\t\trun: async () => _model.close()\n\t\t\t\t}), { label: false, icon: true });\n\t\t\t}\n\t\t}));\n\n\t\tthis._content = document.createElement('div');\n\t\tthis._content.className = 'diff-review-content';\n\t\tthis._content.setAttribute('role', 'code');\n\t\tthis._scrollbar = this._register(new DomScrollableElement(this._content, {}));\n\t\treset(this.domNode, this._scrollbar.getDomNode(), actionBarContainer);\n\n\t\tthis._register(autorun(r => {\n\t\t\tthis._height.read(r);\n\t\t\tthis._width.read(r);\n\t\t\tthis._scrollbar.scanDomNode();\n\t\t}));\n\n\t\tthis._register(toDisposable(() => { reset(this.domNode); }));\n\n\t\tthis._register(applyStyle(this.domNode, { width: this._width, height: this._height }));\n\t\tthis._register(applyStyle(this._content, { width: this._width, height: this._height }));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description render */\n\t\t\tthis._model.currentGroup.read(reader);\n\t\t\tthis._render(store);\n\t\t}));\n\n\t\t// TODO@hediet use commands\n\t\tthis._register(addStandardDisposableListener(this.domNode, 'keydown', (e) => {\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.DownArrow)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.DownArrow)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.DownArrow)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.goToNextLine();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.UpArrow)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.UpArrow)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.UpArrow)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.goToPreviousLine();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.Shift | KeyCode.Escape)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.close();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.Space)\n\t\t\t\t|| e.equals(KeyCode.Enter)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.revealCurrentElementInEditor();\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate _render(store: DisposableStore): void {\n\t\tconst originalOptions = this._models.getOriginalOptions();\n\t\tconst modifiedOptions = this._models.getModifiedOptions();\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'diff-review-table';\n\t\tcontainer.setAttribute('role', 'list');\n\t\tcontainer.setAttribute('aria-label', localize('ariaLabel', 'Accessible Diff Viewer. Use arrow up and down to navigate.'));\n\t\tapplyFontInfo(container, modifiedOptions.get(EditorOption.fontInfo));\n\n\t\treset(this._content, container);\n\n\t\tconst originalModel = this._models.getOriginalModel();\n\t\tconst modifiedModel = this._models.getModifiedModel();\n\t\tif (!originalModel || !modifiedModel) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst originalModelOpts = originalModel.getOptions();\n\t\tconst modifiedModelOpts = modifiedModel.getOptions();\n\n\t\tconst lineHeight = modifiedOptions.get(EditorOption.lineHeight);\n\t\tconst group = this._model.currentGroup.get();\n\t\tfor (const viewItem of group?.lines || []) {\n\t\t\tif (!group) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlet row: HTMLDivElement;\n\n\t\t\tif (viewItem.type === LineType.Header) {\n\n\t\t\t\tconst header = document.createElement('div');\n\t\t\t\theader.className = 'diff-review-row';\n\t\t\t\theader.setAttribute('role', 'listitem');\n\n\t\t\t\tconst r = group.range;\n\t\t\t\tconst diffIndex = this._model.currentGroupIndex.get();\n\t\t\t\tconst diffsLength = this._model.groups.get().length;\n\t\t\t\tconst getAriaLines = (lines: number) =>\n\t\t\t\t\tlines === 0 ? localize('no_lines_changed', \"no lines changed\")\n\t\t\t\t\t\t: lines === 1 ? localize('one_line_changed', \"1 line changed\")\n\t\t\t\t\t\t\t: localize('more_lines_changed', \"{0} lines changed\", lines);\n\n\t\t\t\tconst originalChangedLinesCntAria = getAriaLines(r.original.length);\n\t\t\t\tconst modifiedChangedLinesCntAria = getAriaLines(r.modified.length);\n\t\t\t\theader.setAttribute('aria-label', localize({\n\t\t\t\t\tkey: 'header',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'This is the ARIA label for a git diff header.',\n\t\t\t\t\t\t'A git diff header looks like this: @@ -154,12 +159,39 @@.',\n\t\t\t\t\t\t'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',\n\t\t\t\t\t\t'Variables 0 and 1 refer to the diff index out of total number of diffs.',\n\t\t\t\t\t\t'Variables 2 and 4 will be numbers (a line number).',\n\t\t\t\t\t\t'Variables 3 and 5 will be \"no lines changed\", \"1 line changed\" or \"X lines changed\", localized separately.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\",\n\t\t\t\t\t(diffIndex + 1),\n\t\t\t\t\tdiffsLength,\n\t\t\t\t\tr.original.startLineNumber,\n\t\t\t\t\toriginalChangedLinesCntAria,\n\t\t\t\t\tr.modified.startLineNumber,\n\t\t\t\t\tmodifiedChangedLinesCntAria\n\t\t\t\t));\n\n\t\t\t\tconst cell = document.createElement('div');\n\t\t\t\tcell.className = 'diff-review-cell diff-review-summary';\n\t\t\t\t// e.g.: `1/10: @@ -504,7 +517,7 @@`\n\t\t\t\tcell.appendChild(document.createTextNode(`${diffIndex + 1}/${diffsLength}: @@ -${r.original.startLineNumber},${r.original.length} +${r.modified.startLineNumber},${r.modified.length} @@`));\n\t\t\t\theader.appendChild(cell);\n\n\t\t\t\trow = header;\n\t\t\t} else {\n\t\t\t\trow = this._createRow(viewItem, lineHeight,\n\t\t\t\t\tthis._width.get(), originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcontainer.appendChild(row);\n\n\t\t\tconst isSelectedObs = derived(reader => /** @description isSelected */ this._model.currentElement.read(reader) === viewItem);\n\n\t\t\tstore.add(autorun(reader => {\n\t\t\t\t/** @description update tab index */\n\t\t\t\tconst isSelected = isSelectedObs.read(reader);\n\t\t\t\trow.tabIndex = isSelected ? 0 : -1;\n\t\t\t\tif (isSelected) {\n\t\t\t\t\trow.focus();\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tstore.add(addDisposableListener(row, 'focus', () => {\n\t\t\t\tthis._model.goToLine(viewItem);\n\t\t\t}));\n\t\t}\n\n\t\tthis._scrollbar.scanDomNode();\n\t}\n\n\tprivate _createRow(\n\t\titem: DeletedLineViewElement | AddedLineViewElement | UnchangedLineViewElement,\n\t\tlineHeight: number,\n\t\twidth: number,\n\t\toriginalOptions: IComputedEditorOptions, originalModel: ITextModel, originalModelOpts: TextModelResolvedOptions,\n\t\tmodifiedOptions: IComputedEditorOptions, modifiedModel: ITextModel, modifiedModelOpts: TextModelResolvedOptions,\n\t): HTMLDivElement {\n\t\tconst originalLayoutInfo = originalOptions.get(EditorOption.layoutInfo);\n\t\tconst originalLineNumbersWidth = originalLayoutInfo.glyphMarginWidth + originalLayoutInfo.lineNumbersWidth;\n\n\t\tconst modifiedLayoutInfo = modifiedOptions.get(EditorOption.layoutInfo);\n\t\tconst modifiedLineNumbersWidth = 10 + modifiedLayoutInfo.glyphMarginWidth + modifiedLayoutInfo.lineNumbersWidth;\n\n\t\tlet rowClassName: string = 'diff-review-row';\n\t\tlet lineNumbersExtraClassName: string = '';\n\t\tconst spacerClassName: string = 'diff-review-spacer';\n\t\tlet spacerIcon: ThemeIcon | null = null;\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Added:\n\t\t\t\trowClassName = 'diff-review-row line-insert';\n\t\t\t\tlineNumbersExtraClassName = ' char-insert';\n\t\t\t\tspacerIcon = accessibleDiffViewerInsertIcon;\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\trowClassName = 'diff-review-row line-delete';\n\t\t\t\tlineNumbersExtraClassName = ' char-delete';\n\t\t\t\tspacerIcon = accessibleDiffViewerRemoveIcon;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst row = document.createElement('div');\n\t\trow.style.minWidth = width + 'px';\n\t\trow.className = rowClassName;\n\t\trow.setAttribute('role', 'listitem');\n\t\trow.ariaLevel = '';\n\n\t\tconst cell = document.createElement('div');\n\t\tcell.className = 'diff-review-cell';\n\t\tcell.style.height = `${lineHeight}px`;\n\t\trow.appendChild(cell);\n\n\t\tconst originalLineNumber = document.createElement('span');\n\t\toriginalLineNumber.style.width = (originalLineNumbersWidth + 'px');\n\t\toriginalLineNumber.style.minWidth = (originalLineNumbersWidth + 'px');\n\t\toriginalLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n\t\tif (item.originalLineNumber !== undefined) {\n\t\t\toriginalLineNumber.appendChild(document.createTextNode(String(item.originalLineNumber)));\n\t\t} else {\n\t\t\toriginalLineNumber.innerText = '\\u00a0';\n\t\t}\n\t\tcell.appendChild(originalLineNumber);\n\n\t\tconst modifiedLineNumber = document.createElement('span');\n\t\tmodifiedLineNumber.style.width = (modifiedLineNumbersWidth + 'px');\n\t\tmodifiedLineNumber.style.minWidth = (modifiedLineNumbersWidth + 'px');\n\t\tmodifiedLineNumber.style.paddingRight = '10px';\n\t\tmodifiedLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n\t\tif (item.modifiedLineNumber !== undefined) {\n\t\t\tmodifiedLineNumber.appendChild(document.createTextNode(String(item.modifiedLineNumber)));\n\t\t} else {\n\t\t\tmodifiedLineNumber.innerText = '\\u00a0';\n\t\t}\n\t\tcell.appendChild(modifiedLineNumber);\n\n\t\tconst spacer = document.createElement('span');\n\t\tspacer.className = spacerClassName;\n\n\t\tif (spacerIcon) {\n\t\t\tconst spacerCodicon = document.createElement('span');\n\t\t\tspacerCodicon.className = ThemeIcon.asClassName(spacerIcon);\n\t\t\tspacerCodicon.innerText = '\\u00a0\\u00a0';\n\t\t\tspacer.appendChild(spacerCodicon);\n\t\t} else {\n\t\t\tspacer.innerText = '\\u00a0\\u00a0';\n\t\t}\n\t\tcell.appendChild(spacer);\n\n\t\tlet lineContent: string;\n\t\tif (item.modifiedLineNumber !== undefined) {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(modifiedModel, modifiedOptions, modifiedModelOpts.tabSize, item.modifiedLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = modifiedModel.getLineContent(item.modifiedLineNumber);\n\t\t} else {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(originalModel, originalOptions, originalModelOpts.tabSize, item.originalLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = originalModel.getLineContent(item.originalLineNumber);\n\t\t}\n\n\t\tif (lineContent.length === 0) {\n\t\t\tlineContent = localize('blankLine', \"blank\");\n\t\t}\n\n\t\tlet ariaLabel: string = '';\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Unchanged:\n\t\t\t\tif (item.originalLineNumber === item.modifiedLineNumber) {\n\t\t\t\t\tariaLabel = localize({ key: 'unchangedLine', comment: ['The placeholders are contents of the line and should not be translated.'] }, \"{0} unchanged line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel = localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, item.originalLineNumber, item.modifiedLineNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LineType.Added:\n\t\t\t\tariaLabel = localize('insertLine', \"+ {0} modified line {1}\", lineContent, item.modifiedLineNumber);\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\tariaLabel = localize('deleteLine', \"- {0} original line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\tbreak;\n\t\t}\n\t\trow.setAttribute('aria-label', ariaLabel);\n\n\t\treturn row;\n\t}\n\n\tprivate _getLineHtml(model: ITextModel, options: IComputedEditorOptions, tabSize: number, lineNumber: number, languageIdCodec: ILanguageIdCodec): string {\n\t\tconst lineContent = model.getLineContent(lineNumber);\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst verticalScrollbarSize = options.get(EditorOption.scrollbar).verticalScrollbarSize;\n\t\tconst lineTokens = LineTokens.createEmpty(lineContent, languageIdCodec);\n\t\tconst isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\n\t\tconst containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\n\t\tconst r = renderViewLine2(new RenderLineInput(\n\t\t\t(fontInfo.isMonospace && !options.get(EditorOption.disableMonospaceOptimizations)),\n\t\t\tfontInfo.canUseHalfwidthRightwardsArrow,\n\t\t\tlineContent,\n\t\t\tfalse,\n\t\t\tisBasicASCII,\n\t\t\tcontainsRTL,\n\t\t\t0,\n\t\t\tlineTokens,\n\t\t\t[],\n\t\t\ttabSize,\n\t\t\t0,\n\t\t\tfontInfo.spaceWidth,\n\t\t\tfontInfo.middotWidth,\n\t\t\tfontInfo.wsmiddotWidth,\n\t\t\toptions.get(EditorOption.stopRenderingLineAfter),\n\t\t\toptions.get(EditorOption.renderWhitespace),\n\t\t\toptions.get(EditorOption.renderControlCharacters),\n\t\t\toptions.get(EditorOption.fontLigatures) !== EditorFontLigatures.OFF,\n\t\t\tnull,\n\t\t\tnull,\n\t\t\tverticalScrollbarSize\n\t\t));\n\n\t\treturn r.html;\n\t}\n}\n\nexport class AccessibleDiffViewerModelFromEditors implements IAccessibleDiffViewerModel {\n\tconstructor(private readonly editors: DiffEditorEditors) { }\n\n\tgetOriginalModel(): ITextModel {\n\t\treturn this.editors.original.getModel()!;\n\t}\n\n\tgetOriginalOptions(): IComputedEditorOptions {\n\t\treturn this.editors.original.getOptions();\n\t}\n\n\toriginalReveal(range: Range): void {\n\t\tthis.editors.original.revealRange(range);\n\t\tthis.editors.original.setSelection(range);\n\t\tthis.editors.original.focus();\n\t}\n\n\tgetModifiedModel(): ITextModel {\n\t\treturn this.editors.modified.getModel()!;\n\t}\n\n\tgetModifiedOptions(): IComputedEditorOptions {\n\t\treturn this.editors.modified.getOptions();\n\t}\n\n\tmodifiedReveal(range?: Range | undefined): void {\n\t\tif (range) {\n\t\t\tthis.editors.modified.revealRange(range);\n\t\t\tthis.editors.modified.setSelection(range);\n\t\t}\n\t\tthis.editors.modified.focus();\n\t}\n\n\tmodifiedSetSelection(range: Range): void {\n\t\tthis.editors.modified.setSelection(range);\n\t}\n\n\tmodifiedFocus(): void {\n\t\tthis.editors.modified.focus();\n\t}\n\n\tgetModifiedPosition(): Position | undefined {\n\t\treturn this.editors.modified.getPosition() ?? undefined;\n\t}\n}\n"]}
@@ -167,7 +167,7 @@ let DiffEditorEditors = class DiffEditorEditors extends Disposable {
167
167
  if (!ariaLabel) {
168
168
  ariaLabel = '';
169
169
  }
170
- const ariaNavigationTip = localize(108, ' use {0} to open the accessibility help.', this._keybindingService.lookupKeybinding('editor.action.accessibilityHelp')?.getAriaLabel());
170
+ const ariaNavigationTip = localize(113, ' use {0} to open the accessibility help.', this._keybindingService.lookupKeybinding('editor.action.accessibilityHelp')?.getAriaLabel());
171
171
  if (this._options.accessibilityVerbose.get()) {
172
172
  return ariaLabel + ariaNavigationTip;
173
173
  }
@@ -53,7 +53,7 @@ export function enableCopySelection(options) {
53
53
  clipboardService.writeText(selectedText);
54
54
  }));
55
55
  showContextMenu({ x: e.event.posx, y: e.event.posy + editorLineHeight }, selectedText ?
56
- [new Action('diff.clipboard.copySelectedDeletedContent', localize(109, 'Copy Selection'), undefined, true, async () => clipboardService.writeText(selectedText))] :
56
+ [new Action('diff.clipboard.copySelectedDeletedContent', localize(114, 'Copy Selection'), undefined, true, async () => clipboardService.writeText(selectedText))] :
57
57
  [], () => {
58
58
  onCopy.dispose();
59
59
  });
@@ -57,18 +57,18 @@ export class InlineDiffDeletedCodeMargin extends Disposable {
57
57
  // default action
58
58
  actions.push(new Action('diff.clipboard.copyDeletedContent', isDeletion
59
59
  ? (_diff.original.length > 1
60
- ? localize(110, "Copy deleted lines")
61
- : localize(111, "Copy deleted line"))
60
+ ? localize(115, "Copy deleted lines")
61
+ : localize(116, "Copy deleted line"))
62
62
  : (_diff.original.length > 1
63
- ? localize(112, "Copy changed lines")
64
- : localize(113, "Copy changed line")), undefined, true, async () => {
63
+ ? localize(117, "Copy changed lines")
64
+ : localize(118, "Copy changed line")), undefined, true, async () => {
65
65
  const originalText = this._originalTextModel.getValueInRange(_diff.original.toExclusiveRange());
66
66
  await this._clipboardService.writeText(originalText);
67
67
  }));
68
68
  if (_diff.original.length > 1) {
69
69
  actions.push(new Action('diff.clipboard.copyDeletedLineContent', isDeletion
70
- ? localize(114, "Copy deleted line ({0})", _diff.original.startLineNumber + currentLineNumberOffset)
71
- : localize(115, "Copy changed line ({0})", _diff.original.startLineNumber + currentLineNumberOffset), undefined, true, async () => {
70
+ ? localize(119, "Copy deleted line ({0})", _diff.original.startLineNumber + currentLineNumberOffset)
71
+ : localize(120, "Copy changed line ({0})", _diff.original.startLineNumber + currentLineNumberOffset), undefined, true, async () => {
72
72
  let lineContent = this._originalTextModel.getLineContent(_diff.original.startLineNumber + currentLineNumberOffset);
73
73
  if (lineContent === '') {
74
74
  // empty line -> new line
@@ -80,7 +80,7 @@ export class InlineDiffDeletedCodeMargin extends Disposable {
80
80
  }
81
81
  const readOnly = _modifiedEditor.getOption(104 /* EditorOption.readOnly */);
82
82
  if (!readOnly) {
83
- actions.push(new Action('diff.inline.revertChange', localize(116, "Revert this change"), undefined, true, async () => {
83
+ actions.push(new Action('diff.inline.revertChange', localize(121, "Revert this change"), undefined, true, async () => {
84
84
  this._editor.revert(this._diff);
85
85
  }));
86
86
  }
@@ -16,7 +16,7 @@ registerAction2(ToggleUseInlineViewWhenSpaceIsLimited);
16
16
  MenuRegistry.appendMenuItem(MenuId.EditorTitle, {
17
17
  command: {
18
18
  id: new ToggleUseInlineViewWhenSpaceIsLimited().desc.id,
19
- title: localize(117, "Use Inline View When Space Is Limited"),
19
+ title: localize(122, "Use Inline View When Space Is Limited"),
20
20
  toggled: ContextKeyExpr.has('config.diffEditor.useInlineViewWhenSpaceIsLimited'),
21
21
  precondition: ContextKeyExpr.has('isInDiffEditor'),
22
22
  },
@@ -27,7 +27,7 @@ MenuRegistry.appendMenuItem(MenuId.EditorTitle, {
27
27
  MenuRegistry.appendMenuItem(MenuId.EditorTitle, {
28
28
  command: {
29
29
  id: new ToggleShowMovedCodeBlocks().desc.id,
30
- title: localize(118, "Show Moved Code Blocks"),
30
+ title: localize(123, "Show Moved Code Blocks"),
31
31
  icon: Codicon.move,
32
32
  toggled: ContextKeyEqualsExpr.create('config.diffEditor.experimental.showMoves', true),
33
33
  precondition: ContextKeyExpr.has('isInDiffEditor'),
@@ -44,7 +44,7 @@ for (const ctx of [
44
44
  MenuRegistry.appendMenuItem(MenuId.DiffEditorHunkToolbar, {
45
45
  command: {
46
46
  id: new RevertHunkOrSelection().desc.id,
47
- title: localize(119, "Revert Block"),
47
+ title: localize(124, "Revert Block"),
48
48
  icon: ctx.icon,
49
49
  },
50
50
  when: ContextKeyExpr.and(EditorContextKeys.diffEditorModifiedWritable, ctx.key),
@@ -54,7 +54,7 @@ for (const ctx of [
54
54
  MenuRegistry.appendMenuItem(MenuId.DiffEditorSelectionToolbar, {
55
55
  command: {
56
56
  id: new RevertHunkOrSelection().desc.id,
57
- title: localize(120, "Revert Selection"),
57
+ title: localize(125, "Revert Selection"),
58
58
  icon: ctx.icon,
59
59
  },
60
60
  when: ContextKeyExpr.and(EditorContextKeys.diffEditorModifiedWritable, ctx.key),
@@ -69,7 +69,7 @@ registerAction2(ShowAllUnchangedRegions);
69
69
  MenuRegistry.appendMenuItem(MenuId.EditorTitle, {
70
70
  command: {
71
71
  id: AccessibleDiffViewerNext.id,
72
- title: localize(121, "Open Accessible Diff Viewer"),
72
+ title: localize(126, "Open Accessible Diff Viewer"),
73
73
  precondition: ContextKeyExpr.has('isInDiffEditor'),
74
74
  },
75
75
  order: 10,
@@ -346,12 +346,14 @@ let DiffEditorWidget = class DiffEditorWidget extends DelegatingEditor {
346
346
  if (!model || !model.isDiffUpToDate.get()) {
347
347
  return;
348
348
  }
349
+ this._editors.modified.pushUndoStop();
349
350
  this._editors.modified.executeEdits('diffEditor', [
350
351
  {
351
352
  range: diff.modified.toExclusiveRange(),
352
353
  text: model.model.original.getValueInRange(diff.original.toExclusiveRange())
353
354
  }
354
355
  ]);
356
+ this._editors.modified.pushUndoStop();
355
357
  }
356
358
  revertRangeMappings(diffs) {
357
359
  const model = this._diffModel.get();
@@ -362,7 +364,9 @@ let DiffEditorWidget = class DiffEditorWidget extends DelegatingEditor {
362
364
  range: c.modifiedRange,
363
365
  text: model.model.original.getValueInRange(c.originalRange)
364
366
  }));
367
+ this._editors.modified.pushUndoStop();
365
368
  this._editors.modified.executeEdits('diffEditor', changes);
369
+ this._editors.modified.pushUndoStop();
366
370
  }
367
371
  revertFocusedRangeMappings() {
368
372
  const model = this._diffModel.get();
@@ -383,10 +387,12 @@ let DiffEditorWidget = class DiffEditorWidget extends DelegatingEditor {
383
387
  const diffsToRevert = diffs.filter(d => {
384
388
  return d.lineRangeMapping.modified.intersect(selectedRange);
385
389
  });
390
+ modifiedEditor.pushUndoStop();
386
391
  modifiedEditor.executeEdits('diffEditor', diffsToRevert.map(d => ({
387
392
  range: d.lineRangeMapping.modified.toExclusiveRange(),
388
393
  text: model.model.original.getValueInRange(d.lineRangeMapping.original.toExclusiveRange())
389
394
  })));
395
+ modifiedEditor.pushUndoStop();
390
396
  }
391
397
  _goTo(diff) {
392
398
  this._editors.modified.setPosition(new Position(diff.lineRangeMapping.modified.startLineNumber, 1));