monaco-editor-core 0.55.1 → 0.56.0-dev-20251122

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 (430) 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 +29 -8
  18. package/esm/vs/base/browser/dom.js +31 -34
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/dompurify/dompurify.js +0 -1
  21. package/esm/vs/base/browser/keyboardEvent.js +3 -3
  22. package/esm/vs/base/browser/keyboardEvent.js.map +1 -1
  23. package/esm/vs/base/browser/markdownRenderer.js +5 -2
  24. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  25. package/esm/vs/base/browser/pixelRatio.js +5 -5
  26. package/esm/vs/base/browser/pixelRatio.js.map +1 -1
  27. package/esm/vs/base/browser/trustedTypes.js +1 -1
  28. package/esm/vs/base/browser/trustedTypes.js.map +1 -1
  29. package/esm/vs/base/browser/ui/actionbar/actionbar.js +3 -0
  30. package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
  31. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  32. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +7 -0
  33. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
  34. package/esm/vs/base/browser/ui/hover/hoverWidget.css +0 -13
  35. package/esm/vs/base/browser/ui/inputbox/inputBox.js +7 -0
  36. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  37. package/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css +4 -2
  38. package/esm/vs/base/browser/ui/list/listView.js +7 -2
  39. package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
  40. package/esm/vs/base/browser/ui/list/rowCache.js +1 -4
  41. package/esm/vs/base/browser/ui/list/rowCache.js.map +1 -1
  42. package/esm/vs/base/browser/ui/menu/menu.js +14 -12
  43. package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
  44. package/esm/vs/base/browser/ui/selectBox/selectBox.js +4 -0
  45. package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
  46. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css +12 -32
  47. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +8 -18
  48. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
  49. package/esm/vs/base/browser/ui/toolbar/toolbar.js +41 -14
  50. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  51. package/esm/vs/base/browser/ui/tree/abstractTree.js +11 -0
  52. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  53. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +1 -0
  54. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  55. package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
  56. package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
  57. package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
  58. package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
  59. package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
  60. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  61. package/esm/vs/base/common/arrays.js +10 -0
  62. package/esm/vs/base/common/arrays.js.map +1 -1
  63. package/esm/vs/base/common/async.js +34 -0
  64. package/esm/vs/base/common/async.js.map +1 -1
  65. package/esm/vs/base/common/buffer.js +1 -1
  66. package/esm/vs/base/common/buffer.js.map +1 -1
  67. package/esm/vs/base/common/cancellation.js.map +1 -1
  68. package/esm/vs/base/common/codiconsLibrary.js +3 -0
  69. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  70. package/esm/vs/base/common/collections.js.map +1 -1
  71. package/esm/vs/base/common/equals.js.map +1 -1
  72. package/esm/vs/base/common/event.js +32 -15
  73. package/esm/vs/base/common/event.js.map +1 -1
  74. package/esm/vs/base/common/filters.js +22 -3
  75. package/esm/vs/base/common/filters.js.map +1 -1
  76. package/esm/vs/base/common/hotReload.js +2 -2
  77. package/esm/vs/base/common/hotReload.js.map +1 -1
  78. package/esm/vs/base/common/iterator.js +1 -1
  79. package/esm/vs/base/common/iterator.js.map +1 -1
  80. package/esm/vs/base/common/keyCodes.js +7 -6
  81. package/esm/vs/base/common/keyCodes.js.map +1 -1
  82. package/esm/vs/base/common/linkedList.js.map +1 -1
  83. package/esm/vs/base/common/map.js +8 -5
  84. package/esm/vs/base/common/map.js.map +1 -1
  85. package/esm/vs/base/common/marked/marked.js +0 -1
  86. package/esm/vs/base/common/network.js +26 -1
  87. package/esm/vs/base/common/network.js.map +1 -1
  88. package/esm/vs/base/common/normalization.js +19 -6
  89. package/esm/vs/base/common/normalization.js.map +1 -1
  90. package/esm/vs/base/common/observableInternal/debugLocation.js +1 -2
  91. package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
  92. package/esm/vs/base/common/observableInternal/debugName.js +0 -1
  93. package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
  94. package/esm/vs/base/common/observableInternal/index.js +4 -4
  95. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  96. package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js +38 -10
  97. package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js.map +1 -1
  98. package/esm/vs/base/common/observableInternal/observables/baseObservable.js +3 -3
  99. package/esm/vs/base/common/observableInternal/observables/baseObservable.js.map +1 -1
  100. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +1 -4
  101. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
  102. package/esm/vs/base/common/observableInternal/utils/utils.js +46 -5
  103. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  104. package/esm/vs/base/common/path.js +1 -0
  105. package/esm/vs/base/common/path.js.map +1 -1
  106. package/esm/vs/base/common/strings.js +27 -19
  107. package/esm/vs/base/common/strings.js.map +1 -1
  108. package/esm/vs/base/common/worker/webWorker.js +10 -7
  109. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  110. package/esm/vs/editor/browser/config/elementSizeObserver.js +5 -5
  111. package/esm/vs/editor/browser/config/elementSizeObserver.js.map +1 -1
  112. package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
  113. package/esm/vs/editor/browser/config/migrateOptions.js +6 -0
  114. package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
  115. package/esm/vs/editor/browser/config/tabFocus.js +4 -2
  116. package/esm/vs/editor/browser/config/tabFocus.js.map +1 -1
  117. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -0
  118. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  119. package/esm/vs/editor/browser/coreCommands.js +1 -2
  120. package/esm/vs/editor/browser/coreCommands.js.map +1 -1
  121. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  122. package/esm/vs/editor/browser/observableCodeEditor.js +32 -1
  123. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  124. package/esm/vs/editor/browser/services/contribution.js +9 -0
  125. package/esm/vs/editor/browser/services/contribution.js.map +1 -0
  126. package/esm/vs/editor/browser/services/editorWorkerService.js +27 -14
  127. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  128. package/esm/vs/editor/browser/services/openerService.js +5 -1
  129. package/esm/vs/editor/browser/services/openerService.js.map +1 -1
  130. package/esm/vs/editor/browser/view/domLineBreaksComputer.js +1 -1
  131. package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
  132. package/esm/vs/editor/browser/view/renderingContext.js +1 -1
  133. package/esm/vs/editor/browser/view/renderingContext.js.map +1 -1
  134. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +10 -3
  135. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map +1 -1
  136. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +3 -4
  137. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
  138. package/esm/vs/editor/browser/viewParts/minimap/minimap.js +1 -1
  139. package/esm/vs/editor/browser/viewParts/minimap/minimap.js.map +1 -1
  140. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +1 -1
  141. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
  142. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +4 -2
  143. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map +1 -1
  144. package/esm/vs/editor/browser/viewParts/rulers/rulers.js +1 -3
  145. package/esm/vs/editor/browser/viewParts/rulers/rulers.js.map +1 -1
  146. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +1 -1
  147. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map +1 -1
  148. package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js +2 -1
  149. package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js.map +1 -1
  150. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +6 -18
  151. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
  152. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +0 -7
  153. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js.map +1 -1
  154. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +7 -2
  155. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  156. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -0
  157. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
  158. package/esm/vs/editor/common/commands/replaceCommand.js +2 -2
  159. package/esm/vs/editor/common/commands/replaceCommand.js.map +1 -1
  160. package/esm/vs/editor/common/config/editorOptions.js +374 -360
  161. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  162. package/esm/vs/editor/common/core/2d/rect.js +7 -0
  163. package/esm/vs/editor/common/core/2d/rect.js.map +1 -1
  164. package/esm/vs/editor/common/core/2d/size.js +20 -0
  165. package/esm/vs/editor/common/core/2d/size.js.map +1 -0
  166. package/esm/vs/editor/common/core/editorColorRegistry.js +69 -68
  167. package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
  168. package/esm/vs/editor/common/core/ranges/offsetRange.js +9 -0
  169. package/esm/vs/editor/common/core/ranges/offsetRange.js.map +1 -1
  170. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  171. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  172. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  173. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  174. package/esm/vs/editor/common/languages.js +56 -56
  175. package/esm/vs/editor/common/languages.js.map +1 -1
  176. package/esm/vs/editor/common/model/editStack.js +1 -1
  177. package/esm/vs/editor/common/services/languagesAssociations.js +6 -8
  178. package/esm/vs/editor/common/services/languagesAssociations.js.map +1 -1
  179. package/esm/vs/editor/common/standaloneStrings.js +11 -10
  180. package/esm/vs/editor/common/standaloneStrings.js.map +1 -1
  181. package/esm/vs/editor/common/textModelEditSource.js +1 -1
  182. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  183. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  184. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  185. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  186. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  187. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  188. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  189. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  190. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  191. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  192. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  193. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  194. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  195. package/esm/vs/editor/contrib/codelens/browser/codelens.js.map +1 -1
  196. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  197. package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
  198. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  199. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  200. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  201. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  202. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  203. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  204. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  205. package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js +14 -0
  206. package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js.map +1 -1
  207. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  208. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  209. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  210. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  211. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  212. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  213. package/esm/vs/editor/contrib/find/browser/findController.js +17 -17
  214. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  215. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  216. package/esm/vs/editor/contrib/find/browser/findWidgetSearchHistory.js.map +1 -1
  217. package/esm/vs/editor/contrib/find/browser/replaceWidgetHistory.js.map +1 -1
  218. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  219. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  220. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  221. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  222. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  223. package/esm/vs/editor/contrib/format/browser/format.js +21 -6
  224. package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
  225. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  226. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  227. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  228. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  229. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  230. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  231. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  232. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  233. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  234. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  235. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  236. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +5 -10
  237. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
  238. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +11 -6
  239. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js.map +1 -1
  240. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  241. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  242. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  243. package/esm/vs/editor/contrib/hover/browser/hoverUtils.js +24 -0
  244. package/esm/vs/editor/contrib/hover/browser/hoverUtils.js.map +1 -1
  245. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  246. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  247. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  248. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  249. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  250. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
  251. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  252. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +18 -16
  253. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  254. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  255. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  256. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +42 -37
  257. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  258. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +3 -3
  259. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +1 -1
  260. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +8 -8
  261. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  262. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +54 -43
  263. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  264. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +12 -12
  265. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  266. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +74 -48
  267. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  268. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +8 -36
  269. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  270. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js +10 -11
  271. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js.map +1 -1
  272. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +105 -119
  273. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  274. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  275. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +8 -36
  276. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  277. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js +95 -0
  278. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js.map +1 -0
  279. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +17 -9
  280. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  281. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +428 -0
  282. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -0
  283. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +290 -0
  284. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -0
  285. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  286. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js +103 -0
  287. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js.map +1 -0
  288. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js +32 -0
  289. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js.map +1 -0
  290. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +44 -11
  291. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  292. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +10 -0
  293. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +181 -0
  294. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -0
  295. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  296. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  297. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -31
  298. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  299. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  300. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  301. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  302. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  303. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  304. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  305. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  306. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  307. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +2 -2
  308. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js.map +1 -1
  309. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +18 -13
  310. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  311. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  312. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  313. package/esm/vs/editor/contrib/rename/browser/rename.js +12 -12
  314. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  315. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  316. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  317. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  318. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  319. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  320. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -1
  321. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  322. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  323. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  324. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  325. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  326. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  327. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  328. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  329. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  330. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  331. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  332. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -29
  333. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  334. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  335. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  336. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +4 -4
  337. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
  338. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  339. package/esm/vs/editor/editor.all.js +1 -0
  340. package/esm/vs/editor/editor.all.js.map +1 -1
  341. package/esm/vs/editor/editor.api.d.ts +9 -5
  342. package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js +22 -2
  343. package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js.map +1 -1
  344. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +39 -0
  345. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -0
  346. package/esm/vs/editor/standalone/browser/standaloneEditor.js +2 -1
  347. package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
  348. package/esm/vs/editor/standalone/browser/standaloneServices.js +3 -21
  349. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  350. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js +4 -4
  351. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
  352. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  353. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  354. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  355. package/esm/vs/platform/actionWidget/browser/actionWidget.css +7 -0
  356. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  357. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +7 -9
  358. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  359. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  360. package/esm/vs/platform/actions/common/actions.js +2 -0
  361. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  362. package/esm/vs/platform/actions/common/menuService.js +2 -2
  363. package/esm/vs/platform/configuration/common/configuration.js +5 -4
  364. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  365. package/esm/vs/platform/configuration/common/configurationModels.js +21 -10
  366. package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
  367. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  368. package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
  369. package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
  370. package/esm/vs/platform/contextkey/browser/contextKeyService.js +3 -3
  371. package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
  372. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  373. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  374. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  375. package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
  376. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  377. package/esm/vs/platform/hover/browser/hoverService.js +17 -8
  378. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  379. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  380. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  381. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  382. package/esm/vs/platform/list/browser/listService.js +27 -27
  383. package/esm/vs/platform/list/browser/listService.js.map +1 -1
  384. package/esm/vs/platform/markers/common/markerService.js +2 -2
  385. package/esm/vs/platform/markers/common/markers.js +6 -6
  386. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +51 -39
  387. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
  388. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  389. package/esm/vs/platform/quickinput/browser/media/quickInput.css +9 -3
  390. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  391. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  392. package/esm/vs/platform/quickinput/browser/quickInputController.js +35 -14
  393. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  394. package/esm/vs/platform/quickinput/browser/quickInputList.js +4 -1
  395. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  396. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  397. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  398. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +78 -39
  399. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  400. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +21 -8
  401. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  402. package/esm/vs/platform/telemetry/common/gdprTypings.js.map +1 -1
  403. package/esm/vs/platform/telemetry/common/telemetry.js.map +1 -1
  404. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  405. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  406. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  407. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  408. package/esm/vs/platform/theme/common/colors/editorColors.js.map +1 -1
  409. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  410. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  411. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  412. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  413. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  414. package/esm/vs/platform/theme/common/colors/miscColors.js.map +1 -1
  415. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  416. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  417. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  418. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  419. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js +12 -0
  420. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -0
  421. package/esm/vs/platform/webWorker/browser/webWorkerService.js +7 -0
  422. package/esm/vs/platform/webWorker/browser/webWorkerService.js.map +1 -0
  423. package/esm/vs/{base/browser/webWorkerFactory.js → platform/webWorker/browser/webWorkerServiceImpl.js} +47 -66
  424. package/esm/vs/platform/webWorker/browser/webWorkerServiceImpl.js.map +1 -0
  425. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  426. package/monaco.d.ts +9 -5
  427. package/package.json +2 -2
  428. package/esm/vs/base/browser/webWorkerFactory.js.map +0 -1
  429. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js +0 -82
  430. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/browser/widget/codeEditor/codeEditorWidget.ts"],"names":[],"mappings":"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","file":"codeEditorWidget.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 '../../services/markerDecorations.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { IMouseWheelEvent } from '../../../../base/browser/mouseEvent.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, EmitterOptions, Event, EventDeliveryQueue, createEventDeliveryQueue } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore, IDisposable, dispose } from '../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport './editor.css';\nimport { applyFontInfo } from '../../config/domFontInfo.js';\nimport { EditorConfiguration, IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { TabFocus } from '../../config/tabFocus.js';\nimport * as editorBrowser from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { IContentWidgetData, IGlyphMarginWidgetData, IOverlayWidgetData, View } from '../../view.js';\nimport { DOMLineBreaksComputerFactory } from '../../view/domLineBreaksComputer.js';\nimport { ICommandDelegate } from '../../view/viewController.js';\nimport { ViewUserInputEvents } from '../../view/viewUserInputEvents.js';\nimport { CodeEditorContributions } from './codeEditorContributions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport { ConfigurationChangedEvent, EditorLayoutInfo, EditorOption, FindComputedEditorOptionValueById, IComputedEditorOptions, IEditorOptions, filterFontDecorations, filterValidationDecorations } from '../../../common/config/editorOptions.js';\nimport { CursorColumns } from '../../../common/core/cursorColumns.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { editorUnnecessaryCodeOpacity } from '../../../common/core/editorColorRegistry.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ISelection, Selection } from '../../../common/core/selection.js';\nimport { IWordAtPosition } from '../../../common/core/wordHelper.js';\nimport { WordOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent, ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { InternalEditorAction } from '../../../common/editorAction.js';\nimport * as editorCommon from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { EndOfLinePreference, IAttachedView, ICursorStateComputer, IIdentifiedSingleEditOperation, IModelDecoration, IModelDecorationsChangeAccessor, IModelDeltaDecoration, ITextModel } from '../../../common/model.js';\nimport { ClassName } from '../../../common/model/intervalTree.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelFontChangedEvent, ModelLineHeightChangedEvent } from '../../../common/textModelEvents.js';\nimport { VerticalRevealType } from '../../../common/viewEvents.js';\nimport { IEditorWhitespace, IViewModel } from '../../../common/viewModel.js';\nimport { MonospaceLineBreaksComputerFactory } from '../../../common/viewModel/monospaceLineBreaksComputer.js';\nimport { ViewModel } from '../../../common/viewModel/viewModelImpl.js';\nimport { OutgoingViewModelEventKind } from '../../../common/viewModelEventDispatcher.js';\nimport * as nls from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyValue, IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { editorErrorForeground, editorHintForeground, editorInfoForeground, editorWarningForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { TextModelEditSource, EditSources } from '../../../common/textModelEditSource.js';\nimport { TextEdit } from '../../../common/core/edits/textEdit.js';\nimport { isObject } from '../../../../base/common/types.js';\n\nexport class CodeEditorWidget extends Disposable implements editorBrowser.ICodeEditor {\n\n\tprivate static readonly dropIntoEditorDecorationOptions = ModelDecorationOptions.register({\n\t\tdescription: 'workbench-dnd-target',\n\t\tclassName: 'dnd-target'\n\t});\n\n\t//#region Eventing\n\n\tprivate readonly _deliveryQueue = createEventDeliveryQueue();\n\tprotected readonly _contributions: CodeEditorContributions = this._register(new CodeEditorContributions());\n\n\tprivate readonly _onDidDispose: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onDidDispose: Event<void> = this._onDidDispose.event;\n\n\tprivate readonly _onDidChangeModelContent: Emitter<IModelContentChangedEvent> = this._register(new Emitter<IModelContentChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelContent: Event<IModelContentChangedEvent> = this._onDidChangeModelContent.event;\n\n\tprivate readonly _onDidChangeModelLanguage: Emitter<IModelLanguageChangedEvent> = this._register(new Emitter<IModelLanguageChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguage: Event<IModelLanguageChangedEvent> = this._onDidChangeModelLanguage.event;\n\n\tprivate readonly _onDidChangeModelLanguageConfiguration: Emitter<IModelLanguageConfigurationChangedEvent> = this._register(new Emitter<IModelLanguageConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguageConfiguration: Event<IModelLanguageConfigurationChangedEvent> = this._onDidChangeModelLanguageConfiguration.event;\n\n\tprivate readonly _onDidChangeModelOptions: Emitter<IModelOptionsChangedEvent> = this._register(new Emitter<IModelOptionsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelOptions: Event<IModelOptionsChangedEvent> = this._onDidChangeModelOptions.event;\n\n\tprivate readonly _onDidChangeModelDecorations: Emitter<IModelDecorationsChangedEvent> = this._register(new Emitter<IModelDecorationsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelDecorations: Event<IModelDecorationsChangedEvent> = this._onDidChangeModelDecorations.event;\n\n\tprivate readonly _onDidChangeLineHeight: Emitter<ModelLineHeightChangedEvent> = this._register(new Emitter<ModelLineHeightChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeLineHeight: Event<ModelLineHeightChangedEvent> = this._onDidChangeLineHeight.event;\n\n\tprivate readonly _onDidChangeFont: Emitter<ModelFontChangedEvent> = this._register(new Emitter<ModelFontChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeFont: Event<ModelFontChangedEvent> = this._onDidChangeFont.event;\n\n\tprivate readonly _onDidChangeModelTokens: Emitter<IModelTokensChangedEvent> = this._register(new Emitter<IModelTokensChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelTokens: Event<IModelTokensChangedEvent> = this._onDidChangeModelTokens.event;\n\n\tprivate readonly _onDidChangeConfiguration: Emitter<ConfigurationChangedEvent> = this._register(new Emitter<ConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeConfiguration: Event<ConfigurationChangedEvent> = this._onDidChangeConfiguration.event;\n\n\tprotected readonly _onWillChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onWillChangeModel: Event<editorCommon.IModelChangedEvent> = this._onWillChangeModel.event;\n\n\tprotected readonly _onDidChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModel: Event<editorCommon.IModelChangedEvent> = this._onDidChangeModel.event;\n\n\tprivate readonly _onDidChangeCursorPosition: Emitter<ICursorPositionChangedEvent> = this._register(new Emitter<ICursorPositionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorPosition: Event<ICursorPositionChangedEvent> = this._onDidChangeCursorPosition.event;\n\n\tprivate readonly _onDidChangeCursorSelection: Emitter<ICursorSelectionChangedEvent> = this._register(new Emitter<ICursorSelectionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorSelection: Event<ICursorSelectionChangedEvent> = this._onDidChangeCursorSelection.event;\n\n\tprivate readonly _onDidAttemptReadOnlyEdit: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidAttemptReadOnlyEdit: Event<void> = this._onDidAttemptReadOnlyEdit.event;\n\n\tprivate readonly _onDidLayoutChange: Emitter<EditorLayoutInfo> = this._register(new Emitter<EditorLayoutInfo>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidLayoutChange: Event<EditorLayoutInfo> = this._onDidLayoutChange.event;\n\n\tprivate readonly _editorTextFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorText: Event<void> = this._editorTextFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorText: Event<void> = this._editorTextFocus.onDidChangeToFalse;\n\n\tprivate readonly _editorWidgetFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToFalse;\n\n\tprivate readonly _onWillType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onWillType = this._onWillType.event;\n\n\tprivate readonly _onDidType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidType = this._onDidType.event;\n\n\tprivate readonly _onDidCompositionStart: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionStart = this._onDidCompositionStart.event;\n\n\tprivate readonly _onDidCompositionEnd: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionEnd = this._onDidCompositionEnd.event;\n\n\tprivate readonly _onDidPaste: Emitter<editorBrowser.IPasteEvent> = this._register(new InteractionEmitter<editorBrowser.IPasteEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidPaste = this._onDidPaste.event;\n\n\tprivate readonly _onMouseUp: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseUp: Event<editorBrowser.IEditorMouseEvent> = this._onMouseUp.event;\n\n\tprivate readonly _onMouseDown: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDown: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDown.event;\n\n\tprivate readonly _onMouseDrag: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrag: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDrag.event;\n\n\tprivate readonly _onMouseDrop: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrop: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseDrop.event;\n\n\tprivate readonly _onMouseDropCanceled: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDropCanceled: Event<void> = this._onMouseDropCanceled.event;\n\n\tprivate readonly _onDropIntoEditor = this._register(new InteractionEmitter<{ readonly position: IPosition; readonly event: DragEvent }>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDropIntoEditor = this._onDropIntoEditor.event;\n\n\tprivate readonly _onContextMenu: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onContextMenu: Event<editorBrowser.IEditorMouseEvent> = this._onContextMenu.event;\n\n\tprivate readonly _onMouseMove: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseMove: Event<editorBrowser.IEditorMouseEvent> = this._onMouseMove.event;\n\n\tprivate readonly _onMouseLeave: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseLeave: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseLeave.event;\n\n\tprivate readonly _onMouseWheel: Emitter<IMouseWheelEvent> = this._register(new InteractionEmitter<IMouseWheelEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseWheel: Event<IMouseWheelEvent> = this._onMouseWheel.event;\n\n\tprivate readonly _onKeyUp: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyUp: Event<IKeyboardEvent> = this._onKeyUp.event;\n\n\tprivate readonly _onKeyDown: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyDown: Event<IKeyboardEvent> = this._onKeyDown.event;\n\n\tprivate readonly _onDidContentSizeChange: Emitter<editorCommon.IContentSizeChangedEvent> = this._register(new Emitter<editorCommon.IContentSizeChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidContentSizeChange: Event<editorCommon.IContentSizeChangedEvent> = this._onDidContentSizeChange.event;\n\n\tprivate readonly _onDidScrollChange: Emitter<editorCommon.IScrollEvent> = this._register(new Emitter<editorCommon.IScrollEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidScrollChange: Event<editorCommon.IScrollEvent> = this._onDidScrollChange.event;\n\n\tprivate readonly _onDidChangeViewZones: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeViewZones: Event<void> = this._onDidChangeViewZones.event;\n\n\tprivate readonly _onDidChangeHiddenAreas: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeHiddenAreas: Event<void> = this._onDidChangeHiddenAreas.event;\n\n\tprivate _updateCounter = 0;\n\n\tprivate readonly _onWillTriggerEditorOperationEvent: Emitter<editorCommon.ITriggerEditorOperationEvent> = this._register(new Emitter<editorCommon.ITriggerEditorOperationEvent>());\n\n\tprivate readonly _onBeginUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onBeginUpdate: Event<void> = this._onBeginUpdate.event;\n\n\tprivate readonly _onEndUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onEndUpdate: Event<void> = this._onEndUpdate.event;\n\n\tprivate readonly _onBeforeExecuteEdit = this._register(new Emitter<{ source: string | undefined }>());\n\tpublic readonly onBeforeExecuteEdit = this._onBeforeExecuteEdit.event;\n\n\t//#endregion\n\n\tpublic get isSimpleWidget(): boolean {\n\t\treturn this._configuration.isSimpleWidget;\n\t}\n\n\tpublic get contextMenuId(): MenuId {\n\t\treturn this._configuration.contextMenuId;\n\t}\n\n\tprivate readonly _telemetryData?: object;\n\n\tprivate readonly _domElement: HTMLElement;\n\tprivate readonly _overflowWidgetsDomNode: HTMLElement | undefined;\n\tprivate readonly _id: number;\n\tprivate readonly _configuration: IEditorConfiguration;\n\tprivate _contributionsDisposable: IDisposable | undefined;\n\n\tprotected readonly _actions = new Map<string, editorCommon.IEditorAction>();\n\n\t// --- Members logically associated to a model\n\tprotected _modelData: ModelData | null;\n\n\tprotected readonly _instantiationService: IInstantiationService;\n\tprotected readonly _contextKeyService: IContextKeyService;\n\tget contextKeyService() { return this._contextKeyService; }\n\tprivate readonly _notificationService: INotificationService;\n\tprotected readonly _codeEditorService: ICodeEditorService;\n\tprivate readonly _commandService: ICommandService;\n\tprivate readonly _themeService: IThemeService;\n\n\tprivate _contentWidgets: { [key: string]: IContentWidgetData };\n\tprivate _overlayWidgets: { [key: string]: IOverlayWidgetData };\n\tprivate _glyphMarginWidgets: { [key: string]: IGlyphMarginWidgetData };\n\n\t/**\n\t * map from \"parent\" decoration type to live decoration ids.\n\t */\n\tprivate _decorationTypeKeysToIds: { [decorationTypeKey: string]: string[] };\n\tprivate _decorationTypeSubtypes: { [decorationTypeKey: string]: { [subtype: string]: boolean } };\n\n\tprivate _bannerDomNode: HTMLElement | null = null;\n\n\tprivate _dropIntoEditorDecorations: EditorDecorationsCollection = this.createDecorationsCollection();\n\n\tpublic inComposition: boolean = false;\n\n\tconstructor(\n\t\tdomElement: HTMLElement,\n\t\t_options: Readonly<IEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: ICodeEditorWidgetOptions,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@ICommandService commandService: ICommandService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IAccessibilityService accessibilityService: IAccessibilityService,\n\t\t@ILanguageConfigurationService private readonly languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tcodeEditorService.willCreateCodeEditor();\n\n\t\tconst options = { ..._options };\n\n\t\tthis._domElement = domElement;\n\t\tthis._overflowWidgetsDomNode = options.overflowWidgetsDomNode;\n\t\tdelete options.overflowWidgetsDomNode;\n\t\tthis._id = (++EDITOR_ID);\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tthis._decorationTypeSubtypes = {};\n\t\tthis._telemetryData = codeEditorWidgetOptions.telemetryData;\n\n\t\tthis._configuration = this._register(this._createConfiguration(codeEditorWidgetOptions.isSimpleWidget || false,\n\t\t\tcodeEditorWidgetOptions.contextMenuId ?? (codeEditorWidgetOptions.isSimpleWidget ? MenuId.SimpleEditorContext : MenuId.EditorContext),\n\t\t\toptions, accessibilityService));\n\t\tthis._register(this._configuration.onDidChange((e) => {\n\t\t\tthis._onDidChangeConfiguration.fire(e);\n\n\t\t\tconst options = this._configuration.options;\n\t\t\tif (e.hasChanged(EditorOption.layoutInfo)) {\n\t\t\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\t\t\tthis._onDidLayoutChange.fire(layoutInfo);\n\t\t\t}\n\t\t}));\n\n\t\tthis._contextKeyService = this._register(contextKeyService.createScoped(this._domElement));\n\t\tif (codeEditorWidgetOptions.contextKeyValues) {\n\t\t\tfor (const [key, value] of Object.entries(codeEditorWidgetOptions.contextKeyValues)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t\tthis._notificationService = notificationService;\n\t\tthis._codeEditorService = codeEditorService;\n\t\tthis._commandService = commandService;\n\t\tthis._themeService = themeService;\n\t\tthis._register(new EditorContextKeysManager(this, this._contextKeyService));\n\t\tthis._register(new EditorModeContext(this, this._contextKeyService, languageFeaturesService));\n\n\t\tthis._instantiationService = this._register(instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\n\t\tthis._modelData = null;\n\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\t\tthis._glyphMarginWidgets = {};\n\n\t\tlet contributions: IEditorContributionDescription[];\n\t\tif (Array.isArray(codeEditorWidgetOptions.contributions)) {\n\t\t\tcontributions = codeEditorWidgetOptions.contributions;\n\t\t} else {\n\t\t\tcontributions = EditorExtensionsRegistry.getEditorContributions();\n\t\t}\n\t\tthis._contributions.initialize(this, contributions, this._instantiationService);\n\n\t\tfor (const action of EditorExtensionsRegistry.getEditorActions()) {\n\t\t\tif (this._actions.has(action.id)) {\n\t\t\t\tonUnexpectedError(new Error(`Cannot have two actions with the same id ${action.id}`));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst internalAction = new InternalEditorAction(\n\t\t\t\taction.id,\n\t\t\t\taction.label,\n\t\t\t\taction.alias,\n\t\t\t\taction.metadata,\n\t\t\t\taction.precondition ?? undefined,\n\t\t\t\t(args: unknown): Promise<void> => {\n\t\t\t\t\treturn this._instantiationService.invokeFunction((accessor) => {\n\t\t\t\t\t\treturn Promise.resolve(action.runEditorCommand(accessor, this, args));\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tthis._contextKeyService\n\t\t\t);\n\t\t\tthis._actions.set(internalAction.id, internalAction);\n\t\t}\n\n\t\tconst isDropIntoEnabled = () => {\n\t\t\treturn !this._configuration.options.get(EditorOption.readOnly)\n\t\t\t\t&& this._configuration.options.get(EditorOption.dropIntoEditor).enabled;\n\t\t};\n\n\t\tthis._register(new dom.DragAndDropObserver(this._domElement, {\n\t\t\tonDragOver: e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis.showDropIndicatorAt(target.position);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDrop: async e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.removeDropIndicator();\n\n\t\t\t\tif (!e.dataTransfer) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis._onDropIntoEditor.fire({ position: target.position, event: e });\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDragLeave: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t\tonDragEnd: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t}));\n\n\t\tthis._codeEditorService.addCodeEditor(this);\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._modelData?.view.writeScreenReaderContent(reason);\n\t}\n\n\tprotected _createConfiguration(isSimpleWidget: boolean, contextMenuId: MenuId, options: Readonly<IEditorConstructionOptions>, accessibilityService: IAccessibilityService): EditorConfiguration {\n\t\treturn new EditorConfiguration(isSimpleWidget, contextMenuId, options, this._domElement, accessibilityService);\n\t}\n\n\tpublic getId(): string {\n\t\treturn this.getEditorType() + ':' + this._id;\n\t}\n\n\tpublic getEditorType(): string {\n\t\treturn editorCommon.EditorType.ICodeEditor;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._codeEditorService.removeCodeEditor(this);\n\n\t\tthis._actions.clear();\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\n\t\tthis._removeDecorationTypes();\n\t\tthis._postDetachModelCleanup(this._detachModel());\n\n\t\tthis._onDidDispose.fire();\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic invokeWithinContext<T>(fn: (accessor: ServicesAccessor) => T): T {\n\t\treturn this._instantiationService.invokeFunction(fn);\n\t}\n\n\tpublic updateOptions(newOptions: Readonly<IEditorOptions> | undefined): void {\n\t\tthis._configuration.updateOptions(newOptions || {});\n\t}\n\n\tpublic getOptions(): IComputedEditorOptions {\n\t\treturn this._configuration.options;\n\t}\n\n\tpublic getOption<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T> {\n\t\treturn this._configuration.options.get(id);\n\t}\n\n\tpublic getRawOptions(): IEditorOptions {\n\t\treturn this._configuration.getRawOptions();\n\t}\n\n\tpublic getOverflowWidgetsDomNode(): HTMLElement | undefined {\n\t\treturn this._overflowWidgetsDomNode;\n\t}\n\n\tpublic getConfiguredWordAtPosition(position: Position): IWordAtPosition | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn WordOperations.getWordAtPosition(this._modelData.model, this._configuration.options.get(EditorOption.wordSeparators), this._configuration.options.get(EditorOption.wordSegmenterLocales), position);\n\t}\n\n\tpublic getValue(options: { preserveBOM: boolean; lineEnding: string } | null = null): string {\n\t\tif (!this._modelData) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst preserveBOM: boolean = (options && options.preserveBOM) ? true : false;\n\t\tlet eolPreference = EndOfLinePreference.TextDefined;\n\t\tif (options && options.lineEnding && options.lineEnding === '\\n') {\n\t\t\teolPreference = EndOfLinePreference.LF;\n\t\t} else if (options && options.lineEnding && options.lineEnding === '\\r\\n') {\n\t\t\teolPreference = EndOfLinePreference.CRLF;\n\t\t}\n\t\treturn this._modelData.model.getValue(eolPreference, preserveBOM);\n\t}\n\n\tpublic setValue(newValue: string): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._modelData.model.setValue(newValue);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tpublic getModel(): ITextModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model;\n\t}\n\n\tpublic setModel(_model: ITextModel | editorCommon.IDiffEditorModel | editorCommon.IDiffEditorViewModel | null = null): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tconst model = <ITextModel | null>_model;\n\t\t\tif (this._modelData === null && model === null) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._modelData && this._modelData.model === model) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst e: editorCommon.IModelChangedEvent = {\n\t\t\t\toldModelUrl: this._modelData?.model.uri || null,\n\t\t\t\tnewModelUrl: model?.uri || null\n\t\t\t};\n\t\t\tthis._onWillChangeModel.fire(e);\n\n\t\t\tconst hasTextFocus = this.hasTextFocus();\n\t\t\tconst detachedModel = this._detachModel();\n\t\t\tthis._attachModel(model);\n\t\t\tif (this.hasModel()) {\n\t\t\t\t// we have a new model (with a new view)!\n\t\t\t\tif (hasTextFocus) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// we have no model (and no view) anymore\n\t\t\t\t// make sure the outside world knows we are not focused\n\t\t\t\tthis._editorTextFocus.setValue(false);\n\t\t\t\tthis._editorWidgetFocus.setValue(false);\n\t\t\t}\n\n\t\t\tthis._removeDecorationTypes();\n\t\t\tthis._onDidChangeModel.fire(e);\n\t\t\tthis._postDetachModelCleanup(detachedModel);\n\n\t\t\tthis._contributionsDisposable = this._contributions.onAfterModelAttached();\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _removeDecorationTypes(): void {\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tif (this._decorationTypeSubtypes) {\n\t\t\tfor (const decorationType in this._decorationTypeSubtypes) {\n\t\t\t\tconst subTypes = this._decorationTypeSubtypes[decorationType];\n\t\t\t\tfor (const subType in subTypes) {\n\t\t\t\t\tthis._removeDecorationType(decorationType + '-' + subType);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._decorationTypeSubtypes = {};\n\t\t}\n\t}\n\n\tpublic getVisibleRanges(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRanges();\n\t}\n\n\tpublic getVisibleRangesPlusViewportAboveBelow(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow();\n\t}\n\n\tpublic getWhitespaces(): IEditorWhitespace[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getWhitespaces();\n\t}\n\n\tprivate static _getVerticalOffsetAfterPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getTopForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, 1, includeViewZones);\n\t}\n\n\tpublic getTopForPosition(lineNumber: number, column: number): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, column, false);\n\t}\n\n\tprivate static _getVerticalOffsetForPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean = false): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getBottomForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\tconst maxCol = this._modelData.model.getLineMaxColumn(lineNumber);\n\t\treturn CodeEditorWidget._getVerticalOffsetAfterPosition(this._modelData, lineNumber, maxCol, includeViewZones);\n\t}\n\n\tpublic getLineHeightForPosition(position: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst coordinatesConverter = viewModel.coordinatesConverter;\n\t\tconst pos = Position.lift(position);\n\t\tif (coordinatesConverter.modelPositionIsVisible(pos)) {\n\t\t\tconst viewPosition = coordinatesConverter.convertModelPositionToViewPosition(pos);\n\t\t\treturn viewModel.viewLayout.getLineHeightForLineNumber(viewPosition.lineNumber);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic setHiddenAreas(ranges: IRange[], source?: unknown, forceUpdate?: boolean): void {\n\t\tthis._modelData?.viewModel.setHiddenAreas(ranges.map(r => Range.lift(r)), source, forceUpdate);\n\t}\n\n\tpublic getVisibleColumnFromPosition(rawPosition: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn rawPosition.column;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst tabSize = this._modelData.model.getOptions().tabSize;\n\n\t\treturn CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(position.lineNumber), position.column, tabSize) + 1;\n\t}\n\n\tpublic getPosition(): Position | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getPosition();\n\t}\n\n\tpublic setPosition(position: IPosition, source: string = 'api'): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, [{\n\t\t\tselectionStartLineNumber: position.lineNumber,\n\t\t\tselectionStartColumn: position.column,\n\t\t\tpositionLineNumber: position.lineNumber,\n\t\t\tpositionColumn: position.column\n\t\t}]);\n\t}\n\n\tprivate _sendRevealRange(modelRange: Range, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Range.isIRange(modelRange)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tconst validatedModelRange = this._modelData.model.validateRange(modelRange);\n\t\tconst viewRange = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(validatedModelRange);\n\n\t\tthis._modelData.viewModel.revealRange('api', revealHorizontal, viewRange, verticalType, scrollType);\n\t}\n\n\tpublic revealLine(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Simple, scrollType);\n\t}\n\n\tpublic revealLineInCenter(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Center, scrollType);\n\t}\n\n\tpublic revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.CenterIfOutsideViewport, scrollType);\n\t}\n\n\tpublic revealLineNearTop(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.NearTop, scrollType);\n\t}\n\n\tprivate _revealLine(lineNumber: number, revealType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof lineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(lineNumber, 1, lineNumber, 1),\n\t\t\trevealType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPosition(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Simple,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenter(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionNearTop(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealPosition(position: IPosition, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic getSelection(): Selection | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelection();\n\t}\n\n\tpublic getSelections(): Selection[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelections();\n\t}\n\n\tpublic setSelection(range: IRange, source?: string): void;\n\tpublic setSelection(editorRange: Range, source?: string): void;\n\tpublic setSelection(selection: ISelection, source?: string): void;\n\tpublic setSelection(editorSelection: Selection, source?: string): void;\n\tpublic setSelection(something: unknown, source?: string): void;\n\tpublic setSelection(something: unknown, source: string = 'api'): void {\n\t\tconst isSelection = Selection.isISelection(something);\n\t\tconst isRange = Range.isIRange(something);\n\n\t\tif (!isSelection && !isRange) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tif (isSelection) {\n\t\t\tthis._setSelectionImpl(something, source);\n\t\t} else if (isRange) {\n\t\t\t// act as if it was an IRange\n\t\t\tconst selection: ISelection = {\n\t\t\t\tselectionStartLineNumber: something.startLineNumber,\n\t\t\t\tselectionStartColumn: something.startColumn,\n\t\t\t\tpositionLineNumber: something.endLineNumber,\n\t\t\t\tpositionColumn: something.endColumn\n\t\t\t};\n\t\t\tthis._setSelectionImpl(selection, source);\n\t\t}\n\t}\n\n\tprivate _setSelectionImpl(sel: ISelection, source: string): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst selection = new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\n\t\tthis._modelData.viewModel.setSelections(source, [selection]);\n\t}\n\n\tpublic revealLines(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Simple,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenter(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Center,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenterIfOutsideViewport(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesNearTop(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealLines(startLineNumber: number, endLineNumber: number, verticalType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof startLineNumber !== 'number' || typeof endLineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(startLineNumber, 1, endLineNumber, 1),\n\t\t\tverticalType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRange(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth, revealVerticalInCenter: boolean = false, revealHorizontal: boolean = true): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\trevealVerticalInCenter ? VerticalRevealType.Center : VerticalRevealType.Simple,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenter(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenterIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTopIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTopIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeAtTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Top,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealRange(range: IRange, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Range.isIRange(range)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tRange.lift(range),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic setSelections(ranges: readonly ISelection[], source: string = 'api', reason = CursorChangeReason.NotSet): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!ranges || ranges.length === 0) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tfor (let i = 0, len = ranges.length; i < len; i++) {\n\t\t\tif (!Selection.isISelection(ranges[i])) {\n\t\t\t\tthrow new Error('Invalid arguments');\n\t\t\t}\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, ranges, reason);\n\t}\n\n\tpublic getContentWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentWidth();\n\t}\n\n\tpublic getScrollWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollWidth();\n\t}\n\tpublic getScrollLeft(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollLeft();\n\t}\n\n\tpublic getContentHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentHeight();\n\t}\n\n\tpublic getScrollHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollHeight();\n\t}\n\tpublic getScrollTop(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollTop();\n\t}\n\n\tpublic setScrollLeft(newScrollLeft: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollLeft !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollLeft: newScrollLeft\n\t\t}, scrollType);\n\t}\n\tpublic setScrollTop(newScrollTop: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollTop !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: newScrollTop\n\t\t}, scrollType);\n\t}\n\tpublic setScrollPosition(position: editorCommon.INewScrollPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition(position, scrollType);\n\t}\n\tpublic hasPendingScrollAnimation(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.hasPendingScrollAnimation();\n\t}\n\n\tpublic saveViewState(): editorCommon.ICodeEditorViewState | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst contributionsState = this._contributions.saveViewState();\n\t\tconst cursorState = this._modelData.viewModel.saveCursorState();\n\t\tconst viewState = this._modelData.viewModel.saveState();\n\t\treturn {\n\t\t\tcursorState: cursorState,\n\t\t\tviewState: viewState,\n\t\t\tcontributionsState: contributionsState\n\t\t};\n\t}\n\n\tpublic restoreViewState(s: editorCommon.IEditorViewState | null): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tconst codeEditorState = s as editorCommon.ICodeEditorViewState | null;\n\t\tif (codeEditorState && codeEditorState.cursorState && codeEditorState.viewState) {\n\t\t\tconst cursorState = <unknown>codeEditorState.cursorState;\n\t\t\tif (Array.isArray(cursorState)) {\n\t\t\t\tif (cursorState.length > 0) {\n\t\t\t\t\tthis._modelData.viewModel.restoreCursorState(<editorCommon.ICursorState[]>cursorState);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Backwards compatibility\n\t\t\t\tthis._modelData.viewModel.restoreCursorState([<editorCommon.ICursorState>cursorState]);\n\t\t\t}\n\n\t\t\tthis._contributions.restoreViewState(codeEditorState.contributionsState || {});\n\t\t\tconst reducedState = this._modelData.viewModel.reduceRestoreState(codeEditorState.viewState);\n\t\t\tthis._modelData.view.restoreState(reducedState);\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._getViewModel()?.visibleLinesStabilized();\n\t}\n\n\tpublic getContribution<T extends editorCommon.IEditorContribution>(id: string): T | null {\n\t\treturn this._contributions.get(id) as T | null;\n\t}\n\n\tpublic getActions(): editorCommon.IEditorAction[] {\n\t\treturn Array.from(this._actions.values());\n\t}\n\n\tpublic getSupportedActions(): editorCommon.IEditorAction[] {\n\t\tlet result = this.getActions();\n\n\t\tresult = result.filter(action => action.isSupported());\n\n\t\treturn result;\n\t}\n\n\tpublic getAction(id: string): editorCommon.IEditorAction | null {\n\t\treturn this._actions.get(id) || null;\n\t}\n\n\tpublic trigger(source: string | null | undefined, handlerId: string, payload: unknown): void {\n\t\tpayload = payload || {};\n\n\t\ttry {\n\t\t\tthis._onWillTriggerEditorOperationEvent.fire({ source: source, handlerId: handlerId, payload: payload });\n\t\t\tthis._beginUpdate();\n\n\t\t\tswitch (handlerId) {\n\t\t\t\tcase editorCommon.Handler.CompositionStart:\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.CompositionEnd:\n\t\t\t\t\tthis._endComposition(source);\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.Type: {\n\t\t\t\t\tconst args = <Partial<editorCommon.TypePayload>>payload;\n\t\t\t\t\tthis._type(source, args.text || '');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.ReplacePreviousChar: {\n\t\t\t\t\tconst args = <Partial<editorCommon.ReplacePreviousCharPayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replaceCharCnt || 0, 0, 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.CompositionType: {\n\t\t\t\t\tconst args = <Partial<editorCommon.CompositionTypePayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replacePrevCharCnt || 0, args.replaceNextCharCnt || 0, args.positionDelta || 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Paste: {\n\t\t\t\t\tconst args = <Partial<editorBrowser.PastePayload>>payload;\n\t\t\t\t\tthis._paste(source, args.text || '', args.pasteOnNewLine || false, args.multicursorText || null, args.mode || null, args.clipboardEvent);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Cut:\n\t\t\t\t\tthis._cut(source);\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst action = this.getAction(handlerId);\n\t\t\tif (action) {\n\t\t\t\tPromise.resolve(action.run(payload)).then(undefined, onUnexpectedError);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._triggerEditorCommand(source, handlerId, payload)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._triggerCommand(handlerId, payload);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprotected _triggerCommand(handlerId: string, payload: unknown): void {\n\t\tthis._commandService.executeCommand(handlerId, payload);\n\t}\n\n\tprivate _startComposition(): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = true;\n\t\tthis._modelData.viewModel.startComposition();\n\t\tthis._onDidCompositionStart.fire();\n\t}\n\n\tprivate _endComposition(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = false;\n\t\tthis._modelData.viewModel.endComposition(source);\n\t\tthis._onDidCompositionEnd.fire();\n\t}\n\n\tprivate _type(source: string | null | undefined, text: string): void {\n\t\tif (!this._modelData || text.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onWillType.fire(text);\n\t\t}\n\t\tthis._modelData.viewModel.type(text, source);\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidType.fire(text);\n\t\t}\n\t}\n\n\tprivate _compositionType(source: string | null | undefined, text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.compositionType(text, replacePrevCharCnt, replaceNextCharCnt, positionDelta, source);\n\t}\n\n\tprivate _paste(source: string | null | undefined, text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null, clipboardEvent?: ClipboardEvent): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst startPosition = viewModel.getSelection().getStartPosition();\n\t\tviewModel.paste(text, pasteOnNewLine, multicursorText, source);\n\t\tconst endPosition = viewModel.getSelection().getStartPosition();\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidPaste.fire({\n\t\t\t\tclipboardEvent,\n\t\t\t\trange: new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column),\n\t\t\t\tlanguageId: mode\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _cut(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.cut(source);\n\t}\n\n\tprivate _triggerEditorCommand(source: string | null | undefined, handlerId: string, payload: unknown): boolean {\n\t\tconst command = EditorExtensionsRegistry.getEditorCommand(handlerId);\n\t\tif (command) {\n\t\t\tpayload = payload || {};\n\t\t\tif (isObject(payload)) {\n\t\t\t\t(payload as { source: string | null | undefined }).source = source;\n\t\t\t}\n\t\t\tthis._instantiationService.invokeFunction((accessor) => {\n\t\t\t\tPromise.resolve(command.runEditorCommand(accessor, this, payload)).then(undefined, onUnexpectedError);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic _getViewModel(): IViewModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel;\n\t}\n\n\tpublic pushUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.pushStackElement();\n\t\treturn true;\n\t}\n\n\tpublic popUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.popStackElement();\n\t\treturn true;\n\t}\n\n\tpublic edit(edit: TextEdit, reason: TextModelEditSource): boolean {\n\t\treturn this.executeEdits(reason, edit.replacements.map<IIdentifiedSingleEditOperation>(e => ({ range: e.range, text: e.text })), undefined);\n\t}\n\n\tpublic executeEdits(source: string | null | undefined | TextModelEditSource, edits: IIdentifiedSingleEditOperation[], endCursorState?: ICursorStateComputer | Selection[]): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\n\t\tlet cursorStateComputer: ICursorStateComputer;\n\t\tif (!endCursorState) {\n\t\t\tcursorStateComputer = () => null;\n\t\t} else if (Array.isArray(endCursorState)) {\n\t\t\tcursorStateComputer = () => endCursorState;\n\t\t} else {\n\t\t\tcursorStateComputer = endCursorState;\n\t\t}\n\n\t\tlet sourceStr: string | undefined | null;\n\t\tlet reason: TextModelEditSource;\n\n\t\tif (source instanceof TextModelEditSource) {\n\t\t\treason = source;\n\t\t\tsourceStr = source.metadata.source;\n\t\t} else {\n\t\t\treason = EditSources.unknown({ name: sourceStr });\n\t\t\tsourceStr = source;\n\t\t}\n\n\t\tthis._onBeforeExecuteEdit.fire({ source: sourceStr ?? undefined });\n\t\tthis._modelData.viewModel.executeEdits(sourceStr, edits, cursorStateComputer, reason);\n\t\treturn true;\n\t}\n\n\tpublic executeCommand(source: string | null | undefined, command: editorCommon.ICommand): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommand(command, source);\n\t}\n\n\tpublic executeCommands(source: string | null | undefined, commands: editorCommon.ICommand[]): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommands(commands, source);\n\t}\n\n\tpublic createDecorationsCollection(decorations?: IModelDeltaDecoration[]): EditorDecorationsCollection {\n\t\treturn new EditorDecorationsCollection(this, decorations);\n\t}\n\n\tpublic changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null {\n\t\tif (!this._modelData) {\n\t\t\t// callback will not be called\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model.changeDecorations(callback, this._id);\n\t}\n\n\tpublic getLineDecorations(lineNumber: number): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getLineDecorations(lineNumber, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getDecorationsInRange(range: Range): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getDecorationsInRange(range, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getFontSizeAtPosition(position: IPosition): string | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getFontSizeAtPosition(position);\n\t}\n\n\t/**\n\t * @deprecated\n\t */\n\tpublic deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (oldDecorations.length === 0 && newDecorations.length === 0) {\n\t\t\treturn oldDecorations;\n\t\t}\n\n\t\treturn this._modelData.model.deltaDecorations(oldDecorations, newDecorations, this._id);\n\t}\n\n\tpublic removeDecorations(decorationIds: string[]): void {\n\t\tif (!this._modelData || decorationIds.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._modelData.model.changeDecorations((changeAccessor) => {\n\t\t\tchangeAccessor.deltaDecorations(decorationIds, []);\n\t\t});\n\t}\n\n\tpublic removeDecorationsByType(decorationTypeKey: string): void {\n\t\t// remove decorations for type and sub type\n\t\tconst oldDecorationsIds = this._decorationTypeKeysToIds[decorationTypeKey];\n\t\tif (oldDecorationsIds) {\n\t\t\tthis.changeDecorations(accessor => accessor.deltaDecorations(oldDecorationsIds, []));\n\t\t}\n\t\tif (this._decorationTypeKeysToIds.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeKeysToIds[decorationTypeKey];\n\t\t}\n\t\tif (this._decorationTypeSubtypes.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeSubtypes[decorationTypeKey];\n\t\t}\n\t}\n\n\tpublic getLayoutInfo(): EditorLayoutInfo {\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\treturn layoutInfo;\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): editorBrowser.IOverviewRuler | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.createOverviewRuler(cssClassName);\n\t}\n\n\tpublic getContainerDomNode(): HTMLElement {\n\t\treturn this._domElement;\n\t}\n\n\tpublic getDomNode(): HTMLElement | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.domNode.domNode;\n\t}\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic layout(dimension?: IDimension, postponeRendering: boolean = false): void {\n\t\tthis._configuration.observeContainer(dimension);\n\t\tif (!postponeRendering) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.focus();\n\t}\n\n\tpublic hasTextFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isFocused();\n\t}\n\n\tpublic hasWidgetFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isWidgetFocused();\n\t}\n\n\tpublic addContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetData: IContentWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._contentWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a content widget with the same id:' + widget.getId());\n\t\t}\n\n\t\tthis._contentWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addContentWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\tdelete this._contentWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetData: IOverlayWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._overlayWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting an overlay widget with the same id.');\n\t\t}\n\n\t\tthis._overlayWidgets[widget.getId()] = widgetData;\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addOverlayWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\tdelete this._overlayWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetData: IGlyphMarginWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a glyph margin widget with the same id.');\n\t\t}\n\n\t\tthis._glyphMarginWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addGlyphMarginWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\tdelete this._glyphMarginWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic changeViewZones(callback: (accessor: editorBrowser.IViewZoneChangeAccessor) => void): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.change(callback);\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): editorBrowser.IMouseTarget | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.getTargetAtClientPoint(clientX, clientY);\n\t}\n\n\tpublic getScrolledVisiblePosition(rawPosition: IPosition): { top: number; left: number; height: number } | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tconst top = CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, position.lineNumber, position.column) - this.getScrollTop();\n\t\tconst left = this._modelData.view.getOffsetForColumn(position.lineNumber, position.column) + layoutInfo.glyphMarginWidth + layoutInfo.lineNumbersWidth + layoutInfo.decorationsWidth - this.getScrollLeft();\n\t\tconst height = this.getLineHeightForPosition(position);\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tleft: left,\n\t\t\theight\n\t\t};\n\t}\n\n\tpublic getOffsetForColumn(lineNumber: number, column: number): number {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.view.getOffsetForColumn(lineNumber, column);\n\t}\n\n\tpublic render(forceRedraw: boolean = false): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.batchEvents(() => {\n\t\t\tthis._modelData!.view.render(true, forceRedraw);\n\t\t});\n\t}\n\n\tpublic setAriaOptions(options: editorBrowser.IEditorAriaOptions): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.setAriaOptions(options);\n\t}\n\n\tpublic applyFontInfo(target: HTMLElement): void {\n\t\tapplyFontInfo(target, this._configuration.options.get(EditorOption.fontInfo));\n\t}\n\n\tpublic setBanner(domNode: HTMLElement | null, domNodeHeight: number): void {\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\n\t\tthis._bannerDomNode = domNode;\n\t\tthis._configuration.setReservedHeight(domNode ? domNodeHeight : 0);\n\n\t\tif (this._bannerDomNode) {\n\t\t\tthis._domElement.prepend(this._bannerDomNode);\n\t\t}\n\t}\n\n\tprotected _attachModel(model: ITextModel | null): void {\n\t\tif (!model) {\n\t\t\tthis._modelData = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst listenersToRemove: IDisposable[] = [];\n\n\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\tthis._configuration.setIsDominatedByLongLines(model.isDominatedByLongLines());\n\t\tthis._configuration.setModelLineCount(model.getLineCount());\n\n\t\tconst attachedView = model.onBeforeAttached();\n\n\t\tconst viewModel = new ViewModel(\n\t\t\tthis._id,\n\t\t\tthis._configuration,\n\t\t\tmodel,\n\t\t\tDOMLineBreaksComputerFactory.create(dom.getWindow(this._domElement)),\n\t\t\tMonospaceLineBreaksComputerFactory.create(this._configuration.options),\n\t\t\t(callback) => dom.scheduleAtNextAnimationFrame(dom.getWindow(this._domElement), callback),\n\t\t\tthis.languageConfigurationService,\n\t\t\tthis._themeService,\n\t\t\tattachedView,\n\t\t\t{\n\t\t\t\tbatchChanges: (cb) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis._beginUpdate();\n\t\t\t\t\t\treturn cb();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._endUpdate();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\n\t\t// Someone might destroy the model from under the editor, so prevent any exceptions by setting a null model\n\t\tlistenersToRemove.push(model.onWillDispose(() => this.setModel(null)));\n\n\t\tlistenersToRemove.push(viewModel.onEvent((e) => {\n\t\t\tswitch (e.kind) {\n\t\t\t\tcase OutgoingViewModelEventKind.ContentSizeChanged:\n\t\t\t\t\tthis._onDidContentSizeChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.FocusChanged:\n\t\t\t\t\tthis._editorTextFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.WidgetFocusChanged:\n\t\t\t\t\tthis._editorWidgetFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ScrollChanged:\n\t\t\t\t\tthis._onDidScrollChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ViewZonesChanged:\n\t\t\t\t\tthis._onDidChangeViewZones.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.HiddenAreasChanged:\n\t\t\t\t\tthis._onDidChangeHiddenAreas.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ReadOnlyEditAttempt:\n\t\t\t\t\tthis._onDidAttemptReadOnlyEdit.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.CursorStateChanged: {\n\t\t\t\t\tif (e.reachedMaxCursorCount) {\n\n\t\t\t\t\t\tconst multiCursorLimit = this.getOption(EditorOption.multiCursorLimit);\n\t\t\t\t\t\tconst message = nls.localize('cursors.maximum', \"The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.\", multiCursorLimit);\n\t\t\t\t\t\tthis._notificationService.prompt(Severity.Warning, message, [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Find and Replace',\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('editor.action.startFindReplaceAction');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: nls.localize('goToSetting', 'Increase Multi Cursor Limit'),\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('workbench.action.openSettings2', {\n\t\t\t\t\t\t\t\t\t\tquery: 'editor.multiCursorLimit'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst positions: Position[] = [];\n\t\t\t\t\tfor (let i = 0, len = e.selections.length; i < len; i++) {\n\t\t\t\t\t\tpositions[i] = e.selections[i].getPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst e1: ICursorPositionChangedEvent = {\n\t\t\t\t\t\tposition: positions[0],\n\t\t\t\t\t\tsecondaryPositions: positions.slice(1),\n\t\t\t\t\t\treason: e.reason,\n\t\t\t\t\t\tsource: e.source\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorPosition.fire(e1);\n\n\t\t\t\t\tconst e2: ICursorSelectionChangedEvent = {\n\t\t\t\t\t\tselection: e.selections[0],\n\t\t\t\t\t\tsecondarySelections: e.selections.slice(1),\n\t\t\t\t\t\tmodelVersionId: e.modelVersionId,\n\t\t\t\t\t\toldSelections: e.oldSelections,\n\t\t\t\t\t\toldModelVersionId: e.oldModelVersionId,\n\t\t\t\t\t\tsource: e.source,\n\t\t\t\t\t\treason: e.reason\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorSelection.fire(e2);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase OutgoingViewModelEventKind.ModelDecorationsChanged:\n\t\t\t\t\tthis._onDidChangeModelDecorations.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageChanged:\n\t\t\t\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\t\t\t\tthis._onDidChangeModelLanguage.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageConfigurationChanged:\n\t\t\t\t\tthis._onDidChangeModelLanguageConfiguration.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelContentChanged:\n\t\t\t\t\tthis._onDidChangeModelContent.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelOptionsChanged:\n\t\t\t\t\tthis._onDidChangeModelOptions.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelTokensChanged:\n\t\t\t\t\tthis._onDidChangeModelTokens.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLineHeightChanged:\n\t\t\t\t\tthis._onDidChangeLineHeight.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelFontChangedEvent:\n\t\t\t\t\tthis._onDidChangeFont.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}));\n\n\t\tconst [view, hasRealView] = this._createView(viewModel);\n\t\tif (hasRealView) {\n\t\t\tthis._domElement.appendChild(view.domNode.domNode);\n\n\t\t\tlet keys = Object.keys(this._contentWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addContentWidget(this._contentWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._overlayWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addOverlayWidget(this._overlayWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._glyphMarginWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addGlyphMarginWidget(this._glyphMarginWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tview.render(false, true);\n\t\t\tview.domNode.domNode.setAttribute('data-uri', model.uri.toString());\n\t\t}\n\n\t\tthis._modelData = new ModelData(model, viewModel, view, hasRealView, listenersToRemove, attachedView);\n\t}\n\n\tprotected _createView(viewModel: ViewModel): [View, boolean] {\n\t\tlet commandDelegate: ICommandDelegate;\n\t\tif (this.isSimpleWidget) {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tthis._paste('keyboard', text, pasteOnNewLine, multicursorText, mode);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tthis._type('keyboard', text);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\tthis._compositionType('keyboard', text, replacePrevCharCnt, replaceNextCharCnt, positionDelta);\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._endComposition('keyboard');\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._cut('keyboard');\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tconst payload: editorBrowser.PastePayload = { text, pasteOnNewLine, multicursorText, mode };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Paste, payload);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tconst payload: editorCommon.TypePayload = { text };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Type, payload);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\t// Try if possible to go through the existing `replacePreviousChar` command\n\t\t\t\t\tif (replaceNextCharCnt || positionDelta) {\n\t\t\t\t\t\t// must be handled through the new command\n\t\t\t\t\t\tconst payload: editorCommon.CompositionTypePayload = { text, replacePrevCharCnt, replaceNextCharCnt, positionDelta };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionType, payload);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst payload: editorCommon.ReplacePreviousCharPayload = { text, replaceCharCnt: replacePrevCharCnt };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.ReplacePreviousChar, payload);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionStart, {});\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionEnd, {});\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Cut, {});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tconst viewUserInputEvents = new ViewUserInputEvents(viewModel.coordinatesConverter);\n\t\tviewUserInputEvents.onKeyDown = (e) => this._onKeyDown.fire(e);\n\t\tviewUserInputEvents.onKeyUp = (e) => this._onKeyUp.fire(e);\n\t\tviewUserInputEvents.onContextMenu = (e) => this._onContextMenu.fire(e);\n\t\tviewUserInputEvents.onMouseMove = (e) => this._onMouseMove.fire(e);\n\t\tviewUserInputEvents.onMouseLeave = (e) => this._onMouseLeave.fire(e);\n\t\tviewUserInputEvents.onMouseDown = (e) => this._onMouseDown.fire(e);\n\t\tviewUserInputEvents.onMouseUp = (e) => this._onMouseUp.fire(e);\n\t\tviewUserInputEvents.onMouseDrag = (e) => this._onMouseDrag.fire(e);\n\t\tviewUserInputEvents.onMouseDrop = (e) => this._onMouseDrop.fire(e);\n\t\tviewUserInputEvents.onMouseDropCanceled = (e) => this._onMouseDropCanceled.fire(e);\n\t\tviewUserInputEvents.onMouseWheel = (e) => this._onMouseWheel.fire(e);\n\n\t\tconst view = new View(\n\t\t\tthis._domElement,\n\t\t\tthis.getId(),\n\t\t\tcommandDelegate,\n\t\t\tthis._configuration,\n\t\t\tthis._themeService.getColorTheme(),\n\t\t\tviewModel,\n\t\t\tviewUserInputEvents,\n\t\t\tthis._overflowWidgetsDomNode,\n\t\t\tthis._instantiationService\n\t\t);\n\n\t\treturn [view, true];\n\t}\n\n\tprotected _postDetachModelCleanup(detachedModel: ITextModel | null): void {\n\t\tdetachedModel?.removeAllDecorationsWithOwnerId(this._id);\n\t}\n\n\tprivate _detachModel(): ITextModel | null {\n\t\tthis._contributionsDisposable?.dispose();\n\t\tthis._contributionsDisposable = undefined;\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = this._modelData.model;\n\t\tconst removeDomNode = this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null;\n\n\t\tthis._modelData.dispose();\n\t\tthis._modelData = null;\n\n\t\tthis._domElement.removeAttribute('data-mode-id');\n\t\tif (removeDomNode && this._domElement.contains(removeDomNode)) {\n\t\t\tremoveDomNode.remove();\n\t\t}\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\t\treturn model;\n\t}\n\n\tprivate _removeDecorationType(key: string): void {\n\t\tthis._codeEditorService.removeDecorationType(key);\n\t}\n\n\tpublic hasModel(): this is editorBrowser.IActiveCodeEditor {\n\t\treturn (this._modelData !== null);\n\t}\n\n\tprivate showDropIndicatorAt(position: Position): void {\n\t\tconst newDecorations: IModelDeltaDecoration[] = [{\n\t\t\trange: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\toptions: CodeEditorWidget.dropIntoEditorDecorationOptions\n\t\t}];\n\n\t\tthis._dropIntoEditorDecorations.set(newDecorations);\n\t\tthis.revealPosition(position, editorCommon.ScrollType.Immediate);\n\t}\n\n\tprivate removeDropIndicator(): void {\n\t\tthis._dropIntoEditorDecorations.clear();\n\t}\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._onBeginUpdate.fire();\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tthis._onEndUpdate.fire();\n\t\t}\n\t}\n}\n\nlet EDITOR_ID = 0;\n\nexport interface ICodeEditorWidgetOptions {\n\t/**\n\t * Is this a simple widget (not a real code editor)?\n\t * Defaults to false.\n\t */\n\tisSimpleWidget?: boolean;\n\n\t/**\n\t * Contributions to instantiate.\n\t * When provided, only the contributions included will be instantiated.\n\t * To include the defaults, those must be provided as well via [...EditorExtensionsRegistry.getEditorContributions()]\n\t * Defaults to EditorExtensionsRegistry.getEditorContributions().\n\t */\n\tcontributions?: IEditorContributionDescription[];\n\n\t/**\n\t * Telemetry data associated with this CodeEditorWidget.\n\t * Defaults to null.\n\t */\n\ttelemetryData?: object;\n\n\t/**\n\t * The ID of the context menu.\n\t * Defaults to MenuId.SimpleEditorContext or MenuId.EditorContext depending on whether the widget is simple.\n\t */\n\tcontextMenuId?: MenuId;\n\n\t/**\n\t * Define extra context keys that will be defined in the context service\n\t * for the editor.\n\t */\n\tcontextKeyValues?: Record<string, ContextKeyValue>;\n}\n\nclass ModelData {\n\tconstructor(\n\t\tpublic readonly model: ITextModel,\n\t\tpublic readonly viewModel: ViewModel,\n\t\tpublic readonly view: View,\n\t\tpublic readonly hasRealView: boolean,\n\t\tpublic readonly listenersToRemove: IDisposable[],\n\t\tpublic readonly attachedView: IAttachedView,\n\t) {\n\t}\n\n\tpublic dispose(): void {\n\t\tdispose(this.listenersToRemove);\n\t\tthis.model.onBeforeDetached(this.attachedView);\n\t\tif (this.hasRealView) {\n\t\t\tthis.view.dispose();\n\t\t}\n\t\tthis.viewModel.dispose();\n\t}\n}\n\nconst enum BooleanEventValue {\n\tNotSet,\n\tFalse,\n\tTrue\n}\n\nexport class BooleanEventEmitter extends Disposable {\n\tprivate readonly _onDidChangeToTrue: Emitter<void>;\n\tpublic readonly onDidChangeToTrue: Event<void>;\n\n\tprivate readonly _onDidChangeToFalse: Emitter<void>;\n\tpublic readonly onDidChangeToFalse: Event<void>;\n\n\tprivate _value: BooleanEventValue;\n\n\tconstructor(\n\t\tprivate readonly _emitterOptions: EmitterOptions\n\t) {\n\t\tsuper();\n\t\tthis._onDidChangeToTrue = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToTrue = this._onDidChangeToTrue.event;\n\t\tthis._onDidChangeToFalse = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToFalse = this._onDidChangeToFalse.event;\n\t\tthis._value = BooleanEventValue.NotSet;\n\t}\n\n\tpublic setValue(_value: boolean) {\n\t\tconst value = (_value ? BooleanEventValue.True : BooleanEventValue.False);\n\t\tif (this._value === value) {\n\t\t\treturn;\n\t\t}\n\t\tthis._value = value;\n\t\tif (this._value === BooleanEventValue.True) {\n\t\t\tthis._onDidChangeToTrue.fire();\n\t\t} else if (this._value === BooleanEventValue.False) {\n\t\t\tthis._onDidChangeToFalse.fire();\n\t\t}\n\t}\n}\n\n/**\n * A regular event emitter that also makes sure contributions are instantiated if necessary\n */\nclass InteractionEmitter<T> extends Emitter<T> {\n\n\tconstructor(\n\t\tprivate readonly _contributions: CodeEditorContributions,\n\t\tdeliveryQueue: EventDeliveryQueue\n\t) {\n\t\tsuper({ deliveryQueue });\n\t}\n\n\toverride fire(event: T): void {\n\t\tthis._contributions.onBeforeInteractionEvent();\n\t\tsuper.fire(event);\n\t}\n}\n\nclass EditorContextKeysManager extends Disposable {\n\n\tprivate readonly _editor: CodeEditorWidget;\n\tprivate readonly _editorSimpleInput: IContextKey<boolean>;\n\tprivate readonly _editorFocus: IContextKey<boolean>;\n\tprivate readonly _textInputFocus: IContextKey<boolean>;\n\tprivate readonly _editorTextFocus: IContextKey<boolean>;\n\tprivate readonly _tabMovesFocus: IContextKey<boolean>;\n\tprivate readonly _editorReadonly: IContextKey<boolean>;\n\tprivate readonly _inDiffEditor: IContextKey<boolean>;\n\tprivate readonly _editorColumnSelection: IContextKey<boolean>;\n\tprivate readonly _hasMultipleSelections: IContextKey<boolean>;\n\tprivate readonly _hasNonEmptySelection: IContextKey<boolean>;\n\tprivate readonly _canUndo: IContextKey<boolean>;\n\tprivate readonly _canRedo: IContextKey<boolean>;\n\n\tconstructor(\n\t\teditor: CodeEditorWidget,\n\t\tcontextKeyService: IContextKeyService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tcontextKeyService.createKey('editorId', editor.getId());\n\n\t\tthis._editorSimpleInput = EditorContextKeys.editorSimpleInput.bindTo(contextKeyService);\n\t\tthis._editorFocus = EditorContextKeys.focus.bindTo(contextKeyService);\n\t\tthis._textInputFocus = EditorContextKeys.textInputFocus.bindTo(contextKeyService);\n\t\tthis._editorTextFocus = EditorContextKeys.editorTextFocus.bindTo(contextKeyService);\n\t\tthis._tabMovesFocus = EditorContextKeys.tabMovesFocus.bindTo(contextKeyService);\n\t\tthis._editorReadonly = EditorContextKeys.readOnly.bindTo(contextKeyService);\n\t\tthis._inDiffEditor = EditorContextKeys.inDiffEditor.bindTo(contextKeyService);\n\t\tthis._editorColumnSelection = EditorContextKeys.columnSelection.bindTo(contextKeyService);\n\t\tthis._hasMultipleSelections = EditorContextKeys.hasMultipleSelections.bindTo(contextKeyService);\n\t\tthis._hasNonEmptySelection = EditorContextKeys.hasNonEmptySelection.bindTo(contextKeyService);\n\t\tthis._canUndo = EditorContextKeys.canUndo.bindTo(contextKeyService);\n\t\tthis._canRedo = EditorContextKeys.canRedo.bindTo(contextKeyService);\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromConfig()));\n\t\tthis._register(this._editor.onDidChangeCursorSelection(() => this._updateFromSelection()));\n\t\tthis._register(this._editor.onDidFocusEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidFocusEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidChangeModel(() => this._updateFromModel()));\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromModel()));\n\t\tthis._register(TabFocus.onDidChangeTabFocus((tabFocusMode: boolean) => this._tabMovesFocus.set(tabFocusMode)));\n\n\t\tthis._updateFromConfig();\n\t\tthis._updateFromSelection();\n\t\tthis._updateFromFocus();\n\t\tthis._updateFromModel();\n\n\t\tthis._editorSimpleInput.set(this._editor.isSimpleWidget);\n\t}\n\n\tprivate _updateFromConfig(): void {\n\t\tconst options = this._editor.getOptions();\n\n\t\tthis._tabMovesFocus.set(options.get(EditorOption.tabFocusMode) || TabFocus.getTabFocusMode());\n\t\tthis._editorReadonly.set(options.get(EditorOption.readOnly));\n\t\tthis._inDiffEditor.set(options.get(EditorOption.inDiffEditor));\n\t\tthis._editorColumnSelection.set(options.get(EditorOption.columnSelection));\n\t}\n\n\tprivate _updateFromSelection(): void {\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections) {\n\t\t\tthis._hasMultipleSelections.reset();\n\t\t\tthis._hasNonEmptySelection.reset();\n\t\t} else {\n\t\t\tthis._hasMultipleSelections.set(selections.length > 1);\n\t\t\tthis._hasNonEmptySelection.set(selections.some(s => !s.isEmpty()));\n\t\t}\n\t}\n\n\tprivate _updateFromFocus(): void {\n\t\tthis._editorFocus.set(this._editor.hasWidgetFocus() && !this._editor.isSimpleWidget);\n\t\tthis._editorTextFocus.set(this._editor.hasTextFocus() && !this._editor.isSimpleWidget);\n\t\tthis._textInputFocus.set(this._editor.hasTextFocus());\n\t}\n\n\tprivate _updateFromModel(): void {\n\t\tconst model = this._editor.getModel();\n\t\tthis._canUndo.set(Boolean(model && model.canUndo()));\n\t\tthis._canRedo.set(Boolean(model && model.canRedo()));\n\t}\n}\n\nexport class EditorModeContext extends Disposable {\n\n\tprivate readonly _langId: IContextKey<string>;\n\tprivate readonly _hasCompletionItemProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeActionsProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeLensProvider: IContextKey<boolean>;\n\tprivate readonly _hasDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasDeclarationProvider: IContextKey<boolean>;\n\tprivate readonly _hasImplementationProvider: IContextKey<boolean>;\n\tprivate readonly _hasTypeDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasHoverProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentHighlightProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSymbolProvider: IContextKey<boolean>;\n\tprivate readonly _hasReferenceProvider: IContextKey<boolean>;\n\tprivate readonly _hasRenameProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasSignatureHelpProvider: IContextKey<boolean>;\n\tprivate readonly _hasInlayHintsProvider: IContextKey<boolean>;\n\tprivate readonly _isInEmbeddedEditor: IContextKey<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: CodeEditorWidget,\n\t\tprivate readonly _contextKeyService: IContextKeyService,\n\t\tprivate readonly _languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\n\t\tthis._langId = EditorContextKeys.languageId.bindTo(_contextKeyService);\n\t\tthis._hasCompletionItemProvider = EditorContextKeys.hasCompletionItemProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeActionsProvider = EditorContextKeys.hasCodeActionsProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeLensProvider = EditorContextKeys.hasCodeLensProvider.bindTo(_contextKeyService);\n\t\tthis._hasDefinitionProvider = EditorContextKeys.hasDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasDeclarationProvider = EditorContextKeys.hasDeclarationProvider.bindTo(_contextKeyService);\n\t\tthis._hasImplementationProvider = EditorContextKeys.hasImplementationProvider.bindTo(_contextKeyService);\n\t\tthis._hasTypeDefinitionProvider = EditorContextKeys.hasTypeDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasHoverProvider = EditorContextKeys.hasHoverProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentHighlightProvider = EditorContextKeys.hasDocumentHighlightProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSymbolProvider = EditorContextKeys.hasDocumentSymbolProvider.bindTo(_contextKeyService);\n\t\tthis._hasReferenceProvider = EditorContextKeys.hasReferenceProvider.bindTo(_contextKeyService);\n\t\tthis._hasRenameProvider = EditorContextKeys.hasRenameProvider.bindTo(_contextKeyService);\n\t\tthis._hasSignatureHelpProvider = EditorContextKeys.hasSignatureHelpProvider.bindTo(_contextKeyService);\n\t\tthis._hasInlayHintsProvider = EditorContextKeys.hasInlayHintsProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentFormattingProvider = EditorContextKeys.hasDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSelectionFormattingProvider = EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentFormattingProvider = EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentSelectionFormattingProvider = EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._isInEmbeddedEditor = EditorContextKeys.isInEmbeddedEditor.bindTo(_contextKeyService);\n\n\t\tconst update = () => this._update();\n\n\t\t// update when model/mode changes\n\t\tthis._register(_editor.onDidChangeModel(update));\n\t\tthis._register(_editor.onDidChangeModelLanguage(update));\n\n\t\t// update when registries change\n\t\tthis._register(_languageFeaturesService.completionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeActionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeLensProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.definitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.declarationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.implementationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.typeDefinitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.hoverProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentHighlightProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentSymbolProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.referenceProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.renameProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentRangeFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.signatureHelpProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.inlayHintsProvider.onDidChange(update));\n\n\t\tupdate();\n\t}\n\n\toverride dispose() {\n\t\tsuper.dispose();\n\t}\n\n\treset() {\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.reset();\n\t\t\tthis._hasCompletionItemProvider.reset();\n\t\t\tthis._hasCodeActionsProvider.reset();\n\t\t\tthis._hasCodeLensProvider.reset();\n\t\t\tthis._hasDefinitionProvider.reset();\n\t\t\tthis._hasDeclarationProvider.reset();\n\t\t\tthis._hasImplementationProvider.reset();\n\t\t\tthis._hasTypeDefinitionProvider.reset();\n\t\t\tthis._hasHoverProvider.reset();\n\t\t\tthis._hasDocumentHighlightProvider.reset();\n\t\t\tthis._hasDocumentSymbolProvider.reset();\n\t\t\tthis._hasReferenceProvider.reset();\n\t\t\tthis._hasRenameProvider.reset();\n\t\t\tthis._hasDocumentFormattingProvider.reset();\n\t\t\tthis._hasDocumentSelectionFormattingProvider.reset();\n\t\t\tthis._hasSignatureHelpProvider.reset();\n\t\t\tthis._isInEmbeddedEditor.reset();\n\t\t});\n\t}\n\n\tprivate _update() {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\tthis.reset();\n\t\t\treturn;\n\t\t}\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.set(model.getLanguageId());\n\t\t\tthis._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(model));\n\t\t\tthis._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(model));\n\t\t\tthis._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(model));\n\t\t\tthis._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(model));\n\t\t\tthis._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(model));\n\t\t\tthis._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(model));\n\t\t\tthis._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(model));\n\t\t\tthis._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(model));\n\t\t\tthis._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(model));\n\t\t\tthis._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(model));\n\t\t\tthis._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(model));\n\t\t\tthis._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(model));\n\t\t\tthis._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(model));\n\t\t\tthis._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(model));\n\t\t\tthis._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(model) || this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(model).length + this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._isInEmbeddedEditor.set(model.uri.scheme === Schemas.walkThroughSnippet || model.uri.scheme === Schemas.vscodeChatCodeBlock);\n\t\t});\n\t}\n}\n\n\nclass EditorDecorationsCollection implements editorCommon.IEditorDecorationsCollection {\n\n\tprivate _decorationIds: string[] = [];\n\tprivate _isChangingDecorations: boolean = false;\n\n\tpublic get length(): number {\n\t\treturn this._decorationIds.length;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _editor: editorBrowser.ICodeEditor,\n\t\tdecorations: IModelDeltaDecoration[] | undefined\n\t) {\n\t\tif (Array.isArray(decorations) && decorations.length > 0) {\n\t\t\tthis.set(decorations);\n\t\t}\n\t}\n\n\tpublic onDidChange(listener: (e: IModelDecorationsChangedEvent) => unknown, thisArgs?: unknown, disposables?: IDisposable[] | DisposableStore): IDisposable {\n\t\treturn this._editor.onDidChangeModelDecorations((e) => {\n\t\t\tif (this._isChangingDecorations) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener.call(thisArgs, e);\n\t\t}, disposables);\n\t}\n\n\tpublic getRange(index: number): Range | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (index >= this._decorationIds.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._editor.getModel().getDecorationRange(this._decorationIds[index]);\n\t}\n\n\tpublic getRanges(): Range[] {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn [];\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tconst result: Range[] = [];\n\t\tfor (const decorationId of this._decorationIds) {\n\t\t\tconst range = model.getDecorationRange(decorationId);\n\t\t\tif (range) {\n\t\t\t\tresult.push(range);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic has(decoration: IModelDecoration): boolean {\n\t\treturn this._decorationIds.includes(decoration.id);\n\t}\n\n\tpublic clear(): void {\n\t\tif (this._decorationIds.length === 0) {\n\t\t\t// nothing to do\n\t\t\treturn;\n\t\t}\n\t\tthis.set([]);\n\t}\n\n\tpublic set(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tthis._decorationIds = accessor.deltaDecorations(this._decorationIds, newDecorations);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn this._decorationIds;\n\t}\n\n\tpublic append(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\tlet newDecorationIds: string[] = [];\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tnewDecorationIds = accessor.deltaDecorations([], newDecorations);\n\t\t\t\tthis._decorationIds = this._decorationIds.concat(newDecorationIds);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn newDecorationIds;\n\t}\n}\n\nconst squigglyStart = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='`);\nconst squigglyEnd = encodeURIComponent(`'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>`);\n\nfunction getSquigglySVGData(color: Color) {\n\treturn squigglyStart + encodeURIComponent(color.toString()) + squigglyEnd;\n}\n\nconst dotdotdotStart = encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"3\" width=\"12\"><g fill=\"`);\nconst dotdotdotEnd = encodeURIComponent(`\"><circle cx=\"1\" cy=\"1\" r=\"1\"/><circle cx=\"5\" cy=\"1\" r=\"1\"/><circle cx=\"9\" cy=\"1\" r=\"1\"/></g></svg>`);\n\nfunction getDotDotDotSVGData(color: Color) {\n\treturn dotdotdotStart + encodeURIComponent(color.toString()) + dotdotdotEnd;\n}\n\nregisterThemingParticipant((theme, collector) => {\n\tconst errorForeground = theme.getColor(editorErrorForeground);\n\tif (errorForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorErrorDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-error-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\"); }`);\n\t}\n\tconst warningForeground = theme.getColor(editorWarningForeground);\n\tif (warningForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorWarningDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-warning-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\"); }`);\n\t}\n\tconst infoForeground = theme.getColor(editorInfoForeground);\n\tif (infoForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorInfoDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-info-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\"); }`);\n\t}\n\tconst hintForeground = theme.getColor(editorHintForeground);\n\tif (hintForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorHintDecoration} { background: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\") no-repeat bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-hint-decoration: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\"); }`);\n\t}\n\tconst unnecessaryForeground = theme.getColor(editorUnnecessaryCodeOpacity);\n\tif (unnecessaryForeground) {\n\t\tcollector.addRule(`.monaco-editor.showUnused .${ClassName.EditorUnnecessaryInlineDecoration} { opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-unnecessary-decoration-opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t}\n});\n"]}
1
+ {"version":3,"sources":["vs/editor/browser/widget/codeEditor/codeEditorWidget.ts"],"names":[],"mappings":"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","file":"codeEditorWidget.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 '../../services/markerDecorations.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { IMouseWheelEvent } from '../../../../base/browser/mouseEvent.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, EmitterOptions, Event, EventDeliveryQueue, createEventDeliveryQueue } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore, IDisposable, dispose } from '../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport './editor.css';\nimport { applyFontInfo } from '../../config/domFontInfo.js';\nimport { EditorConfiguration, IEditorConstructionOptions } from '../../config/editorConfiguration.js';\nimport { TabFocus } from '../../config/tabFocus.js';\nimport * as editorBrowser from '../../editorBrowser.js';\nimport { EditorExtensionsRegistry, IEditorContributionDescription } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { IContentWidgetData, IGlyphMarginWidgetData, IOverlayWidgetData, View } from '../../view.js';\nimport { DOMLineBreaksComputerFactory } from '../../view/domLineBreaksComputer.js';\nimport { ICommandDelegate } from '../../view/viewController.js';\nimport { ViewUserInputEvents } from '../../view/viewUserInputEvents.js';\nimport { CodeEditorContributions } from './codeEditorContributions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport { ConfigurationChangedEvent, EditorLayoutInfo, EditorOption, FindComputedEditorOptionValueById, IComputedEditorOptions, IEditorOptions, filterFontDecorations, filterValidationDecorations } from '../../../common/config/editorOptions.js';\nimport { CursorColumns } from '../../../common/core/cursorColumns.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { editorUnnecessaryCodeOpacity } from '../../../common/core/editorColorRegistry.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ISelection, Selection } from '../../../common/core/selection.js';\nimport { IWordAtPosition } from '../../../common/core/wordHelper.js';\nimport { WordOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { CursorChangeReason, ICursorPositionChangedEvent, ICursorSelectionChangedEvent } from '../../../common/cursorEvents.js';\nimport { InternalEditorAction } from '../../../common/editorAction.js';\nimport * as editorCommon from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { EndOfLinePreference, IAttachedView, ICursorStateComputer, IIdentifiedSingleEditOperation, IModelDecoration, IModelDecorationsChangeAccessor, IModelDeltaDecoration, ITextModel } from '../../../common/model.js';\nimport { ClassName } from '../../../common/model/intervalTree.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, ModelFontChangedEvent, ModelLineHeightChangedEvent } from '../../../common/textModelEvents.js';\nimport { VerticalRevealType } from '../../../common/viewEvents.js';\nimport { IEditorWhitespace, IViewModel } from '../../../common/viewModel.js';\nimport { MonospaceLineBreaksComputerFactory } from '../../../common/viewModel/monospaceLineBreaksComputer.js';\nimport { ViewModel } from '../../../common/viewModel/viewModelImpl.js';\nimport { OutgoingViewModelEventKind } from '../../../common/viewModelEventDispatcher.js';\nimport * as nls from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyValue, IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService, ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../../platform/instantiation/common/serviceCollection.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { editorErrorForeground, editorHintForeground, editorInfoForeground, editorWarningForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { TextModelEditSource, EditSources } from '../../../common/textModelEditSource.js';\nimport { TextEdit } from '../../../common/core/edits/textEdit.js';\nimport { isObject } from '../../../../base/common/types.js';\n\nexport class CodeEditorWidget extends Disposable implements editorBrowser.ICodeEditor {\n\n\tprivate static readonly dropIntoEditorDecorationOptions = ModelDecorationOptions.register({\n\t\tdescription: 'workbench-dnd-target',\n\t\tclassName: 'dnd-target'\n\t});\n\n\t//#region Eventing\n\n\tprivate readonly _deliveryQueue = createEventDeliveryQueue();\n\tprotected readonly _contributions: CodeEditorContributions = this._register(new CodeEditorContributions());\n\n\tprivate readonly _onDidDispose: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onDidDispose: Event<void> = this._onDidDispose.event;\n\n\tprivate readonly _onDidChangeModelContent: Emitter<IModelContentChangedEvent> = this._register(new Emitter<IModelContentChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelContent: Event<IModelContentChangedEvent> = this._onDidChangeModelContent.event;\n\n\tprivate readonly _onDidChangeModelLanguage: Emitter<IModelLanguageChangedEvent> = this._register(new Emitter<IModelLanguageChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguage: Event<IModelLanguageChangedEvent> = this._onDidChangeModelLanguage.event;\n\n\tprivate readonly _onDidChangeModelLanguageConfiguration: Emitter<IModelLanguageConfigurationChangedEvent> = this._register(new Emitter<IModelLanguageConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelLanguageConfiguration: Event<IModelLanguageConfigurationChangedEvent> = this._onDidChangeModelLanguageConfiguration.event;\n\n\tprivate readonly _onDidChangeModelOptions: Emitter<IModelOptionsChangedEvent> = this._register(new Emitter<IModelOptionsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelOptions: Event<IModelOptionsChangedEvent> = this._onDidChangeModelOptions.event;\n\n\tprivate readonly _onDidChangeModelDecorations: Emitter<IModelDecorationsChangedEvent> = this._register(new Emitter<IModelDecorationsChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelDecorations: Event<IModelDecorationsChangedEvent> = this._onDidChangeModelDecorations.event;\n\n\tprivate readonly _onDidChangeLineHeight: Emitter<ModelLineHeightChangedEvent> = this._register(new Emitter<ModelLineHeightChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeLineHeight: Event<ModelLineHeightChangedEvent> = this._onDidChangeLineHeight.event;\n\n\tprivate readonly _onDidChangeFont: Emitter<ModelFontChangedEvent> = this._register(new Emitter<ModelFontChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeFont: Event<ModelFontChangedEvent> = this._onDidChangeFont.event;\n\n\tprivate readonly _onDidChangeModelTokens: Emitter<IModelTokensChangedEvent> = this._register(new Emitter<IModelTokensChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModelTokens: Event<IModelTokensChangedEvent> = this._onDidChangeModelTokens.event;\n\n\tprivate readonly _onDidChangeConfiguration: Emitter<ConfigurationChangedEvent> = this._register(new Emitter<ConfigurationChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeConfiguration: Event<ConfigurationChangedEvent> = this._onDidChangeConfiguration.event;\n\n\tprotected readonly _onWillChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onWillChangeModel: Event<editorCommon.IModelChangedEvent> = this._onWillChangeModel.event;\n\n\tprotected readonly _onDidChangeModel: Emitter<editorCommon.IModelChangedEvent> = this._register(new Emitter<editorCommon.IModelChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeModel: Event<editorCommon.IModelChangedEvent> = this._onDidChangeModel.event;\n\n\tprivate readonly _onDidChangeCursorPosition: Emitter<ICursorPositionChangedEvent> = this._register(new Emitter<ICursorPositionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorPosition: Event<ICursorPositionChangedEvent> = this._onDidChangeCursorPosition.event;\n\n\tprivate readonly _onDidChangeCursorSelection: Emitter<ICursorSelectionChangedEvent> = this._register(new Emitter<ICursorSelectionChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeCursorSelection: Event<ICursorSelectionChangedEvent> = this._onDidChangeCursorSelection.event;\n\n\tprivate readonly _onDidAttemptReadOnlyEdit: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidAttemptReadOnlyEdit: Event<void> = this._onDidAttemptReadOnlyEdit.event;\n\n\tprivate readonly _onDidLayoutChange: Emitter<EditorLayoutInfo> = this._register(new Emitter<EditorLayoutInfo>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidLayoutChange: Event<EditorLayoutInfo> = this._onDidLayoutChange.event;\n\n\tprivate readonly _editorTextFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorText: Event<void> = this._editorTextFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorText: Event<void> = this._editorTextFocus.onDidChangeToFalse;\n\n\tprivate readonly _editorWidgetFocus: BooleanEventEmitter = this._register(new BooleanEventEmitter({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidFocusEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToTrue;\n\tpublic readonly onDidBlurEditorWidget: Event<void> = this._editorWidgetFocus.onDidChangeToFalse;\n\n\tprivate readonly _onWillType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onWillType = this._onWillType.event;\n\n\tprivate readonly _onDidType: Emitter<string> = this._register(new InteractionEmitter<string>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidType = this._onDidType.event;\n\n\tprivate readonly _onDidCompositionStart: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionStart = this._onDidCompositionStart.event;\n\n\tprivate readonly _onDidCompositionEnd: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidCompositionEnd = this._onDidCompositionEnd.event;\n\n\tprivate readonly _onDidPaste: Emitter<editorBrowser.IPasteEvent> = this._register(new InteractionEmitter<editorBrowser.IPasteEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDidPaste = this._onDidPaste.event;\n\n\tprivate readonly _onMouseUp: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseUp: Event<editorBrowser.IEditorMouseEvent> = this._onMouseUp.event;\n\n\tprivate readonly _onMouseDown: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDown: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDown.event;\n\n\tprivate readonly _onMouseDrag: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrag: Event<editorBrowser.IEditorMouseEvent> = this._onMouseDrag.event;\n\n\tprivate readonly _onMouseDrop: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDrop: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseDrop.event;\n\n\tprivate readonly _onMouseDropCanceled: Emitter<void> = this._register(new InteractionEmitter<void>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseDropCanceled: Event<void> = this._onMouseDropCanceled.event;\n\n\tprivate readonly _onDropIntoEditor = this._register(new InteractionEmitter<{ readonly position: IPosition; readonly event: DragEvent }>(this._contributions, this._deliveryQueue));\n\tpublic readonly onDropIntoEditor = this._onDropIntoEditor.event;\n\n\tprivate readonly _onContextMenu: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onContextMenu: Event<editorBrowser.IEditorMouseEvent> = this._onContextMenu.event;\n\n\tprivate readonly _onMouseMove: Emitter<editorBrowser.IEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseMove: Event<editorBrowser.IEditorMouseEvent> = this._onMouseMove.event;\n\n\tprivate readonly _onMouseLeave: Emitter<editorBrowser.IPartialEditorMouseEvent> = this._register(new InteractionEmitter<editorBrowser.IPartialEditorMouseEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseLeave: Event<editorBrowser.IPartialEditorMouseEvent> = this._onMouseLeave.event;\n\n\tprivate readonly _onMouseWheel: Emitter<IMouseWheelEvent> = this._register(new InteractionEmitter<IMouseWheelEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onMouseWheel: Event<IMouseWheelEvent> = this._onMouseWheel.event;\n\n\tprivate readonly _onKeyUp: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyUp: Event<IKeyboardEvent> = this._onKeyUp.event;\n\n\tprivate readonly _onKeyDown: Emitter<IKeyboardEvent> = this._register(new InteractionEmitter<IKeyboardEvent>(this._contributions, this._deliveryQueue));\n\tpublic readonly onKeyDown: Event<IKeyboardEvent> = this._onKeyDown.event;\n\n\tprivate readonly _onDidContentSizeChange: Emitter<editorCommon.IContentSizeChangedEvent> = this._register(new Emitter<editorCommon.IContentSizeChangedEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidContentSizeChange: Event<editorCommon.IContentSizeChangedEvent> = this._onDidContentSizeChange.event;\n\n\tprivate readonly _onDidScrollChange: Emitter<editorCommon.IScrollEvent> = this._register(new Emitter<editorCommon.IScrollEvent>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidScrollChange: Event<editorCommon.IScrollEvent> = this._onDidScrollChange.event;\n\n\tprivate readonly _onDidChangeViewZones: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeViewZones: Event<void> = this._onDidChangeViewZones.event;\n\n\tprivate readonly _onDidChangeHiddenAreas: Emitter<void> = this._register(new Emitter<void>({ deliveryQueue: this._deliveryQueue }));\n\tpublic readonly onDidChangeHiddenAreas: Event<void> = this._onDidChangeHiddenAreas.event;\n\n\tprivate _updateCounter = 0;\n\n\tprivate readonly _onWillTriggerEditorOperationEvent: Emitter<editorCommon.ITriggerEditorOperationEvent> = this._register(new Emitter<editorCommon.ITriggerEditorOperationEvent>());\n\n\tprivate readonly _onBeginUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onBeginUpdate: Event<void> = this._onBeginUpdate.event;\n\n\tprivate readonly _onEndUpdate: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onEndUpdate: Event<void> = this._onEndUpdate.event;\n\n\tprivate readonly _onBeforeExecuteEdit = this._register(new Emitter<{ source: string | undefined }>());\n\tpublic readonly onBeforeExecuteEdit = this._onBeforeExecuteEdit.event;\n\n\t//#endregion\n\n\tpublic get isSimpleWidget(): boolean {\n\t\treturn this._configuration.isSimpleWidget;\n\t}\n\n\tpublic get contextMenuId(): MenuId {\n\t\treturn this._configuration.contextMenuId;\n\t}\n\n\tprivate readonly _telemetryData?: object;\n\n\tprivate readonly _domElement: HTMLElement;\n\tprivate readonly _overflowWidgetsDomNode: HTMLElement | undefined;\n\tprivate readonly _id: number;\n\tprivate readonly _configuration: IEditorConfiguration;\n\tprivate _contributionsDisposable: IDisposable | undefined;\n\n\tprotected readonly _actions = new Map<string, editorCommon.IEditorAction>();\n\n\t// --- Members logically associated to a model\n\tprotected _modelData: ModelData | null;\n\n\tprotected readonly _instantiationService: IInstantiationService;\n\tprotected readonly _contextKeyService: IContextKeyService;\n\tget contextKeyService() { return this._contextKeyService; }\n\tprivate readonly _notificationService: INotificationService;\n\tprotected readonly _codeEditorService: ICodeEditorService;\n\tprivate readonly _commandService: ICommandService;\n\tprivate readonly _themeService: IThemeService;\n\n\tprivate _contentWidgets: { [key: string]: IContentWidgetData };\n\tprivate _overlayWidgets: { [key: string]: IOverlayWidgetData };\n\tprivate _glyphMarginWidgets: { [key: string]: IGlyphMarginWidgetData };\n\n\t/**\n\t * map from \"parent\" decoration type to live decoration ids.\n\t */\n\tprivate _decorationTypeKeysToIds: { [decorationTypeKey: string]: string[] };\n\tprivate _decorationTypeSubtypes: { [decorationTypeKey: string]: { [subtype: string]: boolean } };\n\n\tprivate _bannerDomNode: HTMLElement | null = null;\n\n\tprivate _dropIntoEditorDecorations: EditorDecorationsCollection = this.createDecorationsCollection();\n\n\tpublic inComposition: boolean = false;\n\n\tconstructor(\n\t\tdomElement: HTMLElement,\n\t\t_options: Readonly<IEditorConstructionOptions>,\n\t\tcodeEditorWidgetOptions: ICodeEditorWidgetOptions,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@ICommandService commandService: ICommandService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IAccessibilityService accessibilityService: IAccessibilityService,\n\t\t@ILanguageConfigurationService private readonly languageConfigurationService: ILanguageConfigurationService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tcodeEditorService.willCreateCodeEditor();\n\n\t\tconst options = { ..._options };\n\n\t\tthis._domElement = domElement;\n\t\tthis._overflowWidgetsDomNode = options.overflowWidgetsDomNode;\n\t\tdelete options.overflowWidgetsDomNode;\n\t\tthis._id = (++EDITOR_ID);\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tthis._decorationTypeSubtypes = {};\n\t\tthis._telemetryData = codeEditorWidgetOptions.telemetryData;\n\n\t\tthis._configuration = this._register(this._createConfiguration(codeEditorWidgetOptions.isSimpleWidget || false,\n\t\t\tcodeEditorWidgetOptions.contextMenuId ?? (codeEditorWidgetOptions.isSimpleWidget ? MenuId.SimpleEditorContext : MenuId.EditorContext),\n\t\t\toptions, accessibilityService));\n\t\tthis._register(this._configuration.onDidChange((e) => {\n\t\t\tthis._onDidChangeConfiguration.fire(e);\n\n\t\t\tconst options = this._configuration.options;\n\t\t\tif (e.hasChanged(EditorOption.layoutInfo)) {\n\t\t\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\t\t\tthis._onDidLayoutChange.fire(layoutInfo);\n\t\t\t}\n\t\t}));\n\n\t\tthis._contextKeyService = this._register(contextKeyService.createScoped(this._domElement));\n\t\tif (codeEditorWidgetOptions.contextKeyValues) {\n\t\t\tfor (const [key, value] of Object.entries(codeEditorWidgetOptions.contextKeyValues)) {\n\t\t\t\tthis._contextKeyService.createKey(key, value);\n\t\t\t}\n\t\t}\n\t\tthis._notificationService = notificationService;\n\t\tthis._codeEditorService = codeEditorService;\n\t\tthis._commandService = commandService;\n\t\tthis._themeService = themeService;\n\t\tthis._register(new EditorContextKeysManager(this, this._contextKeyService));\n\t\tthis._register(new EditorModeContext(this, this._contextKeyService, languageFeaturesService));\n\n\t\tthis._instantiationService = this._register(instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService])));\n\n\t\tthis._modelData = null;\n\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\t\tthis._glyphMarginWidgets = {};\n\n\t\tlet contributions: IEditorContributionDescription[];\n\t\tif (Array.isArray(codeEditorWidgetOptions.contributions)) {\n\t\t\tcontributions = codeEditorWidgetOptions.contributions;\n\t\t} else {\n\t\t\tcontributions = EditorExtensionsRegistry.getEditorContributions();\n\t\t}\n\t\tthis._contributions.initialize(this, contributions, this._instantiationService);\n\n\t\tfor (const action of EditorExtensionsRegistry.getEditorActions()) {\n\t\t\tif (this._actions.has(action.id)) {\n\t\t\t\tonUnexpectedError(new Error(`Cannot have two actions with the same id ${action.id}`));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst internalAction = new InternalEditorAction(\n\t\t\t\taction.id,\n\t\t\t\taction.label,\n\t\t\t\taction.alias,\n\t\t\t\taction.metadata,\n\t\t\t\taction.precondition ?? undefined,\n\t\t\t\t(args: unknown): Promise<void> => {\n\t\t\t\t\treturn this._instantiationService.invokeFunction((accessor) => {\n\t\t\t\t\t\treturn Promise.resolve(action.runEditorCommand(accessor, this, args));\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tthis._contextKeyService\n\t\t\t);\n\t\t\tthis._actions.set(internalAction.id, internalAction);\n\t\t}\n\n\t\tconst isDropIntoEnabled = () => {\n\t\t\treturn !this._configuration.options.get(EditorOption.readOnly)\n\t\t\t\t&& this._configuration.options.get(EditorOption.dropIntoEditor).enabled;\n\t\t};\n\n\t\tthis._register(new dom.DragAndDropObserver(this._domElement, {\n\t\t\tonDragOver: e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis.showDropIndicatorAt(target.position);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDrop: async e => {\n\t\t\t\tif (!isDropIntoEnabled()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.removeDropIndicator();\n\n\t\t\t\tif (!e.dataTransfer) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst target = this.getTargetAtClientPoint(e.clientX, e.clientY);\n\t\t\t\tif (target?.position) {\n\t\t\t\t\tthis._onDropIntoEditor.fire({ position: target.position, event: e });\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDragLeave: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t\tonDragEnd: () => {\n\t\t\t\tthis.removeDropIndicator();\n\t\t\t},\n\t\t}));\n\n\t\tthis._codeEditorService.addCodeEditor(this);\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._modelData?.view.writeScreenReaderContent(reason);\n\t}\n\n\tprotected _createConfiguration(isSimpleWidget: boolean, contextMenuId: MenuId, options: Readonly<IEditorConstructionOptions>, accessibilityService: IAccessibilityService): EditorConfiguration {\n\t\treturn new EditorConfiguration(isSimpleWidget, contextMenuId, options, this._domElement, accessibilityService);\n\t}\n\n\tpublic getId(): string {\n\t\treturn this.getEditorType() + ':' + this._id;\n\t}\n\n\tpublic getEditorType(): string {\n\t\treturn editorCommon.EditorType.ICodeEditor;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._codeEditorService.removeCodeEditor(this);\n\n\t\tthis._actions.clear();\n\t\tthis._contentWidgets = {};\n\t\tthis._overlayWidgets = {};\n\n\t\tthis._removeDecorationTypes();\n\t\tthis._postDetachModelCleanup(this._detachModel());\n\n\t\tthis._onDidDispose.fire();\n\n\t\tsuper.dispose();\n\t}\n\n\tpublic invokeWithinContext<T>(fn: (accessor: ServicesAccessor) => T): T {\n\t\treturn this._instantiationService.invokeFunction(fn);\n\t}\n\n\tpublic updateOptions(newOptions: Readonly<IEditorOptions> | undefined): void {\n\t\tthis._configuration.updateOptions(newOptions || {});\n\t}\n\n\tpublic getOptions(): IComputedEditorOptions {\n\t\treturn this._configuration.options;\n\t}\n\n\tpublic getOption<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T> {\n\t\treturn this._configuration.options.get(id);\n\t}\n\n\tpublic getRawOptions(): IEditorOptions {\n\t\treturn this._configuration.getRawOptions();\n\t}\n\n\tpublic getOverflowWidgetsDomNode(): HTMLElement | undefined {\n\t\treturn this._overflowWidgetsDomNode;\n\t}\n\n\tpublic getConfiguredWordAtPosition(position: Position): IWordAtPosition | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn WordOperations.getWordAtPosition(this._modelData.model, this._configuration.options.get(EditorOption.wordSeparators), this._configuration.options.get(EditorOption.wordSegmenterLocales), position);\n\t}\n\n\tpublic getValue(options: { preserveBOM: boolean; lineEnding: string } | null = null): string {\n\t\tif (!this._modelData) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst preserveBOM: boolean = (options && options.preserveBOM) ? true : false;\n\t\tlet eolPreference = EndOfLinePreference.TextDefined;\n\t\tif (options && options.lineEnding && options.lineEnding === '\\n') {\n\t\t\teolPreference = EndOfLinePreference.LF;\n\t\t} else if (options && options.lineEnding && options.lineEnding === '\\r\\n') {\n\t\t\teolPreference = EndOfLinePreference.CRLF;\n\t\t}\n\t\treturn this._modelData.model.getValue(eolPreference, preserveBOM);\n\t}\n\n\tpublic setValue(newValue: string): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._modelData.model.setValue(newValue);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tpublic getModel(): ITextModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model;\n\t}\n\n\tpublic setModel(_model: ITextModel | editorCommon.IDiffEditorModel | editorCommon.IDiffEditorViewModel | null = null): void {\n\t\ttry {\n\t\t\tthis._beginUpdate();\n\t\t\tconst model = <ITextModel | null>_model;\n\t\t\tif (this._modelData === null && model === null) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._modelData && this._modelData.model === model) {\n\t\t\t\t// Current model is the new model\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst e: editorCommon.IModelChangedEvent = {\n\t\t\t\toldModelUrl: this._modelData?.model.uri || null,\n\t\t\t\tnewModelUrl: model?.uri || null\n\t\t\t};\n\t\t\tthis._onWillChangeModel.fire(e);\n\n\t\t\tconst hasTextFocus = this.hasTextFocus();\n\t\t\tconst detachedModel = this._detachModel();\n\t\t\tthis._attachModel(model);\n\t\t\tif (this.hasModel()) {\n\t\t\t\t// we have a new model (with a new view)!\n\t\t\t\tif (hasTextFocus) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// we have no model (and no view) anymore\n\t\t\t\t// make sure the outside world knows we are not focused\n\t\t\t\tthis._editorTextFocus.setValue(false);\n\t\t\t\tthis._editorWidgetFocus.setValue(false);\n\t\t\t}\n\n\t\t\tthis._removeDecorationTypes();\n\t\t\tthis._onDidChangeModel.fire(e);\n\t\t\tthis._postDetachModelCleanup(detachedModel);\n\n\t\t\tthis._contributionsDisposable = this._contributions.onAfterModelAttached();\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _removeDecorationTypes(): void {\n\t\tthis._decorationTypeKeysToIds = {};\n\t\tif (this._decorationTypeSubtypes) {\n\t\t\tfor (const decorationType in this._decorationTypeSubtypes) {\n\t\t\t\tconst subTypes = this._decorationTypeSubtypes[decorationType];\n\t\t\t\tfor (const subType in subTypes) {\n\t\t\t\t\tthis._removeDecorationType(decorationType + '-' + subType);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._decorationTypeSubtypes = {};\n\t\t}\n\t}\n\n\tpublic getVisibleRanges(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRanges();\n\t}\n\n\tpublic getVisibleRangesPlusViewportAboveBelow(): Range[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow();\n\t}\n\n\tpublic getWhitespaces(): IEditorWhitespace[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getWhitespaces();\n\t}\n\n\tprivate static _getVerticalOffsetAfterPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getTopForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, 1, includeViewZones);\n\t}\n\n\tpublic getTopForPosition(lineNumber: number, column: number): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, column, false);\n\t}\n\n\tprivate static _getVerticalOffsetForPosition(modelData: ModelData, modelLineNumber: number, modelColumn: number, includeViewZones: boolean = false): number {\n\t\tconst modelPosition = modelData.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\treturn modelData.viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber, includeViewZones);\n\t}\n\n\tpublic getBottomForLineNumber(lineNumber: number, includeViewZones: boolean = false): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn CodeEditorWidget._getVerticalOffsetAfterPosition(this._modelData, lineNumber, Number.MAX_SAFE_INTEGER, includeViewZones);\n\t}\n\n\tpublic getLineHeightForPosition(position: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst coordinatesConverter = viewModel.coordinatesConverter;\n\t\tconst pos = Position.lift(position);\n\t\tif (coordinatesConverter.modelPositionIsVisible(pos)) {\n\t\t\tconst viewPosition = coordinatesConverter.convertModelPositionToViewPosition(pos);\n\t\t\treturn viewModel.viewLayout.getLineHeightForLineNumber(viewPosition.lineNumber);\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic setHiddenAreas(ranges: IRange[], source?: unknown, forceUpdate?: boolean): void {\n\t\tthis._modelData?.viewModel.setHiddenAreas(ranges.map(r => Range.lift(r)), source, forceUpdate);\n\t}\n\n\tpublic getVisibleColumnFromPosition(rawPosition: IPosition): number {\n\t\tif (!this._modelData) {\n\t\t\treturn rawPosition.column;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst tabSize = this._modelData.model.getOptions().tabSize;\n\n\t\treturn CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(position.lineNumber), position.column, tabSize) + 1;\n\t}\n\n\tpublic getPosition(): Position | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getPosition();\n\t}\n\n\tpublic setPosition(position: IPosition, source: string = 'api'): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, [{\n\t\t\tselectionStartLineNumber: position.lineNumber,\n\t\t\tselectionStartColumn: position.column,\n\t\t\tpositionLineNumber: position.lineNumber,\n\t\t\tpositionColumn: position.column\n\t\t}]);\n\t}\n\n\tprivate _sendRevealRange(modelRange: Range, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!Range.isIRange(modelRange)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tconst validatedModelRange = this._modelData.model.validateRange(modelRange);\n\t\tconst viewRange = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(validatedModelRange);\n\n\t\tthis._modelData.viewModel.revealRange('api', revealHorizontal, viewRange, verticalType, scrollType);\n\t}\n\n\tpublic revealAllCursors(revealHorizontal: boolean, minimalReveal?: boolean): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.revealAllCursors('api', revealHorizontal, minimalReveal);\n\t}\n\n\tpublic revealLine(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Simple, scrollType);\n\t}\n\n\tpublic revealLineInCenter(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.Center, scrollType);\n\t}\n\n\tpublic revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.CenterIfOutsideViewport, scrollType);\n\t}\n\n\tpublic revealLineNearTop(lineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLine(lineNumber, VerticalRevealType.NearTop, scrollType);\n\t}\n\n\tprivate _revealLine(lineNumber: number, revealType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof lineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(lineNumber, 1, lineNumber, 1),\n\t\t\trevealType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPosition(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Simple,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenter(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealPositionNearTop(position: IPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealPosition(\n\t\t\tposition,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealPosition(position: IPosition, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Position.isIPosition(position)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic getSelection(): Selection | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelection();\n\t}\n\n\tpublic getSelections(): Selection[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getSelections();\n\t}\n\n\tpublic setSelection(range: IRange, source?: string): void;\n\tpublic setSelection(editorRange: Range, source?: string): void;\n\tpublic setSelection(selection: ISelection, source?: string): void;\n\tpublic setSelection(editorSelection: Selection, source?: string): void;\n\tpublic setSelection(something: unknown, source?: string): void;\n\tpublic setSelection(something: unknown, source: string = 'api'): void {\n\t\tconst isSelection = Selection.isISelection(something);\n\t\tconst isRange = Range.isIRange(something);\n\n\t\tif (!isSelection && !isRange) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tif (isSelection) {\n\t\t\tthis._setSelectionImpl(something, source);\n\t\t} else if (isRange) {\n\t\t\t// act as if it was an IRange\n\t\t\tconst selection: ISelection = {\n\t\t\t\tselectionStartLineNumber: something.startLineNumber,\n\t\t\t\tselectionStartColumn: something.startColumn,\n\t\t\t\tpositionLineNumber: something.endLineNumber,\n\t\t\t\tpositionColumn: something.endColumn\n\t\t\t};\n\t\t\tthis._setSelectionImpl(selection, source);\n\t\t}\n\t}\n\n\tprivate _setSelectionImpl(sel: ISelection, source: string): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst selection = new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\n\t\tthis._modelData.viewModel.setSelections(source, [selection]);\n\t}\n\n\tpublic revealLines(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Simple,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenter(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.Center,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesInCenterIfOutsideViewport(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealLinesNearTop(startLineNumber: number, endLineNumber: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealLines(\n\t\t\tstartLineNumber,\n\t\t\tendLineNumber,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealLines(startLineNumber: number, endLineNumber: number, verticalType: VerticalRevealType, scrollType: editorCommon.ScrollType): void {\n\t\tif (typeof startLineNumber !== 'number' || typeof endLineNumber !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tnew Range(startLineNumber, 1, endLineNumber, 1),\n\t\t\tverticalType,\n\t\t\tfalse,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRange(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth, revealVerticalInCenter: boolean = false, revealHorizontal: boolean = true): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\trevealVerticalInCenter ? VerticalRevealType.Center : VerticalRevealType.Simple,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenter(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Center,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeInCenterIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.CenterIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTop,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeNearTopIfOutsideViewport(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.NearTopIfOutsideViewport,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic revealRangeAtTop(range: IRange, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Smooth): void {\n\t\tthis._revealRange(\n\t\t\trange,\n\t\t\tVerticalRevealType.Top,\n\t\t\ttrue,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tprivate _revealRange(range: IRange, verticalType: VerticalRevealType, revealHorizontal: boolean, scrollType: editorCommon.ScrollType): void {\n\t\tif (!Range.isIRange(range)) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\n\t\tthis._sendRevealRange(\n\t\t\tRange.lift(range),\n\t\t\tverticalType,\n\t\t\trevealHorizontal,\n\t\t\tscrollType\n\t\t);\n\t}\n\n\tpublic setSelections(ranges: readonly ISelection[], source: string = 'api', reason = CursorChangeReason.NotSet): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (!ranges || ranges.length === 0) {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tfor (let i = 0, len = ranges.length; i < len; i++) {\n\t\t\tif (!Selection.isISelection(ranges[i])) {\n\t\t\t\tthrow new Error('Invalid arguments');\n\t\t\t}\n\t\t}\n\t\tthis._modelData.viewModel.setSelections(source, ranges, reason);\n\t}\n\n\tpublic getContentWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentWidth();\n\t}\n\n\tpublic getScrollWidth(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollWidth();\n\t}\n\tpublic getScrollLeft(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollLeft();\n\t}\n\n\tpublic getContentHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getContentHeight();\n\t}\n\n\tpublic getScrollHeight(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getScrollHeight();\n\t}\n\tpublic getScrollTop(): number {\n\t\tif (!this._modelData) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.getCurrentScrollTop();\n\t}\n\n\tpublic setScrollLeft(newScrollLeft: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollLeft !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollLeft: newScrollLeft\n\t\t}, scrollType);\n\t}\n\tpublic setScrollTop(newScrollTop: number, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof newScrollTop !== 'number') {\n\t\t\tthrow new Error('Invalid arguments');\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: newScrollTop\n\t\t}, scrollType);\n\t}\n\tpublic setScrollPosition(position: editorCommon.INewScrollPosition, scrollType: editorCommon.ScrollType = editorCommon.ScrollType.Immediate): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.viewLayout.setScrollPosition(position, scrollType);\n\t}\n\tpublic hasPendingScrollAnimation(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.viewModel.viewLayout.hasPendingScrollAnimation();\n\t}\n\n\tpublic saveViewState(): editorCommon.ICodeEditorViewState | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst contributionsState = this._contributions.saveViewState();\n\t\tconst cursorState = this._modelData.viewModel.saveCursorState();\n\t\tconst viewState = this._modelData.viewModel.saveState();\n\t\treturn {\n\t\t\tcursorState: cursorState,\n\t\t\tviewState: viewState,\n\t\t\tcontributionsState: contributionsState\n\t\t};\n\t}\n\n\tpublic restoreViewState(s: editorCommon.IEditorViewState | null): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tconst codeEditorState = s as editorCommon.ICodeEditorViewState | null;\n\t\tif (codeEditorState && codeEditorState.cursorState && codeEditorState.viewState) {\n\t\t\tconst cursorState = <unknown>codeEditorState.cursorState;\n\t\t\tif (Array.isArray(cursorState)) {\n\t\t\t\tif (cursorState.length > 0) {\n\t\t\t\t\tthis._modelData.viewModel.restoreCursorState(<editorCommon.ICursorState[]>cursorState);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Backwards compatibility\n\t\t\t\tthis._modelData.viewModel.restoreCursorState([<editorCommon.ICursorState>cursorState]);\n\t\t\t}\n\n\t\t\tthis._contributions.restoreViewState(codeEditorState.contributionsState || {});\n\t\t\tconst reducedState = this._modelData.viewModel.reduceRestoreState(codeEditorState.viewState);\n\t\t\tthis._modelData.view.restoreState(reducedState);\n\t\t}\n\t}\n\n\tpublic handleInitialized(): void {\n\t\tthis._getViewModel()?.visibleLinesStabilized();\n\t}\n\n\tpublic getContribution<T extends editorCommon.IEditorContribution>(id: string): T | null {\n\t\treturn this._contributions.get(id) as T | null;\n\t}\n\n\tpublic getActions(): editorCommon.IEditorAction[] {\n\t\treturn Array.from(this._actions.values());\n\t}\n\n\tpublic getSupportedActions(): editorCommon.IEditorAction[] {\n\t\tlet result = this.getActions();\n\n\t\tresult = result.filter(action => action.isSupported());\n\n\t\treturn result;\n\t}\n\n\tpublic getAction(id: string): editorCommon.IEditorAction | null {\n\t\treturn this._actions.get(id) || null;\n\t}\n\n\tpublic trigger(source: string | null | undefined, handlerId: string, payload: unknown): void {\n\t\tpayload = payload || {};\n\n\t\ttry {\n\t\t\tthis._onWillTriggerEditorOperationEvent.fire({ source: source, handlerId: handlerId, payload: payload });\n\t\t\tthis._beginUpdate();\n\n\t\t\tswitch (handlerId) {\n\t\t\t\tcase editorCommon.Handler.CompositionStart:\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.CompositionEnd:\n\t\t\t\t\tthis._endComposition(source);\n\t\t\t\t\treturn;\n\t\t\t\tcase editorCommon.Handler.Type: {\n\t\t\t\t\tconst args = <Partial<editorCommon.TypePayload>>payload;\n\t\t\t\t\tthis._type(source, args.text || '');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.ReplacePreviousChar: {\n\t\t\t\t\tconst args = <Partial<editorCommon.ReplacePreviousCharPayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replaceCharCnt || 0, 0, 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.CompositionType: {\n\t\t\t\t\tconst args = <Partial<editorCommon.CompositionTypePayload>>payload;\n\t\t\t\t\tthis._compositionType(source, args.text || '', args.replacePrevCharCnt || 0, args.replaceNextCharCnt || 0, args.positionDelta || 0);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Paste: {\n\t\t\t\t\tconst args = <Partial<editorBrowser.PastePayload>>payload;\n\t\t\t\t\tthis._paste(source, args.text || '', args.pasteOnNewLine || false, args.multicursorText || null, args.mode || null, args.clipboardEvent);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase editorCommon.Handler.Cut:\n\t\t\t\t\tthis._cut(source);\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst action = this.getAction(handlerId);\n\t\t\tif (action) {\n\t\t\t\tPromise.resolve(action.run(payload)).then(undefined, onUnexpectedError);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this._modelData) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this._triggerEditorCommand(source, handlerId, payload)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._triggerCommand(handlerId, payload);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprotected _triggerCommand(handlerId: string, payload: unknown): void {\n\t\tthis._commandService.executeCommand(handlerId, payload);\n\t}\n\n\tprivate _startComposition(): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = true;\n\t\tthis._modelData.viewModel.startComposition();\n\t\tthis._onDidCompositionStart.fire();\n\t}\n\n\tprivate _endComposition(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.inComposition = false;\n\t\tthis._modelData.viewModel.endComposition(source);\n\t\tthis._onDidCompositionEnd.fire();\n\t}\n\n\tprivate _type(source: string | null | undefined, text: string): void {\n\t\tif (!this._modelData || text.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onWillType.fire(text);\n\t\t}\n\t\tthis._modelData.viewModel.type(text, source);\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidType.fire(text);\n\t\t}\n\t}\n\n\tprivate _compositionType(source: string | null | undefined, text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.compositionType(text, replacePrevCharCnt, replaceNextCharCnt, positionDelta, source);\n\t}\n\n\tprivate _paste(source: string | null | undefined, text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null, clipboardEvent?: ClipboardEvent): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tconst viewModel = this._modelData.viewModel;\n\t\tconst startPosition = viewModel.getSelection().getStartPosition();\n\t\tviewModel.paste(text, pasteOnNewLine, multicursorText, source);\n\t\tconst endPosition = viewModel.getSelection().getStartPosition();\n\t\tif (source === 'keyboard') {\n\t\t\tthis._onDidPaste.fire({\n\t\t\t\tclipboardEvent,\n\t\t\t\trange: new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column),\n\t\t\t\tlanguageId: mode\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _cut(source: string | null | undefined): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.cut(source);\n\t}\n\n\tprivate _triggerEditorCommand(source: string | null | undefined, handlerId: string, payload: unknown): boolean {\n\t\tconst command = EditorExtensionsRegistry.getEditorCommand(handlerId);\n\t\tif (command) {\n\t\t\tpayload = payload || {};\n\t\t\tif (isObject(payload)) {\n\t\t\t\t(payload as { source: string | null | undefined }).source = source;\n\t\t\t}\n\t\t\tthis._instantiationService.invokeFunction((accessor) => {\n\t\t\t\tPromise.resolve(command.runEditorCommand(accessor, this, payload)).then(undefined, onUnexpectedError);\n\t\t\t});\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic _getViewModel(): IViewModel | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel;\n\t}\n\n\tpublic pushUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.pushStackElement();\n\t\treturn true;\n\t}\n\n\tpublic popUndoStop(): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\t\tthis._modelData.model.popStackElement();\n\t\treturn true;\n\t}\n\n\tpublic edit(edit: TextEdit, reason: TextModelEditSource): boolean {\n\t\treturn this.executeEdits(reason, edit.replacements.map<IIdentifiedSingleEditOperation>(e => ({ range: e.range, text: e.text })), undefined);\n\t}\n\n\tpublic executeEdits(source: string | null | undefined | TextModelEditSource, edits: IIdentifiedSingleEditOperation[], endCursorState?: ICursorStateComputer | Selection[]): boolean {\n\t\tif (!this._modelData) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this._configuration.options.get(EditorOption.readOnly)) {\n\t\t\t// read only editor => sorry!\n\t\t\treturn false;\n\t\t}\n\n\t\tlet cursorStateComputer: ICursorStateComputer;\n\t\tif (!endCursorState) {\n\t\t\tcursorStateComputer = () => null;\n\t\t} else if (Array.isArray(endCursorState)) {\n\t\t\tcursorStateComputer = () => endCursorState;\n\t\t} else {\n\t\t\tcursorStateComputer = endCursorState;\n\t\t}\n\n\t\tlet sourceStr: string | undefined | null;\n\t\tlet reason: TextModelEditSource;\n\n\t\tif (source instanceof TextModelEditSource) {\n\t\t\treason = source;\n\t\t\tsourceStr = source.metadata.source;\n\t\t} else {\n\t\t\treason = EditSources.unknown({ name: sourceStr });\n\t\t\tsourceStr = source;\n\t\t}\n\n\t\tthis._onBeforeExecuteEdit.fire({ source: sourceStr ?? undefined });\n\t\tthis._modelData.viewModel.executeEdits(sourceStr, edits, cursorStateComputer, reason);\n\t\treturn true;\n\t}\n\n\tpublic executeCommand(source: string | null | undefined, command: editorCommon.ICommand): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommand(command, source);\n\t}\n\n\tpublic executeCommands(source: string | null | undefined, commands: editorCommon.ICommand[]): void {\n\t\tif (!this._modelData) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.executeCommands(commands, source);\n\t}\n\n\tpublic createDecorationsCollection(decorations?: IModelDeltaDecoration[]): EditorDecorationsCollection {\n\t\treturn new EditorDecorationsCollection(this, decorations);\n\t}\n\n\tpublic changeDecorations<T>(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null {\n\t\tif (!this._modelData) {\n\t\t\t// callback will not be called\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.model.changeDecorations(callback, this._id);\n\t}\n\n\tpublic getLineDecorations(lineNumber: number): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getLineDecorations(lineNumber, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getDecorationsInRange(range: Range): IModelDecoration[] | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = this._configuration.options;\n\t\treturn this._modelData.model.getDecorationsInRange(range, this._id, filterValidationDecorations(options), filterFontDecorations(options));\n\t}\n\n\tpublic getFontSizeAtPosition(position: IPosition): string | null {\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.viewModel.getFontSizeAtPosition(position);\n\t}\n\n\t/**\n\t * @deprecated\n\t */\n\tpublic deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[] {\n\t\tif (!this._modelData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (oldDecorations.length === 0 && newDecorations.length === 0) {\n\t\t\treturn oldDecorations;\n\t\t}\n\n\t\treturn this._modelData.model.deltaDecorations(oldDecorations, newDecorations, this._id);\n\t}\n\n\tpublic removeDecorations(decorationIds: string[]): void {\n\t\tif (!this._modelData || decorationIds.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._modelData.model.changeDecorations((changeAccessor) => {\n\t\t\tchangeAccessor.deltaDecorations(decorationIds, []);\n\t\t});\n\t}\n\n\tpublic removeDecorationsByType(decorationTypeKey: string): void {\n\t\t// remove decorations for type and sub type\n\t\tconst oldDecorationsIds = this._decorationTypeKeysToIds[decorationTypeKey];\n\t\tif (oldDecorationsIds) {\n\t\t\tthis.changeDecorations(accessor => accessor.deltaDecorations(oldDecorationsIds, []));\n\t\t}\n\t\tif (this._decorationTypeKeysToIds.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeKeysToIds[decorationTypeKey];\n\t\t}\n\t\tif (this._decorationTypeSubtypes.hasOwnProperty(decorationTypeKey)) {\n\t\t\tdelete this._decorationTypeSubtypes[decorationTypeKey];\n\t\t}\n\t}\n\n\tpublic getLayoutInfo(): EditorLayoutInfo {\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\t\treturn layoutInfo;\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): editorBrowser.IOverviewRuler | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.createOverviewRuler(cssClassName);\n\t}\n\n\tpublic getContainerDomNode(): HTMLElement {\n\t\treturn this._domElement;\n\t}\n\n\tpublic getDomNode(): HTMLElement | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.domNode.domNode;\n\t}\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic layout(dimension?: IDimension, postponeRendering: boolean = false): void {\n\t\tthis._configuration.observeContainer(dimension);\n\t\tif (!postponeRendering) {\n\t\t\tthis.render();\n\t\t}\n\t}\n\n\tpublic focus(): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.focus();\n\t}\n\n\tpublic hasTextFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isFocused();\n\t}\n\n\tpublic hasWidgetFocus(): boolean {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._modelData.view.isWidgetFocused();\n\t}\n\n\tpublic addContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetData: IContentWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._contentWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a content widget with the same id:' + widget.getId());\n\t\t}\n\n\t\tthis._contentWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addContentWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeContentWidget(widget: editorBrowser.IContentWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._contentWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._contentWidgets[widgetId];\n\t\t\tdelete this._contentWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeContentWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetData: IOverlayWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._overlayWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting an overlay widget with the same id.');\n\t\t}\n\n\t\tthis._overlayWidgets[widget.getId()] = widgetData;\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addOverlayWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widget: editorBrowser.IOverlayWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._overlayWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._overlayWidgets[widgetId];\n\t\t\tdelete this._overlayWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeOverlayWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic addGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetData: IGlyphMarginWidgetData = {\n\t\t\twidget: widget,\n\t\t\tposition: widget.getPosition()\n\t\t};\n\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widget.getId())) {\n\t\t\tconsole.warn('Overwriting a glyph margin widget with the same id.');\n\t\t}\n\n\t\tthis._glyphMarginWidgets[widget.getId()] = widgetData;\n\n\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\tthis._modelData.view.addGlyphMarginWidget(widgetData);\n\t\t}\n\t}\n\n\tpublic layoutGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\twidgetData.position = widget.getPosition();\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.layoutGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widget: editorBrowser.IGlyphMarginWidget): void {\n\t\tconst widgetId = widget.getId();\n\t\tif (this._glyphMarginWidgets.hasOwnProperty(widgetId)) {\n\t\t\tconst widgetData = this._glyphMarginWidgets[widgetId];\n\t\t\tdelete this._glyphMarginWidgets[widgetId];\n\t\t\tif (this._modelData && this._modelData.hasRealView) {\n\t\t\t\tthis._modelData.view.removeGlyphMarginWidget(widgetData);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic changeViewZones(callback: (accessor: editorBrowser.IViewZoneChangeAccessor) => void): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.change(callback);\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): editorBrowser.IMouseTarget | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._modelData.view.getTargetAtClientPoint(clientX, clientY);\n\t}\n\n\tpublic getScrolledVisiblePosition(rawPosition: IPosition): { top: number; left: number; height: number } | null {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst position = this._modelData.model.validatePosition(rawPosition);\n\t\tconst options = this._configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tconst top = CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, position.lineNumber, position.column) - this.getScrollTop();\n\t\tconst left = this._modelData.view.getOffsetForColumn(position.lineNumber, position.column) + layoutInfo.glyphMarginWidth + layoutInfo.lineNumbersWidth + layoutInfo.decorationsWidth - this.getScrollLeft();\n\t\tconst height = this.getLineHeightForPosition(position);\n\t\treturn {\n\t\t\ttop: top,\n\t\t\tleft: left,\n\t\t\theight\n\t\t};\n\t}\n\n\tpublic getOffsetForColumn(lineNumber: number, column: number): number {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn this._modelData.view.getOffsetForColumn(lineNumber, column);\n\t}\n\n\tpublic render(forceRedraw: boolean = false): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.viewModel.batchEvents(() => {\n\t\t\tthis._modelData!.view.render(true, forceRedraw);\n\t\t});\n\t}\n\n\tpublic setAriaOptions(options: editorBrowser.IEditorAriaOptions): void {\n\t\tif (!this._modelData || !this._modelData.hasRealView) {\n\t\t\treturn;\n\t\t}\n\t\tthis._modelData.view.setAriaOptions(options);\n\t}\n\n\tpublic applyFontInfo(target: HTMLElement): void {\n\t\tapplyFontInfo(target, this._configuration.options.get(EditorOption.fontInfo));\n\t}\n\n\tpublic setBanner(domNode: HTMLElement | null, domNodeHeight: number): void {\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\n\t\tthis._bannerDomNode = domNode;\n\t\tthis._configuration.setReservedHeight(domNode ? domNodeHeight : 0);\n\n\t\tif (this._bannerDomNode) {\n\t\t\tthis._domElement.prepend(this._bannerDomNode);\n\t\t}\n\t}\n\n\tprotected _attachModel(model: ITextModel | null): void {\n\t\tif (!model) {\n\t\t\tthis._modelData = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst listenersToRemove: IDisposable[] = [];\n\n\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\tthis._configuration.setIsDominatedByLongLines(model.isDominatedByLongLines());\n\t\tthis._configuration.setModelLineCount(model.getLineCount());\n\n\t\tconst attachedView = model.onBeforeAttached();\n\n\t\tconst viewModel = new ViewModel(\n\t\t\tthis._id,\n\t\t\tthis._configuration,\n\t\t\tmodel,\n\t\t\tDOMLineBreaksComputerFactory.create(dom.getWindow(this._domElement)),\n\t\t\tMonospaceLineBreaksComputerFactory.create(this._configuration.options),\n\t\t\t(callback) => dom.scheduleAtNextAnimationFrame(dom.getWindow(this._domElement), callback),\n\t\t\tthis.languageConfigurationService,\n\t\t\tthis._themeService,\n\t\t\tattachedView,\n\t\t\t{\n\t\t\t\tbatchChanges: (cb) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis._beginUpdate();\n\t\t\t\t\t\treturn cb();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._endUpdate();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\n\t\t// Someone might destroy the model from under the editor, so prevent any exceptions by setting a null model\n\t\tlistenersToRemove.push(model.onWillDispose(() => this.setModel(null)));\n\n\t\tlistenersToRemove.push(viewModel.onEvent((e) => {\n\t\t\tswitch (e.kind) {\n\t\t\t\tcase OutgoingViewModelEventKind.ContentSizeChanged:\n\t\t\t\t\tthis._onDidContentSizeChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.FocusChanged:\n\t\t\t\t\tthis._editorTextFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.WidgetFocusChanged:\n\t\t\t\t\tthis._editorWidgetFocus.setValue(e.hasFocus);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ScrollChanged:\n\t\t\t\t\tthis._onDidScrollChange.fire(e);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ViewZonesChanged:\n\t\t\t\t\tthis._onDidChangeViewZones.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.HiddenAreasChanged:\n\t\t\t\t\tthis._onDidChangeHiddenAreas.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ReadOnlyEditAttempt:\n\t\t\t\t\tthis._onDidAttemptReadOnlyEdit.fire();\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.CursorStateChanged: {\n\t\t\t\t\tif (e.reachedMaxCursorCount) {\n\n\t\t\t\t\t\tconst multiCursorLimit = this.getOption(EditorOption.multiCursorLimit);\n\t\t\t\t\t\tconst message = nls.localize('cursors.maximum', \"The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.\", multiCursorLimit);\n\t\t\t\t\t\tthis._notificationService.prompt(Severity.Warning, message, [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: 'Find and Replace',\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('editor.action.startFindReplaceAction');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: nls.localize('goToSetting', 'Increase Multi Cursor Limit'),\n\t\t\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\t\t\tthis._commandService.executeCommand('workbench.action.openSettings2', {\n\t\t\t\t\t\t\t\t\t\tquery: 'editor.multiCursorLimit'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst positions: Position[] = [];\n\t\t\t\t\tfor (let i = 0, len = e.selections.length; i < len; i++) {\n\t\t\t\t\t\tpositions[i] = e.selections[i].getPosition();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst e1: ICursorPositionChangedEvent = {\n\t\t\t\t\t\tposition: positions[0],\n\t\t\t\t\t\tsecondaryPositions: positions.slice(1),\n\t\t\t\t\t\treason: e.reason,\n\t\t\t\t\t\tsource: e.source\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorPosition.fire(e1);\n\n\t\t\t\t\tconst e2: ICursorSelectionChangedEvent = {\n\t\t\t\t\t\tselection: e.selections[0],\n\t\t\t\t\t\tsecondarySelections: e.selections.slice(1),\n\t\t\t\t\t\tmodelVersionId: e.modelVersionId,\n\t\t\t\t\t\toldSelections: e.oldSelections,\n\t\t\t\t\t\toldModelVersionId: e.oldModelVersionId,\n\t\t\t\t\t\tsource: e.source,\n\t\t\t\t\t\treason: e.reason\n\t\t\t\t\t};\n\t\t\t\t\tthis._onDidChangeCursorSelection.fire(e2);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase OutgoingViewModelEventKind.ModelDecorationsChanged:\n\t\t\t\t\tthis._onDidChangeModelDecorations.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageChanged:\n\t\t\t\t\tthis._domElement.setAttribute('data-mode-id', model.getLanguageId());\n\t\t\t\t\tthis._onDidChangeModelLanguage.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLanguageConfigurationChanged:\n\t\t\t\t\tthis._onDidChangeModelLanguageConfiguration.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelContentChanged:\n\t\t\t\t\tthis._onDidChangeModelContent.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelOptionsChanged:\n\t\t\t\t\tthis._onDidChangeModelOptions.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelTokensChanged:\n\t\t\t\t\tthis._onDidChangeModelTokens.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelLineHeightChanged:\n\t\t\t\t\tthis._onDidChangeLineHeight.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase OutgoingViewModelEventKind.ModelFontChangedEvent:\n\t\t\t\t\tthis._onDidChangeFont.fire(e.event);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}));\n\n\t\tconst [view, hasRealView] = this._createView(viewModel);\n\t\tif (hasRealView) {\n\t\t\tthis._domElement.appendChild(view.domNode.domNode);\n\n\t\t\tlet keys = Object.keys(this._contentWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addContentWidget(this._contentWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._overlayWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addOverlayWidget(this._overlayWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tkeys = Object.keys(this._glyphMarginWidgets);\n\t\t\tfor (let i = 0, len = keys.length; i < len; i++) {\n\t\t\t\tconst widgetId = keys[i];\n\t\t\t\tview.addGlyphMarginWidget(this._glyphMarginWidgets[widgetId]);\n\t\t\t}\n\n\t\t\tview.render(false, true);\n\t\t\tview.domNode.domNode.setAttribute('data-uri', model.uri.toString());\n\t\t}\n\n\t\tthis._modelData = new ModelData(model, viewModel, view, hasRealView, listenersToRemove, attachedView);\n\t}\n\n\tprotected _createView(viewModel: ViewModel): [View, boolean] {\n\t\tlet commandDelegate: ICommandDelegate;\n\t\tif (this.isSimpleWidget) {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tthis._paste('keyboard', text, pasteOnNewLine, multicursorText, mode);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tthis._type('keyboard', text);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\tthis._compositionType('keyboard', text, replacePrevCharCnt, replaceNextCharCnt, positionDelta);\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._startComposition();\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._endComposition('keyboard');\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._cut('keyboard');\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tcommandDelegate = {\n\t\t\t\tpaste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => {\n\t\t\t\t\tconst payload: editorBrowser.PastePayload = { text, pasteOnNewLine, multicursorText, mode };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Paste, payload);\n\t\t\t\t},\n\t\t\t\ttype: (text: string) => {\n\t\t\t\t\tconst payload: editorCommon.TypePayload = { text };\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Type, payload);\n\t\t\t\t},\n\t\t\t\tcompositionType: (text: string, replacePrevCharCnt: number, replaceNextCharCnt: number, positionDelta: number) => {\n\t\t\t\t\t// Try if possible to go through the existing `replacePreviousChar` command\n\t\t\t\t\tif (replaceNextCharCnt || positionDelta) {\n\t\t\t\t\t\t// must be handled through the new command\n\t\t\t\t\t\tconst payload: editorCommon.CompositionTypePayload = { text, replacePrevCharCnt, replaceNextCharCnt, positionDelta };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionType, payload);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst payload: editorCommon.ReplacePreviousCharPayload = { text, replaceCharCnt: replacePrevCharCnt };\n\t\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.ReplacePreviousChar, payload);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstartComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionStart, {});\n\t\t\t\t},\n\t\t\t\tendComposition: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.CompositionEnd, {});\n\t\t\t\t},\n\t\t\t\tcut: () => {\n\t\t\t\t\tthis._commandService.executeCommand(editorCommon.Handler.Cut, {});\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tconst viewUserInputEvents = new ViewUserInputEvents(viewModel.coordinatesConverter);\n\t\tviewUserInputEvents.onKeyDown = (e) => this._onKeyDown.fire(e);\n\t\tviewUserInputEvents.onKeyUp = (e) => this._onKeyUp.fire(e);\n\t\tviewUserInputEvents.onContextMenu = (e) => this._onContextMenu.fire(e);\n\t\tviewUserInputEvents.onMouseMove = (e) => this._onMouseMove.fire(e);\n\t\tviewUserInputEvents.onMouseLeave = (e) => this._onMouseLeave.fire(e);\n\t\tviewUserInputEvents.onMouseDown = (e) => this._onMouseDown.fire(e);\n\t\tviewUserInputEvents.onMouseUp = (e) => this._onMouseUp.fire(e);\n\t\tviewUserInputEvents.onMouseDrag = (e) => this._onMouseDrag.fire(e);\n\t\tviewUserInputEvents.onMouseDrop = (e) => this._onMouseDrop.fire(e);\n\t\tviewUserInputEvents.onMouseDropCanceled = (e) => this._onMouseDropCanceled.fire(e);\n\t\tviewUserInputEvents.onMouseWheel = (e) => this._onMouseWheel.fire(e);\n\n\t\tconst view = new View(\n\t\t\tthis._domElement,\n\t\t\tthis.getId(),\n\t\t\tcommandDelegate,\n\t\t\tthis._configuration,\n\t\t\tthis._themeService.getColorTheme(),\n\t\t\tviewModel,\n\t\t\tviewUserInputEvents,\n\t\t\tthis._overflowWidgetsDomNode,\n\t\t\tthis._instantiationService\n\t\t);\n\n\t\treturn [view, true];\n\t}\n\n\tprotected _postDetachModelCleanup(detachedModel: ITextModel | null): void {\n\t\tdetachedModel?.removeAllDecorationsWithOwnerId(this._id);\n\t}\n\n\tprivate _detachModel(): ITextModel | null {\n\t\tthis._contributionsDisposable?.dispose();\n\t\tthis._contributionsDisposable = undefined;\n\t\tif (!this._modelData) {\n\t\t\treturn null;\n\t\t}\n\t\tconst model = this._modelData.model;\n\t\tconst removeDomNode = this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null;\n\n\t\tthis._modelData.dispose();\n\t\tthis._modelData = null;\n\n\t\tthis._domElement.removeAttribute('data-mode-id');\n\t\tif (removeDomNode && this._domElement.contains(removeDomNode)) {\n\t\t\tremoveDomNode.remove();\n\t\t}\n\t\tif (this._bannerDomNode && this._domElement.contains(this._bannerDomNode)) {\n\t\t\tthis._bannerDomNode.remove();\n\t\t}\n\t\treturn model;\n\t}\n\n\tprivate _removeDecorationType(key: string): void {\n\t\tthis._codeEditorService.removeDecorationType(key);\n\t}\n\n\tpublic hasModel(): this is editorBrowser.IActiveCodeEditor {\n\t\treturn (this._modelData !== null);\n\t}\n\n\tprivate showDropIndicatorAt(position: Position): void {\n\t\tconst newDecorations: IModelDeltaDecoration[] = [{\n\t\t\trange: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\n\t\t\toptions: CodeEditorWidget.dropIntoEditorDecorationOptions\n\t\t}];\n\n\t\tthis._dropIntoEditorDecorations.set(newDecorations);\n\t\tthis.revealPosition(position, editorCommon.ScrollType.Immediate);\n\t}\n\n\tprivate removeDropIndicator(): void {\n\t\tthis._dropIntoEditorDecorations.clear();\n\t}\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._onBeginUpdate.fire();\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tthis._onEndUpdate.fire();\n\t\t}\n\t}\n}\n\nlet EDITOR_ID = 0;\n\nexport interface ICodeEditorWidgetOptions {\n\t/**\n\t * Is this a simple widget (not a real code editor)?\n\t * Defaults to false.\n\t */\n\tisSimpleWidget?: boolean;\n\n\t/**\n\t * Contributions to instantiate.\n\t * When provided, only the contributions included will be instantiated.\n\t * To include the defaults, those must be provided as well via [...EditorExtensionsRegistry.getEditorContributions()]\n\t * Defaults to EditorExtensionsRegistry.getEditorContributions().\n\t */\n\tcontributions?: IEditorContributionDescription[];\n\n\t/**\n\t * Telemetry data associated with this CodeEditorWidget.\n\t * Defaults to null.\n\t */\n\ttelemetryData?: object;\n\n\t/**\n\t * The ID of the context menu.\n\t * Defaults to MenuId.SimpleEditorContext or MenuId.EditorContext depending on whether the widget is simple.\n\t */\n\tcontextMenuId?: MenuId;\n\n\t/**\n\t * Define extra context keys that will be defined in the context service\n\t * for the editor.\n\t */\n\tcontextKeyValues?: Record<string, ContextKeyValue>;\n}\n\nclass ModelData {\n\tconstructor(\n\t\tpublic readonly model: ITextModel,\n\t\tpublic readonly viewModel: ViewModel,\n\t\tpublic readonly view: View,\n\t\tpublic readonly hasRealView: boolean,\n\t\tpublic readonly listenersToRemove: IDisposable[],\n\t\tpublic readonly attachedView: IAttachedView,\n\t) {\n\t}\n\n\tpublic dispose(): void {\n\t\tdispose(this.listenersToRemove);\n\t\tthis.model.onBeforeDetached(this.attachedView);\n\t\tif (this.hasRealView) {\n\t\t\tthis.view.dispose();\n\t\t}\n\t\tthis.viewModel.dispose();\n\t}\n}\n\nconst enum BooleanEventValue {\n\tNotSet,\n\tFalse,\n\tTrue\n}\n\nexport class BooleanEventEmitter extends Disposable {\n\tprivate readonly _onDidChangeToTrue: Emitter<void>;\n\tpublic readonly onDidChangeToTrue: Event<void>;\n\n\tprivate readonly _onDidChangeToFalse: Emitter<void>;\n\tpublic readonly onDidChangeToFalse: Event<void>;\n\n\tprivate _value: BooleanEventValue;\n\n\tconstructor(\n\t\tprivate readonly _emitterOptions: EmitterOptions\n\t) {\n\t\tsuper();\n\t\tthis._onDidChangeToTrue = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToTrue = this._onDidChangeToTrue.event;\n\t\tthis._onDidChangeToFalse = this._register(new Emitter<void>(this._emitterOptions));\n\t\tthis.onDidChangeToFalse = this._onDidChangeToFalse.event;\n\t\tthis._value = BooleanEventValue.NotSet;\n\t}\n\n\tpublic setValue(_value: boolean) {\n\t\tconst value = (_value ? BooleanEventValue.True : BooleanEventValue.False);\n\t\tif (this._value === value) {\n\t\t\treturn;\n\t\t}\n\t\tthis._value = value;\n\t\tif (this._value === BooleanEventValue.True) {\n\t\t\tthis._onDidChangeToTrue.fire();\n\t\t} else if (this._value === BooleanEventValue.False) {\n\t\t\tthis._onDidChangeToFalse.fire();\n\t\t}\n\t}\n}\n\n/**\n * A regular event emitter that also makes sure contributions are instantiated if necessary\n */\nclass InteractionEmitter<T> extends Emitter<T> {\n\n\tconstructor(\n\t\tprivate readonly _contributions: CodeEditorContributions,\n\t\tdeliveryQueue: EventDeliveryQueue\n\t) {\n\t\tsuper({ deliveryQueue });\n\t}\n\n\toverride fire(event: T): void {\n\t\tthis._contributions.onBeforeInteractionEvent();\n\t\tsuper.fire(event);\n\t}\n}\n\nclass EditorContextKeysManager extends Disposable {\n\n\tprivate readonly _editor: CodeEditorWidget;\n\tprivate readonly _editorSimpleInput: IContextKey<boolean>;\n\tprivate readonly _editorFocus: IContextKey<boolean>;\n\tprivate readonly _textInputFocus: IContextKey<boolean>;\n\tprivate readonly _editorTextFocus: IContextKey<boolean>;\n\tprivate readonly _tabMovesFocus: IContextKey<boolean>;\n\tprivate readonly _editorReadonly: IContextKey<boolean>;\n\tprivate readonly _inDiffEditor: IContextKey<boolean>;\n\tprivate readonly _editorColumnSelection: IContextKey<boolean>;\n\tprivate readonly _hasMultipleSelections: IContextKey<boolean>;\n\tprivate readonly _hasNonEmptySelection: IContextKey<boolean>;\n\tprivate readonly _canUndo: IContextKey<boolean>;\n\tprivate readonly _canRedo: IContextKey<boolean>;\n\n\tconstructor(\n\t\teditor: CodeEditorWidget,\n\t\tcontextKeyService: IContextKeyService\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tcontextKeyService.createKey('editorId', editor.getId());\n\n\t\tthis._editorSimpleInput = EditorContextKeys.editorSimpleInput.bindTo(contextKeyService);\n\t\tthis._editorFocus = EditorContextKeys.focus.bindTo(contextKeyService);\n\t\tthis._textInputFocus = EditorContextKeys.textInputFocus.bindTo(contextKeyService);\n\t\tthis._editorTextFocus = EditorContextKeys.editorTextFocus.bindTo(contextKeyService);\n\t\tthis._tabMovesFocus = EditorContextKeys.tabMovesFocus.bindTo(contextKeyService);\n\t\tthis._editorReadonly = EditorContextKeys.readOnly.bindTo(contextKeyService);\n\t\tthis._inDiffEditor = EditorContextKeys.inDiffEditor.bindTo(contextKeyService);\n\t\tthis._editorColumnSelection = EditorContextKeys.columnSelection.bindTo(contextKeyService);\n\t\tthis._hasMultipleSelections = EditorContextKeys.hasMultipleSelections.bindTo(contextKeyService);\n\t\tthis._hasNonEmptySelection = EditorContextKeys.hasNonEmptySelection.bindTo(contextKeyService);\n\t\tthis._canUndo = EditorContextKeys.canUndo.bindTo(contextKeyService);\n\t\tthis._canRedo = EditorContextKeys.canRedo.bindTo(contextKeyService);\n\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromConfig()));\n\t\tthis._register(this._editor.onDidChangeCursorSelection(() => this._updateFromSelection()));\n\t\tthis._register(this._editor.onDidFocusEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorWidget(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidFocusEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidBlurEditorText(() => this._updateFromFocus()));\n\t\tthis._register(this._editor.onDidChangeModel(() => this._updateFromModel()));\n\t\tthis._register(this._editor.onDidChangeConfiguration(() => this._updateFromModel()));\n\t\tthis._register(TabFocus.onDidChangeTabFocus((tabFocusMode: boolean) => this._tabMovesFocus.set(tabFocusMode)));\n\n\t\tthis._updateFromConfig();\n\t\tthis._updateFromSelection();\n\t\tthis._updateFromFocus();\n\t\tthis._updateFromModel();\n\n\t\tthis._editorSimpleInput.set(this._editor.isSimpleWidget);\n\t}\n\n\tprivate _updateFromConfig(): void {\n\t\tconst options = this._editor.getOptions();\n\n\t\tthis._tabMovesFocus.set(options.get(EditorOption.tabFocusMode) || TabFocus.getTabFocusMode());\n\t\tthis._editorReadonly.set(options.get(EditorOption.readOnly));\n\t\tthis._inDiffEditor.set(options.get(EditorOption.inDiffEditor));\n\t\tthis._editorColumnSelection.set(options.get(EditorOption.columnSelection));\n\t}\n\n\tprivate _updateFromSelection(): void {\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections) {\n\t\t\tthis._hasMultipleSelections.reset();\n\t\t\tthis._hasNonEmptySelection.reset();\n\t\t} else {\n\t\t\tthis._hasMultipleSelections.set(selections.length > 1);\n\t\t\tthis._hasNonEmptySelection.set(selections.some(s => !s.isEmpty()));\n\t\t}\n\t}\n\n\tprivate _updateFromFocus(): void {\n\t\tthis._editorFocus.set(this._editor.hasWidgetFocus() && !this._editor.isSimpleWidget);\n\t\tthis._editorTextFocus.set(this._editor.hasTextFocus() && !this._editor.isSimpleWidget);\n\t\tthis._textInputFocus.set(this._editor.hasTextFocus());\n\t}\n\n\tprivate _updateFromModel(): void {\n\t\tconst model = this._editor.getModel();\n\t\tthis._canUndo.set(Boolean(model && model.canUndo()));\n\t\tthis._canRedo.set(Boolean(model && model.canRedo()));\n\t}\n}\n\nexport class EditorModeContext extends Disposable {\n\n\tprivate readonly _langId: IContextKey<string>;\n\tprivate readonly _hasCompletionItemProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeActionsProvider: IContextKey<boolean>;\n\tprivate readonly _hasCodeLensProvider: IContextKey<boolean>;\n\tprivate readonly _hasDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasDeclarationProvider: IContextKey<boolean>;\n\tprivate readonly _hasImplementationProvider: IContextKey<boolean>;\n\tprivate readonly _hasTypeDefinitionProvider: IContextKey<boolean>;\n\tprivate readonly _hasHoverProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentHighlightProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSymbolProvider: IContextKey<boolean>;\n\tprivate readonly _hasReferenceProvider: IContextKey<boolean>;\n\tprivate readonly _hasRenameProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasMultipleDocumentSelectionFormattingProvider: IContextKey<boolean>;\n\tprivate readonly _hasSignatureHelpProvider: IContextKey<boolean>;\n\tprivate readonly _hasInlayHintsProvider: IContextKey<boolean>;\n\tprivate readonly _isInEmbeddedEditor: IContextKey<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: CodeEditorWidget,\n\t\tprivate readonly _contextKeyService: IContextKeyService,\n\t\tprivate readonly _languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\n\t\tthis._langId = EditorContextKeys.languageId.bindTo(_contextKeyService);\n\t\tthis._hasCompletionItemProvider = EditorContextKeys.hasCompletionItemProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeActionsProvider = EditorContextKeys.hasCodeActionsProvider.bindTo(_contextKeyService);\n\t\tthis._hasCodeLensProvider = EditorContextKeys.hasCodeLensProvider.bindTo(_contextKeyService);\n\t\tthis._hasDefinitionProvider = EditorContextKeys.hasDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasDeclarationProvider = EditorContextKeys.hasDeclarationProvider.bindTo(_contextKeyService);\n\t\tthis._hasImplementationProvider = EditorContextKeys.hasImplementationProvider.bindTo(_contextKeyService);\n\t\tthis._hasTypeDefinitionProvider = EditorContextKeys.hasTypeDefinitionProvider.bindTo(_contextKeyService);\n\t\tthis._hasHoverProvider = EditorContextKeys.hasHoverProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentHighlightProvider = EditorContextKeys.hasDocumentHighlightProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSymbolProvider = EditorContextKeys.hasDocumentSymbolProvider.bindTo(_contextKeyService);\n\t\tthis._hasReferenceProvider = EditorContextKeys.hasReferenceProvider.bindTo(_contextKeyService);\n\t\tthis._hasRenameProvider = EditorContextKeys.hasRenameProvider.bindTo(_contextKeyService);\n\t\tthis._hasSignatureHelpProvider = EditorContextKeys.hasSignatureHelpProvider.bindTo(_contextKeyService);\n\t\tthis._hasInlayHintsProvider = EditorContextKeys.hasInlayHintsProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentFormattingProvider = EditorContextKeys.hasDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasDocumentSelectionFormattingProvider = EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentFormattingProvider = EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._hasMultipleDocumentSelectionFormattingProvider = EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\n\t\tthis._isInEmbeddedEditor = EditorContextKeys.isInEmbeddedEditor.bindTo(_contextKeyService);\n\n\t\tconst update = () => this._update();\n\n\t\t// update when model/mode changes\n\t\tthis._register(_editor.onDidChangeModel(update));\n\t\tthis._register(_editor.onDidChangeModelLanguage(update));\n\n\t\t// update when registries change\n\t\tthis._register(_languageFeaturesService.completionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeActionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.codeLensProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.definitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.declarationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.implementationProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.typeDefinitionProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.hoverProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentHighlightProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentSymbolProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.referenceProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.renameProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.documentRangeFormattingEditProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.signatureHelpProvider.onDidChange(update));\n\t\tthis._register(_languageFeaturesService.inlayHintsProvider.onDidChange(update));\n\n\t\tupdate();\n\t}\n\n\toverride dispose() {\n\t\tsuper.dispose();\n\t}\n\n\treset() {\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.reset();\n\t\t\tthis._hasCompletionItemProvider.reset();\n\t\t\tthis._hasCodeActionsProvider.reset();\n\t\t\tthis._hasCodeLensProvider.reset();\n\t\t\tthis._hasDefinitionProvider.reset();\n\t\t\tthis._hasDeclarationProvider.reset();\n\t\t\tthis._hasImplementationProvider.reset();\n\t\t\tthis._hasTypeDefinitionProvider.reset();\n\t\t\tthis._hasHoverProvider.reset();\n\t\t\tthis._hasDocumentHighlightProvider.reset();\n\t\t\tthis._hasDocumentSymbolProvider.reset();\n\t\t\tthis._hasReferenceProvider.reset();\n\t\t\tthis._hasRenameProvider.reset();\n\t\t\tthis._hasDocumentFormattingProvider.reset();\n\t\t\tthis._hasDocumentSelectionFormattingProvider.reset();\n\t\t\tthis._hasSignatureHelpProvider.reset();\n\t\t\tthis._isInEmbeddedEditor.reset();\n\t\t});\n\t}\n\n\tprivate _update() {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\tthis.reset();\n\t\t\treturn;\n\t\t}\n\t\tthis._contextKeyService.bufferChangeEvents(() => {\n\t\t\tthis._langId.set(model.getLanguageId());\n\t\t\tthis._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(model));\n\t\t\tthis._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(model));\n\t\t\tthis._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(model));\n\t\t\tthis._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(model));\n\t\t\tthis._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(model));\n\t\t\tthis._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(model));\n\t\t\tthis._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(model));\n\t\t\tthis._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(model));\n\t\t\tthis._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(model));\n\t\t\tthis._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(model));\n\t\t\tthis._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(model));\n\t\t\tthis._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(model));\n\t\t\tthis._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(model));\n\t\t\tthis._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(model));\n\t\t\tthis._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(model) || this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(model));\n\t\t\tthis._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(model).length + this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(model).length > 1);\n\t\t\tthis._isInEmbeddedEditor.set(model.uri.scheme === Schemas.walkThroughSnippet || model.uri.scheme === Schemas.vscodeChatCodeBlock);\n\t\t});\n\t}\n}\n\n\nclass EditorDecorationsCollection implements editorCommon.IEditorDecorationsCollection {\n\n\tprivate _decorationIds: string[] = [];\n\tprivate _isChangingDecorations: boolean = false;\n\n\tpublic get length(): number {\n\t\treturn this._decorationIds.length;\n\t}\n\n\tconstructor(\n\t\tprivate readonly _editor: editorBrowser.ICodeEditor,\n\t\tdecorations: IModelDeltaDecoration[] | undefined\n\t) {\n\t\tif (Array.isArray(decorations) && decorations.length > 0) {\n\t\t\tthis.set(decorations);\n\t\t}\n\t}\n\n\tpublic onDidChange(listener: (e: IModelDecorationsChangedEvent) => unknown, thisArgs?: unknown, disposables?: IDisposable[] | DisposableStore): IDisposable {\n\t\treturn this._editor.onDidChangeModelDecorations((e) => {\n\t\t\tif (this._isChangingDecorations) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlistener.call(thisArgs, e);\n\t\t}, disposables);\n\t}\n\n\tpublic getRange(index: number): Range | null {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (index >= this._decorationIds.length) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._editor.getModel().getDecorationRange(this._decorationIds[index]);\n\t}\n\n\tpublic getRanges(): Range[] {\n\t\tif (!this._editor.hasModel()) {\n\t\t\treturn [];\n\t\t}\n\t\tconst model = this._editor.getModel();\n\t\tconst result: Range[] = [];\n\t\tfor (const decorationId of this._decorationIds) {\n\t\t\tconst range = model.getDecorationRange(decorationId);\n\t\t\tif (range) {\n\t\t\t\tresult.push(range);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tpublic has(decoration: IModelDecoration): boolean {\n\t\treturn this._decorationIds.includes(decoration.id);\n\t}\n\n\tpublic clear(): void {\n\t\tif (this._decorationIds.length === 0) {\n\t\t\t// nothing to do\n\t\t\treturn;\n\t\t}\n\t\tthis.set([]);\n\t}\n\n\tpublic set(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tthis._decorationIds = accessor.deltaDecorations(this._decorationIds, newDecorations);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn this._decorationIds;\n\t}\n\n\tpublic append(newDecorations: readonly IModelDeltaDecoration[]): string[] {\n\t\tlet newDecorationIds: string[] = [];\n\t\ttry {\n\t\t\tthis._isChangingDecorations = true;\n\t\t\tthis._editor.changeDecorations((accessor) => {\n\t\t\t\tnewDecorationIds = accessor.deltaDecorations([], newDecorations);\n\t\t\t\tthis._decorationIds = this._decorationIds.concat(newDecorationIds);\n\t\t\t});\n\t\t} finally {\n\t\t\tthis._isChangingDecorations = false;\n\t\t}\n\t\treturn newDecorationIds;\n\t}\n}\n\nconst squigglyStart = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='`);\nconst squigglyEnd = encodeURIComponent(`'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>`);\n\nfunction getSquigglySVGData(color: Color) {\n\treturn squigglyStart + encodeURIComponent(color.toString()) + squigglyEnd;\n}\n\nconst dotdotdotStart = encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"3\" width=\"12\"><g fill=\"`);\nconst dotdotdotEnd = encodeURIComponent(`\"><circle cx=\"1\" cy=\"1\" r=\"1\"/><circle cx=\"5\" cy=\"1\" r=\"1\"/><circle cx=\"9\" cy=\"1\" r=\"1\"/></g></svg>`);\n\nfunction getDotDotDotSVGData(color: Color) {\n\treturn dotdotdotStart + encodeURIComponent(color.toString()) + dotdotdotEnd;\n}\n\nregisterThemingParticipant((theme, collector) => {\n\tconst errorForeground = theme.getColor(editorErrorForeground);\n\tif (errorForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorErrorDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-error-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\"); }`);\n\t}\n\tconst warningForeground = theme.getColor(editorWarningForeground);\n\tif (warningForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorWarningDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-warning-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\"); }`);\n\t}\n\tconst infoForeground = theme.getColor(editorInfoForeground);\n\tif (infoForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorInfoDecoration} { background: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\") repeat-x bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-info-decoration: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\"); }`);\n\t}\n\tconst hintForeground = theme.getColor(editorHintForeground);\n\tif (hintForeground) {\n\t\tcollector.addRule(`.monaco-editor .${ClassName.EditorHintDecoration} { background: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\") no-repeat bottom left; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-hint-decoration: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\"); }`);\n\t}\n\tconst unnecessaryForeground = theme.getColor(editorUnnecessaryCodeOpacity);\n\tif (unnecessaryForeground) {\n\t\tcollector.addRule(`.monaco-editor.showUnused .${ClassName.EditorUnnecessaryInlineDecoration} { opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t\tcollector.addRule(`:root { --monaco-editor-unnecessary-decoration-opacity: ${unnecessaryForeground.rgba.a}; }`);\n\t}\n});\n"]}