monaco-editor-core 0.56.0-dev-20260121 → 0.56.0-dev-20260123

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 (230) 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 +6 -2
  18. package/esm/vs/base/browser/markdownRenderer.js +0 -1
  19. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  20. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  21. package/esm/vs/base/browser/ui/tree/abstractTree.js +15 -1
  22. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  23. package/esm/vs/base/common/actions.js +1 -1
  24. package/esm/vs/base/common/codiconsLibrary.js +2 -0
  25. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  26. package/esm/vs/base/common/errorMessage.js +6 -6
  27. package/esm/vs/base/common/keybindingLabels.js +20 -20
  28. package/esm/vs/base/common/network.js +0 -2
  29. package/esm/vs/base/common/network.js.map +1 -1
  30. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +10 -4
  31. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
  32. package/esm/vs/base/common/policy.js +5 -5
  33. package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +1 -1
  34. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js +4 -4
  35. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +1 -1
  36. package/esm/vs/editor/browser/coreCommands.js +3 -3
  37. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  38. package/esm/vs/editor/browser/editorExtensions.js +9 -9
  39. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
  40. package/esm/vs/editor/browser/observableCodeEditor.js +41 -0
  41. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  42. package/esm/vs/editor/browser/services/inlineCompletionsService.js +4 -4
  43. package/esm/vs/editor/browser/services/renameSymbolTrackerService.js +15 -0
  44. package/esm/vs/editor/browser/services/renameSymbolTrackerService.js.map +1 -0
  45. package/esm/vs/editor/browser/view.js +3 -0
  46. package/esm/vs/editor/browser/view.js.map +1 -1
  47. package/esm/vs/editor/browser/viewParts/viewLines/viewLine.js +14 -0
  48. package/esm/vs/editor/browser/viewParts/viewLines/viewLine.js.map +1 -1
  49. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +7 -0
  50. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
  51. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +8 -2
  52. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  53. package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
  54. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +14 -14
  55. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js.map +1 -1
  56. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
  57. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +7 -7
  58. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
  59. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
  60. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  61. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  62. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  63. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  64. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
  65. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +2 -41
  66. package/esm/vs/editor/common/config/editorConfigurationSchema.js +55 -55
  67. package/esm/vs/editor/common/config/editorOptions.js +410 -410
  68. package/esm/vs/editor/common/core/editorColorRegistry.js +70 -70
  69. package/esm/vs/editor/common/editorContextKeys.js +48 -48
  70. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  71. package/esm/vs/editor/common/languages.js +56 -56
  72. package/esm/vs/editor/common/model/editStack.js +1 -1
  73. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  74. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  75. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  76. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  77. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  78. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  79. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  80. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  81. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +44 -34
  82. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js.map +1 -1
  83. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +5 -4
  84. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js.map +1 -1
  85. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  86. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  87. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  88. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  89. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  90. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  91. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  92. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  93. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  94. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  95. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  96. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  97. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  98. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  99. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  100. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  101. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  102. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  103. package/esm/vs/editor/contrib/find/browser/findWidget.css +5 -6
  104. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  105. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +2 -1
  106. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js +54 -45
  107. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.js.map +1 -1
  108. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  109. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  110. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  111. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  112. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  113. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  114. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  115. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  116. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  117. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  118. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  119. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  120. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  121. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  122. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  123. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  124. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  125. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  126. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +7 -7
  127. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  128. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  129. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  130. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  131. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
  132. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
  133. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  134. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  135. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +4 -4
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +107 -18
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +2 -8
  144. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  145. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  146. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  147. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  148. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  149. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  150. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  151. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  152. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  153. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  154. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  155. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  156. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +10 -10
  157. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  158. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  159. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  160. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  161. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  162. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  163. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  164. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  165. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
  166. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +11 -11
  167. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  168. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  169. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  170. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  171. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  172. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  173. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  174. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  175. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  176. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  177. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  178. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  179. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +3 -3
  180. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +2 -1
  181. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -1
  182. package/esm/vs/editor/standalone/browser/standaloneServices.js +2 -0
  183. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  184. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  185. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  186. package/esm/vs/platform/actionWidget/browser/actionList.js +34 -11
  187. package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
  188. package/esm/vs/platform/actionWidget/browser/actionWidget.css +10 -0
  189. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  190. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +3 -3
  191. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  192. package/esm/vs/platform/actions/common/actions.js +2 -0
  193. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  194. package/esm/vs/platform/actions/common/menuService.js +2 -2
  195. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  196. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  197. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  198. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  199. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  200. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  201. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  202. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  203. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
  204. package/esm/vs/platform/list/browser/listService.js +27 -27
  205. package/esm/vs/platform/markers/common/markerService.js +2 -2
  206. package/esm/vs/platform/markers/common/markers.js +6 -6
  207. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  208. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  209. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  210. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  211. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  212. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  213. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  214. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  215. package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
  216. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  217. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -18
  218. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  219. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  220. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  221. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  222. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  223. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  224. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  225. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  226. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  227. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  228. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  229. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  230. package/package.json +2 -2
@@ -17,7 +17,7 @@ export class ToggleCollapseUnchangedRegions extends Action2 {
17
17
  constructor() {
18
18
  super({
19
19
  id: 'diffEditor.toggleCollapseUnchangedRegions',
20
- title: localize2(85, 'Toggle Collapse Unchanged Regions'),
20
+ title: localize2(87, 'Toggle Collapse Unchanged Regions'),
21
21
  icon: Codicon.map,
22
22
  toggled: ContextKeyExpr.has('config.diffEditor.hideUnchangedRegions.enabled'),
23
23
  precondition: ContextKeyExpr.has('isInDiffEditor'),
@@ -39,7 +39,7 @@ export class ToggleShowMovedCodeBlocks extends Action2 {
39
39
  constructor() {
40
40
  super({
41
41
  id: 'diffEditor.toggleShowMovedCodeBlocks',
42
- title: localize2(86, 'Toggle Show Moved Code Blocks'),
42
+ title: localize2(88, 'Toggle Show Moved Code Blocks'),
43
43
  precondition: ContextKeyExpr.has('isInDiffEditor'),
44
44
  });
45
45
  }
@@ -53,7 +53,7 @@ export class ToggleUseInlineViewWhenSpaceIsLimited extends Action2 {
53
53
  constructor() {
54
54
  super({
55
55
  id: 'diffEditor.toggleUseInlineViewWhenSpaceIsLimited',
56
- title: localize2(87, 'Toggle Use Inline View When Space Is Limited'),
56
+ title: localize2(89, 'Toggle Use Inline View When Space Is Limited'),
57
57
  precondition: ContextKeyExpr.has('isInDiffEditor'),
58
58
  });
59
59
  }
@@ -63,12 +63,12 @@ export class ToggleUseInlineViewWhenSpaceIsLimited extends Action2 {
63
63
  configurationService.updateValue('diffEditor.useInlineViewWhenSpaceIsLimited', newValue);
64
64
  }
65
65
  }
66
- const diffEditorCategory = localize2(88, "Diff Editor");
66
+ const diffEditorCategory = localize2(90, "Diff Editor");
67
67
  export class SwitchSide extends EditorAction2 {
68
68
  constructor() {
69
69
  super({
70
70
  id: 'diffEditor.switchSide',
71
- title: localize2(89, 'Switch Side'),
71
+ title: localize2(91, 'Switch Side'),
72
72
  icon: Codicon.arrowSwap,
73
73
  precondition: ContextKeyExpr.has('isInDiffEditor'),
74
74
  f1: true,
@@ -92,7 +92,7 @@ export class ExitCompareMove extends EditorAction2 {
92
92
  constructor() {
93
93
  super({
94
94
  id: 'diffEditor.exitCompareMove',
95
- title: localize2(90, 'Exit Compare Move'),
95
+ title: localize2(92, 'Exit Compare Move'),
96
96
  icon: Codicon.close,
97
97
  precondition: EditorContextKeys.comparingMovedCode,
98
98
  f1: false,
@@ -114,7 +114,7 @@ export class CollapseAllUnchangedRegions extends EditorAction2 {
114
114
  constructor() {
115
115
  super({
116
116
  id: 'diffEditor.collapseAllUnchangedRegions',
117
- title: localize2(91, 'Collapse All Unchanged Regions'),
117
+ title: localize2(93, 'Collapse All Unchanged Regions'),
118
118
  icon: Codicon.fold,
119
119
  precondition: ContextKeyExpr.has('isInDiffEditor'),
120
120
  f1: true,
@@ -132,7 +132,7 @@ export class ShowAllUnchangedRegions extends EditorAction2 {
132
132
  constructor() {
133
133
  super({
134
134
  id: 'diffEditor.showAllUnchangedRegions',
135
- title: localize2(92, 'Show All Unchanged Regions'),
135
+ title: localize2(94, 'Show All Unchanged Regions'),
136
136
  icon: Codicon.unfold,
137
137
  precondition: ContextKeyExpr.has('isInDiffEditor'),
138
138
  f1: true,
@@ -150,7 +150,7 @@ export class RevertHunkOrSelection extends Action2 {
150
150
  constructor() {
151
151
  super({
152
152
  id: 'diffEditor.revert',
153
- title: localize2(93, 'Revert'),
153
+ title: localize2(95, 'Revert'),
154
154
  f1: true,
155
155
  category: diffEditorCategory,
156
156
  precondition: ContextKeyExpr.has('isInDiffEditor'),
@@ -174,13 +174,13 @@ export class RevertHunkOrSelection extends Action2 {
174
174
  return undefined;
175
175
  }
176
176
  }
177
- const accessibleDiffViewerCategory = localize2(94, "Accessible Diff Viewer");
177
+ const accessibleDiffViewerCategory = localize2(96, "Accessible Diff Viewer");
178
178
  export class AccessibleDiffViewerNext extends Action2 {
179
179
  static { this.id = 'editor.action.accessibleDiffViewer.next'; }
180
180
  constructor() {
181
181
  super({
182
182
  id: AccessibleDiffViewerNext.id,
183
- title: localize2(95, 'Go to Next Difference'),
183
+ title: localize2(97, 'Go to Next Difference'),
184
184
  category: accessibleDiffViewerCategory,
185
185
  precondition: ContextKeyExpr.has('isInDiffEditor'),
186
186
  keybinding: {
@@ -200,7 +200,7 @@ export class AccessibleDiffViewerPrev extends Action2 {
200
200
  constructor() {
201
201
  super({
202
202
  id: AccessibleDiffViewerPrev.id,
203
- title: localize2(96, 'Go to Previous Difference'),
203
+ title: localize2(98, 'Go to Previous Difference'),
204
204
  category: accessibleDiffViewerCategory,
205
205
  precondition: ContextKeyExpr.has('isInDiffEditor'),
206
206
  keybinding: {
@@ -38,9 +38,9 @@ import { IInstantiationService } from '../../../../../platform/instantiation/com
38
38
  import { registerIcon } from '../../../../../platform/theme/common/iconRegistry.js';
39
39
  import './accessibleDiffViewer.css';
40
40
  import { toAction } from '../../../../../base/common/actions.js';
41
- const accessibleDiffViewerInsertIcon = registerIcon('diff-review-insert', Codicon.add, localize(97, 'Icon for \'Insert\' in accessible diff viewer.'));
42
- const accessibleDiffViewerRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, localize(98, 'Icon for \'Remove\' in accessible diff viewer.'));
43
- const accessibleDiffViewerCloseIcon = registerIcon('diff-review-close', Codicon.close, localize(99, 'Icon for \'Close\' in accessible diff viewer.'));
41
+ const accessibleDiffViewerInsertIcon = registerIcon('diff-review-insert', Codicon.add, localize(99, 'Icon for \'Insert\' in accessible diff viewer.'));
42
+ const accessibleDiffViewerRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, localize(100, 'Icon for \'Remove\' in accessible diff viewer.'));
43
+ const accessibleDiffViewerCloseIcon = registerIcon('diff-review-close', Codicon.close, localize(101, 'Icon for \'Close\' in accessible diff viewer.'));
44
44
  let AccessibleDiffViewer = class AccessibleDiffViewer extends Disposable {
45
45
  static { this._ttPolicy = createTrustedTypesPolicy('diffReview', { createHTML: value => value }); }
46
46
  constructor(_parentNode, _visible, _setVisible, _canClose, _width, _height, _diffs, _models, _instantiationService) {
@@ -298,7 +298,7 @@ let View = class View extends Disposable {
298
298
  if (this._model.canClose.read(reader)) {
299
299
  this._actionBar.push(toAction({
300
300
  id: 'diffreview.close',
301
- label: localize(100, "Close"),
301
+ label: localize(102, "Close"),
302
302
  class: 'close-diff-review ' + ThemeIcon.asClassName(accessibleDiffViewerCloseIcon),
303
303
  enabled: true,
304
304
  run: async () => _model.close()
@@ -357,7 +357,7 @@ let View = class View extends Disposable {
357
357
  const container = document.createElement('div');
358
358
  container.className = 'diff-review-table';
359
359
  container.setAttribute('role', 'list');
360
- container.setAttribute('aria-label', localize(101, 'Accessible Diff Viewer. Use arrow up and down to navigate.'));
360
+ container.setAttribute('aria-label', localize(103, 'Accessible Diff Viewer. Use arrow up and down to navigate.'));
361
361
  applyFontInfo(container, modifiedOptions.get(59 /* EditorOption.fontInfo */));
362
362
  reset(this._content, container);
363
363
  const originalModel = this._models.getOriginalModel();
@@ -381,12 +381,12 @@ let View = class View extends Disposable {
381
381
  const r = group.range;
382
382
  const diffIndex = this._model.currentGroupIndex.get();
383
383
  const diffsLength = this._model.groups.get().length;
384
- const getAriaLines = (lines) => lines === 0 ? localize(102, "no lines changed")
385
- : lines === 1 ? localize(103, "1 line changed")
386
- : localize(104, "{0} lines changed", lines);
384
+ const getAriaLines = (lines) => lines === 0 ? localize(104, "no lines changed")
385
+ : lines === 1 ? localize(105, "1 line changed")
386
+ : localize(106, "{0} lines changed", lines);
387
387
  const originalChangedLinesCntAria = getAriaLines(r.original.length);
388
388
  const modifiedChangedLinesCntAria = getAriaLines(r.modified.length);
389
- header.setAttribute('aria-label', localize(105, "Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}", (diffIndex + 1), diffsLength, r.original.startLineNumber, originalChangedLinesCntAria, r.modified.startLineNumber, modifiedChangedLinesCntAria));
389
+ header.setAttribute('aria-label', localize(107, "Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}", (diffIndex + 1), diffsLength, r.original.startLineNumber, originalChangedLinesCntAria, r.modified.startLineNumber, modifiedChangedLinesCntAria));
390
390
 
391
391
 
392
392
 
@@ -506,23 +506,23 @@ let View = class View extends Disposable {
506
506
  lineContent = originalModel.getLineContent(item.originalLineNumber);
507
507
  }
508
508
  if (lineContent.length === 0) {
509
- lineContent = localize(106, "blank");
509
+ lineContent = localize(108, "blank");
510
510
  }
511
511
  let ariaLabel = '';
512
512
  switch (item.type) {
513
513
  case LineType.Unchanged:
514
514
  if (item.originalLineNumber === item.modifiedLineNumber) {
515
- ariaLabel = localize(107, "{0} unchanged line {1}", lineContent, item.originalLineNumber);
515
+ ariaLabel = localize(109, "{0} unchanged line {1}", lineContent, item.originalLineNumber);
516
516
  }
517
517
  else {
518
- ariaLabel = localize(108, "{0} original line {1} modified line {2}", lineContent, item.originalLineNumber, item.modifiedLineNumber);
518
+ ariaLabel = localize(110, "{0} original line {1} modified line {2}", lineContent, item.originalLineNumber, item.modifiedLineNumber);
519
519
  }
520
520
  break;
521
521
  case LineType.Added:
522
- ariaLabel = localize(109, "+ {0} modified line {1}", lineContent, item.modifiedLineNumber);
522
+ ariaLabel = localize(111, "+ {0} modified line {1}", lineContent, item.modifiedLineNumber);
523
523
  break;
524
524
  case LineType.Deleted:
525
- ariaLabel = localize(110, "- {0} original line {1}", lineContent, item.originalLineNumber);
525
+ ariaLabel = localize(112, "- {0} original line {1}", lineContent, item.originalLineNumber);
526
526
  break;
527
527
  }
528
528
  row.setAttribute('aria-label', ariaLabel);
@@ -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);\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);\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);\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);\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(111, ' 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
  }
@@ -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(112, "Copy deleted lines")
61
- : localize(113, "Copy deleted line"))
60
+ ? localize(114, "Copy deleted lines")
61
+ : localize(115, "Copy deleted line"))
62
62
  : (_diff.original.length > 1
63
- ? localize(114, "Copy changed lines")
64
- : localize(115, "Copy changed line")), undefined, true, async () => {
63
+ ? localize(116, "Copy changed lines")
64
+ : localize(117, "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(116, "Copy deleted line ({0})", _diff.original.startLineNumber + currentLineNumberOffset)
71
- : localize(117, "Copy changed line ({0})", _diff.original.startLineNumber + currentLineNumberOffset), undefined, true, async () => {
70
+ ? localize(118, "Copy deleted line ({0})", _diff.original.startLineNumber + currentLineNumberOffset)
71
+ : localize(119, "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(118, "Revert this change"), undefined, true, async () => {
83
+ actions.push(new Action('diff.inline.revertChange', localize(120, "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(119, "Use Inline View When Space Is Limited"),
19
+ title: localize(121, "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(120, "Show Moved Code Blocks"),
30
+ title: localize(122, "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(121, "Revert Block"),
47
+ title: localize(123, "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(122, "Revert Selection"),
57
+ title: localize(124, "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(123, "Open Accessible Diff Viewer"),
72
+ title: localize(125, "Open Accessible Diff Viewer"),
73
73
  precondition: ContextKeyExpr.has('isInDiffEditor'),
74
74
  },
75
75
  order: 10,
@@ -146,7 +146,7 @@ let HideUnchangedRegionsFeature = class HideUnchangedRegionsFeature extends Disp
146
146
  const unchangedLinesDecorationShow = {
147
147
  description: 'Fold Unchanged',
148
148
  glyphMarginHoverMessage: new MarkdownString(undefined, { isTrusted: true, supportThemeIcons: true })
149
- .appendMarkdown(localize(124, 'Fold Unchanged Region')),
149
+ .appendMarkdown(localize(126, 'Fold Unchanged Region')),
150
150
  glyphMarginClassName: 'fold-unchanged ' + ThemeIcon.asClassName(Codicon.fold),
151
151
  zIndex: 10001,
152
152
  };
@@ -253,7 +253,7 @@ class CompactCollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {
253
253
  /** @description update labels */
254
254
  if (!this._hide) {
255
255
  const lineCount = this._unchangedRegion.getHiddenModifiedRange(reader).length;
256
- const linesHiddenText = localize(125, '{0} hidden lines', lineCount);
256
+ const linesHiddenText = localize(127, '{0} hidden lines', lineCount);
257
257
  this._nodes.text.innerText = linesHiddenText;
258
258
  }
259
259
  }));
@@ -271,12 +271,12 @@ class CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {
271
271
  this._revealModifiedHiddenLine = _revealModifiedHiddenLine;
272
272
  this._options = _options;
273
273
  this._nodes = h('div.diff-hidden-lines', [
274
- h('div.top@top', { title: localize(126, 'Click or drag to show more above') }),
274
+ h('div.top@top', { title: localize(128, 'Click or drag to show more above') }),
275
275
  h('div.center@content', { style: { display: 'flex' } }, [
276
- h('div@first', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', flexShrink: '0' } }, [$('a', { title: localize(127, 'Show Unchanged Region'), role: 'button', onclick: () => { this._unchangedRegion.showAll(undefined); } }, ...renderLabelWithIcons('$(unfold)'))]),
276
+ h('div@first', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', flexShrink: '0' } }, [$('a', { title: localize(129, 'Show Unchanged Region'), role: 'button', onclick: () => { this._unchangedRegion.showAll(undefined); } }, ...renderLabelWithIcons('$(unfold)'))]),
277
277
  h('div@others', { style: { display: 'flex', justifyContent: 'center', alignItems: 'center' } }),
278
278
  ]),
279
- h('div.bottom@bottom', { title: localize(128, 'Click or drag to show more below'), role: 'button' }),
279
+ h('div.bottom@bottom', { title: localize(130, 'Click or drag to show more below'), role: 'button' }),
280
280
  ]);
281
281
  root.root.appendChild(this._nodes.root);
282
282
  if (!this._hide) {
@@ -388,8 +388,8 @@ class CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {
388
388
  const children = [];
389
389
  if (!this._hide) {
390
390
  const lineCount = _unchangedRegion.getHiddenModifiedRange(reader).length;
391
- const linesHiddenText = localize(129, '{0} hidden lines', lineCount);
392
- const span = $('span', { title: localize(130, 'Double click to unfold') }, linesHiddenText);
391
+ const linesHiddenText = localize(131, '{0} hidden lines', lineCount);
392
+ const span = $('span', { title: localize(132, 'Double click to unfold') }, linesHiddenText);
393
393
  span.addEventListener('dblclick', e => {
394
394
  if (e.button !== 0) {
395
395
  return;
@@ -244,10 +244,10 @@ class MovedBlockOverlayWidget extends ViewZoneOverlayWidget {
244
244
  }));
245
245
  let text;
246
246
  if (_move.changes.length > 0) {
247
- text = this._kind === 'original' ? localize(131, 'Code moved with changes to line {0}-{1}', this._move.lineRangeMapping.modified.startLineNumber, this._move.lineRangeMapping.modified.endLineNumberExclusive - 1) : localize(132, 'Code moved with changes from line {0}-{1}', this._move.lineRangeMapping.original.startLineNumber, this._move.lineRangeMapping.original.endLineNumberExclusive - 1);
247
+ text = this._kind === 'original' ? localize(133, 'Code moved with changes to line {0}-{1}', this._move.lineRangeMapping.modified.startLineNumber, this._move.lineRangeMapping.modified.endLineNumberExclusive - 1) : localize(134, 'Code moved with changes from line {0}-{1}', this._move.lineRangeMapping.original.startLineNumber, this._move.lineRangeMapping.original.endLineNumberExclusive - 1);
248
248
  }
249
249
  else {
250
- text = this._kind === 'original' ? localize(133, 'Code moved to line {0}-{1}', this._move.lineRangeMapping.modified.startLineNumber, this._move.lineRangeMapping.modified.endLineNumberExclusive - 1) : localize(134, 'Code moved from line {0}-{1}', this._move.lineRangeMapping.original.startLineNumber, this._move.lineRangeMapping.original.endLineNumberExclusive - 1);
250
+ text = this._kind === 'original' ? localize(135, 'Code moved to line {0}-{1}', this._move.lineRangeMapping.modified.startLineNumber, this._move.lineRangeMapping.modified.endLineNumberExclusive - 1) : localize(136, 'Code moved from line {0}-{1}', this._move.lineRangeMapping.original.startLineNumber, this._move.lineRangeMapping.original.endLineNumberExclusive - 1);
251
251
  }
252
252
  const actionBar = this._register(new ActionBar(this._nodes.actionBar, {
253
253
  highlightToggledItems: true,
@@ -95,8 +95,8 @@ export class RevertButton extends Disposable {
95
95
  this._id = `revertButton${RevertButton.counter++}`;
96
96
  this._domNode = h('div.revertButton', {
97
97
  title: this._revertSelection
98
- ? localize(135, 'Revert Selected Changes')
99
- : localize(136, 'Revert Change')
98
+ ? localize(137, 'Revert Selected Changes')
99
+ : localize(138, 'Revert Change')
100
100
  }, [renderIcon(Codicon.arrowRight)]).root;
101
101
  this._register(addDisposableListener(this._domNode, EventType.MOUSE_DOWN, e => {
102
102
  // don't prevent context menu from showing up