monaco-editor-core 0.55.0-dev-20251021 → 0.55.0-dev-20251023

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 (226) 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 +23 -5
  18. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  19. package/esm/vs/base/browser/ui/iconLabel/iconlabel.css +2 -3
  20. package/esm/vs/base/browser/ui/list/listPaging.js +5 -1
  21. package/esm/vs/base/browser/ui/list/listPaging.js.map +1 -1
  22. package/esm/vs/base/browser/ui/list/listView.js +4 -3
  23. package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
  24. package/esm/vs/base/common/arrays.js +10 -0
  25. package/esm/vs/base/common/arrays.js.map +1 -1
  26. package/esm/vs/base/common/codiconsLibrary.js +1 -0
  27. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  28. package/esm/vs/base/common/paging.js.map +1 -1
  29. package/esm/vs/base/common/platform.js +1 -0
  30. package/esm/vs/base/common/platform.js.map +1 -1
  31. package/esm/vs/base/common/policy.js +40 -1
  32. package/esm/vs/base/common/policy.js.map +1 -1
  33. package/esm/vs/base/common/validation.js +157 -0
  34. package/esm/vs/base/common/validation.js.map +1 -0
  35. package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +1 -1
  36. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js +4 -4
  37. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +1 -1
  38. package/esm/vs/editor/browser/coreCommands.js +3 -3
  39. package/esm/vs/editor/browser/editorExtensions.js +9 -9
  40. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
  41. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -1
  42. package/esm/vs/editor/browser/services/hoverService/updatableHoverWidget.js +1 -1
  43. package/esm/vs/editor/browser/services/inlineCompletionsService.js +4 -4
  44. package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
  45. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +2 -2
  46. package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
  47. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +14 -14
  48. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js.map +1 -1
  49. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
  50. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/copySelection.js +1 -1
  51. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +7 -7
  52. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
  53. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
  54. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  55. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  56. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  57. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  58. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
  59. package/esm/vs/editor/common/config/editorConfigurationSchema.js +54 -54
  60. package/esm/vs/editor/common/config/editorOptions.js +406 -406
  61. package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
  62. package/esm/vs/editor/common/editorContextKeys.js +46 -46
  63. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  64. package/esm/vs/editor/common/languages.js +66 -56
  65. package/esm/vs/editor/common/languages.js.map +1 -1
  66. package/esm/vs/editor/common/model/editStack.js +1 -1
  67. package/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js.map +1 -1
  68. package/esm/vs/editor/common/model/tokens/treeSitter/treeSitterSyntaxTokenBackend.js +1 -1
  69. package/esm/vs/editor/common/model/tokens/treeSitter/treeSitterSyntaxTokenBackend.js.map +1 -1
  70. package/esm/vs/editor/common/services/treeSitter/treeSitterLibraryService.js.map +1 -1
  71. package/esm/vs/editor/common/standaloneStrings.js +10 -10
  72. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  73. package/esm/vs/editor/common/viewModel/viewModelLines.js.map +1 -1
  74. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  75. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  76. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  77. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  78. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  79. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  80. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  81. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  82. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  83. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  84. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  85. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  86. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  87. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  88. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  89. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  90. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  91. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  92. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  93. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  94. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  95. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  96. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  97. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  98. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  99. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  100. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  101. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  102. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  103. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
  104. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  105. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  106. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  107. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  108. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  109. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  110. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  111. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  112. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  113. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  114. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  115. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  116. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  117. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  118. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  119. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  120. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  121. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  122. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  123. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +63 -52
  124. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  125. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  126. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  127. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +1 -1
  128. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  129. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -4
  130. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  131. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +11 -12
  132. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  133. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +4 -4
  134. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  135. package/esm/vs/editor/contrib/inlineCompletions/browser/model/suggestWidgetAdapter.js.map +1 -1
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +3 -0
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +5 -5
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  144. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  145. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  146. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  147. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  148. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  149. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  150. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  151. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  152. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  153. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  154. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  155. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +35 -28
  156. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  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 +8 -8
  166. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  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 +1 -1
  180. package/esm/vs/editor/standalone/browser/standaloneTreeSitterLibraryService.js +2 -12
  181. package/esm/vs/editor/standalone/browser/standaloneTreeSitterLibraryService.js.map +1 -1
  182. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  183. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  184. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  185. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  186. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  187. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  188. package/esm/vs/platform/actions/common/actions.js +1 -0
  189. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  190. package/esm/vs/platform/actions/common/menuService.js +2 -2
  191. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  192. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  193. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  194. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  195. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  196. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  197. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  198. package/esm/vs/platform/list/browser/listService.js +27 -27
  199. package/esm/vs/platform/markers/common/markerService.js +2 -2
  200. package/esm/vs/platform/markers/common/markers.js +6 -6
  201. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +19 -9
  202. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
  203. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  204. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  205. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  206. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  207. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  208. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  209. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +2 -2
  210. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js.map +1 -1
  211. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  212. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  213. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  214. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  215. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  216. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  217. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  218. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  219. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  220. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  221. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  222. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  223. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  224. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  225. package/package.json +2 -2
  226. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/browser/services/inlineCompletionsService.ts"],"names":[],"mappings":"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","file":"inlineCompletionsService.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 { TimeoutTimer } from '../../../base/common/async.js';\nimport { BugIndicatingError } from '../../../base/common/errors.js';\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { localize, localize2 } from '../../../nls.js';\nimport { Action2 } from '../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\nimport { InstantiationType, registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nimport { createDecorator, ServicesAccessor } from '../../../platform/instantiation/common/instantiation.js';\nimport { IQuickInputService, IQuickPickItem } from '../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../platform/storage/common/storage.js';\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\n\nexport const IInlineCompletionsService = createDecorator<IInlineCompletionsService>('IInlineCompletionsService');\n\nexport interface IInlineCompletionsService {\n\treadonly _serviceBrand: undefined;\n\n\treadonly onDidChangeIsSnoozing: Event<boolean>;\n\n\t/**\n\t * Snooze inline completions for the specified duration. If already snoozed, overwrite the existing snooze time.\n\t */\n\tsetSnoozeDuration(durationMs: number): void;\n\n\t/**\n\t * Check if inline completions are currently snoozed.\n\t*/\n\tisSnoozing(): boolean;\n\n\t/**\n\t * Cancel the current snooze.\n\t*/\n\tcancelSnooze(): void;\n\n\t/**\n\t * Report an inline completion.\n\t */\n\treportNewCompletion(requestUuid: string): void;\n}\n\nconst InlineCompletionsSnoozing = new RawContextKey<boolean>('inlineCompletions.snoozed', false, localize('inlineCompletions.snoozed', \"Whether inline completions are currently snoozed\"));\n\nexport class InlineCompletionsService extends Disposable implements IInlineCompletionsService {\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate _onDidChangeIsSnoozing = this._register(new Emitter<boolean>());\n\treadonly onDidChangeIsSnoozing: Event<boolean> = this._onDidChangeIsSnoozing.event; // 5 minutes\n\n\tprivate _snoozeTimeEnd: undefined | number = undefined;\n\tget snoozeTimeLeft(): number {\n\t\tif (this._snoozeTimeEnd === undefined) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn Math.max(0, this._snoozeTimeEnd - Date.now());\n\t}\n\n\tprivate _timer: TimeoutTimer;\n\n\tconstructor(\n\t\t@IContextKeyService private _contextKeyService: IContextKeyService,\n\t\t@ITelemetryService private _telemetryService: ITelemetryService,\n\t) {\n\t\tsuper();\n\n\t\tthis._timer = this._register(new TimeoutTimer());\n\n\t\tconst inlineCompletionsSnoozing = InlineCompletionsSnoozing.bindTo(this._contextKeyService);\n\t\tthis._register(this.onDidChangeIsSnoozing(() => inlineCompletionsSnoozing.set(this.isSnoozing())));\n\t}\n\n\tsetSnoozeDuration(durationMs: number): void {\n\t\tif (durationMs < 0) {\n\t\t\tthrow new BugIndicatingError(`Invalid snooze duration: ${durationMs}. Duration must be non-negative.`);\n\t\t}\n\t\tif (durationMs === 0) {\n\t\t\tthis.cancelSnooze();\n\t\t\treturn;\n\t\t}\n\n\t\tconst wasSnoozing = this.isSnoozing();\n\t\tconst timeLeft = this.snoozeTimeLeft;\n\n\t\tthis._snoozeTimeEnd = Date.now() + durationMs;\n\n\t\tif (!wasSnoozing) {\n\t\t\tthis._onDidChangeIsSnoozing.fire(true);\n\t\t}\n\n\t\tthis._timer.cancelAndSet(\n\t\t\t() => {\n\t\t\t\tif (!this.isSnoozing()) {\n\t\t\t\t\tthis._onDidChangeIsSnoozing.fire(false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new BugIndicatingError('Snooze timer did not fire as expected');\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis.snoozeTimeLeft + 1,\n\t\t);\n\n\t\tthis._reportSnooze(durationMs - timeLeft, durationMs);\n\t}\n\n\tisSnoozing(): boolean {\n\t\treturn this.snoozeTimeLeft > 0;\n\t}\n\n\tcancelSnooze(): void {\n\t\tif (this.isSnoozing()) {\n\t\t\tthis._reportSnooze(-this.snoozeTimeLeft, 0);\n\t\t\tthis._snoozeTimeEnd = undefined;\n\t\t\tthis._timer.cancel();\n\t\t\tthis._onDidChangeIsSnoozing.fire(false);\n\t\t}\n\t}\n\n\tprivate _lastCompletionId: string | undefined;\n\tprivate _recentCompletionIds: string[] = [];\n\treportNewCompletion(requestUuid: string): void {\n\t\tthis._lastCompletionId = requestUuid;\n\n\t\tthis._recentCompletionIds.unshift(requestUuid);\n\t\tif (this._recentCompletionIds.length > 5) {\n\t\t\tthis._recentCompletionIds.pop();\n\t\t}\n\t}\n\n\tprivate _reportSnooze(deltaMs: number, totalMs: number): void {\n\t\tconst deltaSeconds = Math.round(deltaMs / 1000);\n\t\tconst totalSeconds = Math.round(totalMs / 1000);\n\t\ttype WorkspaceStatsClassification = {\n\t\t\towner: 'benibenj';\n\t\t\tcomment: 'Snooze duration for inline completions';\n\t\t\tdeltaSeconds: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The duration by which the snooze has changed, in seconds.' };\n\t\t\ttotalSeconds: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The total duration for which inline completions are snoozed, in seconds.' };\n\t\t\tlastCompletionId: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The ID of the last completion.' };\n\t\t\trecentCompletionIds: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The IDs of the recent completions.' };\n\t\t};\n\t\ttype WorkspaceStatsEvent = {\n\t\t\tdeltaSeconds: number;\n\t\t\ttotalSeconds: number;\n\t\t\tlastCompletionId: string | undefined;\n\t\t\trecentCompletionIds: string[];\n\t\t};\n\t\tthis._telemetryService.publicLog2<WorkspaceStatsEvent, WorkspaceStatsClassification>('inlineCompletions.snooze', {\n\t\t\tdeltaSeconds,\n\t\t\ttotalSeconds,\n\t\t\tlastCompletionId: this._lastCompletionId,\n\t\t\trecentCompletionIds: this._recentCompletionIds,\n\t\t});\n\t}\n}\n\nregisterSingleton(IInlineCompletionsService, InlineCompletionsService, InstantiationType.Delayed);\n\nconst snoozeInlineSuggestId = 'editor.action.inlineSuggest.snooze';\nconst cancelSnoozeInlineSuggestId = 'editor.action.inlineSuggest.cancelSnooze';\nconst LAST_SNOOZE_DURATION_KEY = 'inlineCompletions.lastSnoozeDuration';\n\nexport class SnoozeInlineCompletion extends Action2 {\n\tpublic static ID = snoozeInlineSuggestId;\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: SnoozeInlineCompletion.ID,\n\t\t\ttitle: localize2('action.inlineSuggest.snooze', \"Snooze Inline Suggestions\"),\n\t\t\tprecondition: ContextKeyExpr.true(),\n\t\t\tf1: true,\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor, ...args: unknown[]): Promise<void> {\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst inlineCompletionsService = accessor.get(IInlineCompletionsService);\n\t\tconst storageService = accessor.get(IStorageService);\n\n\t\tlet durationMs: number | undefined;\n\t\tif (args.length > 0 && typeof args[0] === 'number') {\n\t\t\tdurationMs = args[0] * 60_000;\n\t\t}\n\n\t\tif (!durationMs) {\n\t\t\tdurationMs = await this.getDurationFromUser(quickInputService, storageService);\n\t\t}\n\n\t\tif (durationMs) {\n\t\t\tinlineCompletionsService.setSnoozeDuration(durationMs);\n\t\t}\n\t}\n\n\tprivate async getDurationFromUser(quickInputService: IQuickInputService, storageService: IStorageService): Promise<number | undefined> {\n\t\tconst lastSelectedDuration = storageService.getNumber(LAST_SNOOZE_DURATION_KEY, StorageScope.PROFILE, 300_000);\n\n\t\tconst items: (IQuickPickItem & { value: number })[] = [\n\t\t\t{ label: '1 minute', id: '1', value: 60_000 },\n\t\t\t{ label: '5 minutes', id: '5', value: 300_000 },\n\t\t\t{ label: '10 minutes', id: '10', value: 600_000 },\n\t\t\t{ label: '15 minutes', id: '15', value: 900_000 },\n\t\t\t{ label: '30 minutes', id: '30', value: 1_800_000 },\n\t\t\t{ label: '60 minutes', id: '60', value: 3_600_000 }\n\t\t];\n\n\t\tconst picked = await quickInputService.pick(items, {\n\t\t\tplaceHolder: localize('snooze.placeholder', \"Select snooze duration for Code completions and NES\"),\n\t\t\tactiveItem: items.find(item => item.value === lastSelectedDuration),\n\t\t});\n\n\t\tif (picked) {\n\t\t\tstorageService.store(LAST_SNOOZE_DURATION_KEY, picked.value, StorageScope.PROFILE, StorageTarget.USER);\n\t\t\treturn picked.value;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n\nexport class CancelSnoozeInlineCompletion extends Action2 {\n\tpublic static ID = cancelSnoozeInlineSuggestId;\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: CancelSnoozeInlineCompletion.ID,\n\t\t\ttitle: localize2('action.inlineSuggest.cancelSnooze', \"Cancel Snooze Inline Suggestions\"),\n\t\t\tprecondition: InlineCompletionsSnoozing,\n\t\t\tf1: true,\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor): Promise<void> {\n\t\taccessor.get(IInlineCompletionsService).cancelSnooze();\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/browser/services/inlineCompletionsService.ts"],"names":[],"mappings":"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","file":"inlineCompletionsService.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 { TimeoutTimer } from '../../../base/common/async.js';\nimport { BugIndicatingError } from '../../../base/common/errors.js';\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { localize, localize2 } from '../../../nls.js';\nimport { Action2 } from '../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\nimport { InstantiationType, registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nimport { createDecorator, ServicesAccessor } from '../../../platform/instantiation/common/instantiation.js';\nimport { IQuickInputService, IQuickPickItem } from '../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../platform/storage/common/storage.js';\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\n\nexport const IInlineCompletionsService = createDecorator<IInlineCompletionsService>('IInlineCompletionsService');\n\nexport interface IInlineCompletionsService {\n\treadonly _serviceBrand: undefined;\n\n\treadonly onDidChangeIsSnoozing: Event<boolean>;\n\n\t/**\n\t * Snooze inline completions for the specified duration. If already snoozed, overwrite the existing snooze time.\n\t */\n\tsetSnoozeDuration(durationMs: number): void;\n\n\t/**\n\t * Check if inline completions are currently snoozed.\n\t*/\n\tisSnoozing(): boolean;\n\n\t/**\n\t * Cancel the current snooze.\n\t*/\n\tcancelSnooze(): void;\n\n\t/**\n\t * Report an inline completion.\n\t */\n\treportNewCompletion(requestUuid: string): void;\n}\n\nconst InlineCompletionsSnoozing = new RawContextKey<boolean>('inlineCompletions.snoozed', false, localize('inlineCompletions.snoozed', \"Whether inline completions are currently snoozed\"));\n\nexport class InlineCompletionsService extends Disposable implements IInlineCompletionsService {\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate _onDidChangeIsSnoozing = this._register(new Emitter<boolean>());\n\treadonly onDidChangeIsSnoozing: Event<boolean> = this._onDidChangeIsSnoozing.event; // 5 minutes\n\n\tprivate _snoozeTimeEnd: undefined | number = undefined;\n\tget snoozeTimeLeft(): number {\n\t\tif (this._snoozeTimeEnd === undefined) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn Math.max(0, this._snoozeTimeEnd - Date.now());\n\t}\n\n\tprivate _timer: TimeoutTimer;\n\n\tconstructor(\n\t\t@IContextKeyService private _contextKeyService: IContextKeyService,\n\t\t@ITelemetryService private _telemetryService: ITelemetryService,\n\t) {\n\t\tsuper();\n\n\t\tthis._timer = this._register(new TimeoutTimer());\n\n\t\tconst inlineCompletionsSnoozing = InlineCompletionsSnoozing.bindTo(this._contextKeyService);\n\t\tthis._register(this.onDidChangeIsSnoozing(() => inlineCompletionsSnoozing.set(this.isSnoozing())));\n\t}\n\n\tsetSnoozeDuration(durationMs: number): void {\n\t\tif (durationMs < 0) {\n\t\t\tthrow new BugIndicatingError(`Invalid snooze duration: ${durationMs}. Duration must be non-negative.`);\n\t\t}\n\t\tif (durationMs === 0) {\n\t\t\tthis.cancelSnooze();\n\t\t\treturn;\n\t\t}\n\n\t\tconst wasSnoozing = this.isSnoozing();\n\t\tconst timeLeft = this.snoozeTimeLeft;\n\n\t\tthis._snoozeTimeEnd = Date.now() + durationMs;\n\n\t\tif (!wasSnoozing) {\n\t\t\tthis._onDidChangeIsSnoozing.fire(true);\n\t\t}\n\n\t\tthis._timer.cancelAndSet(\n\t\t\t() => {\n\t\t\t\tif (!this.isSnoozing()) {\n\t\t\t\t\tthis._onDidChangeIsSnoozing.fire(false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new BugIndicatingError('Snooze timer did not fire as expected');\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis.snoozeTimeLeft + 1,\n\t\t);\n\n\t\tthis._reportSnooze(durationMs - timeLeft, durationMs);\n\t}\n\n\tisSnoozing(): boolean {\n\t\treturn this.snoozeTimeLeft > 0;\n\t}\n\n\tcancelSnooze(): void {\n\t\tif (this.isSnoozing()) {\n\t\t\tthis._reportSnooze(-this.snoozeTimeLeft, 0);\n\t\t\tthis._snoozeTimeEnd = undefined;\n\t\t\tthis._timer.cancel();\n\t\t\tthis._onDidChangeIsSnoozing.fire(false);\n\t\t}\n\t}\n\n\tprivate _lastCompletionId: string | undefined;\n\tprivate _recentCompletionIds: string[] = [];\n\treportNewCompletion(requestUuid: string): void {\n\t\tthis._lastCompletionId = requestUuid;\n\n\t\tthis._recentCompletionIds.unshift(requestUuid);\n\t\tif (this._recentCompletionIds.length > 5) {\n\t\t\tthis._recentCompletionIds.pop();\n\t\t}\n\t}\n\n\tprivate _reportSnooze(deltaMs: number, totalMs: number): void {\n\t\tconst deltaSeconds = Math.round(deltaMs / 1000);\n\t\tconst totalSeconds = Math.round(totalMs / 1000);\n\t\ttype WorkspaceStatsClassification = {\n\t\t\towner: 'benibenj';\n\t\t\tcomment: 'Snooze duration for inline completions';\n\t\t\tdeltaSeconds: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The duration by which the snooze has changed, in seconds.' };\n\t\t\ttotalSeconds: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The total duration for which inline completions are snoozed, in seconds.' };\n\t\t\tlastCompletionId: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The ID of the last completion.' };\n\t\t\trecentCompletionIds: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The IDs of the recent completions.' };\n\t\t};\n\t\ttype WorkspaceStatsEvent = {\n\t\t\tdeltaSeconds: number;\n\t\t\ttotalSeconds: number;\n\t\t\tlastCompletionId: string | undefined;\n\t\t\trecentCompletionIds: string[];\n\t\t};\n\t\tthis._telemetryService.publicLog2<WorkspaceStatsEvent, WorkspaceStatsClassification>('inlineCompletions.snooze', {\n\t\t\tdeltaSeconds,\n\t\t\ttotalSeconds,\n\t\t\tlastCompletionId: this._lastCompletionId,\n\t\t\trecentCompletionIds: this._recentCompletionIds,\n\t\t});\n\t}\n}\n\nregisterSingleton(IInlineCompletionsService, InlineCompletionsService, InstantiationType.Delayed);\n\nconst snoozeInlineSuggestId = 'editor.action.inlineSuggest.snooze';\nconst cancelSnoozeInlineSuggestId = 'editor.action.inlineSuggest.cancelSnooze';\nconst LAST_SNOOZE_DURATION_KEY = 'inlineCompletions.lastSnoozeDuration';\n\nexport class SnoozeInlineCompletion extends Action2 {\n\tpublic static ID = snoozeInlineSuggestId;\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: SnoozeInlineCompletion.ID,\n\t\t\ttitle: localize2('action.inlineSuggest.snooze', \"Snooze Inline Suggestions\"),\n\t\t\tprecondition: ContextKeyExpr.true(),\n\t\t\tf1: true,\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor, ...args: unknown[]): Promise<void> {\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst inlineCompletionsService = accessor.get(IInlineCompletionsService);\n\t\tconst storageService = accessor.get(IStorageService);\n\n\t\tlet durationMs: number | undefined;\n\t\tif (args.length > 0 && typeof args[0] === 'number') {\n\t\t\tdurationMs = args[0] * 60_000;\n\t\t}\n\n\t\tif (!durationMs) {\n\t\t\tdurationMs = await this.getDurationFromUser(quickInputService, storageService);\n\t\t}\n\n\t\tif (durationMs) {\n\t\t\tinlineCompletionsService.setSnoozeDuration(durationMs);\n\t\t}\n\t}\n\n\tprivate async getDurationFromUser(quickInputService: IQuickInputService, storageService: IStorageService): Promise<number | undefined> {\n\t\tconst lastSelectedDuration = storageService.getNumber(LAST_SNOOZE_DURATION_KEY, StorageScope.PROFILE, 300_000);\n\n\t\tconst items: (IQuickPickItem & { value: number })[] = [\n\t\t\t{ label: '1 minute', id: '1', value: 60_000 },\n\t\t\t{ label: '5 minutes', id: '5', value: 300_000 },\n\t\t\t{ label: '10 minutes', id: '10', value: 600_000 },\n\t\t\t{ label: '15 minutes', id: '15', value: 900_000 },\n\t\t\t{ label: '30 minutes', id: '30', value: 1_800_000 },\n\t\t\t{ label: '60 minutes', id: '60', value: 3_600_000 }\n\t\t];\n\n\t\tconst picked = await quickInputService.pick(items, {\n\t\t\tplaceHolder: localize('snooze.placeholder', \"Select snooze duration for Inline Suggestions\"),\n\t\t\tactiveItem: items.find(item => item.value === lastSelectedDuration),\n\t\t});\n\n\t\tif (picked) {\n\t\t\tstorageService.store(LAST_SNOOZE_DURATION_KEY, picked.value, StorageScope.PROFILE, StorageTarget.USER);\n\t\t\treturn picked.value;\n\t\t}\n\n\t\treturn undefined;\n\t}\n}\n\nexport class CancelSnoozeInlineCompletion extends Action2 {\n\tpublic static ID = cancelSnoozeInlineSuggestId;\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: CancelSnoozeInlineCompletion.ID,\n\t\t\ttitle: localize2('action.inlineSuggest.cancelSnooze', \"Cancel Snooze Inline Suggestions\"),\n\t\t\tprecondition: InlineCompletionsSnoozing,\n\t\t\tf1: true,\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor): Promise<void> {\n\t\taccessor.get(IInlineCompletionsService).cancelSnooze();\n\t}\n}\n"]}
@@ -1278,7 +1278,7 @@ let CodeEditorWidget = class CodeEditorWidget extends Disposable {
1278
1278
  case 7 /* OutgoingViewModelEventKind.CursorStateChanged */: {
1279
1279
  if (e.reachedMaxCursorCount) {
1280
1280
  const multiCursorLimit = this.getOption(89 /* EditorOption.multiCursorLimit */);
1281
- const message = nls.localize(80, "The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.", multiCursorLimit);
1281
+ const message = nls.localize(85, "The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.", multiCursorLimit);
1282
1282
  this._notificationService.prompt(Severity.Warning, message, [
1283
1283
  {
1284
1284
  label: 'Find and Replace',
@@ -1287,7 +1287,7 @@ let CodeEditorWidget = class CodeEditorWidget extends Disposable {
1287
1287
  }
1288
1288
  },
1289
1289
  {
1290
- label: nls.localize(81, 'Increase Multi Cursor Limit'),
1290
+ label: nls.localize(86, 'Increase Multi Cursor Limit'),
1291
1291
  run: () => {
1292
1292
  this._commandService.executeCommand('workbench.action.openSettings2', {
1293
1293
  query: 'editor.multiCursorLimit'
@@ -17,7 +17,7 @@ export class ToggleCollapseUnchangedRegions extends Action2 {
17
17
  constructor() {
18
18
  super({
19
19
  id: 'diffEditor.toggleCollapseUnchangedRegions',
20
- title: localize2(82, '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(83, '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(84, '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(85, "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(86, '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(87, '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(88, '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(89, '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(90, '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(91, "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(92, '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(93, '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(94, 'Icon for \'Insert\' in accessible diff viewer.'));
42
- const accessibleDiffViewerRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, localize(95, 'Icon for \'Remove\' in accessible diff viewer.'));
43
- const accessibleDiffViewerCloseIcon = registerIcon('diff-review-close', Codicon.close, localize(96, '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(97, "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(98, '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(99, "no lines changed")
385
- : lines === 1 ? localize(100, "1 line changed")
386
- : localize(101, "{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(102, "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(103, "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(104, "{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(105, "{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(106, "+ {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(107, "- {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 as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = modifiedModel.getLineContent(item.modifiedLineNumber);\n\t\t} else {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(originalModel, originalOptions, originalModelOpts.tabSize, item.originalLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = originalModel.getLineContent(item.originalLineNumber);\n\t\t}\n\n\t\tif (lineContent.length === 0) {\n\t\t\tlineContent = localize('blankLine', \"blank\");\n\t\t}\n\n\t\tlet ariaLabel: string = '';\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Unchanged:\n\t\t\t\tif (item.originalLineNumber === item.modifiedLineNumber) {\n\t\t\t\t\tariaLabel = localize({ key: 'unchangedLine', comment: ['The placeholders are contents of the line and should not be translated.'] }, \"{0} unchanged line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel = localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, item.originalLineNumber, item.modifiedLineNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LineType.Added:\n\t\t\t\tariaLabel = localize('insertLine', \"+ {0} modified line {1}\", lineContent, item.modifiedLineNumber);\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\tariaLabel = localize('deleteLine', \"- {0} original line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\tbreak;\n\t\t}\n\t\trow.setAttribute('aria-label', ariaLabel);\n\n\t\treturn row;\n\t}\n\n\tprivate _getLineHtml(model: ITextModel, options: IComputedEditorOptions, tabSize: number, lineNumber: number, languageIdCodec: ILanguageIdCodec): string {\n\t\tconst lineContent = model.getLineContent(lineNumber);\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst verticalScrollbarSize = options.get(EditorOption.scrollbar).verticalScrollbarSize;\n\t\tconst lineTokens = LineTokens.createEmpty(lineContent, languageIdCodec);\n\t\tconst isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\n\t\tconst containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\n\t\tconst r = renderViewLine2(new RenderLineInput(\n\t\t\t(fontInfo.isMonospace && !options.get(EditorOption.disableMonospaceOptimizations)),\n\t\t\tfontInfo.canUseHalfwidthRightwardsArrow,\n\t\t\tlineContent,\n\t\t\tfalse,\n\t\t\tisBasicASCII,\n\t\t\tcontainsRTL,\n\t\t\t0,\n\t\t\tlineTokens,\n\t\t\t[],\n\t\t\ttabSize,\n\t\t\t0,\n\t\t\tfontInfo.spaceWidth,\n\t\t\tfontInfo.middotWidth,\n\t\t\tfontInfo.wsmiddotWidth,\n\t\t\toptions.get(EditorOption.stopRenderingLineAfter),\n\t\t\toptions.get(EditorOption.renderWhitespace),\n\t\t\toptions.get(EditorOption.renderControlCharacters),\n\t\t\toptions.get(EditorOption.fontLigatures) !== EditorFontLigatures.OFF,\n\t\t\tnull,\n\t\t\tnull,\n\t\t\tverticalScrollbarSize\n\t\t));\n\n\t\treturn r.html;\n\t}\n}\n\nexport class AccessibleDiffViewerModelFromEditors implements IAccessibleDiffViewerModel {\n\tconstructor(private readonly editors: DiffEditorEditors) { }\n\n\tgetOriginalModel(): ITextModel {\n\t\treturn this.editors.original.getModel()!;\n\t}\n\n\tgetOriginalOptions(): IComputedEditorOptions {\n\t\treturn this.editors.original.getOptions();\n\t}\n\n\toriginalReveal(range: Range): void {\n\t\tthis.editors.original.revealRange(range);\n\t\tthis.editors.original.setSelection(range);\n\t\tthis.editors.original.focus();\n\t}\n\n\tgetModifiedModel(): ITextModel {\n\t\treturn this.editors.modified.getModel()!;\n\t}\n\n\tgetModifiedOptions(): IComputedEditorOptions {\n\t\treturn this.editors.modified.getOptions();\n\t}\n\n\tmodifiedReveal(range?: Range | undefined): void {\n\t\tif (range) {\n\t\t\tthis.editors.modified.revealRange(range);\n\t\t\tthis.editors.modified.setSelection(range);\n\t\t}\n\t\tthis.editors.modified.focus();\n\t}\n\n\tmodifiedSetSelection(range: Range): void {\n\t\tthis.editors.modified.setSelection(range);\n\t}\n\n\tmodifiedFocus(): void {\n\t\tthis.editors.modified.focus();\n\t}\n\n\tgetModifiedPosition(): Position | undefined {\n\t\treturn this.editors.modified.getPosition() ?? undefined;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.ts"],"names":[],"mappings":"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","file":"accessibleDiffViewer.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { addDisposableListener, addStandardDisposableListener, reset } from '../../../../../base/browser/dom.js';\nimport { createTrustedTypesPolicy } from '../../../../../base/browser/trustedTypes.js';\nimport { ActionBar } from '../../../../../base/browser/ui/actionbar/actionbar.js';\nimport { DomScrollableElement } from '../../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { forEachAdjacent, groupAdjacentBy } from '../../../../../base/common/arrays.js';\nimport { Codicon } from '../../../../../base/common/codicons.js';\nimport { KeyCode, KeyMod } from '../../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../../base/common/lifecycle.js';\nimport { IObservable, ITransaction, autorun, autorunWithStore, derived, observableValue, subtransaction, transaction } from '../../../../../base/common/observable.js';\nimport { ThemeIcon } from '../../../../../base/common/themables.js';\nimport { applyFontInfo } from '../../../config/domFontInfo.js';\nimport { applyStyle } from '../utils.js';\nimport { EditorFontLigatures, EditorOption, IComputedEditorOptions } from '../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { DetailedLineRangeMapping, LineRangeMapping } from '../../../../common/diff/rangeMapping.js';\nimport { ILanguageIdCodec } from '../../../../common/languages.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModel, TextModelResolvedOptions } from '../../../../common/model.js';\nimport { LineTokens } from '../../../../common/tokens/lineTokens.js';\nimport { RenderLineInput, renderViewLine2 } from '../../../../common/viewLayout/viewLineRenderer.js';\nimport { ViewLineRenderingData } from '../../../../common/viewModel.js';\nimport { localize } from '../../../../../nls.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { registerIcon } from '../../../../../platform/theme/common/iconRegistry.js';\nimport './accessibleDiffViewer.css';\nimport { DiffEditorEditors } from './diffEditorEditors.js';\nimport { toAction } from '../../../../../base/common/actions.js';\n\nconst accessibleDiffViewerInsertIcon = registerIcon('diff-review-insert', Codicon.add, localize('accessibleDiffViewerInsertIcon', 'Icon for \\'Insert\\' in accessible diff viewer.'));\nconst accessibleDiffViewerRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, localize('accessibleDiffViewerRemoveIcon', 'Icon for \\'Remove\\' in accessible diff viewer.'));\nconst accessibleDiffViewerCloseIcon = registerIcon('diff-review-close', Codicon.close, localize('accessibleDiffViewerCloseIcon', 'Icon for \\'Close\\' in accessible diff viewer.'));\n\nexport interface IAccessibleDiffViewerModel {\n\tgetOriginalModel(): ITextModel;\n\tgetOriginalOptions(): IComputedEditorOptions;\n\n\t/**\n\t * Should do: `setSelection`, `revealLine` and `focus`\n\t */\n\toriginalReveal(range: Range): void;\n\n\tgetModifiedModel(): ITextModel;\n\tgetModifiedOptions(): IComputedEditorOptions;\n\t/**\n\t * Should do: `setSelection`, `revealLine` and `focus`\n\t */\n\tmodifiedReveal(range?: Range): void;\n\tmodifiedSetSelection(range: Range): void;\n\tmodifiedFocus(): void;\n\n\tgetModifiedPosition(): Position | undefined;\n}\n\nexport class AccessibleDiffViewer extends Disposable {\n\tpublic static _ttPolicy = createTrustedTypesPolicy('diffReview', { createHTML: value => value });\n\n\tconstructor(\n\t\tprivate readonly _parentNode: HTMLElement,\n\t\tprivate readonly _visible: IObservable<boolean>,\n\t\tprivate readonly _setVisible: (visible: boolean, tx: ITransaction | undefined) => void,\n\t\tprivate readonly _canClose: IObservable<boolean>,\n\t\tprivate readonly _width: IObservable<number>,\n\t\tprivate readonly _height: IObservable<number>,\n\t\tprivate readonly _diffs: IObservable<DetailedLineRangeMapping[] | undefined>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t}\n\n\tprivate readonly _state = derived(this, (reader) => {\n\t\tconst visible = this._visible.read(reader);\n\t\tthis._parentNode.style.visibility = visible ? 'visible' : 'hidden';\n\t\tif (!visible) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = reader.store.add(this._instantiationService.createInstance(ViewModel, this._diffs, this._models, this._setVisible, this._canClose));\n\t\tconst view = reader.store.add(this._instantiationService.createInstance(View, this._parentNode, model, this._width, this._height, this._models));\n\t\treturn { model, view, };\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tnext(): void {\n\t\ttransaction(tx => {\n\t\t\tconst isVisible = this._visible.get();\n\t\t\tthis._setVisible(true, tx);\n\t\t\tif (isVisible) {\n\t\t\t\tthis._state.get()!.model.nextGroup(tx);\n\t\t\t}\n\t\t});\n\t}\n\n\tprev(): void {\n\t\ttransaction(tx => {\n\t\t\tthis._setVisible(true, tx);\n\t\t\tthis._state.get()!.model.previousGroup(tx);\n\t\t});\n\t}\n\n\tclose(): void {\n\t\ttransaction(tx => {\n\t\t\tthis._setVisible(false, tx);\n\t\t});\n\t}\n}\n\nclass ViewModel extends Disposable {\n\tprivate readonly _groups = observableValue<ViewElementGroup[]>(this, []);\n\tprivate readonly _currentGroupIdx = observableValue(this, 0);\n\tprivate readonly _currentElementIdx = observableValue(this, 0);\n\n\tpublic readonly groups: IObservable<ViewElementGroup[]> = this._groups;\n\tpublic readonly currentGroup: IObservable<ViewElementGroup | undefined>\n\t\t= this._currentGroupIdx.map((idx, r) => this._groups.read(r)[idx]);\n\tpublic readonly currentGroupIndex: IObservable<number> = this._currentGroupIdx;\n\n\tpublic readonly currentElement: IObservable<ViewElement | undefined>\n\t\t= this._currentElementIdx.map((idx, r) => this.currentGroup.read(r)?.lines[idx]);\n\n\tconstructor(\n\t\tprivate readonly _diffs: IObservable<DetailedLineRangeMapping[] | undefined>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\tprivate readonly _setVisible: (visible: boolean, tx: ITransaction | undefined) => void,\n\t\tpublic readonly canClose: IObservable<boolean>,\n\t\t@IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update groups */\n\t\t\tconst diffs = this._diffs.read(reader);\n\t\t\tif (!diffs) {\n\t\t\t\tthis._groups.set([], undefined);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groups = computeViewElementGroups(\n\t\t\t\tdiffs,\n\t\t\t\tthis._models.getOriginalModel().getLineCount(),\n\t\t\t\tthis._models.getModifiedModel().getLineCount()\n\t\t\t);\n\n\t\t\ttransaction(tx => {\n\t\t\t\tconst p = this._models.getModifiedPosition();\n\t\t\t\tif (p) {\n\t\t\t\t\tconst nextGroup = groups.findIndex(g => p?.lineNumber < g.range.modified.endLineNumberExclusive);\n\t\t\t\t\tif (nextGroup !== -1) {\n\t\t\t\t\t\tthis._currentGroupIdx.set(nextGroup, tx);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._groups.set(groups, tx);\n\t\t\t});\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description play audio-cue for diff */\n\t\t\tconst currentViewItem = this.currentElement.read(reader);\n\t\t\tif (currentViewItem?.type === LineType.Deleted) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineDeleted, { source: 'accessibleDiffViewer.currentElementChanged' });\n\t\t\t} else if (currentViewItem?.type === LineType.Added) {\n\t\t\t\tthis._accessibilitySignalService.playSignal(AccessibilitySignal.diffLineInserted, { source: 'accessibleDiffViewer.currentElementChanged' });\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description select lines in editor */\n\t\t\t// This ensures editor commands (like revert/stage) work\n\t\t\tconst currentViewItem = this.currentElement.read(reader);\n\t\t\tif (currentViewItem && currentViewItem.type !== LineType.Header) {\n\t\t\t\tconst lineNumber = currentViewItem.modifiedLineNumber ?? currentViewItem.diff.modified.startLineNumber;\n\t\t\t\tthis._models.modifiedSetSelection(Range.fromPositions(new Position(lineNumber, 1)));\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate _goToGroupDelta(delta: number, tx?: ITransaction): void {\n\t\tconst groups = this.groups.get();\n\t\tif (!groups || groups.length <= 1) { return; }\n\t\tsubtransaction(tx, tx => {\n\t\t\tthis._currentGroupIdx.set(OffsetRange.ofLength(groups.length).clipCyclic(this._currentGroupIdx.get() + delta), tx);\n\t\t\tthis._currentElementIdx.set(0, tx);\n\t\t});\n\t}\n\n\tnextGroup(tx?: ITransaction): void { this._goToGroupDelta(1, tx); }\n\tpreviousGroup(tx?: ITransaction): void { this._goToGroupDelta(-1, tx); }\n\n\tprivate _goToLineDelta(delta: number): void {\n\t\tconst group = this.currentGroup.get();\n\t\tif (!group || group.lines.length <= 1) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._currentElementIdx.set(OffsetRange.ofLength(group.lines.length).clip(this._currentElementIdx.get() + delta), tx);\n\t\t});\n\t}\n\n\tgoToNextLine(): void { this._goToLineDelta(1); }\n\tgoToPreviousLine(): void { this._goToLineDelta(-1); }\n\n\tgoToLine(line: ViewElement): void {\n\t\tconst group = this.currentGroup.get();\n\t\tif (!group) { return; }\n\t\tconst idx = group.lines.indexOf(line);\n\t\tif (idx === -1) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._currentElementIdx.set(idx, tx);\n\t\t});\n\t}\n\n\trevealCurrentElementInEditor(): void {\n\t\tif (!this.canClose.get()) { return; }\n\t\tthis._setVisible(false, undefined);\n\n\t\tconst curElem = this.currentElement.get();\n\t\tif (curElem) {\n\t\t\tif (curElem.type === LineType.Deleted) {\n\t\t\t\tthis._models.originalReveal(Range.fromPositions(new Position(curElem.originalLineNumber, 1)));\n\t\t\t} else {\n\t\t\t\tthis._models.modifiedReveal(\n\t\t\t\t\tcurElem.type !== LineType.Header\n\t\t\t\t\t\t? Range.fromPositions(new Position(curElem.modifiedLineNumber, 1))\n\t\t\t\t\t\t: undefined\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): void {\n\t\tif (!this.canClose.get()) { return; }\n\t\tthis._setVisible(false, undefined);\n\t\tthis._models.modifiedFocus();\n\t}\n}\n\n\nconst viewElementGroupLineMargin = 3;\n\nfunction computeViewElementGroups(diffs: DetailedLineRangeMapping[], originalLineCount: number, modifiedLineCount: number): ViewElementGroup[] {\n\tconst result: ViewElementGroup[] = [];\n\n\tfor (const g of groupAdjacentBy(diffs, (a, b) => (b.modified.startLineNumber - a.modified.endLineNumberExclusive < 2 * viewElementGroupLineMargin))) {\n\t\tconst viewElements: ViewElement[] = [];\n\t\tviewElements.push(new HeaderViewElement());\n\n\t\tconst origFullRange = new LineRange(\n\t\t\tMath.max(1, g[0].original.startLineNumber - viewElementGroupLineMargin),\n\t\t\tMath.min(g[g.length - 1].original.endLineNumberExclusive + viewElementGroupLineMargin, originalLineCount + 1)\n\t\t);\n\t\tconst modifiedFullRange = new LineRange(\n\t\t\tMath.max(1, g[0].modified.startLineNumber - viewElementGroupLineMargin),\n\t\t\tMath.min(g[g.length - 1].modified.endLineNumberExclusive + viewElementGroupLineMargin, modifiedLineCount + 1)\n\t\t);\n\n\t\tforEachAdjacent(g, (a, b) => {\n\t\t\tconst origRange = new LineRange(a ? a.original.endLineNumberExclusive : origFullRange.startLineNumber, b ? b.original.startLineNumber : origFullRange.endLineNumberExclusive);\n\t\t\tconst modifiedRange = new LineRange(a ? a.modified.endLineNumberExclusive : modifiedFullRange.startLineNumber, b ? b.modified.startLineNumber : modifiedFullRange.endLineNumberExclusive);\n\n\t\t\torigRange.forEach(origLineNumber => {\n\t\t\t\tviewElements.push(new UnchangedLineViewElement(origLineNumber, modifiedRange.startLineNumber + (origLineNumber - origRange.startLineNumber)));\n\t\t\t});\n\n\t\t\tif (b) {\n\t\t\t\tb.original.forEach(origLineNumber => {\n\t\t\t\t\tviewElements.push(new DeletedLineViewElement(b, origLineNumber));\n\t\t\t\t});\n\t\t\t\tb.modified.forEach(modifiedLineNumber => {\n\t\t\t\t\tviewElements.push(new AddedLineViewElement(b, modifiedLineNumber));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst modifiedRange = g[0].modified.join(g[g.length - 1].modified);\n\t\tconst originalRange = g[0].original.join(g[g.length - 1].original);\n\n\t\tresult.push(new ViewElementGroup(new LineRangeMapping(modifiedRange, originalRange), viewElements));\n\t}\n\treturn result;\n}\n\nenum LineType {\n\tHeader,\n\tUnchanged,\n\tDeleted,\n\tAdded,\n}\n\nclass ViewElementGroup {\n\tconstructor(\n\t\tpublic readonly range: LineRangeMapping,\n\t\tpublic readonly lines: readonly ViewElement[],\n\t) { }\n}\n\ntype ViewElement = HeaderViewElement | UnchangedLineViewElement | DeletedLineViewElement | AddedLineViewElement;\n\nclass HeaderViewElement {\n\tpublic readonly type = LineType.Header;\n}\n\nclass DeletedLineViewElement {\n\tpublic readonly type = LineType.Deleted;\n\n\tpublic readonly modifiedLineNumber = undefined;\n\n\tconstructor(\n\t\tpublic readonly diff: DetailedLineRangeMapping,\n\t\tpublic readonly originalLineNumber: number,\n\t) {\n\t}\n}\n\nclass AddedLineViewElement {\n\tpublic readonly type = LineType.Added;\n\n\tpublic readonly originalLineNumber = undefined;\n\n\tconstructor(\n\t\tpublic readonly diff: DetailedLineRangeMapping,\n\t\tpublic readonly modifiedLineNumber: number,\n\t) {\n\t}\n}\n\nclass UnchangedLineViewElement {\n\tpublic readonly type = LineType.Unchanged;\n\tconstructor(\n\t\tpublic readonly originalLineNumber: number,\n\t\tpublic readonly modifiedLineNumber: number,\n\t) {\n\t}\n}\n\nclass View extends Disposable {\n\tpublic readonly domNode: HTMLElement;\n\tprivate readonly _content: HTMLElement;\n\tprivate readonly _scrollbar: DomScrollableElement;\n\tprivate readonly _actionBar: ActionBar;\n\n\tconstructor(\n\t\tprivate readonly _element: HTMLElement,\n\t\tprivate readonly _model: ViewModel,\n\t\tprivate readonly _width: IObservable<number>,\n\t\tprivate readonly _height: IObservable<number>,\n\t\tprivate readonly _models: IAccessibleDiffViewerModel,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis.domNode = this._element;\n\t\tthis.domNode.className = 'monaco-component diff-review monaco-editor-background';\n\n\t\tconst actionBarContainer = document.createElement('div');\n\t\tactionBarContainer.className = 'diff-review-actions';\n\t\tthis._actionBar = this._register(new ActionBar(\n\t\t\tactionBarContainer\n\t\t));\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description update actions */\n\t\t\tthis._actionBar.clear();\n\t\t\tif (this._model.canClose.read(reader)) {\n\t\t\t\tthis._actionBar.push(toAction({\n\t\t\t\t\tid: 'diffreview.close',\n\t\t\t\t\tlabel: localize('label.close', \"Close\"),\n\t\t\t\t\tclass: 'close-diff-review ' + ThemeIcon.asClassName(accessibleDiffViewerCloseIcon),\n\t\t\t\t\tenabled: true,\n\t\t\t\t\trun: async () => _model.close()\n\t\t\t\t}), { label: false, icon: true });\n\t\t\t}\n\t\t}));\n\n\t\tthis._content = document.createElement('div');\n\t\tthis._content.className = 'diff-review-content';\n\t\tthis._content.setAttribute('role', 'code');\n\t\tthis._scrollbar = this._register(new DomScrollableElement(this._content, {}));\n\t\treset(this.domNode, this._scrollbar.getDomNode(), actionBarContainer);\n\n\t\tthis._register(autorun(r => {\n\t\t\tthis._height.read(r);\n\t\t\tthis._width.read(r);\n\t\t\tthis._scrollbar.scanDomNode();\n\t\t}));\n\n\t\tthis._register(toDisposable(() => { reset(this.domNode); }));\n\n\t\tthis._register(applyStyle(this.domNode, { width: this._width, height: this._height }));\n\t\tthis._register(applyStyle(this._content, { width: this._width, height: this._height }));\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\t/** @description render */\n\t\t\tthis._model.currentGroup.read(reader);\n\t\t\tthis._render(store);\n\t\t}));\n\n\t\t// TODO@hediet use commands\n\t\tthis._register(addStandardDisposableListener(this.domNode, 'keydown', (e) => {\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.DownArrow)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.DownArrow)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.DownArrow)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.goToNextLine();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.UpArrow)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.UpArrow)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.UpArrow)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.goToPreviousLine();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.CtrlCmd | KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.Alt | KeyCode.Escape)\n\t\t\t\t|| e.equals(KeyMod.Shift | KeyCode.Escape)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.close();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\te.equals(KeyCode.Space)\n\t\t\t\t|| e.equals(KeyCode.Enter)\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._model.revealCurrentElementInEditor();\n\t\t\t}\n\t\t}));\n\t}\n\n\tprivate _render(store: DisposableStore): void {\n\t\tconst originalOptions = this._models.getOriginalOptions();\n\t\tconst modifiedOptions = this._models.getModifiedOptions();\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'diff-review-table';\n\t\tcontainer.setAttribute('role', 'list');\n\t\tcontainer.setAttribute('aria-label', localize('ariaLabel', 'Accessible Diff Viewer. Use arrow up and down to navigate.'));\n\t\tapplyFontInfo(container, modifiedOptions.get(EditorOption.fontInfo));\n\n\t\treset(this._content, container);\n\n\t\tconst originalModel = this._models.getOriginalModel();\n\t\tconst modifiedModel = this._models.getModifiedModel();\n\t\tif (!originalModel || !modifiedModel) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst originalModelOpts = originalModel.getOptions();\n\t\tconst modifiedModelOpts = modifiedModel.getOptions();\n\n\t\tconst lineHeight = modifiedOptions.get(EditorOption.lineHeight);\n\t\tconst group = this._model.currentGroup.get();\n\t\tfor (const viewItem of group?.lines || []) {\n\t\t\tif (!group) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlet row: HTMLDivElement;\n\n\t\t\tif (viewItem.type === LineType.Header) {\n\n\t\t\t\tconst header = document.createElement('div');\n\t\t\t\theader.className = 'diff-review-row';\n\t\t\t\theader.setAttribute('role', 'listitem');\n\n\t\t\t\tconst r = group.range;\n\t\t\t\tconst diffIndex = this._model.currentGroupIndex.get();\n\t\t\t\tconst diffsLength = this._model.groups.get().length;\n\t\t\t\tconst getAriaLines = (lines: number) =>\n\t\t\t\t\tlines === 0 ? localize('no_lines_changed', \"no lines changed\")\n\t\t\t\t\t\t: lines === 1 ? localize('one_line_changed', \"1 line changed\")\n\t\t\t\t\t\t\t: localize('more_lines_changed', \"{0} lines changed\", lines);\n\n\t\t\t\tconst originalChangedLinesCntAria = getAriaLines(r.original.length);\n\t\t\t\tconst modifiedChangedLinesCntAria = getAriaLines(r.modified.length);\n\t\t\t\theader.setAttribute('aria-label', localize({\n\t\t\t\t\tkey: 'header',\n\t\t\t\t\tcomment: [\n\t\t\t\t\t\t'This is the ARIA label for a git diff header.',\n\t\t\t\t\t\t'A git diff header looks like this: @@ -154,12 +159,39 @@.',\n\t\t\t\t\t\t'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',\n\t\t\t\t\t\t'Variables 0 and 1 refer to the diff index out of total number of diffs.',\n\t\t\t\t\t\t'Variables 2 and 4 will be numbers (a line number).',\n\t\t\t\t\t\t'Variables 3 and 5 will be \"no lines changed\", \"1 line changed\" or \"X lines changed\", localized separately.'\n\t\t\t\t\t]\n\t\t\t\t}, \"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\",\n\t\t\t\t\t(diffIndex + 1),\n\t\t\t\t\tdiffsLength,\n\t\t\t\t\tr.original.startLineNumber,\n\t\t\t\t\toriginalChangedLinesCntAria,\n\t\t\t\t\tr.modified.startLineNumber,\n\t\t\t\t\tmodifiedChangedLinesCntAria\n\t\t\t\t));\n\n\t\t\t\tconst cell = document.createElement('div');\n\t\t\t\tcell.className = 'diff-review-cell diff-review-summary';\n\t\t\t\t// e.g.: `1/10: @@ -504,7 +517,7 @@`\n\t\t\t\tcell.appendChild(document.createTextNode(`${diffIndex + 1}/${diffsLength}: @@ -${r.original.startLineNumber},${r.original.length} +${r.modified.startLineNumber},${r.modified.length} @@`));\n\t\t\t\theader.appendChild(cell);\n\n\t\t\t\trow = header;\n\t\t\t} else {\n\t\t\t\trow = this._createRow(viewItem, lineHeight,\n\t\t\t\t\tthis._width.get(), originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcontainer.appendChild(row);\n\n\t\t\tconst isSelectedObs = derived(reader => /** @description isSelected */ this._model.currentElement.read(reader) === viewItem);\n\n\t\t\tstore.add(autorun(reader => {\n\t\t\t\t/** @description update tab index */\n\t\t\t\tconst isSelected = isSelectedObs.read(reader);\n\t\t\t\trow.tabIndex = isSelected ? 0 : -1;\n\t\t\t\tif (isSelected) {\n\t\t\t\t\trow.focus();\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tstore.add(addDisposableListener(row, 'focus', () => {\n\t\t\t\tthis._model.goToLine(viewItem);\n\t\t\t}));\n\t\t}\n\n\t\tthis._scrollbar.scanDomNode();\n\t}\n\n\tprivate _createRow(\n\t\titem: DeletedLineViewElement | AddedLineViewElement | UnchangedLineViewElement,\n\t\tlineHeight: number,\n\t\twidth: number,\n\t\toriginalOptions: IComputedEditorOptions, originalModel: ITextModel, originalModelOpts: TextModelResolvedOptions,\n\t\tmodifiedOptions: IComputedEditorOptions, modifiedModel: ITextModel, modifiedModelOpts: TextModelResolvedOptions,\n\t): HTMLDivElement {\n\t\tconst originalLayoutInfo = originalOptions.get(EditorOption.layoutInfo);\n\t\tconst originalLineNumbersWidth = originalLayoutInfo.glyphMarginWidth + originalLayoutInfo.lineNumbersWidth;\n\n\t\tconst modifiedLayoutInfo = modifiedOptions.get(EditorOption.layoutInfo);\n\t\tconst modifiedLineNumbersWidth = 10 + modifiedLayoutInfo.glyphMarginWidth + modifiedLayoutInfo.lineNumbersWidth;\n\n\t\tlet rowClassName: string = 'diff-review-row';\n\t\tlet lineNumbersExtraClassName: string = '';\n\t\tconst spacerClassName: string = 'diff-review-spacer';\n\t\tlet spacerIcon: ThemeIcon | null = null;\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Added:\n\t\t\t\trowClassName = 'diff-review-row line-insert';\n\t\t\t\tlineNumbersExtraClassName = ' char-insert';\n\t\t\t\tspacerIcon = accessibleDiffViewerInsertIcon;\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\trowClassName = 'diff-review-row line-delete';\n\t\t\t\tlineNumbersExtraClassName = ' char-delete';\n\t\t\t\tspacerIcon = accessibleDiffViewerRemoveIcon;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst row = document.createElement('div');\n\t\trow.style.minWidth = width + 'px';\n\t\trow.className = rowClassName;\n\t\trow.setAttribute('role', 'listitem');\n\t\trow.ariaLevel = '';\n\n\t\tconst cell = document.createElement('div');\n\t\tcell.className = 'diff-review-cell';\n\t\tcell.style.height = `${lineHeight}px`;\n\t\trow.appendChild(cell);\n\n\t\tconst originalLineNumber = document.createElement('span');\n\t\toriginalLineNumber.style.width = (originalLineNumbersWidth + 'px');\n\t\toriginalLineNumber.style.minWidth = (originalLineNumbersWidth + 'px');\n\t\toriginalLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n\t\tif (item.originalLineNumber !== undefined) {\n\t\t\toriginalLineNumber.appendChild(document.createTextNode(String(item.originalLineNumber)));\n\t\t} else {\n\t\t\toriginalLineNumber.innerText = '\\u00a0';\n\t\t}\n\t\tcell.appendChild(originalLineNumber);\n\n\t\tconst modifiedLineNumber = document.createElement('span');\n\t\tmodifiedLineNumber.style.width = (modifiedLineNumbersWidth + 'px');\n\t\tmodifiedLineNumber.style.minWidth = (modifiedLineNumbersWidth + 'px');\n\t\tmodifiedLineNumber.style.paddingRight = '10px';\n\t\tmodifiedLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n\t\tif (item.modifiedLineNumber !== undefined) {\n\t\t\tmodifiedLineNumber.appendChild(document.createTextNode(String(item.modifiedLineNumber)));\n\t\t} else {\n\t\t\tmodifiedLineNumber.innerText = '\\u00a0';\n\t\t}\n\t\tcell.appendChild(modifiedLineNumber);\n\n\t\tconst spacer = document.createElement('span');\n\t\tspacer.className = spacerClassName;\n\n\t\tif (spacerIcon) {\n\t\t\tconst spacerCodicon = document.createElement('span');\n\t\t\tspacerCodicon.className = ThemeIcon.asClassName(spacerIcon);\n\t\t\tspacerCodicon.innerText = '\\u00a0\\u00a0';\n\t\t\tspacer.appendChild(spacerCodicon);\n\t\t} else {\n\t\t\tspacer.innerText = '\\u00a0\\u00a0';\n\t\t}\n\t\tcell.appendChild(spacer);\n\n\t\tlet lineContent: string;\n\t\tif (item.modifiedLineNumber !== undefined) {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(modifiedModel, modifiedOptions, modifiedModelOpts.tabSize, item.modifiedLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = modifiedModel.getLineContent(item.modifiedLineNumber);\n\t\t} else {\n\t\t\tlet html: string | TrustedHTML = this._getLineHtml(originalModel, originalOptions, originalModelOpts.tabSize, item.originalLineNumber, this._languageService.languageIdCodec);\n\t\t\tif (AccessibleDiffViewer._ttPolicy) {\n\t\t\t\thtml = AccessibleDiffViewer._ttPolicy.createHTML(html as string);\n\t\t\t}\n\t\t\tcell.insertAdjacentHTML('beforeend', html as string);\n\t\t\tlineContent = originalModel.getLineContent(item.originalLineNumber);\n\t\t}\n\n\t\tif (lineContent.length === 0) {\n\t\t\tlineContent = localize('blankLine', \"blank\");\n\t\t}\n\n\t\tlet ariaLabel: string = '';\n\t\tswitch (item.type) {\n\t\t\tcase LineType.Unchanged:\n\t\t\t\tif (item.originalLineNumber === item.modifiedLineNumber) {\n\t\t\t\t\tariaLabel = localize({ key: 'unchangedLine', comment: ['The placeholders are contents of the line and should not be translated.'] }, \"{0} unchanged line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\t} else {\n\t\t\t\t\tariaLabel = localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, item.originalLineNumber, item.modifiedLineNumber);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase LineType.Added:\n\t\t\t\tariaLabel = localize('insertLine', \"+ {0} modified line {1}\", lineContent, item.modifiedLineNumber);\n\t\t\t\tbreak;\n\t\t\tcase LineType.Deleted:\n\t\t\t\tariaLabel = localize('deleteLine', \"- {0} original line {1}\", lineContent, item.originalLineNumber);\n\t\t\t\tbreak;\n\t\t}\n\t\trow.setAttribute('aria-label', ariaLabel);\n\n\t\treturn row;\n\t}\n\n\tprivate _getLineHtml(model: ITextModel, options: IComputedEditorOptions, tabSize: number, lineNumber: number, languageIdCodec: ILanguageIdCodec): string {\n\t\tconst lineContent = model.getLineContent(lineNumber);\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst verticalScrollbarSize = options.get(EditorOption.scrollbar).verticalScrollbarSize;\n\t\tconst lineTokens = LineTokens.createEmpty(lineContent, languageIdCodec);\n\t\tconst isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\n\t\tconst containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\n\t\tconst r = renderViewLine2(new RenderLineInput(\n\t\t\t(fontInfo.isMonospace && !options.get(EditorOption.disableMonospaceOptimizations)),\n\t\t\tfontInfo.canUseHalfwidthRightwardsArrow,\n\t\t\tlineContent,\n\t\t\tfalse,\n\t\t\tisBasicASCII,\n\t\t\tcontainsRTL,\n\t\t\t0,\n\t\t\tlineTokens,\n\t\t\t[],\n\t\t\ttabSize,\n\t\t\t0,\n\t\t\tfontInfo.spaceWidth,\n\t\t\tfontInfo.middotWidth,\n\t\t\tfontInfo.wsmiddotWidth,\n\t\t\toptions.get(EditorOption.stopRenderingLineAfter),\n\t\t\toptions.get(EditorOption.renderWhitespace),\n\t\t\toptions.get(EditorOption.renderControlCharacters),\n\t\t\toptions.get(EditorOption.fontLigatures) !== EditorFontLigatures.OFF,\n\t\t\tnull,\n\t\t\tnull,\n\t\t\tverticalScrollbarSize\n\t\t));\n\n\t\treturn r.html;\n\t}\n}\n\nexport class AccessibleDiffViewerModelFromEditors implements IAccessibleDiffViewerModel {\n\tconstructor(private readonly editors: DiffEditorEditors) { }\n\n\tgetOriginalModel(): ITextModel {\n\t\treturn this.editors.original.getModel()!;\n\t}\n\n\tgetOriginalOptions(): IComputedEditorOptions {\n\t\treturn this.editors.original.getOptions();\n\t}\n\n\toriginalReveal(range: Range): void {\n\t\tthis.editors.original.revealRange(range);\n\t\tthis.editors.original.setSelection(range);\n\t\tthis.editors.original.focus();\n\t}\n\n\tgetModifiedModel(): ITextModel {\n\t\treturn this.editors.modified.getModel()!;\n\t}\n\n\tgetModifiedOptions(): IComputedEditorOptions {\n\t\treturn this.editors.modified.getOptions();\n\t}\n\n\tmodifiedReveal(range?: Range | undefined): void {\n\t\tif (range) {\n\t\t\tthis.editors.modified.revealRange(range);\n\t\t\tthis.editors.modified.setSelection(range);\n\t\t}\n\t\tthis.editors.modified.focus();\n\t}\n\n\tmodifiedSetSelection(range: Range): void {\n\t\tthis.editors.modified.setSelection(range);\n\t}\n\n\tmodifiedFocus(): void {\n\t\tthis.editors.modified.focus();\n\t}\n\n\tgetModifiedPosition(): Position | undefined {\n\t\treturn this.editors.modified.getPosition() ?? undefined;\n\t}\n}\n"]}
@@ -167,7 +167,7 @@ let DiffEditorEditors = class DiffEditorEditors extends Disposable {
167
167
  if (!ariaLabel) {
168
168
  ariaLabel = '';
169
169
  }
170
- const ariaNavigationTip = localize(108, ' use {0} to open the accessibility help.', this._keybindingService.lookupKeybinding('editor.action.accessibilityHelp')?.getAriaLabel());
170
+ const ariaNavigationTip = localize(113, ' use {0} to open the accessibility help.', this._keybindingService.lookupKeybinding('editor.action.accessibilityHelp')?.getAriaLabel());
171
171
  if (this._options.accessibilityVerbose.get()) {
172
172
  return ariaLabel + ariaNavigationTip;
173
173
  }
@@ -53,7 +53,7 @@ export function enableCopySelection(options) {
53
53
  clipboardService.writeText(selectedText);
54
54
  }));
55
55
  showContextMenu({ x: e.event.posx, y: e.event.posy + editorLineHeight }, selectedText ?
56
- [new Action('diff.clipboard.copySelectedDeletedContent', localize(109, 'Copy Selection'), undefined, true, async () => clipboardService.writeText(selectedText))] :
56
+ [new Action('diff.clipboard.copySelectedDeletedContent', localize(114, 'Copy Selection'), undefined, true, async () => clipboardService.writeText(selectedText))] :
57
57
  [], () => {
58
58
  onCopy.dispose();
59
59
  });
@@ -57,18 +57,18 @@ export class InlineDiffDeletedCodeMargin extends Disposable {
57
57
  // default action
58
58
  actions.push(new Action('diff.clipboard.copyDeletedContent', isDeletion
59
59
  ? (_diff.original.length > 1
60
- ? localize(110, "Copy deleted lines")
61
- : localize(111, "Copy deleted line"))
60
+ ? localize(115, "Copy deleted lines")
61
+ : localize(116, "Copy deleted line"))
62
62
  : (_diff.original.length > 1
63
- ? localize(112, "Copy changed lines")
64
- : localize(113, "Copy changed line")), undefined, true, async () => {
63
+ ? localize(117, "Copy changed lines")
64
+ : localize(118, "Copy changed line")), undefined, true, async () => {
65
65
  const originalText = this._originalTextModel.getValueInRange(_diff.original.toExclusiveRange());
66
66
  await this._clipboardService.writeText(originalText);
67
67
  }));
68
68
  if (_diff.original.length > 1) {
69
69
  actions.push(new Action('diff.clipboard.copyDeletedLineContent', isDeletion
70
- ? localize(114, "Copy deleted line ({0})", _diff.original.startLineNumber + currentLineNumberOffset)
71
- : localize(115, "Copy changed line ({0})", _diff.original.startLineNumber + currentLineNumberOffset), undefined, true, async () => {
70
+ ? localize(119, "Copy deleted line ({0})", _diff.original.startLineNumber + currentLineNumberOffset)
71
+ : localize(120, "Copy changed line ({0})", _diff.original.startLineNumber + currentLineNumberOffset), undefined, true, async () => {
72
72
  let lineContent = this._originalTextModel.getLineContent(_diff.original.startLineNumber + currentLineNumberOffset);
73
73
  if (lineContent === '') {
74
74
  // empty line -> new line
@@ -80,7 +80,7 @@ export class InlineDiffDeletedCodeMargin extends Disposable {
80
80
  }
81
81
  const readOnly = _modifiedEditor.getOption(104 /* EditorOption.readOnly */);
82
82
  if (!readOnly) {
83
- actions.push(new Action('diff.inline.revertChange', localize(116, "Revert this change"), undefined, true, async () => {
83
+ actions.push(new Action('diff.inline.revertChange', localize(121, "Revert this change"), undefined, true, async () => {
84
84
  this._editor.revert(this._diff);
85
85
  }));
86
86
  }