monaco-editor-core 0.56.0-dev-20251124 → 0.56.0-dev-20251217

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 (337) 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 +34 -2
  18. package/esm/vs/base/browser/dom.js +1 -4
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/markdownRenderer.js +25 -11
  21. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  22. package/esm/vs/base/browser/ui/button/button.js +15 -8
  23. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  24. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  26. package/esm/vs/base/browser/ui/list/list.css +1 -0
  27. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  28. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  29. package/esm/vs/base/common/async.js +11 -0
  30. package/esm/vs/base/common/async.js.map +1 -1
  31. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  32. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  33. package/esm/vs/base/common/defaultAccount.js +6 -0
  34. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  35. package/esm/vs/base/common/equals.js +73 -24
  36. package/esm/vs/base/common/equals.js.map +1 -1
  37. package/esm/vs/base/common/event.js +14 -4
  38. package/esm/vs/base/common/event.js.map +1 -1
  39. package/esm/vs/base/common/iterator.js.map +1 -1
  40. package/esm/vs/base/common/keybindings.js +0 -8
  41. package/esm/vs/base/common/keybindings.js.map +1 -1
  42. package/esm/vs/base/common/lifecycle.js +2 -2
  43. package/esm/vs/base/common/lifecycle.js.map +1 -1
  44. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  45. package/esm/vs/base/common/observableInternal/index.js +1 -1
  46. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  47. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  48. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  49. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  50. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  51. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  52. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  53. package/esm/vs/base/common/product.js.map +1 -1
  54. package/esm/vs/base/common/strings.js +3 -1
  55. package/esm/vs/base/common/strings.js.map +1 -1
  56. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  57. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  58. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  59. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  60. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  61. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  62. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  64. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  66. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  67. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  69. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  70. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  71. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  72. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  73. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  74. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  75. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  76. package/esm/vs/editor/browser/view.js +11 -2
  77. package/esm/vs/editor/browser/view.js.map +1 -1
  78. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  79. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  80. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  81. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  82. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  83. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  84. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  85. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  86. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  87. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  88. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  89. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  90. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  91. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  92. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  93. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  94. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  95. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  96. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  97. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  98. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  99. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  100. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  101. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  102. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  103. package/esm/vs/editor/common/languages.js +2 -1
  104. package/esm/vs/editor/common/languages.js.map +1 -1
  105. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  106. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  107. package/esm/vs/editor/common/model/textModel.js +49 -30
  108. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  109. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  110. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  111. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  112. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  113. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  114. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  115. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  116. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  117. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  118. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  119. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  120. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  121. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  122. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  123. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
  124. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  125. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
  126. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  127. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
  128. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  129. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  130. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  131. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
  132. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  133. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  134. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  135. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +2 -0
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  144. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  145. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  146. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  147. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  148. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  149. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  150. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  151. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  152. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  153. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  154. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -65
  155. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  156. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +69 -13
  157. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  158. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +159 -94
  159. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  160. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +124 -50
  161. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  162. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +393 -0
  163. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -0
  164. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  165. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  166. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  167. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  168. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  169. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  170. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  171. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  172. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  173. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  174. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  175. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  176. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  177. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  178. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  179. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  180. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  181. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  182. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  183. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  184. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  185. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  186. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  187. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  188. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  189. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  190. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  191. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  192. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  193. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  194. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  195. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  196. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  197. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  213. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  214. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  215. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  216. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  217. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  218. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  219. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  220. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  221. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  222. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  223. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  224. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  225. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  226. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
  227. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  228. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  229. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -11
  230. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  231. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  232. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  233. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  234. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  235. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  236. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  237. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  238. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  239. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  240. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  241. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  242. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  243. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  244. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  245. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  246. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  247. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  248. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  249. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  250. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  251. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  252. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  253. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  254. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  255. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  256. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  257. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  258. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  259. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  260. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  261. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  262. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  263. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  264. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  265. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  266. package/esm/vs/editor/editor.api.d.ts +37 -2
  267. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  268. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  269. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  270. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  271. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  272. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  273. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  274. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  275. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  276. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  277. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  278. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  279. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  280. package/esm/vs/platform/actions/common/actions.js +11 -4
  281. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  282. package/esm/vs/platform/actions/common/menuService.js +2 -2
  283. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  284. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  285. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  286. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  287. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  288. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  289. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  290. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  291. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  292. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  293. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  294. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  295. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  296. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  297. package/esm/vs/platform/list/browser/listService.js +27 -27
  298. package/esm/vs/platform/log/common/log.js +1 -1
  299. package/esm/vs/platform/log/common/log.js.map +1 -1
  300. package/esm/vs/platform/markers/common/markerService.js +6 -6
  301. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  302. package/esm/vs/platform/markers/common/markers.js +6 -6
  303. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  304. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  305. package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
  306. package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
  307. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  308. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  309. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  310. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  311. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  312. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  313. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  314. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  315. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  316. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  317. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  318. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  319. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  320. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  321. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  322. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  323. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  324. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  325. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  326. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  327. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  328. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  329. package/esm/vs/platform/window/common/window.js +1 -1
  330. package/esm/vs/platform/window/common/window.js.map +1 -1
  331. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  332. package/monaco.d.ts +37 -2
  333. package/package.json +2 -2
  334. package/version.txt +1 -1
  335. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  336. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  337. package/esm/vs/platform/product/common/productService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.ts"],"names":[],"mappings":"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","file":"multiDiffEditorWidgetImpl.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 { Dimension, getWindow, h, scheduleAtNextAnimationFrame } from '../../../../base/browser/dom.js';\nimport { SmoothScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { findFirstMax } from '../../../../base/common/arraysFind.js';\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { Disposable, IReference, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, IReader, ITransaction, autorun, autorunWithStore, derived, disposableObservableValue, globalTransaction, observableFromEvent, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { Scrollable, ScrollbarVisibility } from '../../../../base/common/scrollable.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { localize } from '../../../../nls.js';\nimport { ContextKeyValue, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { IRange } from '../../../common/core/range.js';\nimport { ISelection, Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ICodeEditor } from '../../editorBrowser.js';\nimport { ObservableElementSizeObserver } from '../diffEditor/utils.js';\nimport { DiffEditorItemTemplate, TemplateData } from './diffEditorItemTemplate.js';\nimport { DocumentDiffItemViewModel, MultiDiffEditorViewModel } from './multiDiffEditorViewModel.js';\nimport { RevealOptions } from './multiDiffEditorWidget.js';\nimport { ObjectPool } from './objectPool.js';\nimport './style.css';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class MultiDiffEditorWidgetImpl extends Disposable {\n\tprivate readonly _scrollableElements;\n\n\tprivate readonly _scrollable;\n\n\tprivate readonly _scrollableElement;\n\n\tprivate readonly _elements;\n\n\tprivate readonly _sizeObserver;\n\n\tprivate readonly _objectPool;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tprivate readonly _viewItemsInfo;\n\n\tprivate readonly _viewItems;\n\n\tprivate readonly _spaceBetweenPx;\n\n\tprivate readonly _totalHeight;\n\tpublic readonly activeControl;\n\n\tprivate readonly _contextKeyService;\n\tprivate readonly _instantiationService;\n\n\tconstructor(\n\t\tprivate readonly _element: HTMLElement,\n\t\tprivate readonly _dimension: IObservable<Dimension | undefined>,\n\t\tprivate readonly _viewModel: IObservable<MultiDiffEditorViewModel | undefined>,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IContextKeyService private readonly _parentContextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _parentInstantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._scrollableElements = h('div.scrollContent', [\n\t\t\th('div@content', {\n\t\t\t\tstyle: {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t}\n\t\t\t}),\n\t\t\th('div.monaco-editor@overflowWidgetsDomNode', {\n\t\t\t}),\n\t\t]);\n\t\tthis._scrollable = this._register(new Scrollable({\n\t\t\tforceIntegerValues: false,\n\t\t\tscheduleAtNextAnimationFrame: (cb) => scheduleAtNextAnimationFrame(getWindow(this._element), cb),\n\t\t\tsmoothScrollDuration: 100,\n\t\t}));\n\t\tthis._scrollableElement = this._register(new SmoothScrollableElement(this._scrollableElements.root, {\n\t\t\tvertical: ScrollbarVisibility.Auto,\n\t\t\thorizontal: ScrollbarVisibility.Auto,\n\t\t\tuseShadows: false,\n\t\t}, this._scrollable));\n\t\tthis._elements = h('div.monaco-component.multiDiffEditor', {}, [\n\t\t\th('div', {}, [this._scrollableElement.getDomNode()]),\n\t\t\th('div.placeholder@placeholder', {}, [h('div')]),\n\t\t]);\n\t\tthis._sizeObserver = this._register(new ObservableElementSizeObserver(this._element, undefined));\n\t\tthis._objectPool = this._register(new ObjectPool<TemplateData, DiffEditorItemTemplate>((data) => {\n\t\t\tconst template = this._instantiationService.createInstance(\n\t\t\t\tDiffEditorItemTemplate,\n\t\t\t\tthis._scrollableElements.content,\n\t\t\t\tthis._scrollableElements.overflowWidgetsDomNode,\n\t\t\t\tthis._workbenchUIElementFactory\n\t\t\t);\n\t\t\ttemplate.setData(data);\n\t\t\treturn template;\n\t\t}));\n\t\tthis.scrollTop = observableFromEvent(this, this._scrollableElement.onScroll, () => /** @description scrollTop */ this._scrollableElement.getScrollPosition().scrollTop);\n\t\tthis.scrollLeft = observableFromEvent(this, this._scrollableElement.onScroll, () => /** @description scrollLeft */ this._scrollableElement.getScrollPosition().scrollLeft);\n\t\tthis._viewItemsInfo = derived<{ items: readonly VirtualizedViewItem[]; getItem: (viewModel: DocumentDiffItemViewModel) => VirtualizedViewItem }>(this,\n\t\t\t(reader) => {\n\t\t\t\tconst vm = this._viewModel.read(reader);\n\t\t\t\tif (!vm) {\n\t\t\t\t\treturn { items: [], getItem: _d => { throw new BugIndicatingError(); } };\n\t\t\t\t}\n\t\t\t\tconst viewModels = vm.items.read(reader);\n\t\t\t\tconst map = new Map<DocumentDiffItemViewModel, VirtualizedViewItem>();\n\t\t\t\tconst items = viewModels.map(d => {\n\t\t\t\t\tconst item = reader.store.add(new VirtualizedViewItem(d, this._objectPool, this.scrollLeft, delta => {\n\t\t\t\t\t\tthis._scrollableElement.setScrollPosition({ scrollTop: this._scrollableElement.getScrollPosition().scrollTop + delta });\n\t\t\t\t\t}));\n\t\t\t\t\tconst data = this._lastDocStates?.[item.getKey()];\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\ttransaction(tx => {\n\t\t\t\t\t\t\titem.setViewState(data, tx);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tmap.set(d, item);\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\t\t\t\treturn { items, getItem: d => map.get(d)! };\n\t\t\t}\n\t\t);\n\t\tthis._viewItems = this._viewItemsInfo.map(this, items => items.items);\n\t\tthis._spaceBetweenPx = 0;\n\t\tthis._totalHeight = this._viewItems.map(this, (items, reader) => items.reduce((r, i) => r + i.contentHeight.read(reader) + this._spaceBetweenPx, 0));\n\t\tthis.activeControl = derived(this, reader => {\n\t\t\tconst activeDiffItem = this._viewModel.read(reader)?.activeDiffItem.read(reader);\n\t\t\tif (!activeDiffItem) { return undefined; }\n\t\t\tconst viewItem = this._viewItemsInfo.read(reader).getItem(activeDiffItem);\n\t\t\treturn viewItem.template.read(reader)?.editor;\n\t\t});\n\t\tthis._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._element));\n\t\tthis._instantiationService = this._register(this._parentInstantiationService.createChild(\n\t\t\tnew ServiceCollection([IContextKeyService, this._contextKeyService])\n\t\t));\n\n\t\tthis._contextKeyService.createKey(EditorContextKeys.inMultiDiffEditor.key, true);\n\n\t\tthis._lastDocStates = {};\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tconst viewModel = this._viewModel.read(reader);\n\t\t\tif (viewModel && viewModel.contextKeys) {\n\t\t\t\tfor (const [key, value] of Object.entries(viewModel.contextKeys)) {\n\t\t\t\t\tconst contextKey = this._contextKeyService.createKey<ContextKeyValue>(key, undefined);\n\t\t\t\t\tcontextKey.set(value);\n\t\t\t\t\tstore.add(toDisposable(() => contextKey.reset()));\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tconst ctxAllCollapsed = this._parentContextKeyService.createKey<boolean>(EditorContextKeys.multiDiffEditorAllCollapsed.key, false);\n\t\tthis._register(autorun((reader) => {\n\t\t\tconst viewModel = this._viewModel.read(reader);\n\t\t\tif (viewModel) {\n\t\t\t\tconst allCollapsed = viewModel.items.read(reader).every(item => item.collapsed.read(reader));\n\t\t\t\tctxAllCollapsed.set(allCollapsed);\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun((reader) => {\n\t\t\t/** @description Update widget dimension */\n\t\t\tconst dimension = this._dimension.read(reader);\n\t\t\tthis._sizeObserver.observe(dimension);\n\t\t}));\n\n\t\tconst placeholderMessage = derived(reader => {\n\t\t\tconst items = this._viewItems.read(reader);\n\t\t\tif (items.length > 0) { return undefined; }\n\n\t\t\tconst vm = this._viewModel.read(reader);\n\t\t\treturn (!vm || vm.isLoading.read(reader))\n\t\t\t\t? localize('loading', 'Loading...')\n\t\t\t\t: localize('noChangedFiles', 'No Changed Files');\n\t\t});\n\n\t\tthis._register(autorun((reader) => {\n\t\t\tconst message = placeholderMessage.read(reader);\n\t\t\tthis._elements.placeholder.innerText = message ?? '';\n\t\t\tthis._elements.placeholder.classList.toggle('visible', !!message);\n\t\t}));\n\n\t\tthis._scrollableElements.content.style.position = 'relative';\n\n\t\tthis._register(autorun((reader) => {\n\t\t\t/** @description Update scroll dimensions */\n\t\t\tconst height = this._sizeObserver.height.read(reader);\n\t\t\tthis._scrollableElements.root.style.height = `${height}px`;\n\t\t\tconst totalHeight = this._totalHeight.read(reader);\n\t\t\tthis._scrollableElements.content.style.height = `${totalHeight}px`;\n\n\t\t\tconst width = this._sizeObserver.width.read(reader);\n\n\t\t\tlet scrollWidth = width;\n\t\t\tconst viewItems = this._viewItems.read(reader);\n\t\t\tconst max = findFirstMax(viewItems, compareBy(i => i.maxScroll.read(reader).maxScroll, numberComparator));\n\t\t\tif (max) {\n\t\t\t\tconst maxScroll = max.maxScroll.read(reader);\n\t\t\t\tscrollWidth = width + maxScroll.maxScroll;\n\t\t\t}\n\n\t\t\tthis._scrollableElement.setScrollDimensions({\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tscrollHeight: totalHeight,\n\t\t\t\tscrollWidth,\n\t\t\t});\n\t\t}));\n\n\t\t_element.replaceChildren(this._elements.root);\n\t\tthis._register(toDisposable(() => {\n\t\t\t_element.replaceChildren();\n\t\t}));\n\n\t\t// Automatically select the first change in the first file when items are loaded\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description Initialize first change */\n\t\t\tconst viewModel = this._viewModel.read(reader);\n\t\t\tif (!viewModel) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only initialize when loading is complete\n\t\t\tif (!viewModel.isLoading.read(reader)) {\n\t\t\t\tconst items = viewModel.items.read(reader);\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only initialize if there's no active item yet\n\t\t\t\tconst activeDiffItem = viewModel.activeDiffItem.read(reader);\n\t\t\t\tif (activeDiffItem) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Navigate to the first change using the existing navigation logic\n\t\t\t\tthis.goToNextChange();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._register(autorun(reader => {\n\t\t\t/** @description Render all */\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis.render(reader);\n\t\t\t});\n\t\t})));\n\t}\n\n\tpublic reveal(resource: IMultiDiffResourceId, options?: RevealOptions): void {\n\t\tconst viewItems = this._viewItems.get();\n\t\tconst index = viewItems.findIndex(\n\t\t\t(item) => item.viewModel.originalUri?.toString() === resource.original?.toString()\n\t\t\t\t&& item.viewModel.modifiedUri?.toString() === resource.modified?.toString()\n\t\t);\n\t\tif (index === -1) {\n\t\t\tthrow new BugIndicatingError('Resource not found in diff editor');\n\t\t}\n\t\tconst viewItem = viewItems[index];\n\t\tthis._viewModel.get()!.activeDiffItem.setCache(viewItem.viewModel, undefined);\n\n\t\tlet scrollTop = 0;\n\t\tfor (let i = 0; i < index; i++) {\n\t\t\tscrollTop += viewItems[i].contentHeight.get() + this._spaceBetweenPx;\n\t\t}\n\t\tthis._scrollableElement.setScrollPosition({ scrollTop });\n\n\t\tconst diffEditor = viewItem.template.get()?.editor;\n\t\tconst editor = 'original' in resource ? diffEditor?.getOriginalEditor() : diffEditor?.getModifiedEditor();\n\t\tif (editor && options?.range) {\n\t\t\teditor.revealRangeInCenter(options.range);\n\t\t\thighlightRange(editor, options.range);\n\t\t}\n\t}\n\n\t/** This accounts for documents that are not loaded yet. */\n\tprivate _lastDocStates: IMultiDiffEditorViewState['docStates'];\n\n\tpublic goToNextChange(): void {\n\t\tthis._navigateToChange('next');\n\t}\n\n\tprivate _navigateToChange(direction: 'next' | 'previous'): void {\n\t\tconst viewItems = this._viewItems.get();\n\t\tif (viewItems.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeViewModel = this._viewModel.get()?.activeDiffItem.get();\n\t\tconst currentIndex = activeViewModel ? viewItems.findIndex(v => v.viewModel === activeViewModel) : -1;\n\n\t\t// Start with first file if no active item\n\t\tif (currentIndex === -1) {\n\t\t\tthis._goToFile(0, 'first');\n\t\t\treturn;\n\t\t}\n\n\t\t// Try current file first - expand if collapsed\n\t\tconst currentItem = viewItems[currentIndex];\n\t\tif (currentItem.viewModel.collapsed.get()) {\n\t\t\tcurrentItem.viewModel.collapsed.set(false, undefined);\n\t\t}\n\n\t\tconst editor = currentItem.template.get()?.editor;\n\t\tif (editor?.getDiffComputationResult()?.changes2?.length) {\n\t\t\tconst pos = editor.getModifiedEditor().getPosition()?.lineNumber || 1;\n\t\t\tconst changes = editor.getDiffComputationResult()!.changes2!;\n\t\t\tconst hasNext = direction === 'next' ? changes.some(c => c.modified.startLineNumber > pos) : changes.some(c => c.modified.endLineNumberExclusive <= pos);\n\n\t\t\tif (hasNext) {\n\t\t\t\teditor.goToDiff(direction);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Move to next/previous file\n\t\tconst nextIndex = (currentIndex + (direction === 'next' ? 1 : -1) + viewItems.length) % viewItems.length;\n\t\tthis._goToFile(nextIndex, direction === 'next' ? 'first' : 'last');\n\t}\n\n\tprivate _goToFile(index: number, position: 'first' | 'last'): void {\n\t\tconst item = this._viewItems.get()[index];\n\t\tif (item.viewModel.collapsed.get()) {\n\t\t\titem.viewModel.collapsed.set(false, undefined);\n\t\t}\n\n\t\tthis.reveal({ original: item.viewModel.originalUri, modified: item.viewModel.modifiedUri });\n\n\t\tconst editor = item.template.get()?.editor;\n\t\tif (editor?.getDiffComputationResult()?.changes2?.length) {\n\t\t\tif (position === 'first') {\n\t\t\t\teditor.revealFirstDiff();\n\t\t\t} else {\n\t\t\t\tconst lastChange = editor.getDiffComputationResult()!.changes2!.at(-1)!;\n\t\t\t\tconst modifiedEditor = editor.getModifiedEditor();\n\t\t\t\tmodifiedEditor.setPosition({ lineNumber: lastChange.modified.startLineNumber, column: 1 });\n\t\t\t\tmodifiedEditor.revealLineInCenter(lastChange.modified.startLineNumber);\n\t\t\t}\n\t\t}\n\t\teditor?.focus();\n\t}\n\n\tprivate render(reader: IReader | undefined) {\n\t\tconst scrollTop = this.scrollTop.read(reader);\n\t\tlet contentScrollOffsetToScrollOffset = 0;\n\t\tlet itemHeightSumBefore = 0;\n\t\tlet itemContentHeightSumBefore = 0;\n\t\tconst viewPortHeight = this._sizeObserver.height.read(reader);\n\t\tconst contentViewPort = OffsetRange.ofStartAndLength(scrollTop, viewPortHeight);\n\n\t\tconst width = this._sizeObserver.width.read(reader);\n\n\t\tfor (const v of this._viewItems.read(reader)) {\n\t\t\tconst itemContentHeight = v.contentHeight.read(reader);\n\t\t\tconst itemHeight = Math.min(itemContentHeight, viewPortHeight);\n\t\t\tconst itemRange = OffsetRange.ofStartAndLength(itemHeightSumBefore, itemHeight);\n\t\t\tconst itemContentRange = OffsetRange.ofStartAndLength(itemContentHeightSumBefore, itemContentHeight);\n\n\t\t\tif (itemContentRange.isBefore(contentViewPort)) {\n\t\t\t\tcontentScrollOffsetToScrollOffset -= itemContentHeight - itemHeight;\n\t\t\t\tv.hide();\n\t\t\t} else if (itemContentRange.isAfter(contentViewPort)) {\n\t\t\t\tv.hide();\n\t\t\t} else {\n\t\t\t\tconst scroll = Math.max(0, Math.min(contentViewPort.start - itemContentRange.start, itemContentHeight - itemHeight));\n\t\t\t\tcontentScrollOffsetToScrollOffset -= scroll;\n\t\t\t\tconst viewPort = OffsetRange.ofStartAndLength(scrollTop + contentScrollOffsetToScrollOffset, viewPortHeight);\n\t\t\t\tv.render(itemRange, scroll, width, viewPort);\n\t\t\t}\n\n\t\t\titemHeightSumBefore += itemHeight + this._spaceBetweenPx;\n\t\t\titemContentHeightSumBefore += itemContentHeight + this._spaceBetweenPx;\n\t\t}\n\n\t\tthis._scrollableElements.content.style.transform = `translateY(${-(scrollTop + contentScrollOffsetToScrollOffset)}px)`;\n\t}\n}\n\nfunction highlightRange(targetEditor: ICodeEditor, range: IRange) {\n\tconst modelNow = targetEditor.getModel();\n\tconst decorations = targetEditor.createDecorationsCollection([{ range, options: { description: 'symbol-navigate-action-highlight', className: 'symbolHighlight' } }]);\n\tsetTimeout(() => {\n\t\tif (targetEditor.getModel() === modelNow) {\n\t\t\tdecorations.clear();\n\t\t}\n\t}, 350);\n}\n\nexport interface IMultiDiffEditorViewState {\n\tdocStates?: Record<string, IMultiDiffDocState>;\n}\n\ninterface IMultiDiffDocState {\n\tcollapsed: boolean;\n\tselections?: ISelection[];\n}\n\nexport type IMultiDiffResourceId = { original: URI | undefined; modified: URI | undefined };\n\nclass VirtualizedViewItem extends Disposable {\n\tprivate readonly _templateRef = this._register(disposableObservableValue<IReference<DiffEditorItemTemplate> | undefined>(this, undefined));\n\n\tpublic readonly contentHeight = derived(this, reader =>\n\t\tthis._templateRef.read(reader)?.object.contentHeight?.read(reader) ?? this.viewModel.lastTemplateData.read(reader).contentHeight\n\t);\n\n\tpublic readonly maxScroll = derived(this, reader => this._templateRef.read(reader)?.object.maxScroll.read(reader) ?? { maxScroll: 0, scrollWidth: 0 });\n\n\tpublic readonly template = derived(this, reader => this._templateRef.read(reader)?.object);\n\tprivate _isHidden = observableValue(this, false);\n\n\tprivate readonly _isFocused = derived(this, reader => this.template.read(reader)?.isFocused.read(reader) ?? false);\n\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tprivate readonly _objectPool: ObjectPool<TemplateData, DiffEditorItemTemplate>,\n\t\tprivate readonly _scrollLeft: IObservable<number>,\n\t\tprivate readonly _deltaScrollVertical: (delta: number) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.viewModel.setIsFocused(this._isFocused, undefined);\n\n\t\tthis._register(autorun((reader) => {\n\t\t\tconst scrollLeft = this._scrollLeft.read(reader);\n\t\t\tthis._templateRef.read(reader)?.object.setScrollLeft(scrollLeft);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst ref = this._templateRef.read(reader);\n\t\t\tif (!ref) { return; }\n\t\t\tconst isHidden = this._isHidden.read(reader);\n\t\t\tif (!isHidden) { return; }\n\n\t\t\tconst isFocused = ref.object.isFocused.read(reader);\n\t\t\tif (isFocused) { return; }\n\n\t\t\tthis._clear();\n\t\t}));\n\t}\n\n\toverride dispose(): void {\n\t\tthis._clear();\n\t\tsuper.dispose();\n\t}\n\n\tpublic override toString(): string {\n\t\treturn `VirtualViewItem(${this.viewModel.documentDiffItem.modified?.uri.toString()})`;\n\t}\n\n\tpublic getKey(): string {\n\t\treturn this.viewModel.getKey();\n\t}\n\n\tpublic setViewState(viewState: IMultiDiffDocState, tx: ITransaction): void {\n\t\tthis.viewModel.collapsed.set(viewState.collapsed, tx);\n\n\t\tthis._updateTemplateData(tx);\n\t\tconst data = this.viewModel.lastTemplateData.get();\n\t\tconst selections = viewState.selections?.map(Selection.liftSelection);\n\t\tthis.viewModel.lastTemplateData.set({\n\t\t\t...data,\n\t\t\tselections,\n\t\t}, tx);\n\t\tconst ref = this._templateRef.get();\n\t\tif (ref) {\n\t\t\tif (selections) {\n\t\t\t\tref.object.editor.setSelections(selections);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _updateTemplateData(tx: ITransaction): void {\n\t\tconst ref = this._templateRef.get();\n\t\tif (!ref) { return; }\n\t\tthis.viewModel.lastTemplateData.set({\n\t\t\tcontentHeight: ref.object.contentHeight.get(),\n\t\t\tselections: ref.object.editor.getSelections() ?? undefined,\n\t\t}, tx);\n\t}\n\n\tprivate _clear(): void {\n\t\tconst ref = this._templateRef.get();\n\t\tif (!ref) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._updateTemplateData(tx);\n\t\t\tref.object.hide();\n\t\t\tthis._templateRef.set(undefined, tx);\n\t\t});\n\t}\n\n\tpublic hide(): void {\n\t\tthis._isHidden.set(true, undefined);\n\t}\n\n\tpublic render(verticalSpace: OffsetRange, offset: number, width: number, viewPort: OffsetRange): void {\n\t\tthis._isHidden.set(false, undefined);\n\n\t\tlet ref = this._templateRef.get();\n\t\tif (!ref) {\n\t\t\tref = this._objectPool.getUnusedObj(new TemplateData(this.viewModel, this._deltaScrollVertical));\n\t\t\tthis._templateRef.set(ref, undefined);\n\n\t\t\tconst selections = this.viewModel.lastTemplateData.get().selections;\n\t\t\tif (selections) {\n\t\t\t\tref.object.editor.setSelections(selections);\n\t\t\t}\n\t\t}\n\t\tref.object.render(verticalSpace, width, offset, viewPort);\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.ts"],"names":[],"mappings":"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","file":"multiDiffEditorWidgetImpl.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 { Dimension, getWindow, h, scheduleAtNextAnimationFrame } from '../../../../base/browser/dom.js';\nimport { SmoothScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { findFirstMax } from '../../../../base/common/arraysFind.js';\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { Disposable, IReference, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IObservable, IReader, ITransaction, autorun, autorunWithStore, derived, disposableObservableValue, globalTransaction, observableFromEvent, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { Scrollable, ScrollbarVisibility } from '../../../../base/common/scrollable.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { localize } from '../../../../nls.js';\nimport { ContextKeyValue, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\nimport { IRange } from '../../../common/core/range.js';\nimport { ISelection, Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ICodeEditor } from '../../editorBrowser.js';\nimport { ObservableElementSizeObserver } from '../diffEditor/utils.js';\nimport { DiffEditorItemTemplate, TemplateData } from './diffEditorItemTemplate.js';\nimport { DocumentDiffItemViewModel, MultiDiffEditorViewModel } from './multiDiffEditorViewModel.js';\nimport { RevealOptions } from './multiDiffEditorWidget.js';\nimport { ObjectPool } from './objectPool.js';\nimport './style.css';\nimport { IWorkbenchUIElementFactory } from './workbenchUIElementFactory.js';\n\nexport class MultiDiffEditorWidgetImpl extends Disposable {\n\tprivate readonly _scrollableElements;\n\n\tprivate readonly _scrollable;\n\n\tprivate readonly _scrollableElement;\n\n\tprivate readonly _elements;\n\n\tprivate readonly _sizeObserver;\n\n\tprivate readonly _objectPool;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tprivate readonly _viewItemsInfo;\n\n\tprivate readonly _viewItems;\n\n\tprivate readonly _spaceBetweenPx;\n\n\tprivate readonly _totalHeight;\n\tpublic readonly activeControl;\n\n\tprivate readonly _contextKeyService;\n\tprivate readonly _instantiationService;\n\n\tconstructor(\n\t\tprivate readonly _element: HTMLElement,\n\t\tprivate readonly _dimension: IObservable<Dimension | undefined>,\n\t\tprivate readonly _viewModel: IObservable<MultiDiffEditorViewModel | undefined>,\n\t\tprivate readonly _workbenchUIElementFactory: IWorkbenchUIElementFactory,\n\t\t@IContextKeyService private readonly _parentContextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _parentInstantiationService: IInstantiationService,\n\t) {\n\t\tsuper();\n\t\tthis._scrollableElements = h('div.scrollContent', [\n\t\t\th('div@content', {\n\t\t\t\tstyle: {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t}\n\t\t\t}),\n\t\t\th('div.monaco-editor@overflowWidgetsDomNode', {\n\t\t\t}),\n\t\t]);\n\t\tthis._scrollable = this._register(new Scrollable({\n\t\t\tforceIntegerValues: false,\n\t\t\tscheduleAtNextAnimationFrame: (cb) => scheduleAtNextAnimationFrame(getWindow(this._element), cb),\n\t\t\tsmoothScrollDuration: 100,\n\t\t}));\n\t\tthis._scrollableElement = this._register(new SmoothScrollableElement(this._scrollableElements.root, {\n\t\t\tvertical: ScrollbarVisibility.Auto,\n\t\t\thorizontal: ScrollbarVisibility.Auto,\n\t\t\tuseShadows: false,\n\t\t}, this._scrollable));\n\t\tthis._elements = h('div.monaco-component.multiDiffEditor', {}, [\n\t\t\th('div', {}, [this._scrollableElement.getDomNode()]),\n\t\t\th('div.placeholder@placeholder', {}, [h('div')]),\n\t\t]);\n\t\tthis._sizeObserver = this._register(new ObservableElementSizeObserver(this._element, undefined));\n\t\tthis._objectPool = this._register(new ObjectPool<TemplateData, DiffEditorItemTemplate>((data) => {\n\t\t\tconst template = this._instantiationService.createInstance(\n\t\t\t\tDiffEditorItemTemplate,\n\t\t\t\tthis._scrollableElements.content,\n\t\t\t\tthis._scrollableElements.overflowWidgetsDomNode,\n\t\t\t\tthis._workbenchUIElementFactory\n\t\t\t);\n\t\t\ttemplate.setData(data);\n\t\t\treturn template;\n\t\t}));\n\t\tthis.scrollTop = observableFromEvent(this, this._scrollableElement.onScroll, () => /** @description scrollTop */ this._scrollableElement.getScrollPosition().scrollTop);\n\t\tthis.scrollLeft = observableFromEvent(this, this._scrollableElement.onScroll, () => /** @description scrollLeft */ this._scrollableElement.getScrollPosition().scrollLeft);\n\t\tthis._viewItemsInfo = derived<{ items: readonly VirtualizedViewItem[]; getItem: (viewModel: DocumentDiffItemViewModel) => VirtualizedViewItem }>(this,\n\t\t\t(reader) => {\n\t\t\t\tconst vm = this._viewModel.read(reader);\n\t\t\t\tif (!vm) {\n\t\t\t\t\treturn { items: [], getItem: _d => { throw new BugIndicatingError(); } };\n\t\t\t\t}\n\t\t\t\tconst viewModels = vm.items.read(reader);\n\t\t\t\tconst map = new Map<DocumentDiffItemViewModel, VirtualizedViewItem>();\n\t\t\t\tconst items = viewModels.map(d => {\n\t\t\t\t\tconst item = reader.store.add(new VirtualizedViewItem(d, this._objectPool, this.scrollLeft, delta => {\n\t\t\t\t\t\tthis._scrollableElement.setScrollPosition({ scrollTop: this._scrollableElement.getScrollPosition().scrollTop + delta });\n\t\t\t\t\t}));\n\t\t\t\t\tconst data = this._lastDocStates?.[item.getKey()];\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\ttransaction(tx => {\n\t\t\t\t\t\t\titem.setViewState(data, tx);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tmap.set(d, item);\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\t\t\t\treturn { items, getItem: d => map.get(d)! };\n\t\t\t}\n\t\t);\n\t\tthis._viewItems = this._viewItemsInfo.map(this, items => items.items);\n\t\tthis._spaceBetweenPx = 0;\n\t\tthis._totalHeight = this._viewItems.map(this, (items, reader) => items.reduce((r, i) => r + i.contentHeight.read(reader) + this._spaceBetweenPx, 0));\n\t\tthis.activeControl = derived(this, reader => {\n\t\t\tconst activeDiffItem = this._viewModel.read(reader)?.activeDiffItem.read(reader);\n\t\t\tif (!activeDiffItem) { return undefined; }\n\t\t\tconst viewItem = this._viewItemsInfo.read(reader).getItem(activeDiffItem);\n\t\t\treturn viewItem.template.read(reader)?.editor;\n\t\t});\n\t\tthis._contextKeyService = this._register(this._parentContextKeyService.createScoped(this._element));\n\t\tthis._instantiationService = this._register(this._parentInstantiationService.createChild(\n\t\t\tnew ServiceCollection([IContextKeyService, this._contextKeyService])\n\t\t));\n\n\t\tthis._contextKeyService.createKey(EditorContextKeys.inMultiDiffEditor.key, true);\n\n\t\tthis._lastDocStates = {};\n\n\t\tthis._register(autorunWithStore((reader, store) => {\n\t\t\tconst viewModel = this._viewModel.read(reader);\n\t\t\tif (viewModel && viewModel.contextKeys) {\n\t\t\t\tfor (const [key, value] of Object.entries(viewModel.contextKeys)) {\n\t\t\t\t\tconst contextKey = this._contextKeyService.createKey<ContextKeyValue>(key, undefined);\n\t\t\t\t\tcontextKey.set(value);\n\t\t\t\t\tstore.add(toDisposable(() => contextKey.reset()));\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tconst ctxAllCollapsed = this._parentContextKeyService.createKey<boolean>(EditorContextKeys.multiDiffEditorAllCollapsed.key, false);\n\t\tthis._register(autorun((reader) => {\n\t\t\tconst viewModel = this._viewModel.read(reader);\n\t\t\tif (viewModel) {\n\t\t\t\tconst allCollapsed = viewModel.items.read(reader).every(item => item.collapsed.read(reader));\n\t\t\t\tctxAllCollapsed.set(allCollapsed);\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(autorun((reader) => {\n\t\t\t/** @description Update widget dimension */\n\t\t\tconst dimension = this._dimension.read(reader);\n\t\t\tthis._sizeObserver.observe(dimension);\n\t\t}));\n\n\t\tconst placeholderMessage = derived(reader => {\n\t\t\tconst items = this._viewItems.read(reader);\n\t\t\tif (items.length > 0) { return undefined; }\n\n\t\t\tconst vm = this._viewModel.read(reader);\n\t\t\treturn (!vm || vm.isLoading.read(reader))\n\t\t\t\t? localize('loading', 'Loading...')\n\t\t\t\t: localize('noChangedFiles', 'No Changed Files');\n\t\t});\n\n\t\tthis._register(autorun((reader) => {\n\t\t\tconst message = placeholderMessage.read(reader);\n\t\t\tthis._elements.placeholder.innerText = message ?? '';\n\t\t\tthis._elements.placeholder.classList.toggle('visible', !!message);\n\t\t}));\n\n\t\tthis._scrollableElements.content.style.position = 'relative';\n\n\t\tthis._register(autorun((reader) => {\n\t\t\t/** @description Update scroll dimensions */\n\t\t\tconst height = this._sizeObserver.height.read(reader);\n\t\t\tthis._scrollableElements.root.style.height = `${height}px`;\n\t\t\tconst totalHeight = this._totalHeight.read(reader);\n\t\t\tthis._scrollableElements.content.style.height = `${totalHeight}px`;\n\n\t\t\tconst width = this._sizeObserver.width.read(reader);\n\n\t\t\tlet scrollWidth = width;\n\t\t\tconst viewItems = this._viewItems.read(reader);\n\t\t\tconst max = findFirstMax(viewItems, compareBy(i => i.maxScroll.read(reader).maxScroll, numberComparator));\n\t\t\tif (max) {\n\t\t\t\tconst maxScroll = max.maxScroll.read(reader);\n\t\t\t\tscrollWidth = width + maxScroll.maxScroll;\n\t\t\t}\n\n\t\t\tthis._scrollableElement.setScrollDimensions({\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tscrollHeight: totalHeight,\n\t\t\t\tscrollWidth,\n\t\t\t});\n\t\t}));\n\n\t\t_element.replaceChildren(this._elements.root);\n\t\tthis._register(toDisposable(() => {\n\t\t\t_element.replaceChildren();\n\t\t}));\n\n\t\t// Automatically select the first change in the first file when items are loaded\n\t\tthis._register(autorun(reader => {\n\t\t\t/** @description Initialize first change */\n\t\t\tconst viewModel = this._viewModel.read(reader);\n\t\t\tif (!viewModel) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only initialize when loading is complete\n\t\t\tif (!viewModel.isLoading.read(reader)) {\n\t\t\t\tconst items = viewModel.items.read(reader);\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only initialize if there's no active item yet\n\t\t\t\tconst activeDiffItem = viewModel.activeDiffItem.read(reader);\n\t\t\t\tif (activeDiffItem) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Navigate to the first change using the existing navigation logic\n\t\t\t\tthis.goToNextChange();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this._register(autorun(reader => {\n\t\t\t/** @description Render all */\n\t\t\tglobalTransaction(tx => {\n\t\t\t\tthis.render(reader);\n\t\t\t});\n\t\t})));\n\t}\n\tpublic reveal(resource: IMultiDiffResourceId, options?: RevealOptions): void {\n\t\tconst viewItems = this._viewItems.get();\n\t\tconst index = viewItems.findIndex(\n\t\t\t(item) => item.viewModel.originalUri?.toString() === resource.original?.toString()\n\t\t\t\t&& item.viewModel.modifiedUri?.toString() === resource.modified?.toString()\n\t\t);\n\t\tif (index === -1) {\n\t\t\tthrow new BugIndicatingError('Resource not found in diff editor');\n\t\t}\n\t\tconst viewItem = viewItems[index];\n\t\tthis._viewModel.get()!.activeDiffItem.setCache(viewItem.viewModel, undefined);\n\n\t\tlet scrollTop = 0;\n\t\tfor (let i = 0; i < index; i++) {\n\t\t\tscrollTop += viewItems[i].contentHeight.get() + this._spaceBetweenPx;\n\t\t}\n\t\tthis._scrollableElement.setScrollPosition({ scrollTop });\n\n\t\tconst diffEditor = viewItem.template.get()?.editor;\n\t\tconst editor = 'original' in resource ? diffEditor?.getOriginalEditor() : diffEditor?.getModifiedEditor();\n\t\tif (editor && options?.range) {\n\t\t\teditor.revealRangeInCenter(options.range);\n\t\t\thighlightRange(editor, options.range);\n\t\t}\n\t}\n\n\t/** This accounts for documents that are not loaded yet. */\n\tprivate _lastDocStates: IMultiDiffEditorViewState['docStates'];\n\n\tpublic goToNextChange(): void {\n\t\tthis._navigateToChange('next');\n\t}\n\n\tprivate _navigateToChange(direction: 'next' | 'previous'): void {\n\t\tconst viewItems = this._viewItems.get();\n\t\tif (viewItems.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeViewModel = this._viewModel.get()?.activeDiffItem.get();\n\t\tconst currentIndex = activeViewModel ? viewItems.findIndex(v => v.viewModel === activeViewModel) : -1;\n\n\t\t// Start with first file if no active item\n\t\tif (currentIndex === -1) {\n\t\t\tthis._goToFile(0, 'first');\n\t\t\treturn;\n\t\t}\n\n\t\t// Try current file first - expand if collapsed\n\t\tconst currentItem = viewItems[currentIndex];\n\t\tif (currentItem.viewModel.collapsed.get()) {\n\t\t\tcurrentItem.viewModel.collapsed.set(false, undefined);\n\t\t}\n\n\t\tconst editor = currentItem.template.get()?.editor;\n\t\tif (editor?.getDiffComputationResult()?.changes2?.length) {\n\t\t\tconst pos = editor.getModifiedEditor().getPosition()?.lineNumber || 1;\n\t\t\tconst changes = editor.getDiffComputationResult()!.changes2!;\n\t\t\tconst hasNext = direction === 'next' ? changes.some(c => c.modified.startLineNumber > pos) : changes.some(c => c.modified.endLineNumberExclusive <= pos);\n\n\t\t\tif (hasNext) {\n\t\t\t\teditor.goToDiff(direction);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Move to next/previous file\n\t\tconst nextIndex = (currentIndex + (direction === 'next' ? 1 : -1) + viewItems.length) % viewItems.length;\n\t\tthis._goToFile(nextIndex, direction === 'next' ? 'first' : 'last');\n\t}\n\n\tprivate _goToFile(index: number, position: 'first' | 'last'): void {\n\t\tconst item = this._viewItems.get()[index];\n\t\tif (item.viewModel.collapsed.get()) {\n\t\t\titem.viewModel.collapsed.set(false, undefined);\n\t\t}\n\n\t\tthis.reveal({ original: item.viewModel.originalUri, modified: item.viewModel.modifiedUri });\n\n\t\tconst editor = item.template.get()?.editor;\n\t\tif (editor?.getDiffComputationResult()?.changes2?.length) {\n\t\t\tif (position === 'first') {\n\t\t\t\teditor.revealFirstDiff();\n\t\t\t} else {\n\t\t\t\tconst lastChange = editor.getDiffComputationResult()!.changes2!.at(-1)!;\n\t\t\t\tconst modifiedEditor = editor.getModifiedEditor();\n\t\t\t\tmodifiedEditor.setPosition({ lineNumber: lastChange.modified.startLineNumber, column: 1 });\n\t\t\t\tmodifiedEditor.revealLineInCenter(lastChange.modified.startLineNumber);\n\t\t\t}\n\t\t}\n\t\teditor?.focus();\n\t}\n\n\tprivate render(reader: IReader | undefined) {\n\t\tconst scrollTop = this.scrollTop.read(reader);\n\t\tlet contentScrollOffsetToScrollOffset = 0;\n\t\tlet itemHeightSumBefore = 0;\n\t\tlet itemContentHeightSumBefore = 0;\n\t\tconst viewPortHeight = this._sizeObserver.height.read(reader);\n\t\tconst contentViewPort = OffsetRange.ofStartAndLength(scrollTop, viewPortHeight);\n\n\t\tconst width = this._sizeObserver.width.read(reader);\n\n\t\tfor (const v of this._viewItems.read(reader)) {\n\t\t\tconst itemContentHeight = v.contentHeight.read(reader);\n\t\t\tconst itemHeight = Math.min(itemContentHeight, viewPortHeight);\n\t\t\tconst itemRange = OffsetRange.ofStartAndLength(itemHeightSumBefore, itemHeight);\n\t\t\tconst itemContentRange = OffsetRange.ofStartAndLength(itemContentHeightSumBefore, itemContentHeight);\n\n\t\t\tif (itemContentRange.isBefore(contentViewPort)) {\n\t\t\t\tcontentScrollOffsetToScrollOffset -= itemContentHeight - itemHeight;\n\t\t\t\tv.hide();\n\t\t\t} else if (itemContentRange.isAfter(contentViewPort)) {\n\t\t\t\tv.hide();\n\t\t\t} else {\n\t\t\t\tconst scroll = Math.max(0, Math.min(contentViewPort.start - itemContentRange.start, itemContentHeight - itemHeight));\n\t\t\t\tcontentScrollOffsetToScrollOffset -= scroll;\n\t\t\t\tconst viewPort = OffsetRange.ofStartAndLength(scrollTop + contentScrollOffsetToScrollOffset, viewPortHeight);\n\t\t\t\tv.render(itemRange, scroll, width, viewPort);\n\t\t\t}\n\n\t\t\titemHeightSumBefore += itemHeight + this._spaceBetweenPx;\n\t\t\titemContentHeightSumBefore += itemContentHeight + this._spaceBetweenPx;\n\t\t}\n\n\t\tthis._scrollableElements.content.style.transform = `translateY(${-(scrollTop + contentScrollOffsetToScrollOffset)}px)`;\n\t}\n}\n\nfunction highlightRange(targetEditor: ICodeEditor, range: IRange) {\n\tconst modelNow = targetEditor.getModel();\n\tconst decorations = targetEditor.createDecorationsCollection([{ range, options: { description: 'symbol-navigate-action-highlight', className: 'symbolHighlight' } }]);\n\tsetTimeout(() => {\n\t\tif (targetEditor.getModel() === modelNow) {\n\t\t\tdecorations.clear();\n\t\t}\n\t}, 350);\n}\n\nexport interface IMultiDiffEditorViewState {\n\tdocStates?: Record<string, IMultiDiffDocState>;\n}\n\ninterface IMultiDiffDocState {\n\tcollapsed: boolean;\n\tselections?: ISelection[];\n}\n\nexport type IMultiDiffResourceId = { original: URI | undefined; modified: URI | undefined };\n\nclass VirtualizedViewItem extends Disposable {\n\tprivate readonly _templateRef = this._register(disposableObservableValue<IReference<DiffEditorItemTemplate> | undefined>(this, undefined));\n\n\tpublic readonly contentHeight = derived(this, reader =>\n\t\tthis._templateRef.read(reader)?.object.contentHeight?.read(reader) ?? this.viewModel.lastTemplateData.read(reader).contentHeight\n\t);\n\n\tpublic readonly maxScroll = derived(this, reader => this._templateRef.read(reader)?.object.maxScroll.read(reader) ?? { maxScroll: 0, scrollWidth: 0 });\n\n\tpublic readonly template = derived(this, reader => this._templateRef.read(reader)?.object);\n\tprivate _isHidden = observableValue(this, false);\n\n\tprivate readonly _isFocused = derived(this, reader => this.template.read(reader)?.isFocused.read(reader) ?? false);\n\n\tconstructor(\n\t\tpublic readonly viewModel: DocumentDiffItemViewModel,\n\t\tprivate readonly _objectPool: ObjectPool<TemplateData, DiffEditorItemTemplate>,\n\t\tprivate readonly _scrollLeft: IObservable<number>,\n\t\tprivate readonly _deltaScrollVertical: (delta: number) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.viewModel.setIsFocused(this._isFocused, undefined);\n\n\t\tthis._register(autorun((reader) => {\n\t\t\tconst scrollLeft = this._scrollLeft.read(reader);\n\t\t\tthis._templateRef.read(reader)?.object.setScrollLeft(scrollLeft);\n\t\t}));\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst ref = this._templateRef.read(reader);\n\t\t\tif (!ref) { return; }\n\t\t\tconst isHidden = this._isHidden.read(reader);\n\t\t\tif (!isHidden) { return; }\n\n\t\t\tconst isFocused = ref.object.isFocused.read(reader);\n\t\t\tif (isFocused) { return; }\n\n\t\t\tthis._clear();\n\t\t}));\n\t}\n\n\toverride dispose(): void {\n\t\tthis._clear();\n\t\tsuper.dispose();\n\t}\n\n\tpublic override toString(): string {\n\t\treturn `VirtualViewItem(${this.viewModel.documentDiffItem.modified?.uri.toString()})`;\n\t}\n\n\tpublic getKey(): string {\n\t\treturn this.viewModel.getKey();\n\t}\n\n\tpublic setViewState(viewState: IMultiDiffDocState, tx: ITransaction): void {\n\t\tthis.viewModel.collapsed.set(viewState.collapsed, tx);\n\n\t\tthis._updateTemplateData(tx);\n\t\tconst data = this.viewModel.lastTemplateData.get();\n\t\tconst selections = viewState.selections?.map(Selection.liftSelection);\n\t\tthis.viewModel.lastTemplateData.set({\n\t\t\t...data,\n\t\t\tselections,\n\t\t}, tx);\n\t\tconst ref = this._templateRef.get();\n\t\tif (ref) {\n\t\t\tif (selections) {\n\t\t\t\tref.object.editor.setSelections(selections);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _updateTemplateData(tx: ITransaction): void {\n\t\tconst ref = this._templateRef.get();\n\t\tif (!ref) { return; }\n\t\tthis.viewModel.lastTemplateData.set({\n\t\t\tcontentHeight: ref.object.contentHeight.get(),\n\t\t\tselections: ref.object.editor.getSelections() ?? undefined,\n\t\t}, tx);\n\t}\n\n\tprivate _clear(): void {\n\t\tconst ref = this._templateRef.get();\n\t\tif (!ref) { return; }\n\t\ttransaction(tx => {\n\t\t\tthis._updateTemplateData(tx);\n\t\t\tref.object.hide();\n\t\t\tthis._templateRef.set(undefined, tx);\n\t\t});\n\t}\n\n\tpublic hide(): void {\n\t\tthis._isHidden.set(true, undefined);\n\t}\n\n\tpublic render(verticalSpace: OffsetRange, offset: number, width: number, viewPort: OffsetRange): void {\n\t\tthis._isHidden.set(false, undefined);\n\n\t\tlet ref = this._templateRef.get();\n\t\tif (!ref) {\n\t\t\tref = this._objectPool.getUnusedObj(new TemplateData(this.viewModel, this._deltaScrollVertical));\n\t\t\tthis._templateRef.set(ref, undefined);\n\n\t\t\tconst selections = this.viewModel.lastTemplateData.get().selections;\n\t\t\tif (selections) {\n\t\t\t\tref.object.editor.setSelections(selections);\n\t\t\t}\n\t\t}\n\t\tref.object.render(verticalSpace, width, offset, viewPort);\n\t}\n}\n"]}
@@ -34,6 +34,54 @@
34
34
  }
35
35
  }
36
36
 
37
+ > .multi-diff-root-floating-menu {
38
+ position: absolute;
39
+ right: 32px;
40
+ bottom: 32px;
41
+ top: auto;
42
+ left: auto;
43
+ height: auto;
44
+ width: auto;
45
+ padding: 4px 6px;
46
+ color: var(--vscode-button-foreground);
47
+ background-color: var(--vscode-button-background);
48
+ border-radius: 4px;
49
+ border: 1px solid var(--vscode-contrastBorder);
50
+ display: flex;
51
+ align-items: center;
52
+ z-index: 10;
53
+ box-shadow: 0 3px 12px var(--vscode-widget-shadow);
54
+ overflow: hidden;
55
+ }
56
+
57
+ .multi-diff-root-floating-menu .action-item > .action-label {
58
+ padding: 7px 8px;
59
+ font-size: 15px;
60
+ border-radius: 2px;
61
+ }
62
+
63
+ .multi-diff-root-floating-menu .action-item > .action-label.codicon {
64
+ color: var(--vscode-button-foreground);
65
+ }
66
+
67
+ .multi-diff-root-floating-menu .action-item > .action-label.codicon:not(.separator) {
68
+ padding-top: 6px;
69
+ padding-bottom: 6px;
70
+ }
71
+
72
+ .multi-diff-root-floating-menu .action-item:first-child > .action-label {
73
+ padding-left: 7px;
74
+ }
75
+
76
+ .multi-diff-root-floating-menu .action-item:last-child > .action-label {
77
+ padding-right: 7px;
78
+ }
79
+
80
+ .multi-diff-root-floating-menu .action-item .action-label.separator {
81
+ background-color: var(--vscode-button-separator);
82
+ }
83
+
84
+
37
85
  .active {
38
86
  --vscode-multiDiffEditor-border: var(--vscode-focusBorder);
39
87
  }
@@ -156,7 +156,7 @@ export const DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \'Courier New\', monospac
156
156
  /**
157
157
  * @internal
158
158
  */
159
- export const DEFAULT_LINUX_FONT_FAMILY = '\'Droid Sans Mono\', \'monospace\', monospace';
159
+ export const DEFAULT_LINUX_FONT_FAMILY = '\'Droid Sans Mono\', monospace';
160
160
  /**
161
161
  * @internal
162
162
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/config/fontInfo.ts","vs/editor/common/config/fontInfo.ts"],"names":[],"mappings":"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","file":"fontInfo.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 * as platform from '../../../base/common/platform.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from './editorOptions.js';\nimport { EditorZoom } from './editorZoom.js';\n\n/**\n * Determined from empirical observations.\n * @internal\n */\nexport const GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35;\n\n/**\n * @internal\n */\nexport const MINIMUM_LINE_HEIGHT = 8;\n\n/**\n * @internal\n */\nexport interface IValidatedEditorOptions {\n\tget<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;\n}\n\nexport class BareFontInfo {\n\treadonly _bareFontInfoBrand: void = undefined;\n\n\t/**\n\t * @internal\n\t */\n\tpublic static _create(fontFamily: string, fontWeight: string, fontSize: number, fontFeatureSettings: string, fontVariationSettings: string, lineHeight: number, letterSpacing: number, pixelRatio: number, ignoreEditorZoom: boolean): BareFontInfo {\n\t\tif (lineHeight === 0) {\n\t\t\tlineHeight = GOLDEN_LINE_HEIGHT_RATIO * fontSize;\n\t\t} else if (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\t// Values too small to be line heights in pixels are in ems.\n\t\t\tlineHeight = lineHeight * fontSize;\n\t\t}\n\n\t\t// Enforce integer, minimum constraints\n\t\tlineHeight = Math.round(lineHeight);\n\t\tif (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\tlineHeight = MINIMUM_LINE_HEIGHT;\n\t\t}\n\n\t\tconst editorZoomLevelMultiplier = 1 + (ignoreEditorZoom ? 0 : EditorZoom.getZoomLevel() * 0.1);\n\t\tfontSize *= editorZoomLevelMultiplier;\n\t\tlineHeight *= editorZoomLevelMultiplier;\n\n\t\tif (fontVariationSettings === FONT_VARIATION_TRANSLATE) {\n\t\t\tif (fontWeight === 'normal' || fontWeight === 'bold') {\n\t\t\t\tfontVariationSettings = FONT_VARIATION_OFF;\n\t\t\t} else {\n\t\t\t\tconst fontWeightAsNumber = parseInt(fontWeight, 10);\n\t\t\t\tfontVariationSettings = `'wght' ${fontWeightAsNumber}`;\n\t\t\t\tfontWeight = 'normal';\n\t\t\t}\n\t\t}\n\n\t\treturn new BareFontInfo({\n\t\t\tpixelRatio: pixelRatio,\n\t\t\tfontFamily: fontFamily,\n\t\t\tfontWeight: fontWeight,\n\t\t\tfontSize: fontSize,\n\t\t\tfontFeatureSettings: fontFeatureSettings,\n\t\t\tfontVariationSettings,\n\t\t\tlineHeight: lineHeight,\n\t\t\tletterSpacing: letterSpacing\n\t\t});\n\t}\n\n\treadonly pixelRatio: number;\n\treadonly fontFamily: string;\n\treadonly fontWeight: string;\n\treadonly fontSize: number;\n\treadonly fontFeatureSettings: string;\n\treadonly fontVariationSettings: string;\n\treadonly lineHeight: number;\n\treadonly letterSpacing: number;\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t}) {\n\t\tthis.pixelRatio = opts.pixelRatio;\n\t\tthis.fontFamily = String(opts.fontFamily);\n\t\tthis.fontWeight = String(opts.fontWeight);\n\t\tthis.fontSize = opts.fontSize;\n\t\tthis.fontFeatureSettings = opts.fontFeatureSettings;\n\t\tthis.fontVariationSettings = opts.fontVariationSettings;\n\t\tthis.lineHeight = opts.lineHeight | 0;\n\t\tthis.letterSpacing = opts.letterSpacing;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getId(): string {\n\t\treturn `${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getMassagedFontFamily(): string {\n\t\tconst fallbackFontFamily = EDITOR_FONT_DEFAULTS.fontFamily;\n\t\tconst fontFamily = BareFontInfo._wrapInQuotes(this.fontFamily);\n\t\tif (fallbackFontFamily && this.fontFamily !== fallbackFontFamily) {\n\t\t\treturn `${fontFamily}, ${fallbackFontFamily}`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n\n\tprivate static _wrapInQuotes(fontFamily: string): string {\n\t\tif (/[,\"']/.test(fontFamily)) {\n\t\t\t// Looks like the font family might be already escaped\n\t\t\treturn fontFamily;\n\t\t}\n\t\tif (/[+ ]/.test(fontFamily)) {\n\t\t\t// Wrap a font family using + or <space> with quotes\n\t\t\treturn `\"${fontFamily}\"`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n}\n\n// change this whenever `FontInfo` members are changed\nexport const SERIALIZED_FONT_INFO_VERSION = 2;\n\nexport class FontInfo extends BareFontInfo {\n\treadonly _editorStylingBrand: void = undefined;\n\n\treadonly version: number = SERIALIZED_FONT_INFO_VERSION;\n\treadonly isTrusted: boolean;\n\treadonly isMonospace: boolean;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly typicalFullwidthCharacterWidth: number;\n\treadonly canUseHalfwidthRightwardsArrow: boolean;\n\treadonly spaceWidth: number;\n\treadonly middotWidth: number;\n\treadonly wsmiddotWidth: number;\n\treadonly maxDigitWidth: number;\n\n\t/**\n\t * @internal\n\t */\n\tconstructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t\tisMonospace: boolean;\n\t\ttypicalHalfwidthCharacterWidth: number;\n\t\ttypicalFullwidthCharacterWidth: number;\n\t\tcanUseHalfwidthRightwardsArrow: boolean;\n\t\tspaceWidth: number;\n\t\tmiddotWidth: number;\n\t\twsmiddotWidth: number;\n\t\tmaxDigitWidth: number;\n\t}, isTrusted: boolean) {\n\t\tsuper(opts);\n\t\tthis.isTrusted = isTrusted;\n\t\tthis.isMonospace = opts.isMonospace;\n\t\tthis.typicalHalfwidthCharacterWidth = opts.typicalHalfwidthCharacterWidth;\n\t\tthis.typicalFullwidthCharacterWidth = opts.typicalFullwidthCharacterWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = opts.canUseHalfwidthRightwardsArrow;\n\t\tthis.spaceWidth = opts.spaceWidth;\n\t\tthis.middotWidth = opts.middotWidth;\n\t\tthis.wsmiddotWidth = opts.wsmiddotWidth;\n\t\tthis.maxDigitWidth = opts.maxDigitWidth;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic equals(other: FontInfo): boolean {\n\t\treturn (\n\t\t\tthis.fontFamily === other.fontFamily\n\t\t\t&& this.fontWeight === other.fontWeight\n\t\t\t&& this.fontSize === other.fontSize\n\t\t\t&& this.fontFeatureSettings === other.fontFeatureSettings\n\t\t\t&& this.fontVariationSettings === other.fontVariationSettings\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.letterSpacing === other.letterSpacing\n\t\t\t&& this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\n\t\t\t&& this.typicalFullwidthCharacterWidth === other.typicalFullwidthCharacterWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.maxDigitWidth === other.maxDigitWidth\n\t\t);\n\t}\n}\n/**\n * @internal\n */\nexport const FONT_VARIATION_OFF = 'normal';\n/**\n * @internal\n */\nexport const FONT_VARIATION_TRANSLATE = 'translate';\n\n/**\n * @internal\n */\nexport const DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_LINUX_FONT_FAMILY = '\\'Droid Sans Mono\\', \\'monospace\\', monospace';\n/**\n * @internal\n */\nexport const EDITOR_FONT_DEFAULTS = {\n\tfontFamily: (\n\t\tplatform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isWindows ? DEFAULT_WINDOWS_FONT_FAMILY : DEFAULT_LINUX_FONT_FAMILY)\n\t),\n\tfontWeight: 'normal',\n\tfontSize: (\n\t\tplatform.isMacintosh ? 12 : 14\n\t),\n\tlineHeight: 0,\n\tletterSpacing: 0,\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as platform from '../../../base/common/platform.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from './editorOptions.js';\nimport { EditorZoom } from './editorZoom.js';\n\n/**\n * Determined from empirical observations.\n * @internal\n */\nexport const GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35;\n\n/**\n * @internal\n */\nexport const MINIMUM_LINE_HEIGHT = 8;\n\n/**\n * @internal\n */\nexport interface IValidatedEditorOptions {\n\tget<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;\n}\n\nexport class BareFontInfo {\n\treadonly _bareFontInfoBrand: void = undefined;\n\n\t/**\n\t * @internal\n\t */\n\tpublic static _create(fontFamily: string, fontWeight: string, fontSize: number, fontFeatureSettings: string, fontVariationSettings: string, lineHeight: number, letterSpacing: number, pixelRatio: number, ignoreEditorZoom: boolean): BareFontInfo {\n\t\tif (lineHeight === 0) {\n\t\t\tlineHeight = GOLDEN_LINE_HEIGHT_RATIO * fontSize;\n\t\t} else if (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\t// Values too small to be line heights in pixels are in ems.\n\t\t\tlineHeight = lineHeight * fontSize;\n\t\t}\n\n\t\t// Enforce integer, minimum constraints\n\t\tlineHeight = Math.round(lineHeight);\n\t\tif (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\tlineHeight = MINIMUM_LINE_HEIGHT;\n\t\t}\n\n\t\tconst editorZoomLevelMultiplier = 1 + (ignoreEditorZoom ? 0 : EditorZoom.getZoomLevel() * 0.1);\n\t\tfontSize *= editorZoomLevelMultiplier;\n\t\tlineHeight *= editorZoomLevelMultiplier;\n\n\t\tif (fontVariationSettings === FONT_VARIATION_TRANSLATE) {\n\t\t\tif (fontWeight === 'normal' || fontWeight === 'bold') {\n\t\t\t\tfontVariationSettings = FONT_VARIATION_OFF;\n\t\t\t} else {\n\t\t\t\tconst fontWeightAsNumber = parseInt(fontWeight, 10);\n\t\t\t\tfontVariationSettings = `'wght' ${fontWeightAsNumber}`;\n\t\t\t\tfontWeight = 'normal';\n\t\t\t}\n\t\t}\n\n\t\treturn new BareFontInfo({\n\t\t\tpixelRatio: pixelRatio,\n\t\t\tfontFamily: fontFamily,\n\t\t\tfontWeight: fontWeight,\n\t\t\tfontSize: fontSize,\n\t\t\tfontFeatureSettings: fontFeatureSettings,\n\t\t\tfontVariationSettings,\n\t\t\tlineHeight: lineHeight,\n\t\t\tletterSpacing: letterSpacing\n\t\t});\n\t}\n\n\treadonly pixelRatio: number;\n\treadonly fontFamily: string;\n\treadonly fontWeight: string;\n\treadonly fontSize: number;\n\treadonly fontFeatureSettings: string;\n\treadonly fontVariationSettings: string;\n\treadonly lineHeight: number;\n\treadonly letterSpacing: number;\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t}) {\n\t\tthis.pixelRatio = opts.pixelRatio;\n\t\tthis.fontFamily = String(opts.fontFamily);\n\t\tthis.fontWeight = String(opts.fontWeight);\n\t\tthis.fontSize = opts.fontSize;\n\t\tthis.fontFeatureSettings = opts.fontFeatureSettings;\n\t\tthis.fontVariationSettings = opts.fontVariationSettings;\n\t\tthis.lineHeight = opts.lineHeight | 0;\n\t\tthis.letterSpacing = opts.letterSpacing;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getId(): string {\n\t\treturn `${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getMassagedFontFamily(): string {\n\t\tconst fallbackFontFamily = EDITOR_FONT_DEFAULTS.fontFamily;\n\t\tconst fontFamily = BareFontInfo._wrapInQuotes(this.fontFamily);\n\t\tif (fallbackFontFamily && this.fontFamily !== fallbackFontFamily) {\n\t\t\treturn `${fontFamily}, ${fallbackFontFamily}`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n\n\tprivate static _wrapInQuotes(fontFamily: string): string {\n\t\tif (/[,\"']/.test(fontFamily)) {\n\t\t\t// Looks like the font family might be already escaped\n\t\t\treturn fontFamily;\n\t\t}\n\t\tif (/[+ ]/.test(fontFamily)) {\n\t\t\t// Wrap a font family using + or <space> with quotes\n\t\t\treturn `\"${fontFamily}\"`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n}\n\n// change this whenever `FontInfo` members are changed\nexport const SERIALIZED_FONT_INFO_VERSION = 2;\n\nexport class FontInfo extends BareFontInfo {\n\treadonly _editorStylingBrand: void = undefined;\n\n\treadonly version: number = SERIALIZED_FONT_INFO_VERSION;\n\treadonly isTrusted: boolean;\n\treadonly isMonospace: boolean;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly typicalFullwidthCharacterWidth: number;\n\treadonly canUseHalfwidthRightwardsArrow: boolean;\n\treadonly spaceWidth: number;\n\treadonly middotWidth: number;\n\treadonly wsmiddotWidth: number;\n\treadonly maxDigitWidth: number;\n\n\t/**\n\t * @internal\n\t */\n\tconstructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t\tisMonospace: boolean;\n\t\ttypicalHalfwidthCharacterWidth: number;\n\t\ttypicalFullwidthCharacterWidth: number;\n\t\tcanUseHalfwidthRightwardsArrow: boolean;\n\t\tspaceWidth: number;\n\t\tmiddotWidth: number;\n\t\twsmiddotWidth: number;\n\t\tmaxDigitWidth: number;\n\t}, isTrusted: boolean) {\n\t\tsuper(opts);\n\t\tthis.isTrusted = isTrusted;\n\t\tthis.isMonospace = opts.isMonospace;\n\t\tthis.typicalHalfwidthCharacterWidth = opts.typicalHalfwidthCharacterWidth;\n\t\tthis.typicalFullwidthCharacterWidth = opts.typicalFullwidthCharacterWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = opts.canUseHalfwidthRightwardsArrow;\n\t\tthis.spaceWidth = opts.spaceWidth;\n\t\tthis.middotWidth = opts.middotWidth;\n\t\tthis.wsmiddotWidth = opts.wsmiddotWidth;\n\t\tthis.maxDigitWidth = opts.maxDigitWidth;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic equals(other: FontInfo): boolean {\n\t\treturn (\n\t\t\tthis.fontFamily === other.fontFamily\n\t\t\t&& this.fontWeight === other.fontWeight\n\t\t\t&& this.fontSize === other.fontSize\n\t\t\t&& this.fontFeatureSettings === other.fontFeatureSettings\n\t\t\t&& this.fontVariationSettings === other.fontVariationSettings\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.letterSpacing === other.letterSpacing\n\t\t\t&& this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\n\t\t\t&& this.typicalFullwidthCharacterWidth === other.typicalFullwidthCharacterWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.maxDigitWidth === other.maxDigitWidth\n\t\t);\n\t}\n}\n/**\n * @internal\n */\nexport const FONT_VARIATION_OFF = 'normal';\n/**\n * @internal\n */\nexport const FONT_VARIATION_TRANSLATE = 'translate';\n\n/**\n * @internal\n */\nexport const DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_LINUX_FONT_FAMILY = '\\'Droid Sans Mono\\', \\'monospace\\', monospace';\n/**\n * @internal\n */\nexport const EDITOR_FONT_DEFAULTS = {\n\tfontFamily: (\n\t\tplatform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isWindows ? DEFAULT_WINDOWS_FONT_FAMILY : DEFAULT_LINUX_FONT_FAMILY)\n\t),\n\tfontWeight: 'normal',\n\tfontSize: (\n\t\tplatform.isMacintosh ? 12 : 14\n\t),\n\tlineHeight: 0,\n\tletterSpacing: 0,\n};\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/config/fontInfo.ts","vs/editor/common/config/fontInfo.ts"],"names":[],"mappings":"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","file":"fontInfo.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 * as platform from '../../../base/common/platform.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from './editorOptions.js';\nimport { EditorZoom } from './editorZoom.js';\n\n/**\n * Determined from empirical observations.\n * @internal\n */\nexport const GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35;\n\n/**\n * @internal\n */\nexport const MINIMUM_LINE_HEIGHT = 8;\n\n/**\n * @internal\n */\nexport interface IValidatedEditorOptions {\n\tget<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;\n}\n\nexport class BareFontInfo {\n\treadonly _bareFontInfoBrand: void = undefined;\n\n\t/**\n\t * @internal\n\t */\n\tpublic static _create(fontFamily: string, fontWeight: string, fontSize: number, fontFeatureSettings: string, fontVariationSettings: string, lineHeight: number, letterSpacing: number, pixelRatio: number, ignoreEditorZoom: boolean): BareFontInfo {\n\t\tif (lineHeight === 0) {\n\t\t\tlineHeight = GOLDEN_LINE_HEIGHT_RATIO * fontSize;\n\t\t} else if (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\t// Values too small to be line heights in pixels are in ems.\n\t\t\tlineHeight = lineHeight * fontSize;\n\t\t}\n\n\t\t// Enforce integer, minimum constraints\n\t\tlineHeight = Math.round(lineHeight);\n\t\tif (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\tlineHeight = MINIMUM_LINE_HEIGHT;\n\t\t}\n\n\t\tconst editorZoomLevelMultiplier = 1 + (ignoreEditorZoom ? 0 : EditorZoom.getZoomLevel() * 0.1);\n\t\tfontSize *= editorZoomLevelMultiplier;\n\t\tlineHeight *= editorZoomLevelMultiplier;\n\n\t\tif (fontVariationSettings === FONT_VARIATION_TRANSLATE) {\n\t\t\tif (fontWeight === 'normal' || fontWeight === 'bold') {\n\t\t\t\tfontVariationSettings = FONT_VARIATION_OFF;\n\t\t\t} else {\n\t\t\t\tconst fontWeightAsNumber = parseInt(fontWeight, 10);\n\t\t\t\tfontVariationSettings = `'wght' ${fontWeightAsNumber}`;\n\t\t\t\tfontWeight = 'normal';\n\t\t\t}\n\t\t}\n\n\t\treturn new BareFontInfo({\n\t\t\tpixelRatio: pixelRatio,\n\t\t\tfontFamily: fontFamily,\n\t\t\tfontWeight: fontWeight,\n\t\t\tfontSize: fontSize,\n\t\t\tfontFeatureSettings: fontFeatureSettings,\n\t\t\tfontVariationSettings,\n\t\t\tlineHeight: lineHeight,\n\t\t\tletterSpacing: letterSpacing\n\t\t});\n\t}\n\n\treadonly pixelRatio: number;\n\treadonly fontFamily: string;\n\treadonly fontWeight: string;\n\treadonly fontSize: number;\n\treadonly fontFeatureSettings: string;\n\treadonly fontVariationSettings: string;\n\treadonly lineHeight: number;\n\treadonly letterSpacing: number;\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t}) {\n\t\tthis.pixelRatio = opts.pixelRatio;\n\t\tthis.fontFamily = String(opts.fontFamily);\n\t\tthis.fontWeight = String(opts.fontWeight);\n\t\tthis.fontSize = opts.fontSize;\n\t\tthis.fontFeatureSettings = opts.fontFeatureSettings;\n\t\tthis.fontVariationSettings = opts.fontVariationSettings;\n\t\tthis.lineHeight = opts.lineHeight | 0;\n\t\tthis.letterSpacing = opts.letterSpacing;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getId(): string {\n\t\treturn `${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getMassagedFontFamily(): string {\n\t\tconst fallbackFontFamily = EDITOR_FONT_DEFAULTS.fontFamily;\n\t\tconst fontFamily = BareFontInfo._wrapInQuotes(this.fontFamily);\n\t\tif (fallbackFontFamily && this.fontFamily !== fallbackFontFamily) {\n\t\t\treturn `${fontFamily}, ${fallbackFontFamily}`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n\n\tprivate static _wrapInQuotes(fontFamily: string): string {\n\t\tif (/[,\"']/.test(fontFamily)) {\n\t\t\t// Looks like the font family might be already escaped\n\t\t\treturn fontFamily;\n\t\t}\n\t\tif (/[+ ]/.test(fontFamily)) {\n\t\t\t// Wrap a font family using + or <space> with quotes\n\t\t\treturn `\"${fontFamily}\"`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n}\n\n// change this whenever `FontInfo` members are changed\nexport const SERIALIZED_FONT_INFO_VERSION = 2;\n\nexport class FontInfo extends BareFontInfo {\n\treadonly _editorStylingBrand: void = undefined;\n\n\treadonly version: number = SERIALIZED_FONT_INFO_VERSION;\n\treadonly isTrusted: boolean;\n\treadonly isMonospace: boolean;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly typicalFullwidthCharacterWidth: number;\n\treadonly canUseHalfwidthRightwardsArrow: boolean;\n\treadonly spaceWidth: number;\n\treadonly middotWidth: number;\n\treadonly wsmiddotWidth: number;\n\treadonly maxDigitWidth: number;\n\n\t/**\n\t * @internal\n\t */\n\tconstructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t\tisMonospace: boolean;\n\t\ttypicalHalfwidthCharacterWidth: number;\n\t\ttypicalFullwidthCharacterWidth: number;\n\t\tcanUseHalfwidthRightwardsArrow: boolean;\n\t\tspaceWidth: number;\n\t\tmiddotWidth: number;\n\t\twsmiddotWidth: number;\n\t\tmaxDigitWidth: number;\n\t}, isTrusted: boolean) {\n\t\tsuper(opts);\n\t\tthis.isTrusted = isTrusted;\n\t\tthis.isMonospace = opts.isMonospace;\n\t\tthis.typicalHalfwidthCharacterWidth = opts.typicalHalfwidthCharacterWidth;\n\t\tthis.typicalFullwidthCharacterWidth = opts.typicalFullwidthCharacterWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = opts.canUseHalfwidthRightwardsArrow;\n\t\tthis.spaceWidth = opts.spaceWidth;\n\t\tthis.middotWidth = opts.middotWidth;\n\t\tthis.wsmiddotWidth = opts.wsmiddotWidth;\n\t\tthis.maxDigitWidth = opts.maxDigitWidth;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic equals(other: FontInfo): boolean {\n\t\treturn (\n\t\t\tthis.fontFamily === other.fontFamily\n\t\t\t&& this.fontWeight === other.fontWeight\n\t\t\t&& this.fontSize === other.fontSize\n\t\t\t&& this.fontFeatureSettings === other.fontFeatureSettings\n\t\t\t&& this.fontVariationSettings === other.fontVariationSettings\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.letterSpacing === other.letterSpacing\n\t\t\t&& this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\n\t\t\t&& this.typicalFullwidthCharacterWidth === other.typicalFullwidthCharacterWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.maxDigitWidth === other.maxDigitWidth\n\t\t);\n\t}\n}\n/**\n * @internal\n */\nexport const FONT_VARIATION_OFF = 'normal';\n/**\n * @internal\n */\nexport const FONT_VARIATION_TRANSLATE = 'translate';\n\n/**\n * @internal\n */\nexport const DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_LINUX_FONT_FAMILY = '\\'Droid Sans Mono\\', monospace';\n/**\n * @internal\n */\nexport const EDITOR_FONT_DEFAULTS = {\n\tfontFamily: (\n\t\tplatform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isWindows ? DEFAULT_WINDOWS_FONT_FAMILY : DEFAULT_LINUX_FONT_FAMILY)\n\t),\n\tfontWeight: 'normal',\n\tfontSize: (\n\t\tplatform.isMacintosh ? 12 : 14\n\t),\n\tlineHeight: 0,\n\tletterSpacing: 0,\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as platform from '../../../base/common/platform.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from './editorOptions.js';\nimport { EditorZoom } from './editorZoom.js';\n\n/**\n * Determined from empirical observations.\n * @internal\n */\nexport const GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35;\n\n/**\n * @internal\n */\nexport const MINIMUM_LINE_HEIGHT = 8;\n\n/**\n * @internal\n */\nexport interface IValidatedEditorOptions {\n\tget<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;\n}\n\nexport class BareFontInfo {\n\treadonly _bareFontInfoBrand: void = undefined;\n\n\t/**\n\t * @internal\n\t */\n\tpublic static _create(fontFamily: string, fontWeight: string, fontSize: number, fontFeatureSettings: string, fontVariationSettings: string, lineHeight: number, letterSpacing: number, pixelRatio: number, ignoreEditorZoom: boolean): BareFontInfo {\n\t\tif (lineHeight === 0) {\n\t\t\tlineHeight = GOLDEN_LINE_HEIGHT_RATIO * fontSize;\n\t\t} else if (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\t// Values too small to be line heights in pixels are in ems.\n\t\t\tlineHeight = lineHeight * fontSize;\n\t\t}\n\n\t\t// Enforce integer, minimum constraints\n\t\tlineHeight = Math.round(lineHeight);\n\t\tif (lineHeight < MINIMUM_LINE_HEIGHT) {\n\t\t\tlineHeight = MINIMUM_LINE_HEIGHT;\n\t\t}\n\n\t\tconst editorZoomLevelMultiplier = 1 + (ignoreEditorZoom ? 0 : EditorZoom.getZoomLevel() * 0.1);\n\t\tfontSize *= editorZoomLevelMultiplier;\n\t\tlineHeight *= editorZoomLevelMultiplier;\n\n\t\tif (fontVariationSettings === FONT_VARIATION_TRANSLATE) {\n\t\t\tif (fontWeight === 'normal' || fontWeight === 'bold') {\n\t\t\t\tfontVariationSettings = FONT_VARIATION_OFF;\n\t\t\t} else {\n\t\t\t\tconst fontWeightAsNumber = parseInt(fontWeight, 10);\n\t\t\t\tfontVariationSettings = `'wght' ${fontWeightAsNumber}`;\n\t\t\t\tfontWeight = 'normal';\n\t\t\t}\n\t\t}\n\n\t\treturn new BareFontInfo({\n\t\t\tpixelRatio: pixelRatio,\n\t\t\tfontFamily: fontFamily,\n\t\t\tfontWeight: fontWeight,\n\t\t\tfontSize: fontSize,\n\t\t\tfontFeatureSettings: fontFeatureSettings,\n\t\t\tfontVariationSettings,\n\t\t\tlineHeight: lineHeight,\n\t\t\tletterSpacing: letterSpacing\n\t\t});\n\t}\n\n\treadonly pixelRatio: number;\n\treadonly fontFamily: string;\n\treadonly fontWeight: string;\n\treadonly fontSize: number;\n\treadonly fontFeatureSettings: string;\n\treadonly fontVariationSettings: string;\n\treadonly lineHeight: number;\n\treadonly letterSpacing: number;\n\n\t/**\n\t * @internal\n\t */\n\tprotected constructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t}) {\n\t\tthis.pixelRatio = opts.pixelRatio;\n\t\tthis.fontFamily = String(opts.fontFamily);\n\t\tthis.fontWeight = String(opts.fontWeight);\n\t\tthis.fontSize = opts.fontSize;\n\t\tthis.fontFeatureSettings = opts.fontFeatureSettings;\n\t\tthis.fontVariationSettings = opts.fontVariationSettings;\n\t\tthis.lineHeight = opts.lineHeight | 0;\n\t\tthis.letterSpacing = opts.letterSpacing;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getId(): string {\n\t\treturn `${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic getMassagedFontFamily(): string {\n\t\tconst fallbackFontFamily = EDITOR_FONT_DEFAULTS.fontFamily;\n\t\tconst fontFamily = BareFontInfo._wrapInQuotes(this.fontFamily);\n\t\tif (fallbackFontFamily && this.fontFamily !== fallbackFontFamily) {\n\t\t\treturn `${fontFamily}, ${fallbackFontFamily}`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n\n\tprivate static _wrapInQuotes(fontFamily: string): string {\n\t\tif (/[,\"']/.test(fontFamily)) {\n\t\t\t// Looks like the font family might be already escaped\n\t\t\treturn fontFamily;\n\t\t}\n\t\tif (/[+ ]/.test(fontFamily)) {\n\t\t\t// Wrap a font family using + or <space> with quotes\n\t\t\treturn `\"${fontFamily}\"`;\n\t\t}\n\t\treturn fontFamily;\n\t}\n}\n\n// change this whenever `FontInfo` members are changed\nexport const SERIALIZED_FONT_INFO_VERSION = 2;\n\nexport class FontInfo extends BareFontInfo {\n\treadonly _editorStylingBrand: void = undefined;\n\n\treadonly version: number = SERIALIZED_FONT_INFO_VERSION;\n\treadonly isTrusted: boolean;\n\treadonly isMonospace: boolean;\n\treadonly typicalHalfwidthCharacterWidth: number;\n\treadonly typicalFullwidthCharacterWidth: number;\n\treadonly canUseHalfwidthRightwardsArrow: boolean;\n\treadonly spaceWidth: number;\n\treadonly middotWidth: number;\n\treadonly wsmiddotWidth: number;\n\treadonly maxDigitWidth: number;\n\n\t/**\n\t * @internal\n\t */\n\tconstructor(opts: {\n\t\tpixelRatio: number;\n\t\tfontFamily: string;\n\t\tfontWeight: string;\n\t\tfontSize: number;\n\t\tfontFeatureSettings: string;\n\t\tfontVariationSettings: string;\n\t\tlineHeight: number;\n\t\tletterSpacing: number;\n\t\tisMonospace: boolean;\n\t\ttypicalHalfwidthCharacterWidth: number;\n\t\ttypicalFullwidthCharacterWidth: number;\n\t\tcanUseHalfwidthRightwardsArrow: boolean;\n\t\tspaceWidth: number;\n\t\tmiddotWidth: number;\n\t\twsmiddotWidth: number;\n\t\tmaxDigitWidth: number;\n\t}, isTrusted: boolean) {\n\t\tsuper(opts);\n\t\tthis.isTrusted = isTrusted;\n\t\tthis.isMonospace = opts.isMonospace;\n\t\tthis.typicalHalfwidthCharacterWidth = opts.typicalHalfwidthCharacterWidth;\n\t\tthis.typicalFullwidthCharacterWidth = opts.typicalFullwidthCharacterWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = opts.canUseHalfwidthRightwardsArrow;\n\t\tthis.spaceWidth = opts.spaceWidth;\n\t\tthis.middotWidth = opts.middotWidth;\n\t\tthis.wsmiddotWidth = opts.wsmiddotWidth;\n\t\tthis.maxDigitWidth = opts.maxDigitWidth;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic equals(other: FontInfo): boolean {\n\t\treturn (\n\t\t\tthis.fontFamily === other.fontFamily\n\t\t\t&& this.fontWeight === other.fontWeight\n\t\t\t&& this.fontSize === other.fontSize\n\t\t\t&& this.fontFeatureSettings === other.fontFeatureSettings\n\t\t\t&& this.fontVariationSettings === other.fontVariationSettings\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.letterSpacing === other.letterSpacing\n\t\t\t&& this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\n\t\t\t&& this.typicalFullwidthCharacterWidth === other.typicalFullwidthCharacterWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.maxDigitWidth === other.maxDigitWidth\n\t\t);\n\t}\n}\n/**\n * @internal\n */\nexport const FONT_VARIATION_OFF = 'normal';\n/**\n * @internal\n */\nexport const FONT_VARIATION_TRANSLATE = 'translate';\n\n/**\n * @internal\n */\nexport const DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \\'Courier New\\', monospace';\n/**\n * @internal\n */\nexport const DEFAULT_LINUX_FONT_FAMILY = '\\'Droid Sans Mono\\', monospace';\n/**\n * @internal\n */\nexport const EDITOR_FONT_DEFAULTS = {\n\tfontFamily: (\n\t\tplatform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isWindows ? DEFAULT_WINDOWS_FONT_FAMILY : DEFAULT_LINUX_FONT_FAMILY)\n\t),\n\tfontWeight: 'normal',\n\tfontSize: (\n\t\tplatform.isMacintosh ? 12 : 14\n\t),\n\tlineHeight: 0,\n\tletterSpacing: 0,\n};\n"]}
@@ -153,6 +153,25 @@ export class BaseEdit {
153
153
  isEmpty() {
154
154
  return this.replacements.length === 0;
155
155
  }
156
+ /**
157
+ * Return undefined if the originalOffset is within an edit
158
+ */
159
+ applyToOffsetOrUndefined(originalOffset) {
160
+ let accumulatedDelta = 0;
161
+ for (const edit of this.replacements) {
162
+ if (edit.replaceRange.start <= originalOffset) {
163
+ if (originalOffset < edit.replaceRange.endExclusive) {
164
+ // the offset is in the replaced range
165
+ return undefined;
166
+ }
167
+ accumulatedDelta += edit.getNewLength() - edit.replaceRange.length;
168
+ }
169
+ else {
170
+ break;
171
+ }
172
+ }
173
+ return originalOffset + accumulatedDelta;
174
+ }
156
175
  }
157
176
  export class BaseReplacement {
158
177
  constructor(
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/edits/edit.ts","vs/editor/common/core/edits/edit.ts"],"names":[],"mappings":"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","file":"edit.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseEdit<T extends BaseReplacement<T> = BaseReplacement<any>, TEdit extends BaseEdit<T, TEdit> = BaseEdit<T, any>> {\n\tconstructor(\n\t\tpublic readonly replacements: readonly T[],\n\t) {\n\t\tlet lastEndEx = -1;\n\t\tfor (const replacement of replacements) {\n\t\t\tif (!(replacement.replaceRange.start >= lastEndEx)) {\n\t\t\t\tthrow new BugIndicatingError(`Edits must be disjoint and sorted. Found ${replacement} after ${lastEndEx}`);\n\t\t\t}\n\t\t\tlastEndEx = replacement.replaceRange.endExclusive;\n\t\t}\n\t}\n\n\tprotected abstract _createNew(replacements: readonly T[]): TEdit;\n\n\tpublic toString() {\n\t\tconst edits = this.replacements.map(e => e.toString()).join(', ');\n\t\treturn `[${edits}]`;\n\t}\n\n\t/**\n\t * Normalizes the edit by removing empty replacements and joining touching replacements (if the replacements allow joining).\n\t * Two edits have an equal normalized edit if and only if they have the same effect on any input.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_normalize.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * (forall base: TEdit.apply(base).equals(other.apply(base))) <-> this.normalize().equals(other.normalize())\n\t * ```\n\t * and\n\t * ```\n\t * forall base: TEdit.apply(base).equals(this.normalize().apply(base))\n\t * ```\n\t *\n\t */\n\tpublic normalize(): TEdit {\n\t\tconst newReplacements: T[] = [];\n\t\tlet lastReplacement: T | undefined;\n\t\tfor (const r of this.replacements) {\n\t\t\tif (r.getNewLength() === 0 && r.replaceRange.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lastReplacement && lastReplacement.replaceRange.endExclusive === r.replaceRange.start) {\n\t\t\t\tconst joined = lastReplacement.tryJoinTouching(r);\n\t\t\t\tif (joined) {\n\t\t\t\t\tlastReplacement = joined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lastReplacement) {\n\t\t\t\tnewReplacements.push(lastReplacement);\n\t\t\t}\n\t\t\tlastReplacement = r;\n\t\t}\n\n\t\tif (lastReplacement) {\n\t\t\tnewReplacements.push(lastReplacement);\n\t\t}\n\t\treturn this._createNew(newReplacements);\n\t}\n\n\t/**\n\t * Combines two edits into one with the same effect.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_compose.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * other.apply(this.apply(s0)) = this.compose(other).apply(s0)\n\t * ```\n\t */\n\tpublic compose(other: TEdit): TEdit {\n\t\tconst edits1 = this.normalize();\n\t\tconst edits2 = other.normalize();\n\n\t\tif (edits1.isEmpty()) { return edits2; }\n\t\tif (edits2.isEmpty()) { return edits1; }\n\n\t\tconst edit1Queue = [...edits1.replacements];\n\t\tconst result: T[] = [];\n\n\t\tlet edit1ToEdit2 = 0;\n\n\t\tfor (const r2 of edits2.replacements) {\n\t\t\t// Copy over edit1 unmodified until it touches edit2.\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 + r1.getNewLength() >= r2.replaceRange.start) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tresult.push(r1);\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tconst firstEdit1ToEdit2 = edit1ToEdit2;\n\t\t\tlet firstIntersecting: T | undefined; // or touching\n\t\t\tlet lastIntersecting: T | undefined; // or touching\n\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 > r2.replaceRange.endExclusive) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// else we intersect, because the new end of edit1 is after or equal to our start\n\n\t\t\t\tif (!firstIntersecting) {\n\t\t\t\t\tfirstIntersecting = r1;\n\t\t\t\t}\n\t\t\t\tlastIntersecting = r1;\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tif (!firstIntersecting) {\n\t\t\t\tresult.push(r2.delta(-edit1ToEdit2));\n\t\t\t} else {\n\t\t\t\tconst newReplaceRangeStart = Math.min(firstIntersecting.replaceRange.start, r2.replaceRange.start - firstEdit1ToEdit2);\n\n\t\t\t\tconst prefixLength = r2.replaceRange.start - (firstIntersecting.replaceRange.start + firstEdit1ToEdit2);\n\t\t\t\tif (prefixLength > 0) {\n\t\t\t\t\tconst prefix = firstIntersecting.slice(OffsetRange.emptyAt(newReplaceRangeStart), new OffsetRange(0, prefixLength));\n\t\t\t\t\tresult.push(prefix);\n\t\t\t\t}\n\t\t\t\tif (!lastIntersecting) {\n\t\t\t\t\tthrow new BugIndicatingError(`Invariant violation: lastIntersecting is undefined`);\n\t\t\t\t}\n\t\t\t\tconst suffixLength = (lastIntersecting.replaceRange.endExclusive + edit1ToEdit2) - r2.replaceRange.endExclusive;\n\t\t\t\tif (suffixLength > 0) {\n\t\t\t\t\tconst e = lastIntersecting.slice(\n\t\t\t\t\t\tOffsetRange.ofStartAndLength(lastIntersecting.replaceRange.endExclusive, 0),\n\t\t\t\t\t\tnew OffsetRange(lastIntersecting.getNewLength() - suffixLength, lastIntersecting.getNewLength())\n\t\t\t\t\t);\n\t\t\t\t\tedit1Queue.unshift(e);\n\t\t\t\t\tedit1ToEdit2 -= e.getNewLength() - e.replaceRange.length;\n\t\t\t\t}\n\n\t\t\t\tconst newReplaceRange = new OffsetRange(\n\t\t\t\t\tnewReplaceRangeStart,\n\t\t\t\t\tr2.replaceRange.endExclusive - edit1ToEdit2\n\t\t\t\t);\n\t\t\t\tconst middle = r2.slice(newReplaceRange, new OffsetRange(0, r2.getNewLength()));\n\t\t\t\tresult.push(middle);\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst item = edit1Queue.shift();\n\t\t\tif (!item) { break; }\n\t\t\tresult.push(item);\n\t\t}\n\n\t\treturn this._createNew(result).normalize();\n\t}\n\n\t/**\n\t * Returns the range of each replacement in the applied value.\n\t*/\n\tpublic getNewRanges(): OffsetRange[] {\n\t\tconst ranges: OffsetRange[] = [];\n\t\tlet offset = 0;\n\t\tfor (const e of this.replacements) {\n\t\t\tranges.push(OffsetRange.ofStartAndLength(e.replaceRange.start + offset, e.getNewLength()));\n\t\t\toffset += e.getLengthDelta();\n\t\t}\n\t\treturn ranges;\n\t}\n\n\tpublic isEmpty(): boolean {\n\t\treturn this.replacements.length === 0;\n\t}\n}\n\nexport abstract class BaseReplacement<TSelf extends BaseReplacement<TSelf>> {\n\tconstructor(\n\t\t/**\n\t\t * The range to be replaced.\n\t\t*/\n\t\tpublic readonly replaceRange: OffsetRange,\n\t) { }\n\n\tpublic abstract getNewLength(): number;\n\n\t/**\n\t * Precondition: TEdit.range.endExclusive === other.range.start\n\t*/\n\tpublic abstract tryJoinTouching(other: TSelf): TSelf | undefined;\n\n\tpublic abstract slice(newReplaceRange: OffsetRange, rangeInReplacement?: OffsetRange): TSelf;\n\n\tpublic delta(offset: number): TSelf {\n\t\treturn this.slice(this.replaceRange.delta(offset), new OffsetRange(0, this.getNewLength()));\n\t}\n\n\tpublic getLengthDelta(): number {\n\t\treturn this.getNewLength() - this.replaceRange.length;\n\t}\n\n\tabstract equals(other: TSelf): boolean;\n\n\ttoString(): string {\n\t\treturn `{ ${this.replaceRange.toString()} -> ${this.getNewLength()} }`;\n\t}\n\n\tget isEmpty() {\n\t\treturn this.getNewLength() === 0 && this.replaceRange.length === 0;\n\t}\n\n\tgetRangeAfterReplace(): OffsetRange {\n\t\treturn new OffsetRange(this.replaceRange.start, this.replaceRange.start + this.getNewLength());\n\t}\n}\n","\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseEdit<T extends BaseReplacement<T> = BaseReplacement<any>, TEdit extends BaseEdit<T, TEdit> = BaseEdit<T, any>> {\n\tconstructor(\n\t\tpublic readonly replacements: readonly T[],\n\t) {\n\t\tlet lastEndEx = -1;\n\t\tfor (const replacement of replacements) {\n\t\t\tif (!(replacement.replaceRange.start >= lastEndEx)) {\n\t\t\t\tthrow new BugIndicatingError(`Edits must be disjoint and sorted. Found ${replacement} after ${lastEndEx}`);\n\t\t\t}\n\t\t\tlastEndEx = replacement.replaceRange.endExclusive;\n\t\t}\n\t}\n\n\tprotected abstract _createNew(replacements: readonly T[]): TEdit;\n\n\tpublic toString() {\n\t\tconst edits = this.replacements.map(e => e.toString()).join(', ');\n\t\treturn `[${edits}]`;\n\t}\n\n\t/**\n\t * Normalizes the edit by removing empty replacements and joining touching replacements (if the replacements allow joining).\n\t * Two edits have an equal normalized edit if and only if they have the same effect on any input.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_normalize.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * (forall base: TEdit.apply(base).equals(other.apply(base))) <-> this.normalize().equals(other.normalize())\n\t * ```\n\t * and\n\t * ```\n\t * forall base: TEdit.apply(base).equals(this.normalize().apply(base))\n\t * ```\n\t *\n\t */\n\tpublic normalize(): TEdit {\n\t\tconst newReplacements: T[] = [];\n\t\tlet lastReplacement: T | undefined;\n\t\tfor (const r of this.replacements) {\n\t\t\tif (r.getNewLength() === 0 && r.replaceRange.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lastReplacement && lastReplacement.replaceRange.endExclusive === r.replaceRange.start) {\n\t\t\t\tconst joined = lastReplacement.tryJoinTouching(r);\n\t\t\t\tif (joined) {\n\t\t\t\t\tlastReplacement = joined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lastReplacement) {\n\t\t\t\tnewReplacements.push(lastReplacement);\n\t\t\t}\n\t\t\tlastReplacement = r;\n\t\t}\n\n\t\tif (lastReplacement) {\n\t\t\tnewReplacements.push(lastReplacement);\n\t\t}\n\t\treturn this._createNew(newReplacements);\n\t}\n\n\t/**\n\t * Combines two edits into one with the same effect.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_compose.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * other.apply(this.apply(s0)) = this.compose(other).apply(s0)\n\t * ```\n\t */\n\tpublic compose(other: TEdit): TEdit {\n\t\tconst edits1 = this.normalize();\n\t\tconst edits2 = other.normalize();\n\n\t\tif (edits1.isEmpty()) { return edits2; }\n\t\tif (edits2.isEmpty()) { return edits1; }\n\n\t\tconst edit1Queue = [...edits1.replacements];\n\t\tconst result: T[] = [];\n\n\t\tlet edit1ToEdit2 = 0;\n\n\t\tfor (const r2 of edits2.replacements) {\n\t\t\t// Copy over edit1 unmodified until it touches edit2.\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 + r1.getNewLength() >= r2.replaceRange.start) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tresult.push(r1);\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tconst firstEdit1ToEdit2 = edit1ToEdit2;\n\t\t\tlet firstIntersecting: T | undefined; // or touching\n\t\t\tlet lastIntersecting: T | undefined; // or touching\n\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 > r2.replaceRange.endExclusive) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// else we intersect, because the new end of edit1 is after or equal to our start\n\n\t\t\t\tif (!firstIntersecting) {\n\t\t\t\t\tfirstIntersecting = r1;\n\t\t\t\t}\n\t\t\t\tlastIntersecting = r1;\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tif (!firstIntersecting) {\n\t\t\t\tresult.push(r2.delta(-edit1ToEdit2));\n\t\t\t} else {\n\t\t\t\tconst newReplaceRangeStart = Math.min(firstIntersecting.replaceRange.start, r2.replaceRange.start - firstEdit1ToEdit2);\n\n\t\t\t\tconst prefixLength = r2.replaceRange.start - (firstIntersecting.replaceRange.start + firstEdit1ToEdit2);\n\t\t\t\tif (prefixLength > 0) {\n\t\t\t\t\tconst prefix = firstIntersecting.slice(OffsetRange.emptyAt(newReplaceRangeStart), new OffsetRange(0, prefixLength));\n\t\t\t\t\tresult.push(prefix);\n\t\t\t\t}\n\t\t\t\tif (!lastIntersecting) {\n\t\t\t\t\tthrow new BugIndicatingError(`Invariant violation: lastIntersecting is undefined`);\n\t\t\t\t}\n\t\t\t\tconst suffixLength = (lastIntersecting.replaceRange.endExclusive + edit1ToEdit2) - r2.replaceRange.endExclusive;\n\t\t\t\tif (suffixLength > 0) {\n\t\t\t\t\tconst e = lastIntersecting.slice(\n\t\t\t\t\t\tOffsetRange.ofStartAndLength(lastIntersecting.replaceRange.endExclusive, 0),\n\t\t\t\t\t\tnew OffsetRange(lastIntersecting.getNewLength() - suffixLength, lastIntersecting.getNewLength())\n\t\t\t\t\t);\n\t\t\t\t\tedit1Queue.unshift(e);\n\t\t\t\t\tedit1ToEdit2 -= e.getNewLength() - e.replaceRange.length;\n\t\t\t\t}\n\n\t\t\t\tconst newReplaceRange = new OffsetRange(\n\t\t\t\t\tnewReplaceRangeStart,\n\t\t\t\t\tr2.replaceRange.endExclusive - edit1ToEdit2\n\t\t\t\t);\n\t\t\t\tconst middle = r2.slice(newReplaceRange, new OffsetRange(0, r2.getNewLength()));\n\t\t\t\tresult.push(middle);\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst item = edit1Queue.shift();\n\t\t\tif (!item) { break; }\n\t\t\tresult.push(item);\n\t\t}\n\n\t\treturn this._createNew(result).normalize();\n\t}\n\n\t/**\n\t * Returns the range of each replacement in the applied value.\n\t*/\n\tpublic getNewRanges(): OffsetRange[] {\n\t\tconst ranges: OffsetRange[] = [];\n\t\tlet offset = 0;\n\t\tfor (const e of this.replacements) {\n\t\t\tranges.push(OffsetRange.ofStartAndLength(e.replaceRange.start + offset, e.getNewLength()));\n\t\t\toffset += e.getLengthDelta();\n\t\t}\n\t\treturn ranges;\n\t}\n\n\tpublic isEmpty(): boolean {\n\t\treturn this.replacements.length === 0;\n\t}\n}\n\nexport abstract class BaseReplacement<TSelf extends BaseReplacement<TSelf>> {\n\tconstructor(\n\t\t/**\n\t\t * The range to be replaced.\n\t\t*/\n\t\tpublic readonly replaceRange: OffsetRange,\n\t) { }\n\n\tpublic abstract getNewLength(): number;\n\n\t/**\n\t * Precondition: TEdit.range.endExclusive === other.range.start\n\t*/\n\tpublic abstract tryJoinTouching(other: TSelf): TSelf | undefined;\n\n\tpublic abstract slice(newReplaceRange: OffsetRange, rangeInReplacement?: OffsetRange): TSelf;\n\n\tpublic delta(offset: number): TSelf {\n\t\treturn this.slice(this.replaceRange.delta(offset), new OffsetRange(0, this.getNewLength()));\n\t}\n\n\tpublic getLengthDelta(): number {\n\t\treturn this.getNewLength() - this.replaceRange.length;\n\t}\n\n\tabstract equals(other: TSelf): boolean;\n\n\ttoString(): string {\n\t\treturn `{ ${this.replaceRange.toString()} -> ${this.getNewLength()} }`;\n\t}\n\n\tget isEmpty() {\n\t\treturn this.getNewLength() === 0 && this.replaceRange.length === 0;\n\t}\n\n\tgetRangeAfterReplace(): OffsetRange {\n\t\treturn new OffsetRange(this.replaceRange.start, this.replaceRange.start + this.getNewLength());\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/common/core/edits/edit.ts","vs/editor/common/core/edits/edit.ts"],"names":[],"mappings":"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","file":"edit.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseEdit<T extends BaseReplacement<T> = BaseReplacement<any>, TEdit extends BaseEdit<T, TEdit> = BaseEdit<T, any>> {\n\tconstructor(\n\t\tpublic readonly replacements: readonly T[],\n\t) {\n\t\tlet lastEndEx = -1;\n\t\tfor (const replacement of replacements) {\n\t\t\tif (!(replacement.replaceRange.start >= lastEndEx)) {\n\t\t\t\tthrow new BugIndicatingError(`Edits must be disjoint and sorted. Found ${replacement} after ${lastEndEx}`);\n\t\t\t}\n\t\t\tlastEndEx = replacement.replaceRange.endExclusive;\n\t\t}\n\t}\n\n\tprotected abstract _createNew(replacements: readonly T[]): TEdit;\n\n\tpublic toString() {\n\t\tconst edits = this.replacements.map(e => e.toString()).join(', ');\n\t\treturn `[${edits}]`;\n\t}\n\n\t/**\n\t * Normalizes the edit by removing empty replacements and joining touching replacements (if the replacements allow joining).\n\t * Two edits have an equal normalized edit if and only if they have the same effect on any input.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_normalize.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * (forall base: TEdit.apply(base).equals(other.apply(base))) <-> this.normalize().equals(other.normalize())\n\t * ```\n\t * and\n\t * ```\n\t * forall base: TEdit.apply(base).equals(this.normalize().apply(base))\n\t * ```\n\t *\n\t */\n\tpublic normalize(): TEdit {\n\t\tconst newReplacements: T[] = [];\n\t\tlet lastReplacement: T | undefined;\n\t\tfor (const r of this.replacements) {\n\t\t\tif (r.getNewLength() === 0 && r.replaceRange.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lastReplacement && lastReplacement.replaceRange.endExclusive === r.replaceRange.start) {\n\t\t\t\tconst joined = lastReplacement.tryJoinTouching(r);\n\t\t\t\tif (joined) {\n\t\t\t\t\tlastReplacement = joined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lastReplacement) {\n\t\t\t\tnewReplacements.push(lastReplacement);\n\t\t\t}\n\t\t\tlastReplacement = r;\n\t\t}\n\n\t\tif (lastReplacement) {\n\t\t\tnewReplacements.push(lastReplacement);\n\t\t}\n\t\treturn this._createNew(newReplacements);\n\t}\n\n\t/**\n\t * Combines two edits into one with the same effect.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_compose.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * other.apply(this.apply(s0)) = this.compose(other).apply(s0)\n\t * ```\n\t */\n\tpublic compose(other: TEdit): TEdit {\n\t\tconst edits1 = this.normalize();\n\t\tconst edits2 = other.normalize();\n\n\t\tif (edits1.isEmpty()) { return edits2; }\n\t\tif (edits2.isEmpty()) { return edits1; }\n\n\t\tconst edit1Queue = [...edits1.replacements];\n\t\tconst result: T[] = [];\n\n\t\tlet edit1ToEdit2 = 0;\n\n\t\tfor (const r2 of edits2.replacements) {\n\t\t\t// Copy over edit1 unmodified until it touches edit2.\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 + r1.getNewLength() >= r2.replaceRange.start) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tresult.push(r1);\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tconst firstEdit1ToEdit2 = edit1ToEdit2;\n\t\t\tlet firstIntersecting: T | undefined; // or touching\n\t\t\tlet lastIntersecting: T | undefined; // or touching\n\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 > r2.replaceRange.endExclusive) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// else we intersect, because the new end of edit1 is after or equal to our start\n\n\t\t\t\tif (!firstIntersecting) {\n\t\t\t\t\tfirstIntersecting = r1;\n\t\t\t\t}\n\t\t\t\tlastIntersecting = r1;\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tif (!firstIntersecting) {\n\t\t\t\tresult.push(r2.delta(-edit1ToEdit2));\n\t\t\t} else {\n\t\t\t\tconst newReplaceRangeStart = Math.min(firstIntersecting.replaceRange.start, r2.replaceRange.start - firstEdit1ToEdit2);\n\n\t\t\t\tconst prefixLength = r2.replaceRange.start - (firstIntersecting.replaceRange.start + firstEdit1ToEdit2);\n\t\t\t\tif (prefixLength > 0) {\n\t\t\t\t\tconst prefix = firstIntersecting.slice(OffsetRange.emptyAt(newReplaceRangeStart), new OffsetRange(0, prefixLength));\n\t\t\t\t\tresult.push(prefix);\n\t\t\t\t}\n\t\t\t\tif (!lastIntersecting) {\n\t\t\t\t\tthrow new BugIndicatingError(`Invariant violation: lastIntersecting is undefined`);\n\t\t\t\t}\n\t\t\t\tconst suffixLength = (lastIntersecting.replaceRange.endExclusive + edit1ToEdit2) - r2.replaceRange.endExclusive;\n\t\t\t\tif (suffixLength > 0) {\n\t\t\t\t\tconst e = lastIntersecting.slice(\n\t\t\t\t\t\tOffsetRange.ofStartAndLength(lastIntersecting.replaceRange.endExclusive, 0),\n\t\t\t\t\t\tnew OffsetRange(lastIntersecting.getNewLength() - suffixLength, lastIntersecting.getNewLength())\n\t\t\t\t\t);\n\t\t\t\t\tedit1Queue.unshift(e);\n\t\t\t\t\tedit1ToEdit2 -= e.getNewLength() - e.replaceRange.length;\n\t\t\t\t}\n\n\t\t\t\tconst newReplaceRange = new OffsetRange(\n\t\t\t\t\tnewReplaceRangeStart,\n\t\t\t\t\tr2.replaceRange.endExclusive - edit1ToEdit2\n\t\t\t\t);\n\t\t\t\tconst middle = r2.slice(newReplaceRange, new OffsetRange(0, r2.getNewLength()));\n\t\t\t\tresult.push(middle);\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst item = edit1Queue.shift();\n\t\t\tif (!item) { break; }\n\t\t\tresult.push(item);\n\t\t}\n\n\t\treturn this._createNew(result).normalize();\n\t}\n\n\t/**\n\t * Returns the range of each replacement in the applied value.\n\t*/\n\tpublic getNewRanges(): OffsetRange[] {\n\t\tconst ranges: OffsetRange[] = [];\n\t\tlet offset = 0;\n\t\tfor (const e of this.replacements) {\n\t\t\tranges.push(OffsetRange.ofStartAndLength(e.replaceRange.start + offset, e.getNewLength()));\n\t\t\toffset += e.getLengthDelta();\n\t\t}\n\t\treturn ranges;\n\t}\n\n\tpublic isEmpty(): boolean {\n\t\treturn this.replacements.length === 0;\n\t}\n\n\t/**\n\t * Return undefined if the originalOffset is within an edit\n\t */\n\tpublic applyToOffsetOrUndefined(originalOffset: number): number | undefined {\n\t\tlet accumulatedDelta = 0;\n\t\tfor (const edit of this.replacements) {\n\t\t\tif (edit.replaceRange.start <= originalOffset) {\n\t\t\t\tif (originalOffset < edit.replaceRange.endExclusive) {\n\t\t\t\t\t// the offset is in the replaced range\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\taccumulatedDelta += edit.getNewLength() - edit.replaceRange.length;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn originalOffset + accumulatedDelta;\n\t}\n}\n\nexport abstract class BaseReplacement<TSelf extends BaseReplacement<TSelf>> {\n\tconstructor(\n\t\t/**\n\t\t * The range to be replaced.\n\t\t*/\n\t\tpublic readonly replaceRange: OffsetRange,\n\t) { }\n\n\tpublic abstract getNewLength(): number;\n\n\t/**\n\t * Precondition: TEdit.range.endExclusive === other.range.start\n\t*/\n\tpublic abstract tryJoinTouching(other: TSelf): TSelf | undefined;\n\n\tpublic abstract slice(newReplaceRange: OffsetRange, rangeInReplacement?: OffsetRange): TSelf;\n\n\tpublic delta(offset: number): TSelf {\n\t\treturn this.slice(this.replaceRange.delta(offset), new OffsetRange(0, this.getNewLength()));\n\t}\n\n\tpublic getLengthDelta(): number {\n\t\treturn this.getNewLength() - this.replaceRange.length;\n\t}\n\n\tabstract equals(other: TSelf): boolean;\n\n\ttoString(): string {\n\t\treturn `{ ${this.replaceRange.toString()} -> ${this.getNewLength()} }`;\n\t}\n\n\tget isEmpty() {\n\t\treturn this.getNewLength() === 0 && this.replaceRange.length === 0;\n\t}\n\n\tgetRangeAfterReplace(): OffsetRange {\n\t\treturn new OffsetRange(this.replaceRange.start, this.replaceRange.start + this.getNewLength());\n\t}\n}\n","\nimport { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { OffsetRange } from '../ranges/offsetRange.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport abstract class BaseEdit<T extends BaseReplacement<T> = BaseReplacement<any>, TEdit extends BaseEdit<T, TEdit> = BaseEdit<T, any>> {\n\tconstructor(\n\t\tpublic readonly replacements: readonly T[],\n\t) {\n\t\tlet lastEndEx = -1;\n\t\tfor (const replacement of replacements) {\n\t\t\tif (!(replacement.replaceRange.start >= lastEndEx)) {\n\t\t\t\tthrow new BugIndicatingError(`Edits must be disjoint and sorted. Found ${replacement} after ${lastEndEx}`);\n\t\t\t}\n\t\t\tlastEndEx = replacement.replaceRange.endExclusive;\n\t\t}\n\t}\n\n\tprotected abstract _createNew(replacements: readonly T[]): TEdit;\n\n\tpublic toString() {\n\t\tconst edits = this.replacements.map(e => e.toString()).join(', ');\n\t\treturn `[${edits}]`;\n\t}\n\n\t/**\n\t * Normalizes the edit by removing empty replacements and joining touching replacements (if the replacements allow joining).\n\t * Two edits have an equal normalized edit if and only if they have the same effect on any input.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_normalize.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * (forall base: TEdit.apply(base).equals(other.apply(base))) <-> this.normalize().equals(other.normalize())\n\t * ```\n\t * and\n\t * ```\n\t * forall base: TEdit.apply(base).equals(this.normalize().apply(base))\n\t * ```\n\t *\n\t */\n\tpublic normalize(): TEdit {\n\t\tconst newReplacements: T[] = [];\n\t\tlet lastReplacement: T | undefined;\n\t\tfor (const r of this.replacements) {\n\t\t\tif (r.getNewLength() === 0 && r.replaceRange.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lastReplacement && lastReplacement.replaceRange.endExclusive === r.replaceRange.start) {\n\t\t\t\tconst joined = lastReplacement.tryJoinTouching(r);\n\t\t\t\tif (joined) {\n\t\t\t\t\tlastReplacement = joined;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (lastReplacement) {\n\t\t\t\tnewReplacements.push(lastReplacement);\n\t\t\t}\n\t\t\tlastReplacement = r;\n\t\t}\n\n\t\tif (lastReplacement) {\n\t\t\tnewReplacements.push(lastReplacement);\n\t\t}\n\t\treturn this._createNew(newReplacements);\n\t}\n\n\t/**\n\t * Combines two edits into one with the same effect.\n\t *\n\t * ![](https://raw.githubusercontent.com/microsoft/vscode/refs/heads/main/src/vs/editor/common/core/edits/docs/BaseEdit_compose.drawio.png)\n\t *\n\t * Invariant:\n\t * ```\n\t * other.apply(this.apply(s0)) = this.compose(other).apply(s0)\n\t * ```\n\t */\n\tpublic compose(other: TEdit): TEdit {\n\t\tconst edits1 = this.normalize();\n\t\tconst edits2 = other.normalize();\n\n\t\tif (edits1.isEmpty()) { return edits2; }\n\t\tif (edits2.isEmpty()) { return edits1; }\n\n\t\tconst edit1Queue = [...edits1.replacements];\n\t\tconst result: T[] = [];\n\n\t\tlet edit1ToEdit2 = 0;\n\n\t\tfor (const r2 of edits2.replacements) {\n\t\t\t// Copy over edit1 unmodified until it touches edit2.\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 + r1.getNewLength() >= r2.replaceRange.start) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tresult.push(r1);\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tconst firstEdit1ToEdit2 = edit1ToEdit2;\n\t\t\tlet firstIntersecting: T | undefined; // or touching\n\t\t\tlet lastIntersecting: T | undefined; // or touching\n\n\t\t\twhile (true) {\n\t\t\t\tconst r1 = edit1Queue[0];\n\t\t\t\tif (!r1 || r1.replaceRange.start + edit1ToEdit2 > r2.replaceRange.endExclusive) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// else we intersect, because the new end of edit1 is after or equal to our start\n\n\t\t\t\tif (!firstIntersecting) {\n\t\t\t\t\tfirstIntersecting = r1;\n\t\t\t\t}\n\t\t\t\tlastIntersecting = r1;\n\t\t\t\tedit1Queue.shift();\n\n\t\t\t\tedit1ToEdit2 += r1.getNewLength() - r1.replaceRange.length;\n\t\t\t}\n\n\t\t\tif (!firstIntersecting) {\n\t\t\t\tresult.push(r2.delta(-edit1ToEdit2));\n\t\t\t} else {\n\t\t\t\tconst newReplaceRangeStart = Math.min(firstIntersecting.replaceRange.start, r2.replaceRange.start - firstEdit1ToEdit2);\n\n\t\t\t\tconst prefixLength = r2.replaceRange.start - (firstIntersecting.replaceRange.start + firstEdit1ToEdit2);\n\t\t\t\tif (prefixLength > 0) {\n\t\t\t\t\tconst prefix = firstIntersecting.slice(OffsetRange.emptyAt(newReplaceRangeStart), new OffsetRange(0, prefixLength));\n\t\t\t\t\tresult.push(prefix);\n\t\t\t\t}\n\t\t\t\tif (!lastIntersecting) {\n\t\t\t\t\tthrow new BugIndicatingError(`Invariant violation: lastIntersecting is undefined`);\n\t\t\t\t}\n\t\t\t\tconst suffixLength = (lastIntersecting.replaceRange.endExclusive + edit1ToEdit2) - r2.replaceRange.endExclusive;\n\t\t\t\tif (suffixLength > 0) {\n\t\t\t\t\tconst e = lastIntersecting.slice(\n\t\t\t\t\t\tOffsetRange.ofStartAndLength(lastIntersecting.replaceRange.endExclusive, 0),\n\t\t\t\t\t\tnew OffsetRange(lastIntersecting.getNewLength() - suffixLength, lastIntersecting.getNewLength())\n\t\t\t\t\t);\n\t\t\t\t\tedit1Queue.unshift(e);\n\t\t\t\t\tedit1ToEdit2 -= e.getNewLength() - e.replaceRange.length;\n\t\t\t\t}\n\n\t\t\t\tconst newReplaceRange = new OffsetRange(\n\t\t\t\t\tnewReplaceRangeStart,\n\t\t\t\t\tr2.replaceRange.endExclusive - edit1ToEdit2\n\t\t\t\t);\n\t\t\t\tconst middle = r2.slice(newReplaceRange, new OffsetRange(0, r2.getNewLength()));\n\t\t\t\tresult.push(middle);\n\t\t\t}\n\t\t}\n\n\t\twhile (true) {\n\t\t\tconst item = edit1Queue.shift();\n\t\t\tif (!item) { break; }\n\t\t\tresult.push(item);\n\t\t}\n\n\t\treturn this._createNew(result).normalize();\n\t}\n\n\t/**\n\t * Returns the range of each replacement in the applied value.\n\t*/\n\tpublic getNewRanges(): OffsetRange[] {\n\t\tconst ranges: OffsetRange[] = [];\n\t\tlet offset = 0;\n\t\tfor (const e of this.replacements) {\n\t\t\tranges.push(OffsetRange.ofStartAndLength(e.replaceRange.start + offset, e.getNewLength()));\n\t\t\toffset += e.getLengthDelta();\n\t\t}\n\t\treturn ranges;\n\t}\n\n\tpublic isEmpty(): boolean {\n\t\treturn this.replacements.length === 0;\n\t}\n\n\t/**\n\t * Return undefined if the originalOffset is within an edit\n\t */\n\tpublic applyToOffsetOrUndefined(originalOffset: number): number | undefined {\n\t\tlet accumulatedDelta = 0;\n\t\tfor (const edit of this.replacements) {\n\t\t\tif (edit.replaceRange.start <= originalOffset) {\n\t\t\t\tif (originalOffset < edit.replaceRange.endExclusive) {\n\t\t\t\t\t// the offset is in the replaced range\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\taccumulatedDelta += edit.getNewLength() - edit.replaceRange.length;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn originalOffset + accumulatedDelta;\n\t}\n}\n\nexport abstract class BaseReplacement<TSelf extends BaseReplacement<TSelf>> {\n\tconstructor(\n\t\t/**\n\t\t * The range to be replaced.\n\t\t*/\n\t\tpublic readonly replaceRange: OffsetRange,\n\t) { }\n\n\tpublic abstract getNewLength(): number;\n\n\t/**\n\t * Precondition: TEdit.range.endExclusive === other.range.start\n\t*/\n\tpublic abstract tryJoinTouching(other: TSelf): TSelf | undefined;\n\n\tpublic abstract slice(newReplaceRange: OffsetRange, rangeInReplacement?: OffsetRange): TSelf;\n\n\tpublic delta(offset: number): TSelf {\n\t\treturn this.slice(this.replaceRange.delta(offset), new OffsetRange(0, this.getNewLength()));\n\t}\n\n\tpublic getLengthDelta(): number {\n\t\treturn this.getNewLength() - this.replaceRange.length;\n\t}\n\n\tabstract equals(other: TSelf): boolean;\n\n\ttoString(): string {\n\t\treturn `{ ${this.replaceRange.toString()} -> ${this.getNewLength()} }`;\n\t}\n\n\tget isEmpty() {\n\t\treturn this.getNewLength() === 0 && this.replaceRange.length === 0;\n\t}\n\n\tgetRangeAfterReplace(): OffsetRange {\n\t\treturn new OffsetRange(this.replaceRange.start, this.replaceRange.start + this.getNewLength());\n\t}\n}\n"]}
@@ -18,6 +18,16 @@ export class BaseStringEdit extends BaseEdit {
18
18
  resultText.push(base.substring(pos));
19
19
  return resultText.join('');
20
20
  }
21
+ removeCommonSuffixPrefix(originalText) {
22
+ const edits = [];
23
+ for (const e of this.replacements) {
24
+ const edit = e.removeCommonSuffixPrefix(originalText);
25
+ if (!edit.isEmpty) {
26
+ edits.push(edit);
27
+ }
28
+ }
29
+ return new StringEdit(edits);
30
+ }
21
31
  }
22
32
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
33
  export class BaseStringReplacement extends BaseReplacement {
@@ -73,6 +83,9 @@ export class BaseStringReplacement extends BaseReplacement {
73
83
  */
74
84
  export class StringEdit extends BaseStringEdit {
75
85
  static { this.empty = new StringEdit([]); }
86
+ static replace(range, replacement) {
87
+ return new StringEdit([new StringReplacement(range, replacement)]);
88
+ }
76
89
  static compose(edits) {
77
90
  if (edits.length === 0) {
78
91
  return StringEdit.empty;