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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +34 -2
  18. package/esm/vs/base/browser/dom.js +1 -4
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/markdownRenderer.js +25 -11
  21. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  22. package/esm/vs/base/browser/ui/button/button.js +15 -8
  23. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  24. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  26. package/esm/vs/base/browser/ui/list/list.css +1 -0
  27. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  28. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  29. package/esm/vs/base/common/async.js +11 -0
  30. package/esm/vs/base/common/async.js.map +1 -1
  31. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  32. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  33. package/esm/vs/base/common/defaultAccount.js +6 -0
  34. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  35. package/esm/vs/base/common/equals.js +73 -24
  36. package/esm/vs/base/common/equals.js.map +1 -1
  37. package/esm/vs/base/common/event.js +14 -4
  38. package/esm/vs/base/common/event.js.map +1 -1
  39. package/esm/vs/base/common/iterator.js.map +1 -1
  40. package/esm/vs/base/common/keybindings.js +0 -8
  41. package/esm/vs/base/common/keybindings.js.map +1 -1
  42. package/esm/vs/base/common/lifecycle.js +2 -2
  43. package/esm/vs/base/common/lifecycle.js.map +1 -1
  44. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  45. package/esm/vs/base/common/observableInternal/index.js +1 -1
  46. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  47. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  48. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  49. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  50. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  51. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  52. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  53. package/esm/vs/base/common/product.js.map +1 -1
  54. package/esm/vs/base/common/strings.js +3 -1
  55. package/esm/vs/base/common/strings.js.map +1 -1
  56. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  57. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  58. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  59. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  60. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  61. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  62. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  64. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  66. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  67. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  69. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  70. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  71. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  72. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  73. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  74. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  75. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  76. package/esm/vs/editor/browser/view.js +11 -2
  77. package/esm/vs/editor/browser/view.js.map +1 -1
  78. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  79. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  80. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  81. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  82. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  83. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  84. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  85. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  86. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  87. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  88. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  89. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  90. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  91. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  92. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  93. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  94. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  95. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  96. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  97. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  98. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  99. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  100. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  101. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  102. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  103. package/esm/vs/editor/common/languages.js +2 -1
  104. package/esm/vs/editor/common/languages.js.map +1 -1
  105. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  106. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  107. package/esm/vs/editor/common/model/textModel.js +49 -30
  108. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  109. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  110. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  111. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  112. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  113. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  114. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  115. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  116. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  117. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  118. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  119. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  120. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  121. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  122. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  123. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
  124. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  125. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
  126. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  127. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
  128. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  129. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  130. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  131. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
  132. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  133. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  134. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  135. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +2 -0
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  144. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  145. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  146. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  147. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  148. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  149. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  150. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  151. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  152. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  153. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  154. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -65
  155. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  156. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +69 -13
  157. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  158. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +159 -94
  159. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  160. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +124 -50
  161. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  162. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +393 -0
  163. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -0
  164. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  165. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  166. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  167. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  168. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  169. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  170. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  171. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  172. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  173. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  174. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  175. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  176. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  177. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  178. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  179. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  180. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  181. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  182. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  183. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  184. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  185. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  186. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  187. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  188. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  189. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  190. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  191. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  192. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  193. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  194. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  195. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  196. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  197. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  213. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  214. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  215. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  216. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  217. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  218. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  219. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  220. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  221. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  222. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  223. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  224. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  225. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  226. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
  227. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  228. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  229. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -11
  230. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  231. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  232. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  233. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  234. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  235. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  236. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  237. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  238. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  239. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  240. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  241. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  242. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  243. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  244. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  245. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  246. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  247. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  248. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  249. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  250. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  251. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  252. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  253. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  254. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  255. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  256. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  257. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  258. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  259. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  260. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  261. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  262. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  263. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  264. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  265. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  266. package/esm/vs/editor/editor.api.d.ts +37 -2
  267. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  268. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  269. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  270. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  271. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  272. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  273. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  274. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  275. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  276. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  277. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  278. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  279. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  280. package/esm/vs/platform/actions/common/actions.js +11 -4
  281. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  282. package/esm/vs/platform/actions/common/menuService.js +2 -2
  283. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  284. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  285. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  286. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  287. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  288. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  289. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  290. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  291. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  292. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  293. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  294. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  295. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  296. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  297. package/esm/vs/platform/list/browser/listService.js +27 -27
  298. package/esm/vs/platform/log/common/log.js +1 -1
  299. package/esm/vs/platform/log/common/log.js.map +1 -1
  300. package/esm/vs/platform/markers/common/markerService.js +6 -6
  301. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  302. package/esm/vs/platform/markers/common/markers.js +6 -6
  303. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  304. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  305. package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
  306. package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
  307. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  308. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  309. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  310. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  311. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  312. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  313. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  314. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  315. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  316. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  317. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  318. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  319. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  320. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  321. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  322. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  323. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  324. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  325. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  326. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  327. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  328. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  329. package/esm/vs/platform/window/common/window.js +1 -1
  330. package/esm/vs/platform/window/common/window.js.map +1 -1
  331. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  332. package/monaco.d.ts +37 -2
  333. package/package.json +2 -2
  334. package/version.txt +1 -1
  335. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  336. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  337. package/esm/vs/platform/product/common/productService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/view.ts","vs/editor/browser/view.ts"],"names":[],"mappings":"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","file":"view.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../base/browser/dom.js';\nimport { FastDomNode, createFastDomNode } from '../../base/browser/fastDomNode.js';\nimport { IMouseWheelEvent } from '../../base/browser/mouseEvent.js';\nimport { inputLatency } from '../../base/browser/performance.js';\nimport { CodeWindow } from '../../base/browser/window.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../base/common/errors.js';\nimport { Disposable, IDisposable } from '../../base/common/lifecycle.js';\nimport { IPointerHandlerHelper } from './controller/mouseHandler.js';\nimport { PointerHandlerLastRenderData } from './controller/mouseTarget.js';\nimport { PointerHandler } from './controller/pointerHandler.js';\nimport { IContentWidget, IContentWidgetPosition, IEditorAriaOptions, IGlyphMarginWidget, IGlyphMarginWidgetPosition, IMouseTarget, IOverlayWidget, IOverlayWidgetPosition, IViewZoneChangeAccessor } from './editorBrowser.js';\nimport { LineVisibleRanges, RenderingContext, RestrictedRenderingContext } from './view/renderingContext.js';\nimport { ICommandDelegate, ViewController } from './view/viewController.js';\nimport { ContentViewOverlays, MarginViewOverlays } from './view/viewOverlays.js';\nimport { PartFingerprint, PartFingerprints, ViewPart } from './view/viewPart.js';\nimport { ViewUserInputEvents } from './view/viewUserInputEvents.js';\nimport { BlockDecorations } from './viewParts/blockDecorations/blockDecorations.js';\nimport { ViewContentWidgets } from './viewParts/contentWidgets/contentWidgets.js';\nimport { CurrentLineHighlightOverlay, CurrentLineMarginHighlightOverlay } from './viewParts/currentLineHighlight/currentLineHighlight.js';\nimport { DecorationsOverlay } from './viewParts/decorations/decorations.js';\nimport { EditorScrollbar } from './viewParts/editorScrollbar/editorScrollbar.js';\nimport { GlyphMarginWidgets } from './viewParts/glyphMargin/glyphMargin.js';\nimport { IndentGuidesOverlay } from './viewParts/indentGuides/indentGuides.js';\nimport { LineNumbersOverlay } from './viewParts/lineNumbers/lineNumbers.js';\nimport { ViewLines } from './viewParts/viewLines/viewLines.js';\nimport { LinesDecorationsOverlay } from './viewParts/linesDecorations/linesDecorations.js';\nimport { Margin } from './viewParts/margin/margin.js';\nimport { MarginViewLineDecorationsOverlay } from './viewParts/marginDecorations/marginDecorations.js';\nimport { Minimap } from './viewParts/minimap/minimap.js';\nimport { ViewOverlayWidgets } from './viewParts/overlayWidgets/overlayWidgets.js';\nimport { DecorationsOverviewRuler } from './viewParts/overviewRuler/decorationsOverviewRuler.js';\nimport { OverviewRuler } from './viewParts/overviewRuler/overviewRuler.js';\nimport { Rulers } from './viewParts/rulers/rulers.js';\nimport { ScrollDecorationViewPart } from './viewParts/scrollDecoration/scrollDecoration.js';\nimport { SelectionsOverlay } from './viewParts/selections/selections.js';\nimport { ViewCursors } from './viewParts/viewCursors/viewCursors.js';\nimport { ViewZones } from './viewParts/viewZones/viewZones.js';\nimport { WhitespaceOverlay } from './viewParts/whitespace/whitespace.js';\nimport { IEditorConfiguration } from '../common/config/editorConfiguration.js';\nimport { EditorOption } from '../common/config/editorOptions.js';\nimport { Position } from '../common/core/position.js';\nimport { Range } from '../common/core/range.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ScrollType } from '../common/editorCommon.js';\nimport { GlyphMarginLane, IGlyphMarginLanesModel } from '../common/model.js';\nimport { ViewEventHandler } from '../common/viewEventHandler.js';\nimport * as viewEvents from '../common/viewEvents.js';\nimport { ViewportData } from '../common/viewLayout/viewLinesViewportData.js';\nimport { IViewModel } from '../common/viewModel.js';\nimport { ViewContext } from '../common/viewModel/viewContext.js';\nimport { IInstantiationService } from '../../platform/instantiation/common/instantiation.js';\nimport { IColorTheme, getThemeTypeSelector } from '../../platform/theme/common/themeService.js';\nimport { ViewGpuContext } from './gpu/viewGpuContext.js';\nimport { ViewLinesGpu } from './viewParts/viewLinesGpu/viewLinesGpu.js';\nimport { AbstractEditContext } from './controller/editContext/editContext.js';\nimport { IVisibleRangeProvider, TextAreaEditContext } from './controller/editContext/textArea/textAreaEditContext.js';\nimport { NativeEditContext } from './controller/editContext/native/nativeEditContext.js';\nimport { RulersGpu } from './viewParts/rulersGpu/rulersGpu.js';\nimport { GpuMarkOverlay } from './viewParts/gpuMark/gpuMark.js';\nimport { AccessibilitySupport } from '../../platform/accessibility/common/accessibility.js';\nimport { Event, Emitter } from '../../base/common/event.js';\n\n\nexport interface IContentWidgetData {\n\twidget: IContentWidget;\n\tposition: IContentWidgetPosition | null;\n}\n\nexport interface IOverlayWidgetData {\n\twidget: IOverlayWidget;\n\tposition: IOverlayWidgetPosition | null;\n}\n\nexport interface IGlyphMarginWidgetData {\n\twidget: IGlyphMarginWidget;\n\tposition: IGlyphMarginWidgetPosition;\n}\n\nexport class View extends ViewEventHandler {\n\n\tprivate _widgetFocusTracker: CodeEditorWidgetFocusTracker;\n\n\tprivate readonly _scrollbar: EditorScrollbar;\n\tprivate readonly _context: ViewContext;\n\tprivate readonly _viewGpuContext?: ViewGpuContext;\n\tprivate _selections: Selection[];\n\n\t// The view lines\n\tprivate readonly _viewLines: ViewLines;\n\tprivate readonly _viewLinesGpu?: ViewLinesGpu;\n\n\t// These are parts, but we must do some API related calls on them, so we keep a reference\n\tprivate readonly _viewZones: ViewZones;\n\tprivate readonly _contentWidgets: ViewContentWidgets;\n\tprivate readonly _overlayWidgets: ViewOverlayWidgets;\n\tprivate readonly _glyphMarginWidgets: GlyphMarginWidgets;\n\tprivate readonly _viewCursors: ViewCursors;\n\tprivate readonly _viewParts: ViewPart[];\n\tprivate readonly _viewController: ViewController;\n\n\tprivate _editContextEnabled: boolean;\n\tprivate _accessibilitySupport: AccessibilitySupport;\n\tprivate _editContext: AbstractEditContext;\n\tprivate readonly _pointerHandler: PointerHandler;\n\n\t// Dom nodes\n\tprivate readonly _linesContent: FastDomNode<HTMLElement>;\n\tpublic readonly domNode: FastDomNode<HTMLElement>;\n\tprivate readonly _overflowGuardContainer: FastDomNode<HTMLElement>;\n\n\t// Actual mutable state\n\tprivate _shouldRecomputeGlyphMarginLanes: boolean = false;\n\tprivate _renderAnimationFrame: IDisposable | null;\n\tprivate _ownerID: string;\n\n\tconstructor(\n\t\teditorContainer: HTMLElement,\n\t\townerID: string,\n\t\tcommandDelegate: ICommandDelegate,\n\t\tconfiguration: IEditorConfiguration,\n\t\tcolorTheme: IColorTheme,\n\t\tmodel: IViewModel,\n\t\tuserInputEvents: ViewUserInputEvents,\n\t\toverflowWidgetsDomNode: HTMLElement | undefined,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService\n\t) {\n\t\tsuper();\n\t\tthis._ownerID = ownerID;\n\n\t\tthis._widgetFocusTracker = this._register(\n\t\t\tnew CodeEditorWidgetFocusTracker(editorContainer, overflowWidgetsDomNode)\n\t\t);\n\t\tthis._register(this._widgetFocusTracker.onChange(() => {\n\t\t\tthis._context.viewModel.setHasWidgetFocus(this._widgetFocusTracker.hasFocus());\n\t\t}));\n\n\t\tthis._selections = [new Selection(1, 1, 1, 1)];\n\t\tthis._renderAnimationFrame = null;\n\n\t\tthis._overflowGuardContainer = createFastDomNode(document.createElement('div'));\n\t\tPartFingerprints.write(this._overflowGuardContainer, PartFingerprint.OverflowGuard);\n\t\tthis._overflowGuardContainer.setClassName('overflow-guard');\n\n\t\tthis._viewController = new ViewController(configuration, model, userInputEvents, commandDelegate);\n\n\t\t// The view context is passed on to most classes (basically to reduce param. counts in ctors)\n\t\tthis._context = new ViewContext(configuration, colorTheme, model);\n\n\t\t// Ensure the view is the first event handler in order to update the layout\n\t\tthis._context.addEventHandler(this);\n\n\t\tthis._viewParts = [];\n\n\t\t// Keyboard handler\n\t\tthis._editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tthis._accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tthis._editContext = this._instantiateEditContext();\n\n\t\tthis._viewParts.push(this._editContext);\n\n\t\t// These two dom nodes must be constructed up front, since references are needed in the layout provider (scrolling & co.)\n\t\tthis._linesContent = createFastDomNode(document.createElement('div'));\n\t\tthis._linesContent.setClassName('lines-content' + ' monaco-editor-background');\n\t\tthis._linesContent.setPosition('absolute');\n\n\t\tthis.domNode = createFastDomNode(document.createElement('div'));\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\t// Set role 'code' for better screen reader support https://github.com/microsoft/vscode/issues/93438\n\t\tthis.domNode.setAttribute('role', 'code');\n\n\t\tif (this._context.configuration.options.get(EditorOption.experimentalGpuAcceleration) === 'on') {\n\t\t\tthis._viewGpuContext = this._instantiationService.createInstance(ViewGpuContext, this._context);\n\t\t}\n\n\t\tthis._scrollbar = new EditorScrollbar(this._context, this._linesContent, this.domNode, this._overflowGuardContainer);\n\t\tthis._viewParts.push(this._scrollbar);\n\n\t\t// View Lines\n\t\tthis._viewLines = new ViewLines(this._context, this._viewGpuContext, this._linesContent);\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._viewLinesGpu = this._instantiationService.createInstance(ViewLinesGpu, this._context, this._viewGpuContext);\n\t\t}\n\n\t\t// View Zones\n\t\tthis._viewZones = new ViewZones(this._context);\n\t\tthis._viewParts.push(this._viewZones);\n\n\t\t// Decorations overview ruler\n\t\tconst decorationsOverviewRuler = new DecorationsOverviewRuler(this._context);\n\t\tthis._viewParts.push(decorationsOverviewRuler);\n\n\n\t\tconst scrollDecoration = new ScrollDecorationViewPart(this._context);\n\t\tthis._viewParts.push(scrollDecoration);\n\n\t\tconst contentViewOverlays = new ContentViewOverlays(this._context);\n\t\tthis._viewParts.push(contentViewOverlays);\n\t\tcontentViewOverlays.addDynamicOverlay(new CurrentLineHighlightOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new SelectionsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new IndentGuidesOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new DecorationsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new WhitespaceOverlay(this._context));\n\n\t\tconst marginViewOverlays = new MarginViewOverlays(this._context);\n\t\tthis._viewParts.push(marginViewOverlays);\n\t\tmarginViewOverlays.addDynamicOverlay(new CurrentLineMarginHighlightOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new MarginViewLineDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LinesDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LineNumbersOverlay(this._context));\n\t\tif (this._viewGpuContext) {\n\t\t\tmarginViewOverlays.addDynamicOverlay(new GpuMarkOverlay(this._context, this._viewGpuContext));\n\t\t}\n\n\t\t// Glyph margin widgets\n\t\tthis._glyphMarginWidgets = new GlyphMarginWidgets(this._context);\n\t\tthis._viewParts.push(this._glyphMarginWidgets);\n\n\t\tconst margin = new Margin(this._context);\n\t\tmargin.getDomNode().appendChild(this._viewZones.marginDomNode);\n\t\tmargin.getDomNode().appendChild(marginViewOverlays.getDomNode());\n\t\tmargin.getDomNode().appendChild(this._glyphMarginWidgets.domNode);\n\t\tthis._viewParts.push(margin);\n\n\t\t// Content widgets\n\t\tthis._contentWidgets = new ViewContentWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._contentWidgets);\n\n\t\tthis._viewCursors = new ViewCursors(this._context);\n\t\tthis._viewParts.push(this._viewCursors);\n\n\t\t// Overlay widgets\n\t\tthis._overlayWidgets = new ViewOverlayWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._overlayWidgets);\n\n\t\tconst rulers = this._viewGpuContext\n\t\t\t? new RulersGpu(this._context, this._viewGpuContext)\n\t\t\t: new Rulers(this._context);\n\t\tthis._viewParts.push(rulers);\n\n\t\tconst blockOutline = new BlockDecorations(this._context);\n\t\tthis._viewParts.push(blockOutline);\n\n\t\tconst minimap = new Minimap(this._context);\n\t\tthis._viewParts.push(minimap);\n\n\t\t// -------------- Wire dom nodes up\n\n\t\tif (decorationsOverviewRuler) {\n\t\t\tconst overviewRulerData = this._scrollbar.getOverviewRulerLayoutInfo();\n\t\t\toverviewRulerData.parent.insertBefore(decorationsOverviewRuler.getDomNode(), overviewRulerData.insertBefore);\n\t\t}\n\n\t\tthis._linesContent.appendChild(contentViewOverlays.getDomNode());\n\t\tif ('domNode' in rulers) {\n\t\t\tthis._linesContent.appendChild(rulers.domNode);\n\t\t}\n\t\tthis._linesContent.appendChild(this._viewZones.domNode);\n\t\tthis._linesContent.appendChild(this._viewLines.getDomNode());\n\t\tthis._linesContent.appendChild(this._contentWidgets.domNode);\n\t\tthis._linesContent.appendChild(this._viewCursors.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(margin.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._scrollbar.getDomNode());\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._overflowGuardContainer.appendChild(this._viewGpuContext.canvas);\n\t\t}\n\t\tthis._overflowGuardContainer.appendChild(scrollDecoration.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(minimap.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(blockOutline.domNode);\n\t\tthis.domNode.appendChild(this._overflowGuardContainer);\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\toverflowWidgetsDomNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode);\n\t\t\toverflowWidgetsDomNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode);\n\t\t} else {\n\t\t\tthis.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode);\n\t\t\tthis.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode);\n\t\t}\n\n\t\tthis._applyLayout();\n\n\t\t// Pointer handler\n\t\tthis._pointerHandler = this._register(new PointerHandler(this._context, this._viewController, this._createPointerHandlerHelper()));\n\t}\n\n\tprivate _instantiateEditContext(): AbstractEditContext {\n\t\tconst usingExperimentalEditContext = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tif (usingExperimentalEditContext) {\n\t\t\treturn this._instantiationService.createInstance(NativeEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t} else {\n\t\t\treturn this._instantiationService.createInstance(TextAreaEditContext, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t}\n\t}\n\n\tprivate _updateEditContext(): void {\n\t\tconst editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tconst accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tif (this._editContextEnabled === editContextEnabled && this._accessibilitySupport === accessibilitySupport) {\n\t\t\treturn;\n\t\t}\n\t\tthis._editContextEnabled = editContextEnabled;\n\t\tthis._accessibilitySupport = accessibilitySupport;\n\t\tconst isEditContextFocused = this._editContext.isFocused();\n\t\tconst indexOfEditContext = this._viewParts.indexOf(this._editContext);\n\t\tthis._editContext.dispose();\n\t\tthis._editContext = this._instantiateEditContext();\n\t\tif (isEditContextFocused) {\n\t\t\tthis._editContext.focus();\n\t\t}\n\t\tif (indexOfEditContext !== -1) {\n\t\t\tthis._viewParts.splice(indexOfEditContext, 1, this._editContext);\n\t\t}\n\t}\n\n\tprivate _computeGlyphMarginLanes(): IGlyphMarginLanesModel {\n\t\tconst model = this._context.viewModel.model;\n\t\tconst laneModel = this._context.viewModel.glyphLanes;\n\t\ttype Glyph = { range: Range; lane: GlyphMarginLane; persist?: boolean };\n\t\tlet glyphs: Glyph[] = [];\n\t\tlet maxLineNumber = 0;\n\n\t\t// Add all margin decorations\n\t\tglyphs = glyphs.concat(model.getAllMarginDecorations().map((decoration) => {\n\t\t\tconst lane = decoration.options.glyphMargin?.position ?? GlyphMarginLane.Center;\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, decoration.range.endLineNumber);\n\t\t\treturn { range: decoration.range, lane, persist: decoration.options.glyphMargin?.persistLane };\n\t\t}));\n\n\t\t// Add all glyph margin widgets\n\t\tglyphs = glyphs.concat(this._glyphMarginWidgets.getWidgets().map((widget) => {\n\t\t\tconst range = model.validateRange(widget.preference.range);\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, range.endLineNumber);\n\t\t\treturn { range, lane: widget.preference.lane };\n\t\t}));\n\n\t\t// Sorted by their start position\n\t\tglyphs.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n\n\t\tlaneModel.reset(maxLineNumber);\n\t\tfor (const glyph of glyphs) {\n\t\t\tlaneModel.push(glyph.lane, glyph.range, glyph.persist);\n\t\t}\n\n\t\treturn laneModel;\n\t}\n\n\tprivate _createPointerHandlerHelper(): IPointerHandlerHelper {\n\t\treturn {\n\t\t\tviewDomNode: this.domNode.domNode,\n\t\t\tlinesContentDomNode: this._linesContent.domNode,\n\t\t\tviewLinesDomNode: this._viewLines.getDomNode().domNode,\n\t\t\tviewLinesGpu: this._viewLinesGpu,\n\n\t\t\tfocusTextArea: () => {\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tdispatchTextAreaEvent: (event: CustomEvent) => {\n\t\t\t\tthis._editContext.domNode.domNode.dispatchEvent(event);\n\t\t\t},\n\n\t\t\tgetLastRenderData: (): PointerHandlerLastRenderData => {\n\t\t\t\tconst lastViewCursorsRenderData = this._viewCursors.getLastRenderData() || [];\n\t\t\t\tconst lastTextareaPosition = this._editContext.getLastRenderData();\n\t\t\t\treturn new PointerHandlerLastRenderData(lastViewCursorsRenderData, lastTextareaPosition);\n\t\t\t},\n\t\t\trenderNow: (): void => {\n\t\t\t\tthis.render(true, false);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnViewZone: (viewZoneId: string) => {\n\t\t\t\treturn this._viewZones.shouldSuppressMouseDownOnViewZone(viewZoneId);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnWidget: (widgetId: string) => {\n\t\t\t\treturn this._contentWidgets.shouldSuppressMouseDownOnWidget(widgetId);\n\t\t\t},\n\t\t\tgetPositionFromDOMInfo: (spanNode: HTMLElement, offset: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.getPositionFromDOMInfo(spanNode, offset);\n\t\t\t},\n\n\t\t\tvisibleRangeForPosition: (lineNumber: number, column: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tconst position = new Position(lineNumber, column);\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position) ?? this._viewLinesGpu?.visibleRangeForPosition(position) ?? null;\n\t\t\t},\n\n\t\t\tgetLineWidth: (lineNumber: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tif (this._viewLinesGpu) {\n\t\t\t\t\tconst result = this._viewLinesGpu.getLineWidth(lineNumber);\n\t\t\t\t\tif (result !== undefined) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._viewLines.getLineWidth(lineNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _createTextAreaHandlerHelper(): IVisibleRangeProvider {\n\t\treturn {\n\t\t\tvisibleRangeForPosition: (position: Position) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position);\n\t\t\t},\n\t\t\tlinesVisibleRangesForRange: (range: Range, includeNewLines: boolean): LineVisibleRanges[] | null => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.linesVisibleRangesForRange(range, includeNewLines);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _applyLayout(): void {\n\t\tconst options = this._context.configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tthis.domNode.setWidth(layoutInfo.width);\n\t\tthis.domNode.setHeight(layoutInfo.height);\n\n\t\tthis._overflowGuardContainer.setWidth(layoutInfo.width);\n\t\tthis._overflowGuardContainer.setHeight(layoutInfo.height);\n\n\t\t// https://stackoverflow.com/questions/38905916/content-in-google-chrome-larger-than-16777216-px-not-being-rendered\n\t\tthis._linesContent.setWidth(16777216);\n\t\tthis._linesContent.setHeight(16777216);\n\t}\n\n\tprivate _getEditorClassName() {\n\t\tconst focused = this._editContext.isFocused() ? ' focused' : '';\n\t\treturn this._context.configuration.options.get(EditorOption.editorClassName) + ' ' + getThemeTypeSelector(this._context.theme.type) + focused;\n\t}\n\n\t// --- begin event handlers\n\tpublic override handleEvents(events: viewEvents.ViewEvent[]): void {\n\t\tsuper.handleEvents(events);\n\t\tthis._scheduleRender();\n\t}\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\tthis._updateEditContext();\n\t\tthis._applyLayout();\n\t\treturn false;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selections = e.selections;\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\tif (e.affectsGlyphMargin) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onFocusChanged(e: viewEvents.ViewFocusChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\tpublic override onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean {\n\t\tthis._context.theme.update(e.theme);\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\n\t// --- end event handlers\n\n\tpublic override dispose(): void {\n\t\tif (this._renderAnimationFrame !== null) {\n\t\t\tthis._renderAnimationFrame.dispose();\n\t\t\tthis._renderAnimationFrame = null;\n\t\t}\n\n\t\tthis._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove();\n\t\tthis._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode.remove();\n\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._viewGpuContext?.dispose();\n\n\t\tthis._viewLines.dispose();\n\t\tthis._viewLinesGpu?.dispose();\n\n\t\t// Destroy view parts\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tviewPart.dispose();\n\t\t}\n\n\t\tsuper.dispose();\n\t}\n\n\tprivate _scheduleRender(): void {\n\t\tif (this._store.isDisposed) {\n\t\t\tthrow new BugIndicatingError();\n\t\t}\n\t\tif (this._renderAnimationFrame === null) {\n\t\t\t// TODO: workaround fix for https://github.com/microsoft/vscode/issues/229825\n\t\t\tif (this._editContext instanceof NativeEditContext) {\n\t\t\t\tthis._editContext.setEditContextOnDomNode();\n\t\t\t}\n\t\t\tconst rendering = this._createCoordinatedRendering();\n\t\t\tthis._renderAnimationFrame = EditorRenderingCoordinator.INSTANCE.scheduleCoordinatedRendering({\n\t\t\t\twindow: dom.getWindow(this.domNode?.domNode),\n\t\t\t\tprepareRenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn rendering.prepareRenderText();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._renderAnimationFrame = null;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.renderText();\n\t\t\t\t},\n\t\t\t\tprepareRender: (viewParts: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.prepareRender(viewParts, ctx);\n\t\t\t\t},\n\t\t\t\trender: (viewParts: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.render(viewParts, ctx);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _flushAccumulatedAndRenderNow(): void {\n\t\tconst rendering = this._createCoordinatedRendering();\n\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\tconst data = safeInvokeNoArg(() => rendering.renderText());\n\t\tif (data) {\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n\n\tprivate _getViewPartsToRender(): ViewPart[] {\n\t\tconst result: ViewPart[] = [];\n\t\tlet resultLen = 0;\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tif (viewPart.shouldRender()) {\n\t\t\t\tresult[resultLen++] = viewPart;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _createCoordinatedRendering() {\n\t\treturn {\n\t\t\tprepareRenderText: () => {\n\t\t\t\tif (this._shouldRecomputeGlyphMarginLanes) {\n\t\t\t\t\tthis._shouldRecomputeGlyphMarginLanes = false;\n\t\t\t\t\tconst model = this._computeGlyphMarginLanes();\n\t\t\t\t\tthis._context.configuration.setGlyphMarginDecorationLaneCount(model.requiredLanes);\n\t\t\t\t}\n\t\t\t\tinputLatency.onRenderStart();\n\t\t\t},\n\t\t\trenderText: (): [ViewPart[], RenderingContext] | null => {\n\t\t\t\tif (!this.domNode.domNode.isConnected) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet viewPartsToRender = this._getViewPartsToRender();\n\t\t\t\tif (!this._viewLines.shouldRender() && viewPartsToRender.length === 0) {\n\t\t\t\t\t// Nothing to render\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst partialViewportData = this._context.viewLayout.getLinesViewportData();\n\t\t\t\tthis._context.viewModel.setViewport(partialViewportData.startLineNumber, partialViewportData.endLineNumber, partialViewportData.centeredLineNumber);\n\n\t\t\t\tconst viewportData = new ViewportData(\n\t\t\t\t\tthis._selections,\n\t\t\t\t\tpartialViewportData,\n\t\t\t\t\tthis._context.viewLayout.getWhitespaceViewportData(),\n\t\t\t\t\tthis._context.viewModel\n\t\t\t\t);\n\n\t\t\t\tif (this._contentWidgets.shouldRender()) {\n\t\t\t\t\t// Give the content widgets a chance to set their max width before a possible synchronous layout\n\t\t\t\t\tthis._contentWidgets.onBeforeRender(viewportData);\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLines.shouldRender()) {\n\t\t\t\t\tthis._viewLines.renderText(viewportData);\n\t\t\t\t\tthis._viewLines.onDidRender();\n\n\t\t\t\t\t// Rendering of viewLines might cause scroll events to occur, so collect view parts to render again\n\t\t\t\t\tviewPartsToRender = this._getViewPartsToRender();\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLinesGpu?.shouldRender()) {\n\t\t\t\t\tthis._viewLinesGpu.renderText(viewportData);\n\t\t\t\t\tthis._viewLinesGpu.onDidRender();\n\t\t\t\t}\n\n\t\t\t\treturn [viewPartsToRender, new RenderingContext(this._context.viewLayout, viewportData, this._viewLines, this._viewLinesGpu)];\n\t\t\t},\n\t\t\tprepareRender: (viewPartsToRender: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.prepareRender(ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\trender: (viewPartsToRender: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.render(ctx);\n\t\t\t\t\tviewPart.onDidRender();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// --- BEGIN CodeEditor helpers\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tthis._scrollbar.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tthis._scrollbar.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic restoreState(scrollPosition: { scrollLeft: number; scrollTop: number }): void {\n\t\tthis._context.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: scrollPosition.scrollTop,\n\t\t\tscrollLeft: scrollPosition.scrollLeft\n\t\t}, ScrollType.Immediate);\n\t\tthis._context.viewModel.visibleLinesStabilized();\n\t}\n\n\tpublic getOffsetForColumn(modelLineNumber: number, modelColumn: number): number {\n\t\tconst modelPosition = this._context.viewModel.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\tthis._flushAccumulatedAndRenderNow();\n\t\tconst visibleRange = this._viewLines.visibleRangeForPosition(new Position(viewPosition.lineNumber, viewPosition.column));\n\t\tif (!visibleRange) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn visibleRange.left;\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null {\n\t\tconst mouseTarget = this._pointerHandler.getTargetAtClientPoint(clientX, clientY);\n\t\tif (!mouseTarget) {\n\t\t\treturn null;\n\t\t}\n\t\treturn ViewUserInputEvents.convertViewToModelMouseTarget(mouseTarget, this._context.viewModel.coordinatesConverter);\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): OverviewRuler {\n\t\treturn new OverviewRuler(this._context, cssClassName);\n\t}\n\n\tpublic change(callback: (changeAccessor: IViewZoneChangeAccessor) => unknown): void {\n\t\tthis._viewZones.changeViewZones(callback);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic render(now: boolean, everything: boolean): void {\n\t\tif (everything) {\n\t\t\t// Force everything to render...\n\t\t\tthis._viewLines.forceShouldRender();\n\t\t\tfor (const viewPart of this._viewParts) {\n\t\t\t\tviewPart.forceShouldRender();\n\t\t\t}\n\t\t}\n\t\tif (now) {\n\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t} else {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._editContext.writeScreenReaderContent(reason);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._editContext.focus();\n\t}\n\n\tpublic isFocused(): boolean {\n\t\treturn this._editContext.isFocused();\n\t}\n\n\tpublic isWidgetFocused(): boolean {\n\t\treturn this._widgetFocusTracker.hasFocus();\n\t}\n\n\tpublic setAriaOptions(options: IEditorAriaOptions): void {\n\t\tthis._editContext.setAriaOptions(options);\n\t}\n\n\tpublic addContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutContentWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.setWidgetPosition(\n\t\t\twidgetData.widget,\n\t\t\twidgetData.position?.position ?? null,\n\t\t\twidgetData.position?.secondaryPosition ?? null,\n\t\t\twidgetData.position?.preference ?? null,\n\t\t\twidgetData.position?.positionAffinity ?? null\n\t\t);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic removeContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutOverlayWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tconst shouldRender = this._overlayWidgets.setWidgetPosition(widgetData.widget, widgetData.position);\n\t\tif (shouldRender) {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.addWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tconst newPreference = widgetData.position;\n\t\tconst shouldRender = this._glyphMarginWidgets.setWidgetPosition(widgetData.widget, newPreference);\n\t\tif (shouldRender) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.removeWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\t// --- END CodeEditor helpers\n\n}\n\nfunction safeInvokeNoArg<T>(func: () => T): T | null {\n\ttry {\n\t\treturn func();\n\t} catch (e) {\n\t\tonUnexpectedError(e);\n\t\treturn null;\n\t}\n}\n\ninterface ICoordinatedRendering {\n\treadonly window: CodeWindow;\n\tprepareRenderText(): void;\n\trenderText(): [ViewPart[], RenderingContext] | null;\n\tprepareRender(viewParts: ViewPart[], ctx: RenderingContext): void;\n\trender(viewParts: ViewPart[], ctx: RestrictedRenderingContext): void;\n}\n\nclass EditorRenderingCoordinator {\n\n\tpublic static INSTANCE = new EditorRenderingCoordinator();\n\n\tprivate _coordinatedRenderings: ICoordinatedRendering[] = [];\n\tprivate _animationFrameRunners = new Map<CodeWindow, IDisposable>();\n\n\tprivate constructor() { }\n\n\tscheduleCoordinatedRendering(rendering: ICoordinatedRendering): IDisposable {\n\t\tthis._coordinatedRenderings.push(rendering);\n\t\tthis._scheduleRender(rendering.window);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tconst renderingIndex = this._coordinatedRenderings.indexOf(rendering);\n\t\t\t\tif (renderingIndex === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._coordinatedRenderings.splice(renderingIndex, 1);\n\n\t\t\t\tif (this._coordinatedRenderings.length === 0) {\n\t\t\t\t\t// There are no more renderings to coordinate => cancel animation frames\n\t\t\t\t\tfor (const [_, disposable] of this._animationFrameRunners) {\n\t\t\t\t\t\tdisposable.dispose();\n\t\t\t\t\t}\n\t\t\t\t\tthis._animationFrameRunners.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _scheduleRender(window: CodeWindow): void {\n\t\tif (!this._animationFrameRunners.has(window)) {\n\t\t\tconst runner = () => {\n\t\t\t\tthis._animationFrameRunners.delete(window);\n\t\t\t\tthis._onRenderScheduled();\n\t\t\t};\n\t\t\tthis._animationFrameRunners.set(window, dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100));\n\t\t}\n\t}\n\n\tprivate _onRenderScheduled(): void {\n\t\tconst coordinatedRenderings = this._coordinatedRenderings.slice(0);\n\t\tthis._coordinatedRenderings = [];\n\n\t\tfor (const rendering of coordinatedRenderings) {\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\t}\n\n\t\tconst datas: ([ViewPart[], RenderingContext] | null)[] = [];\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tdatas[i] = safeInvokeNoArg(() => rendering.renderText());\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n}\n\nclass CodeEditorWidgetFocusTracker extends Disposable {\n\n\tprivate _hasDomElementFocus: boolean;\n\tprivate readonly _domFocusTracker: dom.IFocusTracker;\n\tprivate readonly _overflowWidgetsDomNode: dom.IFocusTracker | undefined;\n\n\tprivate readonly _onChange: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onChange: Event<void> = this._onChange.event;\n\n\tprivate _overflowWidgetsDomNodeHasFocus: boolean;\n\n\tprivate _hadFocus: boolean | undefined = undefined;\n\n\tconstructor(domElement: HTMLElement, overflowWidgetsDomNode: HTMLElement | undefined) {\n\t\tsuper();\n\n\t\tthis._hasDomElementFocus = false;\n\t\tthis._domFocusTracker = this._register(dom.trackFocus(domElement));\n\n\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\n\t\tthis._register(this._domFocusTracker.onDidFocus(() => {\n\t\t\tthis._hasDomElementFocus = true;\n\t\t\tthis._update();\n\t\t}));\n\t\tthis._register(this._domFocusTracker.onDidBlur(() => {\n\t\t\tthis._hasDomElementFocus = false;\n\t\t\tthis._update();\n\t\t}));\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\tthis._overflowWidgetsDomNode = this._register(dom.trackFocus(overflowWidgetsDomNode));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidFocus(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = true;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidBlur(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t}\n\t}\n\n\tprivate _update() {\n\t\tconst focused = this._hasDomElementFocus || this._overflowWidgetsDomNodeHasFocus;\n\t\tif (this._hadFocus !== focused) {\n\t\t\tthis._hadFocus = focused;\n\t\t\tthis._onChange.fire(undefined);\n\t\t}\n\t}\n\n\tpublic hasFocus(): boolean {\n\t\treturn this._hadFocus ?? false;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../base/browser/dom.js';\nimport { FastDomNode, createFastDomNode } from '../../base/browser/fastDomNode.js';\nimport { IMouseWheelEvent } from '../../base/browser/mouseEvent.js';\nimport { inputLatency } from '../../base/browser/performance.js';\nimport { CodeWindow } from '../../base/browser/window.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../base/common/errors.js';\nimport { Disposable, IDisposable } from '../../base/common/lifecycle.js';\nimport { IPointerHandlerHelper } from './controller/mouseHandler.js';\nimport { PointerHandlerLastRenderData } from './controller/mouseTarget.js';\nimport { PointerHandler } from './controller/pointerHandler.js';\nimport { IContentWidget, IContentWidgetPosition, IEditorAriaOptions, IGlyphMarginWidget, IGlyphMarginWidgetPosition, IMouseTarget, IOverlayWidget, IOverlayWidgetPosition, IViewZoneChangeAccessor } from './editorBrowser.js';\nimport { LineVisibleRanges, RenderingContext, RestrictedRenderingContext } from './view/renderingContext.js';\nimport { ICommandDelegate, ViewController } from './view/viewController.js';\nimport { ContentViewOverlays, MarginViewOverlays } from './view/viewOverlays.js';\nimport { PartFingerprint, PartFingerprints, ViewPart } from './view/viewPart.js';\nimport { ViewUserInputEvents } from './view/viewUserInputEvents.js';\nimport { BlockDecorations } from './viewParts/blockDecorations/blockDecorations.js';\nimport { ViewContentWidgets } from './viewParts/contentWidgets/contentWidgets.js';\nimport { CurrentLineHighlightOverlay, CurrentLineMarginHighlightOverlay } from './viewParts/currentLineHighlight/currentLineHighlight.js';\nimport { DecorationsOverlay } from './viewParts/decorations/decorations.js';\nimport { EditorScrollbar } from './viewParts/editorScrollbar/editorScrollbar.js';\nimport { GlyphMarginWidgets } from './viewParts/glyphMargin/glyphMargin.js';\nimport { IndentGuidesOverlay } from './viewParts/indentGuides/indentGuides.js';\nimport { LineNumbersOverlay } from './viewParts/lineNumbers/lineNumbers.js';\nimport { ViewLines } from './viewParts/viewLines/viewLines.js';\nimport { LinesDecorationsOverlay } from './viewParts/linesDecorations/linesDecorations.js';\nimport { Margin } from './viewParts/margin/margin.js';\nimport { MarginViewLineDecorationsOverlay } from './viewParts/marginDecorations/marginDecorations.js';\nimport { Minimap } from './viewParts/minimap/minimap.js';\nimport { ViewOverlayWidgets } from './viewParts/overlayWidgets/overlayWidgets.js';\nimport { DecorationsOverviewRuler } from './viewParts/overviewRuler/decorationsOverviewRuler.js';\nimport { OverviewRuler } from './viewParts/overviewRuler/overviewRuler.js';\nimport { Rulers } from './viewParts/rulers/rulers.js';\nimport { ScrollDecorationViewPart } from './viewParts/scrollDecoration/scrollDecoration.js';\nimport { SelectionsOverlay } from './viewParts/selections/selections.js';\nimport { ViewCursors } from './viewParts/viewCursors/viewCursors.js';\nimport { ViewZones } from './viewParts/viewZones/viewZones.js';\nimport { WhitespaceOverlay } from './viewParts/whitespace/whitespace.js';\nimport { IEditorConfiguration } from '../common/config/editorConfiguration.js';\nimport { EditorOption } from '../common/config/editorOptions.js';\nimport { Position } from '../common/core/position.js';\nimport { Range } from '../common/core/range.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ScrollType } from '../common/editorCommon.js';\nimport { GlyphMarginLane, IGlyphMarginLanesModel } from '../common/model.js';\nimport { ViewEventHandler } from '../common/viewEventHandler.js';\nimport * as viewEvents from '../common/viewEvents.js';\nimport { ViewportData } from '../common/viewLayout/viewLinesViewportData.js';\nimport { IViewModel } from '../common/viewModel.js';\nimport { ViewContext } from '../common/viewModel/viewContext.js';\nimport { IInstantiationService } from '../../platform/instantiation/common/instantiation.js';\nimport { IColorTheme, getThemeTypeSelector } from '../../platform/theme/common/themeService.js';\nimport { ViewGpuContext } from './gpu/viewGpuContext.js';\nimport { ViewLinesGpu } from './viewParts/viewLinesGpu/viewLinesGpu.js';\nimport { AbstractEditContext } from './controller/editContext/editContext.js';\nimport { IVisibleRangeProvider, TextAreaEditContext } from './controller/editContext/textArea/textAreaEditContext.js';\nimport { NativeEditContext } from './controller/editContext/native/nativeEditContext.js';\nimport { RulersGpu } from './viewParts/rulersGpu/rulersGpu.js';\nimport { GpuMarkOverlay } from './viewParts/gpuMark/gpuMark.js';\nimport { AccessibilitySupport } from '../../platform/accessibility/common/accessibility.js';\nimport { Event, Emitter } from '../../base/common/event.js';\n\n\nexport interface IContentWidgetData {\n\twidget: IContentWidget;\n\tposition: IContentWidgetPosition | null;\n}\n\nexport interface IOverlayWidgetData {\n\twidget: IOverlayWidget;\n\tposition: IOverlayWidgetPosition | null;\n}\n\nexport interface IGlyphMarginWidgetData {\n\twidget: IGlyphMarginWidget;\n\tposition: IGlyphMarginWidgetPosition;\n}\n\nexport class View extends ViewEventHandler {\n\n\tprivate _widgetFocusTracker: CodeEditorWidgetFocusTracker;\n\n\tprivate readonly _scrollbar: EditorScrollbar;\n\tprivate readonly _context: ViewContext;\n\tprivate readonly _viewGpuContext?: ViewGpuContext;\n\tprivate _selections: Selection[];\n\n\t// The view lines\n\tprivate readonly _viewLines: ViewLines;\n\tprivate readonly _viewLinesGpu?: ViewLinesGpu;\n\n\t// These are parts, but we must do some API related calls on them, so we keep a reference\n\tprivate readonly _viewZones: ViewZones;\n\tprivate readonly _contentWidgets: ViewContentWidgets;\n\tprivate readonly _overlayWidgets: ViewOverlayWidgets;\n\tprivate readonly _glyphMarginWidgets: GlyphMarginWidgets;\n\tprivate readonly _viewCursors: ViewCursors;\n\tprivate readonly _viewParts: ViewPart[];\n\tprivate readonly _viewController: ViewController;\n\n\tprivate _editContextEnabled: boolean;\n\tprivate _accessibilitySupport: AccessibilitySupport;\n\tprivate _editContext: AbstractEditContext;\n\tprivate readonly _pointerHandler: PointerHandler;\n\n\t// Dom nodes\n\tprivate readonly _linesContent: FastDomNode<HTMLElement>;\n\tpublic readonly domNode: FastDomNode<HTMLElement>;\n\tprivate readonly _overflowGuardContainer: FastDomNode<HTMLElement>;\n\n\t// Actual mutable state\n\tprivate _shouldRecomputeGlyphMarginLanes: boolean = false;\n\tprivate _renderAnimationFrame: IDisposable | null;\n\tprivate _ownerID: string;\n\n\tconstructor(\n\t\teditorContainer: HTMLElement,\n\t\townerID: string,\n\t\tcommandDelegate: ICommandDelegate,\n\t\tconfiguration: IEditorConfiguration,\n\t\tcolorTheme: IColorTheme,\n\t\tmodel: IViewModel,\n\t\tuserInputEvents: ViewUserInputEvents,\n\t\toverflowWidgetsDomNode: HTMLElement | undefined,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService\n\t) {\n\t\tsuper();\n\t\tthis._ownerID = ownerID;\n\n\t\tthis._widgetFocusTracker = this._register(\n\t\t\tnew CodeEditorWidgetFocusTracker(editorContainer, overflowWidgetsDomNode)\n\t\t);\n\t\tthis._register(this._widgetFocusTracker.onChange(() => {\n\t\t\tthis._context.viewModel.setHasWidgetFocus(this._widgetFocusTracker.hasFocus());\n\t\t}));\n\n\t\tthis._selections = [new Selection(1, 1, 1, 1)];\n\t\tthis._renderAnimationFrame = null;\n\n\t\tthis._overflowGuardContainer = createFastDomNode(document.createElement('div'));\n\t\tPartFingerprints.write(this._overflowGuardContainer, PartFingerprint.OverflowGuard);\n\t\tthis._overflowGuardContainer.setClassName('overflow-guard');\n\n\t\tthis._viewController = new ViewController(configuration, model, userInputEvents, commandDelegate);\n\n\t\t// The view context is passed on to most classes (basically to reduce param. counts in ctors)\n\t\tthis._context = new ViewContext(configuration, colorTheme, model);\n\n\t\t// Ensure the view is the first event handler in order to update the layout\n\t\tthis._context.addEventHandler(this);\n\n\t\tthis._viewParts = [];\n\n\t\t// Keyboard handler\n\t\tthis._editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tthis._accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tthis._editContext = this._instantiateEditContext();\n\n\t\tthis._viewParts.push(this._editContext);\n\n\t\t// These two dom nodes must be constructed up front, since references are needed in the layout provider (scrolling & co.)\n\t\tthis._linesContent = createFastDomNode(document.createElement('div'));\n\t\tthis._linesContent.setClassName('lines-content' + ' monaco-editor-background');\n\t\tthis._linesContent.setPosition('absolute');\n\n\t\tthis.domNode = createFastDomNode(document.createElement('div'));\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\t// Set role 'code' for better screen reader support https://github.com/microsoft/vscode/issues/93438\n\t\tthis.domNode.setAttribute('role', 'code');\n\n\t\tif (this._context.configuration.options.get(EditorOption.experimentalGpuAcceleration) === 'on') {\n\t\t\tthis._viewGpuContext = this._instantiationService.createInstance(ViewGpuContext, this._context);\n\t\t}\n\n\t\tthis._scrollbar = new EditorScrollbar(this._context, this._linesContent, this.domNode, this._overflowGuardContainer);\n\t\tthis._viewParts.push(this._scrollbar);\n\n\t\t// View Lines\n\t\tthis._viewLines = new ViewLines(this._context, this._viewGpuContext, this._linesContent);\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._viewLinesGpu = this._instantiationService.createInstance(ViewLinesGpu, this._context, this._viewGpuContext);\n\t\t}\n\n\t\t// View Zones\n\t\tthis._viewZones = new ViewZones(this._context);\n\t\tthis._viewParts.push(this._viewZones);\n\n\t\t// Decorations overview ruler\n\t\tconst decorationsOverviewRuler = new DecorationsOverviewRuler(this._context);\n\t\tthis._viewParts.push(decorationsOverviewRuler);\n\n\n\t\tconst scrollDecoration = new ScrollDecorationViewPart(this._context);\n\t\tthis._viewParts.push(scrollDecoration);\n\n\t\tconst contentViewOverlays = new ContentViewOverlays(this._context);\n\t\tthis._viewParts.push(contentViewOverlays);\n\t\tcontentViewOverlays.addDynamicOverlay(new CurrentLineHighlightOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new SelectionsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new IndentGuidesOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new DecorationsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new WhitespaceOverlay(this._context));\n\n\t\tconst marginViewOverlays = new MarginViewOverlays(this._context);\n\t\tthis._viewParts.push(marginViewOverlays);\n\t\tmarginViewOverlays.addDynamicOverlay(new CurrentLineMarginHighlightOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new MarginViewLineDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LinesDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LineNumbersOverlay(this._context));\n\t\tif (this._viewGpuContext) {\n\t\t\tmarginViewOverlays.addDynamicOverlay(new GpuMarkOverlay(this._context, this._viewGpuContext));\n\t\t}\n\n\t\t// Glyph margin widgets\n\t\tthis._glyphMarginWidgets = new GlyphMarginWidgets(this._context);\n\t\tthis._viewParts.push(this._glyphMarginWidgets);\n\n\t\tconst margin = new Margin(this._context);\n\t\tmargin.getDomNode().appendChild(this._viewZones.marginDomNode);\n\t\tmargin.getDomNode().appendChild(marginViewOverlays.getDomNode());\n\t\tmargin.getDomNode().appendChild(this._glyphMarginWidgets.domNode);\n\t\tthis._viewParts.push(margin);\n\n\t\t// Content widgets\n\t\tthis._contentWidgets = new ViewContentWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._contentWidgets);\n\n\t\tthis._viewCursors = new ViewCursors(this._context);\n\t\tthis._viewParts.push(this._viewCursors);\n\n\t\t// Overlay widgets\n\t\tthis._overlayWidgets = new ViewOverlayWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._overlayWidgets);\n\n\t\tconst rulers = this._viewGpuContext\n\t\t\t? new RulersGpu(this._context, this._viewGpuContext)\n\t\t\t: new Rulers(this._context);\n\t\tthis._viewParts.push(rulers);\n\n\t\tconst blockOutline = new BlockDecorations(this._context);\n\t\tthis._viewParts.push(blockOutline);\n\n\t\tconst minimap = new Minimap(this._context);\n\t\tthis._viewParts.push(minimap);\n\n\t\t// -------------- Wire dom nodes up\n\n\t\tif (decorationsOverviewRuler) {\n\t\t\tconst overviewRulerData = this._scrollbar.getOverviewRulerLayoutInfo();\n\t\t\toverviewRulerData.parent.insertBefore(decorationsOverviewRuler.getDomNode(), overviewRulerData.insertBefore);\n\t\t}\n\n\t\tthis._linesContent.appendChild(contentViewOverlays.getDomNode());\n\t\tif ('domNode' in rulers) {\n\t\t\tthis._linesContent.appendChild(rulers.domNode);\n\t\t}\n\t\tthis._linesContent.appendChild(this._viewZones.domNode);\n\t\tthis._linesContent.appendChild(this._viewLines.getDomNode());\n\t\tthis._linesContent.appendChild(this._contentWidgets.domNode);\n\t\tthis._linesContent.appendChild(this._viewCursors.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(margin.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._scrollbar.getDomNode());\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._overflowGuardContainer.appendChild(this._viewGpuContext.canvas);\n\t\t}\n\t\tthis._overflowGuardContainer.appendChild(scrollDecoration.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(minimap.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(blockOutline.domNode);\n\t\tthis.domNode.appendChild(this._overflowGuardContainer);\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\toverflowWidgetsDomNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode);\n\t\t\toverflowWidgetsDomNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode);\n\t\t} else {\n\t\t\tthis.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode);\n\t\t\tthis.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode);\n\t\t}\n\n\t\tthis._applyLayout();\n\n\t\t// Pointer handler\n\t\tthis._pointerHandler = this._register(new PointerHandler(this._context, this._viewController, this._createPointerHandlerHelper()));\n\t}\n\n\tprivate _instantiateEditContext(): AbstractEditContext {\n\t\tconst usingExperimentalEditContext = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tif (usingExperimentalEditContext) {\n\t\t\treturn this._instantiationService.createInstance(NativeEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t} else {\n\t\t\treturn this._instantiationService.createInstance(TextAreaEditContext, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t}\n\t}\n\n\tprivate _updateEditContext(): void {\n\t\tconst editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tconst accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tif (this._editContextEnabled === editContextEnabled && this._accessibilitySupport === accessibilitySupport) {\n\t\t\treturn;\n\t\t}\n\t\tthis._editContextEnabled = editContextEnabled;\n\t\tthis._accessibilitySupport = accessibilitySupport;\n\t\tconst isEditContextFocused = this._editContext.isFocused();\n\t\tconst indexOfEditContext = this._viewParts.indexOf(this._editContext);\n\t\tthis._editContext.dispose();\n\t\tthis._editContext = this._instantiateEditContext();\n\t\tif (isEditContextFocused) {\n\t\t\tthis._editContext.focus();\n\t\t}\n\t\tif (indexOfEditContext !== -1) {\n\t\t\tthis._viewParts.splice(indexOfEditContext, 1, this._editContext);\n\t\t}\n\t}\n\n\tprivate _computeGlyphMarginLanes(): IGlyphMarginLanesModel {\n\t\tconst model = this._context.viewModel.model;\n\t\tconst laneModel = this._context.viewModel.glyphLanes;\n\t\ttype Glyph = { range: Range; lane: GlyphMarginLane; persist?: boolean };\n\t\tlet glyphs: Glyph[] = [];\n\t\tlet maxLineNumber = 0;\n\n\t\t// Add all margin decorations\n\t\tglyphs = glyphs.concat(model.getAllMarginDecorations().map((decoration) => {\n\t\t\tconst lane = decoration.options.glyphMargin?.position ?? GlyphMarginLane.Center;\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, decoration.range.endLineNumber);\n\t\t\treturn { range: decoration.range, lane, persist: decoration.options.glyphMargin?.persistLane };\n\t\t}));\n\n\t\t// Add all glyph margin widgets\n\t\tglyphs = glyphs.concat(this._glyphMarginWidgets.getWidgets().map((widget) => {\n\t\t\tconst range = model.validateRange(widget.preference.range);\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, range.endLineNumber);\n\t\t\treturn { range, lane: widget.preference.lane };\n\t\t}));\n\n\t\t// Sorted by their start position\n\t\tglyphs.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n\n\t\tlaneModel.reset(maxLineNumber);\n\t\tfor (const glyph of glyphs) {\n\t\t\tlaneModel.push(glyph.lane, glyph.range, glyph.persist);\n\t\t}\n\n\t\treturn laneModel;\n\t}\n\n\tprivate _createPointerHandlerHelper(): IPointerHandlerHelper {\n\t\treturn {\n\t\t\tviewDomNode: this.domNode.domNode,\n\t\t\tlinesContentDomNode: this._linesContent.domNode,\n\t\t\tviewLinesDomNode: this._viewLines.getDomNode().domNode,\n\t\t\tviewLinesGpu: this._viewLinesGpu,\n\n\t\t\tfocusTextArea: () => {\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tdispatchTextAreaEvent: (event: CustomEvent) => {\n\t\t\t\tthis._editContext.domNode.domNode.dispatchEvent(event);\n\t\t\t},\n\n\t\t\tgetLastRenderData: (): PointerHandlerLastRenderData => {\n\t\t\t\tconst lastViewCursorsRenderData = this._viewCursors.getLastRenderData() || [];\n\t\t\t\tconst lastTextareaPosition = this._editContext.getLastRenderData();\n\t\t\t\treturn new PointerHandlerLastRenderData(lastViewCursorsRenderData, lastTextareaPosition);\n\t\t\t},\n\t\t\trenderNow: (): void => {\n\t\t\t\tthis.render(true, false);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnViewZone: (viewZoneId: string) => {\n\t\t\t\treturn this._viewZones.shouldSuppressMouseDownOnViewZone(viewZoneId);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnWidget: (widgetId: string) => {\n\t\t\t\treturn this._contentWidgets.shouldSuppressMouseDownOnWidget(widgetId);\n\t\t\t},\n\t\t\tgetPositionFromDOMInfo: (spanNode: HTMLElement, offset: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.getPositionFromDOMInfo(spanNode, offset);\n\t\t\t},\n\n\t\t\tvisibleRangeForPosition: (lineNumber: number, column: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tconst position = new Position(lineNumber, column);\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position) ?? this._viewLinesGpu?.visibleRangeForPosition(position) ?? null;\n\t\t\t},\n\n\t\t\tgetLineWidth: (lineNumber: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tif (this._viewLinesGpu) {\n\t\t\t\t\tconst result = this._viewLinesGpu.getLineWidth(lineNumber);\n\t\t\t\t\tif (result !== undefined) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._viewLines.getLineWidth(lineNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _createTextAreaHandlerHelper(): IVisibleRangeProvider {\n\t\treturn {\n\t\t\tvisibleRangeForPosition: (position: Position) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position);\n\t\t\t},\n\t\t\tlinesVisibleRangesForRange: (range: Range, includeNewLines: boolean): LineVisibleRanges[] | null => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.linesVisibleRangesForRange(range, includeNewLines);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _applyLayout(): void {\n\t\tconst options = this._context.configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tthis.domNode.setWidth(layoutInfo.width);\n\t\tthis.domNode.setHeight(layoutInfo.height);\n\n\t\tthis._overflowGuardContainer.setWidth(layoutInfo.width);\n\t\tthis._overflowGuardContainer.setHeight(layoutInfo.height);\n\n\t\t// https://stackoverflow.com/questions/38905916/content-in-google-chrome-larger-than-16777216-px-not-being-rendered\n\t\tthis._linesContent.setWidth(16777216);\n\t\tthis._linesContent.setHeight(16777216);\n\t}\n\n\tprivate _getEditorClassName() {\n\t\tconst focused = this._editContext.isFocused() ? ' focused' : '';\n\t\treturn this._context.configuration.options.get(EditorOption.editorClassName) + ' ' + getThemeTypeSelector(this._context.theme.type) + focused;\n\t}\n\n\t// --- begin event handlers\n\tpublic override handleEvents(events: viewEvents.ViewEvent[]): void {\n\t\tsuper.handleEvents(events);\n\t\tthis._scheduleRender();\n\t}\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\tthis._updateEditContext();\n\t\tthis._applyLayout();\n\t\treturn false;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selections = e.selections;\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\tif (e.affectsGlyphMargin) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onFocusChanged(e: viewEvents.ViewFocusChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\tpublic override onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean {\n\t\tthis._context.theme.update(e.theme);\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\n\t// --- end event handlers\n\n\tpublic override dispose(): void {\n\t\tif (this._renderAnimationFrame !== null) {\n\t\t\tthis._renderAnimationFrame.dispose();\n\t\t\tthis._renderAnimationFrame = null;\n\t\t}\n\n\t\tthis._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove();\n\t\tthis._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode.remove();\n\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._viewGpuContext?.dispose();\n\n\t\tthis._viewLines.dispose();\n\t\tthis._viewLinesGpu?.dispose();\n\n\t\t// Destroy view parts\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tviewPart.dispose();\n\t\t}\n\n\t\tsuper.dispose();\n\t}\n\n\tprivate _scheduleRender(): void {\n\t\tif (this._store.isDisposed) {\n\t\t\tthrow new BugIndicatingError();\n\t\t}\n\t\tif (this._renderAnimationFrame === null) {\n\t\t\t// TODO: workaround fix for https://github.com/microsoft/vscode/issues/229825\n\t\t\tif (this._editContext instanceof NativeEditContext) {\n\t\t\t\tthis._editContext.setEditContextOnDomNode();\n\t\t\t}\n\t\t\tconst rendering = this._createCoordinatedRendering();\n\t\t\tthis._renderAnimationFrame = EditorRenderingCoordinator.INSTANCE.scheduleCoordinatedRendering({\n\t\t\t\twindow: dom.getWindow(this.domNode?.domNode),\n\t\t\t\tprepareRenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn rendering.prepareRenderText();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._renderAnimationFrame = null;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.renderText();\n\t\t\t\t},\n\t\t\t\tprepareRender: (viewParts: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.prepareRender(viewParts, ctx);\n\t\t\t\t},\n\t\t\t\trender: (viewParts: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.render(viewParts, ctx);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _flushAccumulatedAndRenderNow(): void {\n\t\tconst rendering = this._createCoordinatedRendering();\n\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\tconst data = safeInvokeNoArg(() => rendering.renderText());\n\t\tif (data) {\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n\n\tprivate _getViewPartsToRender(): ViewPart[] {\n\t\tconst result: ViewPart[] = [];\n\t\tlet resultLen = 0;\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tif (viewPart.shouldRender()) {\n\t\t\t\tresult[resultLen++] = viewPart;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _createCoordinatedRendering() {\n\t\treturn {\n\t\t\tprepareRenderText: () => {\n\t\t\t\tif (this._shouldRecomputeGlyphMarginLanes) {\n\t\t\t\t\tthis._shouldRecomputeGlyphMarginLanes = false;\n\t\t\t\t\tconst model = this._computeGlyphMarginLanes();\n\t\t\t\t\tthis._context.configuration.setGlyphMarginDecorationLaneCount(model.requiredLanes);\n\t\t\t\t}\n\t\t\t\tinputLatency.onRenderStart();\n\t\t\t},\n\t\t\trenderText: (): [ViewPart[], RenderingContext] | null => {\n\t\t\t\tif (!this.domNode.domNode.isConnected) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet viewPartsToRender = this._getViewPartsToRender();\n\t\t\t\tif (!this._viewLines.shouldRender() && viewPartsToRender.length === 0) {\n\t\t\t\t\t// Nothing to render\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst partialViewportData = this._context.viewLayout.getLinesViewportData();\n\t\t\t\tthis._context.viewModel.setViewport(partialViewportData.startLineNumber, partialViewportData.endLineNumber, partialViewportData.centeredLineNumber);\n\n\t\t\t\tconst viewportData = new ViewportData(\n\t\t\t\t\tthis._selections,\n\t\t\t\t\tpartialViewportData,\n\t\t\t\t\tthis._context.viewLayout.getWhitespaceViewportData(),\n\t\t\t\t\tthis._context.viewModel\n\t\t\t\t);\n\n\t\t\t\tif (this._contentWidgets.shouldRender()) {\n\t\t\t\t\t// Give the content widgets a chance to set their max width before a possible synchronous layout\n\t\t\t\t\tthis._contentWidgets.onBeforeRender(viewportData);\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLines.shouldRender()) {\n\t\t\t\t\tthis._viewLines.renderText(viewportData);\n\t\t\t\t\tthis._viewLines.onDidRender();\n\n\t\t\t\t\t// Rendering of viewLines might cause scroll events to occur, so collect view parts to render again\n\t\t\t\t\tviewPartsToRender = this._getViewPartsToRender();\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLinesGpu?.shouldRender()) {\n\t\t\t\t\tthis._viewLinesGpu.renderText(viewportData);\n\t\t\t\t\tthis._viewLinesGpu.onDidRender();\n\t\t\t\t}\n\n\t\t\t\treturn [viewPartsToRender, new RenderingContext(this._context.viewLayout, viewportData, this._viewLines, this._viewLinesGpu)];\n\t\t\t},\n\t\t\tprepareRender: (viewPartsToRender: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.prepareRender(ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\trender: (viewPartsToRender: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.render(ctx);\n\t\t\t\t\tviewPart.onDidRender();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// --- BEGIN CodeEditor helpers\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tthis._scrollbar.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tthis._scrollbar.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic restoreState(scrollPosition: { scrollLeft: number; scrollTop: number }): void {\n\t\tthis._context.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: scrollPosition.scrollTop,\n\t\t\tscrollLeft: scrollPosition.scrollLeft\n\t\t}, ScrollType.Immediate);\n\t\tthis._context.viewModel.visibleLinesStabilized();\n\t}\n\n\tpublic getOffsetForColumn(modelLineNumber: number, modelColumn: number): number {\n\t\tconst modelPosition = this._context.viewModel.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\tthis._flushAccumulatedAndRenderNow();\n\t\tconst visibleRange = this._viewLines.visibleRangeForPosition(new Position(viewPosition.lineNumber, viewPosition.column));\n\t\tif (!visibleRange) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn visibleRange.left;\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null {\n\t\tconst mouseTarget = this._pointerHandler.getTargetAtClientPoint(clientX, clientY);\n\t\tif (!mouseTarget) {\n\t\t\treturn null;\n\t\t}\n\t\treturn ViewUserInputEvents.convertViewToModelMouseTarget(mouseTarget, this._context.viewModel.coordinatesConverter);\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): OverviewRuler {\n\t\treturn new OverviewRuler(this._context, cssClassName);\n\t}\n\n\tpublic change(callback: (changeAccessor: IViewZoneChangeAccessor) => unknown): void {\n\t\tthis._viewZones.changeViewZones(callback);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic render(now: boolean, everything: boolean): void {\n\t\tif (everything) {\n\t\t\t// Force everything to render...\n\t\t\tthis._viewLines.forceShouldRender();\n\t\t\tfor (const viewPart of this._viewParts) {\n\t\t\t\tviewPart.forceShouldRender();\n\t\t\t}\n\t\t}\n\t\tif (now) {\n\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t} else {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._editContext.writeScreenReaderContent(reason);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._editContext.focus();\n\t}\n\n\tpublic isFocused(): boolean {\n\t\treturn this._editContext.isFocused();\n\t}\n\n\tpublic isWidgetFocused(): boolean {\n\t\treturn this._widgetFocusTracker.hasFocus();\n\t}\n\n\tpublic setAriaOptions(options: IEditorAriaOptions): void {\n\t\tthis._editContext.setAriaOptions(options);\n\t}\n\n\tpublic addContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutContentWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.setWidgetPosition(\n\t\t\twidgetData.widget,\n\t\t\twidgetData.position?.position ?? null,\n\t\t\twidgetData.position?.secondaryPosition ?? null,\n\t\t\twidgetData.position?.preference ?? null,\n\t\t\twidgetData.position?.positionAffinity ?? null\n\t\t);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic removeContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutOverlayWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tconst shouldRender = this._overlayWidgets.setWidgetPosition(widgetData.widget, widgetData.position);\n\t\tif (shouldRender) {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.addWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tconst newPreference = widgetData.position;\n\t\tconst shouldRender = this._glyphMarginWidgets.setWidgetPosition(widgetData.widget, newPreference);\n\t\tif (shouldRender) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.removeWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\t// --- END CodeEditor helpers\n\n}\n\nfunction safeInvokeNoArg<T>(func: () => T): T | null {\n\ttry {\n\t\treturn func();\n\t} catch (e) {\n\t\tonUnexpectedError(e);\n\t\treturn null;\n\t}\n}\n\ninterface ICoordinatedRendering {\n\treadonly window: CodeWindow;\n\tprepareRenderText(): void;\n\trenderText(): [ViewPart[], RenderingContext] | null;\n\tprepareRender(viewParts: ViewPart[], ctx: RenderingContext): void;\n\trender(viewParts: ViewPart[], ctx: RestrictedRenderingContext): void;\n}\n\nclass EditorRenderingCoordinator {\n\n\tpublic static INSTANCE = new EditorRenderingCoordinator();\n\n\tprivate _coordinatedRenderings: ICoordinatedRendering[] = [];\n\tprivate _animationFrameRunners = new Map<CodeWindow, IDisposable>();\n\n\tprivate constructor() { }\n\n\tscheduleCoordinatedRendering(rendering: ICoordinatedRendering): IDisposable {\n\t\tthis._coordinatedRenderings.push(rendering);\n\t\tthis._scheduleRender(rendering.window);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tconst renderingIndex = this._coordinatedRenderings.indexOf(rendering);\n\t\t\t\tif (renderingIndex === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._coordinatedRenderings.splice(renderingIndex, 1);\n\n\t\t\t\tif (this._coordinatedRenderings.length === 0) {\n\t\t\t\t\t// There are no more renderings to coordinate => cancel animation frames\n\t\t\t\t\tfor (const [_, disposable] of this._animationFrameRunners) {\n\t\t\t\t\t\tdisposable.dispose();\n\t\t\t\t\t}\n\t\t\t\t\tthis._animationFrameRunners.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _scheduleRender(window: CodeWindow): void {\n\t\tif (!this._animationFrameRunners.has(window)) {\n\t\t\tconst runner = () => {\n\t\t\t\tthis._animationFrameRunners.delete(window);\n\t\t\t\tthis._onRenderScheduled();\n\t\t\t};\n\t\t\tthis._animationFrameRunners.set(window, dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100));\n\t\t}\n\t}\n\n\tprivate _onRenderScheduled(): void {\n\t\tconst coordinatedRenderings = this._coordinatedRenderings.slice(0);\n\t\tthis._coordinatedRenderings = [];\n\n\t\tfor (const rendering of coordinatedRenderings) {\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\t}\n\n\t\tconst datas: ([ViewPart[], RenderingContext] | null)[] = [];\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tdatas[i] = safeInvokeNoArg(() => rendering.renderText());\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n}\n\nclass CodeEditorWidgetFocusTracker extends Disposable {\n\n\tprivate _hasDomElementFocus: boolean;\n\tprivate readonly _domFocusTracker: dom.IFocusTracker;\n\tprivate readonly _overflowWidgetsDomNode: dom.IFocusTracker | undefined;\n\n\tprivate readonly _onChange: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onChange: Event<void> = this._onChange.event;\n\n\tprivate _overflowWidgetsDomNodeHasFocus: boolean;\n\n\tprivate _hadFocus: boolean | undefined = undefined;\n\n\tconstructor(domElement: HTMLElement, overflowWidgetsDomNode: HTMLElement | undefined) {\n\t\tsuper();\n\n\t\tthis._hasDomElementFocus = false;\n\t\tthis._domFocusTracker = this._register(dom.trackFocus(domElement));\n\n\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\n\t\tthis._register(this._domFocusTracker.onDidFocus(() => {\n\t\t\tthis._hasDomElementFocus = true;\n\t\t\tthis._update();\n\t\t}));\n\t\tthis._register(this._domFocusTracker.onDidBlur(() => {\n\t\t\tthis._hasDomElementFocus = false;\n\t\t\tthis._update();\n\t\t}));\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\tthis._overflowWidgetsDomNode = this._register(dom.trackFocus(overflowWidgetsDomNode));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidFocus(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = true;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidBlur(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t}\n\t}\n\n\tprivate _update() {\n\t\tconst focused = this._hasDomElementFocus || this._overflowWidgetsDomNodeHasFocus;\n\t\tif (this._hadFocus !== focused) {\n\t\t\tthis._hadFocus = focused;\n\t\t\tthis._onChange.fire(undefined);\n\t\t}\n\t}\n\n\tpublic hasFocus(): boolean {\n\t\treturn this._hadFocus ?? false;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/view.ts","vs/editor/browser/view.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAe,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAe,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAqB,gBAAgB,EAA8B,MAAM,4BAA4B,CAAC;AAC7G,OAAO,EAAoB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAmB,gBAAgB,EAAY,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,MAAM,0DAA0D,CAAC;AAC1I,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,eAAe,EAA0B,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAC7F,OAAO,EAAe,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAExE,OAAO,EAAyB,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AACtH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAS,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAkBrD,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,gBAAgB;IAqCzC,YACC,eAA4B,EAC5B,OAAe,EACf,eAAiC,EACjC,aAAmC,EACnC,UAAuB,EACvB,KAAiB,EACjB,eAAoC,EACpC,sBAA+C,EACxB,qBAA6D;QAEpF,KAAK,EAAE,CAAC;QAFgC,0BAAqB,GAArB,qBAAqB,CAAuB;QAdrF,uBAAuB;QACf,qCAAgC,GAAY,KAAK,CAAC;QAgBzD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CACxC,IAAI,4BAA4B,CAAC,eAAe,EAAE,sBAAsB,CAAC,CACzE,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAElC,IAAI,CAAC,uBAAuB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,wCAAgC,CAAC;QACpF,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAE5D,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAElG,6FAA6F;QAC7F,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAElE,2EAA2E;QAC3E,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,mBAAmB;QACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,6CAAmC,CAAC;QACtG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,2CAAmC,CAAC;QACxG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExC,yHAAyH;QACzH,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,GAAG,2BAA2B,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACtD,oGAAoG;QACpG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,mDAA0C,KAAK,IAAI,EAAE,CAAC;YAChG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtC,aAAa;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACzF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACnH,CAAC;QAED,aAAa;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtC,6BAA6B;QAC7B,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAG/C,MAAM,gBAAgB,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEvC,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1C,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtF,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5E,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9E,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7E,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE5E,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3F,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1F,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjF,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/F,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7B,kBAAkB;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE3C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExC,kBAAkB;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe;YAClC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;YACpD,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,mCAAmC;QAEnC,IAAI,wBAAwB,EAAE,CAAC;YAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC;YACvE,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,UAAU,EAAE,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC;QACjE,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEvD,IAAI,sBAAsB,EAAE,CAAC;YAC5B,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;YAClG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,kBAAkB;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;IACpI,CAAC;IAEO,uBAAuB;QAC9B,MAAM,4BAA4B,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,6CAAmC,CAAC;QAChH,IAAI,4BAA4B,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAC5L,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAC9L,CAAC;IACF,CAAC;IAEO,kBAAkB;QACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,6CAAmC,CAAC;QACtG,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,2CAAmC,CAAC;QACxG,IAAI,IAAI,CAAC,mBAAmB,KAAK,kBAAkB,IAAI,IAAI,CAAC,qBAAqB,KAAK,oBAAoB,EAAE,CAAC;YAC5G,OAAO;QACR,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACnD,IAAI,oBAAoB,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IAEO,wBAAwB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;QAErD,IAAI,MAAM,GAAY,EAAE,CAAC;QACzB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,6BAA6B;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YACzE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC;YAChF,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACxE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;QAChG,CAAC,CAAC,CAAC,CAAC;QAEJ,+BAA+B;QAC/B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3E,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3D,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC;QAEJ,iCAAiC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAExE,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAEO,2BAA2B;QAClC,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YACjC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;YAC/C,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,OAAO;YACtD,YAAY,EAAE,IAAI,CAAC,aAAa;YAEhC,aAAa,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,CAAC;YAED,qBAAqB,EAAE,CAAC,KAAkB,EAAE,EAAE;gBAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;YAED,iBAAiB,EAAE,GAAiC,EAAE;gBACrD,MAAM,yBAAyB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;gBAC9E,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;gBACnE,OAAO,IAAI,4BAA4B,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAC;YAC1F,CAAC;YACD,SAAS,EAAE,GAAS,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,iCAAiC,EAAE,CAAC,UAAkB,EAAE,EAAE;gBACzD,OAAO,IAAI,CAAC,UAAU,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC;YACtE,CAAC;YACD,+BAA+B,EAAE,CAAC,QAAgB,EAAE,EAAE;gBACrD,OAAO,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;YACvE,CAAC;YACD,sBAAsB,EAAE,CAAC,QAAqB,EAAE,MAAc,EAAE,EAAE;gBACjE,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC;YAED,uBAAuB,EAAE,CAAC,UAAkB,EAAE,MAAc,EAAE,EAAE;gBAC/D,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,uBAAuB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAC3H,CAAC;YAED,YAAY,EAAE,CAAC,UAAkB,EAAE,EAAE;gBACpC,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC3D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBAC1B,OAAO,MAAM,CAAC;oBACf,CAAC;gBACF,CAAC;gBACD,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC;SACD,CAAC;IACH,CAAC;IAEO,4BAA4B;QACnC,OAAO;YACN,uBAAuB,EAAE,CAAC,QAAkB,EAAE,EAAE;gBAC/C,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAC1D,CAAC;YACD,0BAA0B,EAAE,CAAC,KAAY,EAAE,eAAwB,EAA8B,EAAE;gBAClG,IAAI,CAAC,6BAA6B,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAC3E,CAAC;SACD,CAAC;IACH,CAAC;IAEO,YAAY;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,mCAAyB,CAAC;QAExD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1D,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,mBAAmB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,wCAA8B,GAAG,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAC/I,CAAC;IAED,2BAA2B;IACX,YAAY,CAAC,MAA8B;QAC1D,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IACe,sBAAsB,CAAC,CAA2C;QACjF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IACe,oBAAoB,CAAC,CAAyC;QAC7E,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC;QAChC,OAAO,KAAK,CAAC;IACd,CAAC;IACe,oBAAoB,CAAC,CAAyC;QAC7E,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACe,cAAc,CAAC,CAAmC;QACjE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACd,CAAC;IACe,cAAc,CAAC,CAAmC;QACjE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,yBAAyB;IAET,OAAO;QACtB,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACvE,IAAI,CAAC,eAAe,CAAC,gCAAgC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAEvE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAE9B,qBAAqB;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEO,eAAe;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACzC,6EAA6E;YAC7E,IAAI,IAAI,CAAC,YAAY,YAAY,iBAAiB,EAAE,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;YAC7C,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrD,IAAI,CAAC,qBAAqB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,4BAA4B,CAAC;gBAC7F,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;gBAC5C,iBAAiB,EAAE,GAAG,EAAE;oBACvB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC5B,MAAM,IAAI,kBAAkB,EAAE,CAAC;oBAChC,CAAC;oBACD,IAAI,CAAC;wBACJ,OAAO,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBACtC,CAAC;4BAAS,CAAC;wBACV,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oBACnC,CAAC;gBACF,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE;oBAChB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC5B,MAAM,IAAI,kBAAkB,EAAE,CAAC;oBAChC,CAAC;oBACD,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;gBAC/B,CAAC;gBACD,aAAa,EAAE,CAAC,SAAqB,EAAE,GAAqB,EAAE,EAAE;oBAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC5B,MAAM,IAAI,kBAAkB,EAAE,CAAC;oBAChC,CAAC;oBACD,OAAO,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM,EAAE,CAAC,SAAqB,EAAE,GAA+B,EAAE,EAAE;oBAClE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;wBAC5B,MAAM,IAAI,kBAAkB,EAAE,CAAC;oBAChC,CAAC;oBACD,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACzC,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEO,6BAA6B;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrD,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3D,IAAI,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAC9B,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/D,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;IAEO,qBAAqB;QAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC7B,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC;YAChC,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,2BAA2B;QAClC,OAAO;YACN,iBAAiB,EAAE,GAAG,EAAE;gBACvB,IAAI,IAAI,CAAC,gCAAgC,EAAE,CAAC;oBAC3C,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBAC9C,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,iCAAiC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACpF,CAAC;gBACD,YAAY,CAAC,aAAa,EAAE,CAAC;YAC9B,CAAC;YACD,UAAU,EAAE,GAA0C,EAAE;gBACvD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,IAAI,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvE,oBAAoB;oBACpB,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;gBAC5E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,mBAAmB,CAAC,eAAe,EAAE,mBAAmB,CAAC,aAAa,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;gBAEpJ,MAAM,YAAY,GAAG,IAAI,YAAY,CACpC,IAAI,CAAC,WAAW,EAChB,mBAAmB,EACnB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,EAAE,EACpD,IAAI,CAAC,QAAQ,CAAC,SAAS,CACvB,CAAC;gBAEF,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC;oBACzC,gGAAgG;oBAChG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACnD,CAAC;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBACzC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBAE9B,mGAAmG;oBACnG,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAClD,CAAC;gBAED,IAAI,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,CAAC;oBACxC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAC5C,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;gBAClC,CAAC;gBAED,OAAO,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC/H,CAAC;YACD,aAAa,EAAE,CAAC,iBAA6B,EAAE,GAAqB,EAAE,EAAE;gBACvE,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;oBAC1C,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACF,CAAC;YACD,MAAM,EAAE,CAAC,iBAA6B,EAAE,GAA+B,EAAE,EAAE;gBAC1E,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;oBAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrB,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACxB,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;IAED,+BAA+B;IAExB,oCAAoC,CAAC,YAA0B;QACrE,IAAI,CAAC,UAAU,CAAC,oCAAoC,CAAC,YAAY,CAAC,CAAC;IACpE,CAAC;IAEM,iCAAiC,CAAC,YAA8B;QACtE,IAAI,CAAC,UAAU,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAEM,YAAY,CAAC,cAAyD;QAC5E,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACpD,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,UAAU,EAAE,cAAc,CAAC,UAAU;SACrC,+BAAuB,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;IAClD,CAAC;IAEM,kBAAkB,CAAC,eAAuB,EAAE,WAAmB;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACpE,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;QACpH,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACzH,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC;IAC1B,CAAC;IAEM,YAAY,CAAC,eAAuB;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACpL,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,sBAAsB,CAAC,OAAe,EAAE,OAAe;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,mBAAmB,CAAC,6BAA6B,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACrH,CAAC;IAEM,mBAAmB,CAAC,YAAoB;QAC9C,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,QAA8D;QAC3E,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,GAAY,EAAE,UAAmB;QAC9C,IAAI,UAAU,EAAE,CAAC;YAChB,gCAAgC;YAChC,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;QACF,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAEM,wBAAwB,CAAC,MAAc;QAC7C,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;IAEM,eAAe;QACrB,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAEM,cAAc,CAAC,OAA2B;QAChD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEM,gBAAgB,CAAC,UAA8B;QACrD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,mBAAmB,CAAC,UAA8B;QACxD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CACrC,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,EACrC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,IAAI,IAAI,EAC9C,UAAU,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,EACvC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI,CAC7C,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAEM,mBAAmB,CAAC,UAA8B;QACxD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,gBAAgB,CAAC,UAA8B;QACrD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,mBAAmB,CAAC,UAA8B;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpG,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAEM,mBAAmB,CAAC,UAA8B;QACxD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,oBAAoB,CAAC,UAAkC;QAC7D,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAEM,uBAAuB,CAAC,UAAkC;QAChE,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAClG,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;YAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;IAEM,uBAAuB,CAAC,UAAkC;QAChE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;CAID,CAAA;AAzrBY,IAAI;IA8Cd,WAAA,qBAAqB,CAAA;GA9CX,IAAI,CAyrBhB;;AAED,SAAS,eAAe,CAAI,IAAa;IACxC,IAAI,CAAC;QACJ,OAAO,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAUD,MAAM,0BAA0B;aAEjB,aAAQ,GAAG,IAAI,0BAA0B,EAAjC,AAAmC,CAAC;IAK1D;QAHQ,2BAAsB,GAA4B,EAAE,CAAC;QACrD,2BAAsB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE5C,CAAC;IAEzB,4BAA4B,CAAC,SAAgC;QAC5D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO;YACN,OAAO,EAAE,GAAG,EAAE;gBACb,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACtE,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC3B,OAAO;gBACR,CAAC;gBACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gBAEtD,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9C,wEAAwE;oBACxE,KAAK,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAC3D,UAAU,CAAC,OAAO,EAAE,CAAC;oBACtB,CAAC;oBACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;gBACrC,CAAC;YACF,CAAC;SACD,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,MAAkB;QACzC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,GAAG,EAAE;gBACnB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,CAAC,CAAC;YACF,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,uCAAuC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3G,CAAC;IACF,CAAC;IAEO,kBAAkB;QACzB,MAAM,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QAEjC,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;YAC/C,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAA8C,EAAE,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,SAAS;YACV,CAAC;YACD,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAC9B,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,SAAS;YACV,CAAC;YACD,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAC9B,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;IACF,CAAC;;AAGF,MAAM,4BAA6B,SAAQ,UAAU;IAapD,YAAY,UAAuB,EAAE,sBAA+C;QACnF,KAAK,EAAE,CAAC;QARQ,cAAS,GAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAQ,CAAC,CAAC;QAChE,aAAQ,GAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAIrD,cAAS,GAAwB,SAAS,CAAC;QAKlD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QAEnE,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAE7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE;YACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE;YACnD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,sBAAsB,EAAE,CAAC;YAC5B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACtF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC3D,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;gBAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,EAAE;gBAC1D,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;gBAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,CAAC,CAAC,CAAC,CAAC;QACL,CAAC;IACF,CAAC;IAEO,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,+BAA+B,CAAC;QACjF,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAChC,CAAC;CACD","file":"view.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../base/browser/dom.js';\nimport { FastDomNode, createFastDomNode } from '../../base/browser/fastDomNode.js';\nimport { IMouseWheelEvent } from '../../base/browser/mouseEvent.js';\nimport { inputLatency } from '../../base/browser/performance.js';\nimport { CodeWindow } from '../../base/browser/window.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../base/common/errors.js';\nimport { Disposable, IDisposable } from '../../base/common/lifecycle.js';\nimport { IPointerHandlerHelper } from './controller/mouseHandler.js';\nimport { PointerHandlerLastRenderData } from './controller/mouseTarget.js';\nimport { PointerHandler } from './controller/pointerHandler.js';\nimport { IContentWidget, IContentWidgetPosition, IEditorAriaOptions, IGlyphMarginWidget, IGlyphMarginWidgetPosition, IMouseTarget, IOverlayWidget, IOverlayWidgetPosition, IViewZoneChangeAccessor } from './editorBrowser.js';\nimport { LineVisibleRanges, RenderingContext, RestrictedRenderingContext } from './view/renderingContext.js';\nimport { ICommandDelegate, ViewController } from './view/viewController.js';\nimport { ContentViewOverlays, MarginViewOverlays } from './view/viewOverlays.js';\nimport { PartFingerprint, PartFingerprints, ViewPart } from './view/viewPart.js';\nimport { ViewUserInputEvents } from './view/viewUserInputEvents.js';\nimport { BlockDecorations } from './viewParts/blockDecorations/blockDecorations.js';\nimport { ViewContentWidgets } from './viewParts/contentWidgets/contentWidgets.js';\nimport { CurrentLineHighlightOverlay, CurrentLineMarginHighlightOverlay } from './viewParts/currentLineHighlight/currentLineHighlight.js';\nimport { DecorationsOverlay } from './viewParts/decorations/decorations.js';\nimport { EditorScrollbar } from './viewParts/editorScrollbar/editorScrollbar.js';\nimport { GlyphMarginWidgets } from './viewParts/glyphMargin/glyphMargin.js';\nimport { IndentGuidesOverlay } from './viewParts/indentGuides/indentGuides.js';\nimport { LineNumbersOverlay } from './viewParts/lineNumbers/lineNumbers.js';\nimport { ViewLines } from './viewParts/viewLines/viewLines.js';\nimport { LinesDecorationsOverlay } from './viewParts/linesDecorations/linesDecorations.js';\nimport { Margin } from './viewParts/margin/margin.js';\nimport { MarginViewLineDecorationsOverlay } from './viewParts/marginDecorations/marginDecorations.js';\nimport { Minimap } from './viewParts/minimap/minimap.js';\nimport { ViewOverlayWidgets } from './viewParts/overlayWidgets/overlayWidgets.js';\nimport { DecorationsOverviewRuler } from './viewParts/overviewRuler/decorationsOverviewRuler.js';\nimport { OverviewRuler } from './viewParts/overviewRuler/overviewRuler.js';\nimport { Rulers } from './viewParts/rulers/rulers.js';\nimport { ScrollDecorationViewPart } from './viewParts/scrollDecoration/scrollDecoration.js';\nimport { SelectionsOverlay } from './viewParts/selections/selections.js';\nimport { ViewCursors } from './viewParts/viewCursors/viewCursors.js';\nimport { ViewZones } from './viewParts/viewZones/viewZones.js';\nimport { WhitespaceOverlay } from './viewParts/whitespace/whitespace.js';\nimport { IEditorConfiguration } from '../common/config/editorConfiguration.js';\nimport { EditorOption } from '../common/config/editorOptions.js';\nimport { Position } from '../common/core/position.js';\nimport { Range } from '../common/core/range.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ScrollType } from '../common/editorCommon.js';\nimport { GlyphMarginLane, IGlyphMarginLanesModel } from '../common/model.js';\nimport { ViewEventHandler } from '../common/viewEventHandler.js';\nimport * as viewEvents from '../common/viewEvents.js';\nimport { ViewportData } from '../common/viewLayout/viewLinesViewportData.js';\nimport { IViewModel } from '../common/viewModel.js';\nimport { ViewContext } from '../common/viewModel/viewContext.js';\nimport { IInstantiationService } from '../../platform/instantiation/common/instantiation.js';\nimport { IColorTheme, getThemeTypeSelector } from '../../platform/theme/common/themeService.js';\nimport { ViewGpuContext } from './gpu/viewGpuContext.js';\nimport { ViewLinesGpu } from './viewParts/viewLinesGpu/viewLinesGpu.js';\nimport { AbstractEditContext } from './controller/editContext/editContext.js';\nimport { IVisibleRangeProvider, TextAreaEditContext } from './controller/editContext/textArea/textAreaEditContext.js';\nimport { NativeEditContext } from './controller/editContext/native/nativeEditContext.js';\nimport { RulersGpu } from './viewParts/rulersGpu/rulersGpu.js';\nimport { GpuMarkOverlay } from './viewParts/gpuMark/gpuMark.js';\nimport { AccessibilitySupport } from '../../platform/accessibility/common/accessibility.js';\nimport { Event, Emitter } from '../../base/common/event.js';\n\n\nexport interface IContentWidgetData {\n\twidget: IContentWidget;\n\tposition: IContentWidgetPosition | null;\n}\n\nexport interface IOverlayWidgetData {\n\twidget: IOverlayWidget;\n\tposition: IOverlayWidgetPosition | null;\n}\n\nexport interface IGlyphMarginWidgetData {\n\twidget: IGlyphMarginWidget;\n\tposition: IGlyphMarginWidgetPosition;\n}\n\nexport class View extends ViewEventHandler {\n\n\tprivate _widgetFocusTracker: CodeEditorWidgetFocusTracker;\n\n\tprivate readonly _scrollbar: EditorScrollbar;\n\tprivate readonly _context: ViewContext;\n\tprivate readonly _viewGpuContext?: ViewGpuContext;\n\tprivate _selections: Selection[];\n\n\t// The view lines\n\tprivate readonly _viewLines: ViewLines;\n\tprivate readonly _viewLinesGpu?: ViewLinesGpu;\n\n\t// These are parts, but we must do some API related calls on them, so we keep a reference\n\tprivate readonly _viewZones: ViewZones;\n\tprivate readonly _contentWidgets: ViewContentWidgets;\n\tprivate readonly _overlayWidgets: ViewOverlayWidgets;\n\tprivate readonly _glyphMarginWidgets: GlyphMarginWidgets;\n\tprivate readonly _viewCursors: ViewCursors;\n\tprivate readonly _viewParts: ViewPart[];\n\tprivate readonly _viewController: ViewController;\n\n\tprivate _editContextEnabled: boolean;\n\tprivate _accessibilitySupport: AccessibilitySupport;\n\tprivate _editContext: AbstractEditContext;\n\tprivate readonly _pointerHandler: PointerHandler;\n\n\t// Dom nodes\n\tprivate readonly _linesContent: FastDomNode<HTMLElement>;\n\tpublic readonly domNode: FastDomNode<HTMLElement>;\n\tprivate readonly _overflowGuardContainer: FastDomNode<HTMLElement>;\n\n\t// Actual mutable state\n\tprivate _shouldRecomputeGlyphMarginLanes: boolean = false;\n\tprivate _renderAnimationFrame: IDisposable | null;\n\tprivate _ownerID: string;\n\n\tconstructor(\n\t\teditorContainer: HTMLElement,\n\t\townerID: string,\n\t\tcommandDelegate: ICommandDelegate,\n\t\tconfiguration: IEditorConfiguration,\n\t\tcolorTheme: IColorTheme,\n\t\tmodel: IViewModel,\n\t\tuserInputEvents: ViewUserInputEvents,\n\t\toverflowWidgetsDomNode: HTMLElement | undefined,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService\n\t) {\n\t\tsuper();\n\t\tthis._ownerID = ownerID;\n\n\t\tthis._widgetFocusTracker = this._register(\n\t\t\tnew CodeEditorWidgetFocusTracker(editorContainer, overflowWidgetsDomNode)\n\t\t);\n\t\tthis._register(this._widgetFocusTracker.onChange(() => {\n\t\t\tthis._context.viewModel.setHasWidgetFocus(this._widgetFocusTracker.hasFocus());\n\t\t}));\n\n\t\tthis._selections = [new Selection(1, 1, 1, 1)];\n\t\tthis._renderAnimationFrame = null;\n\n\t\tthis._overflowGuardContainer = createFastDomNode(document.createElement('div'));\n\t\tPartFingerprints.write(this._overflowGuardContainer, PartFingerprint.OverflowGuard);\n\t\tthis._overflowGuardContainer.setClassName('overflow-guard');\n\n\t\tthis._viewController = new ViewController(configuration, model, userInputEvents, commandDelegate);\n\n\t\t// The view context is passed on to most classes (basically to reduce param. counts in ctors)\n\t\tthis._context = new ViewContext(configuration, colorTheme, model);\n\n\t\t// Ensure the view is the first event handler in order to update the layout\n\t\tthis._context.addEventHandler(this);\n\n\t\tthis._viewParts = [];\n\n\t\t// Keyboard handler\n\t\tthis._editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tthis._accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tthis._editContext = this._instantiateEditContext();\n\n\t\tthis._viewParts.push(this._editContext);\n\n\t\t// These two dom nodes must be constructed up front, since references are needed in the layout provider (scrolling & co.)\n\t\tthis._linesContent = createFastDomNode(document.createElement('div'));\n\t\tthis._linesContent.setClassName('lines-content' + ' monaco-editor-background');\n\t\tthis._linesContent.setPosition('absolute');\n\n\t\tthis.domNode = createFastDomNode(document.createElement('div'));\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\t// Set role 'code' for better screen reader support https://github.com/microsoft/vscode/issues/93438\n\t\tthis.domNode.setAttribute('role', 'code');\n\n\t\tif (this._context.configuration.options.get(EditorOption.experimentalGpuAcceleration) === 'on') {\n\t\t\tthis._viewGpuContext = this._instantiationService.createInstance(ViewGpuContext, this._context);\n\t\t}\n\n\t\tthis._scrollbar = new EditorScrollbar(this._context, this._linesContent, this.domNode, this._overflowGuardContainer);\n\t\tthis._viewParts.push(this._scrollbar);\n\n\t\t// View Lines\n\t\tthis._viewLines = new ViewLines(this._context, this._viewGpuContext, this._linesContent);\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._viewLinesGpu = this._instantiationService.createInstance(ViewLinesGpu, this._context, this._viewGpuContext);\n\t\t}\n\n\t\t// View Zones\n\t\tthis._viewZones = new ViewZones(this._context);\n\t\tthis._viewParts.push(this._viewZones);\n\n\t\t// Decorations overview ruler\n\t\tconst decorationsOverviewRuler = new DecorationsOverviewRuler(this._context);\n\t\tthis._viewParts.push(decorationsOverviewRuler);\n\n\n\t\tconst scrollDecoration = new ScrollDecorationViewPart(this._context);\n\t\tthis._viewParts.push(scrollDecoration);\n\n\t\tconst contentViewOverlays = new ContentViewOverlays(this._context);\n\t\tthis._viewParts.push(contentViewOverlays);\n\t\tcontentViewOverlays.addDynamicOverlay(new CurrentLineHighlightOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new SelectionsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new IndentGuidesOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new DecorationsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new WhitespaceOverlay(this._context));\n\n\t\tconst marginViewOverlays = new MarginViewOverlays(this._context);\n\t\tthis._viewParts.push(marginViewOverlays);\n\t\tmarginViewOverlays.addDynamicOverlay(new CurrentLineMarginHighlightOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new MarginViewLineDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LinesDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LineNumbersOverlay(this._context));\n\t\tif (this._viewGpuContext) {\n\t\t\tmarginViewOverlays.addDynamicOverlay(new GpuMarkOverlay(this._context, this._viewGpuContext));\n\t\t}\n\n\t\t// Glyph margin widgets\n\t\tthis._glyphMarginWidgets = new GlyphMarginWidgets(this._context);\n\t\tthis._viewParts.push(this._glyphMarginWidgets);\n\n\t\tconst margin = new Margin(this._context);\n\t\tmargin.getDomNode().appendChild(this._viewZones.marginDomNode);\n\t\tmargin.getDomNode().appendChild(marginViewOverlays.getDomNode());\n\t\tmargin.getDomNode().appendChild(this._glyphMarginWidgets.domNode);\n\t\tthis._viewParts.push(margin);\n\n\t\t// Content widgets\n\t\tthis._contentWidgets = new ViewContentWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._contentWidgets);\n\n\t\tthis._viewCursors = new ViewCursors(this._context);\n\t\tthis._viewParts.push(this._viewCursors);\n\n\t\t// Overlay widgets\n\t\tthis._overlayWidgets = new ViewOverlayWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._overlayWidgets);\n\n\t\tconst rulers = this._viewGpuContext\n\t\t\t? new RulersGpu(this._context, this._viewGpuContext)\n\t\t\t: new Rulers(this._context);\n\t\tthis._viewParts.push(rulers);\n\n\t\tconst blockOutline = new BlockDecorations(this._context);\n\t\tthis._viewParts.push(blockOutline);\n\n\t\tconst minimap = new Minimap(this._context);\n\t\tthis._viewParts.push(minimap);\n\n\t\t// -------------- Wire dom nodes up\n\n\t\tif (decorationsOverviewRuler) {\n\t\t\tconst overviewRulerData = this._scrollbar.getOverviewRulerLayoutInfo();\n\t\t\toverviewRulerData.parent.insertBefore(decorationsOverviewRuler.getDomNode(), overviewRulerData.insertBefore);\n\t\t}\n\n\t\tthis._linesContent.appendChild(contentViewOverlays.getDomNode());\n\t\tif ('domNode' in rulers) {\n\t\t\tthis._linesContent.appendChild(rulers.domNode);\n\t\t}\n\t\tthis._linesContent.appendChild(this._viewZones.domNode);\n\t\tthis._linesContent.appendChild(this._viewLines.getDomNode());\n\t\tthis._linesContent.appendChild(this._contentWidgets.domNode);\n\t\tthis._linesContent.appendChild(this._viewCursors.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(margin.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._scrollbar.getDomNode());\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._overflowGuardContainer.appendChild(this._viewGpuContext.canvas);\n\t\t}\n\t\tthis._overflowGuardContainer.appendChild(scrollDecoration.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(minimap.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(blockOutline.domNode);\n\t\tthis.domNode.appendChild(this._overflowGuardContainer);\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\toverflowWidgetsDomNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode);\n\t\t\toverflowWidgetsDomNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode);\n\t\t} else {\n\t\t\tthis.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode);\n\t\t\tthis.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode);\n\t\t}\n\n\t\tthis._applyLayout();\n\n\t\t// Pointer handler\n\t\tthis._pointerHandler = this._register(new PointerHandler(this._context, this._viewController, this._createPointerHandlerHelper()));\n\t}\n\n\tprivate _instantiateEditContext(): AbstractEditContext {\n\t\tconst usingExperimentalEditContext = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tif (usingExperimentalEditContext) {\n\t\t\treturn this._instantiationService.createInstance(NativeEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t} else {\n\t\t\treturn this._instantiationService.createInstance(TextAreaEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t}\n\t}\n\n\tprivate _updateEditContext(): void {\n\t\tconst editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tconst accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tif (this._editContextEnabled === editContextEnabled && this._accessibilitySupport === accessibilitySupport) {\n\t\t\treturn;\n\t\t}\n\t\tthis._editContextEnabled = editContextEnabled;\n\t\tthis._accessibilitySupport = accessibilitySupport;\n\t\tconst isEditContextFocused = this._editContext.isFocused();\n\t\tconst indexOfEditContext = this._viewParts.indexOf(this._editContext);\n\t\tthis._editContext.dispose();\n\t\tthis._editContext = this._instantiateEditContext();\n\t\tif (isEditContextFocused) {\n\t\t\tthis._editContext.focus();\n\t\t}\n\t\tif (indexOfEditContext !== -1) {\n\t\t\tthis._viewParts.splice(indexOfEditContext, 1, this._editContext);\n\t\t}\n\t}\n\n\tprivate _computeGlyphMarginLanes(): IGlyphMarginLanesModel {\n\t\tconst model = this._context.viewModel.model;\n\t\tconst laneModel = this._context.viewModel.glyphLanes;\n\t\ttype Glyph = { range: Range; lane: GlyphMarginLane; persist?: boolean };\n\t\tlet glyphs: Glyph[] = [];\n\t\tlet maxLineNumber = 0;\n\n\t\t// Add all margin decorations\n\t\tglyphs = glyphs.concat(model.getAllMarginDecorations().map((decoration) => {\n\t\t\tconst lane = decoration.options.glyphMargin?.position ?? GlyphMarginLane.Center;\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, decoration.range.endLineNumber);\n\t\t\treturn { range: decoration.range, lane, persist: decoration.options.glyphMargin?.persistLane };\n\t\t}));\n\n\t\t// Add all glyph margin widgets\n\t\tglyphs = glyphs.concat(this._glyphMarginWidgets.getWidgets().map((widget) => {\n\t\t\tconst range = model.validateRange(widget.preference.range);\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, range.endLineNumber);\n\t\t\treturn { range, lane: widget.preference.lane };\n\t\t}));\n\n\t\t// Sorted by their start position\n\t\tglyphs.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n\n\t\tlaneModel.reset(maxLineNumber);\n\t\tfor (const glyph of glyphs) {\n\t\t\tlaneModel.push(glyph.lane, glyph.range, glyph.persist);\n\t\t}\n\n\t\treturn laneModel;\n\t}\n\n\tprivate _createPointerHandlerHelper(): IPointerHandlerHelper {\n\t\treturn {\n\t\t\tviewDomNode: this.domNode.domNode,\n\t\t\tlinesContentDomNode: this._linesContent.domNode,\n\t\t\tviewLinesDomNode: this._viewLines.getDomNode().domNode,\n\t\t\tviewLinesGpu: this._viewLinesGpu,\n\n\t\t\tfocusTextArea: () => {\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tdispatchTextAreaEvent: (event: CustomEvent) => {\n\t\t\t\tthis._editContext.domNode.domNode.dispatchEvent(event);\n\t\t\t},\n\n\t\t\tgetLastRenderData: (): PointerHandlerLastRenderData => {\n\t\t\t\tconst lastViewCursorsRenderData = this._viewCursors.getLastRenderData() || [];\n\t\t\t\tconst lastTextareaPosition = this._editContext.getLastRenderData();\n\t\t\t\treturn new PointerHandlerLastRenderData(lastViewCursorsRenderData, lastTextareaPosition);\n\t\t\t},\n\t\t\trenderNow: (): void => {\n\t\t\t\tthis.render(true, false);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnViewZone: (viewZoneId: string) => {\n\t\t\t\treturn this._viewZones.shouldSuppressMouseDownOnViewZone(viewZoneId);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnWidget: (widgetId: string) => {\n\t\t\t\treturn this._contentWidgets.shouldSuppressMouseDownOnWidget(widgetId);\n\t\t\t},\n\t\t\tgetPositionFromDOMInfo: (spanNode: HTMLElement, offset: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.getPositionFromDOMInfo(spanNode, offset);\n\t\t\t},\n\n\t\t\tvisibleRangeForPosition: (lineNumber: number, column: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tconst position = new Position(lineNumber, column);\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position) ?? this._viewLinesGpu?.visibleRangeForPosition(position) ?? null;\n\t\t\t},\n\n\t\t\tgetLineWidth: (lineNumber: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tif (this._viewLinesGpu) {\n\t\t\t\t\tconst result = this._viewLinesGpu.getLineWidth(lineNumber);\n\t\t\t\t\tif (result !== undefined) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._viewLines.getLineWidth(lineNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _createTextAreaHandlerHelper(): IVisibleRangeProvider {\n\t\treturn {\n\t\t\tvisibleRangeForPosition: (position: Position) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position);\n\t\t\t},\n\t\t\tlinesVisibleRangesForRange: (range: Range, includeNewLines: boolean): LineVisibleRanges[] | null => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.linesVisibleRangesForRange(range, includeNewLines);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _applyLayout(): void {\n\t\tconst options = this._context.configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tthis.domNode.setWidth(layoutInfo.width);\n\t\tthis.domNode.setHeight(layoutInfo.height);\n\n\t\tthis._overflowGuardContainer.setWidth(layoutInfo.width);\n\t\tthis._overflowGuardContainer.setHeight(layoutInfo.height);\n\n\t\t// https://stackoverflow.com/questions/38905916/content-in-google-chrome-larger-than-16777216-px-not-being-rendered\n\t\tthis._linesContent.setWidth(16777216);\n\t\tthis._linesContent.setHeight(16777216);\n\t}\n\n\tprivate _getEditorClassName() {\n\t\tconst focused = this._editContext.isFocused() ? ' focused' : '';\n\t\treturn this._context.configuration.options.get(EditorOption.editorClassName) + ' ' + getThemeTypeSelector(this._context.theme.type) + focused;\n\t}\n\n\t// --- begin event handlers\n\tpublic override handleEvents(events: viewEvents.ViewEvent[]): void {\n\t\tsuper.handleEvents(events);\n\t\tthis._scheduleRender();\n\t}\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\tthis._updateEditContext();\n\t\tthis._applyLayout();\n\t\treturn false;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selections = e.selections;\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\tif (e.affectsGlyphMargin) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onFocusChanged(e: viewEvents.ViewFocusChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\tpublic override onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean {\n\t\tthis._context.theme.update(e.theme);\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\n\t// --- end event handlers\n\n\tpublic override dispose(): void {\n\t\tif (this._renderAnimationFrame !== null) {\n\t\t\tthis._renderAnimationFrame.dispose();\n\t\t\tthis._renderAnimationFrame = null;\n\t\t}\n\n\t\tthis._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove();\n\t\tthis._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode.remove();\n\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._viewGpuContext?.dispose();\n\n\t\tthis._viewLines.dispose();\n\t\tthis._viewLinesGpu?.dispose();\n\n\t\t// Destroy view parts\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tviewPart.dispose();\n\t\t}\n\n\t\tsuper.dispose();\n\t}\n\n\tprivate _scheduleRender(): void {\n\t\tif (this._store.isDisposed) {\n\t\t\tthrow new BugIndicatingError();\n\t\t}\n\t\tif (this._renderAnimationFrame === null) {\n\t\t\t// TODO: workaround fix for https://github.com/microsoft/vscode/issues/229825\n\t\t\tif (this._editContext instanceof NativeEditContext) {\n\t\t\t\tthis._editContext.setEditContextOnDomNode();\n\t\t\t}\n\t\t\tconst rendering = this._createCoordinatedRendering();\n\t\t\tthis._renderAnimationFrame = EditorRenderingCoordinator.INSTANCE.scheduleCoordinatedRendering({\n\t\t\t\twindow: dom.getWindow(this.domNode?.domNode),\n\t\t\t\tprepareRenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn rendering.prepareRenderText();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._renderAnimationFrame = null;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.renderText();\n\t\t\t\t},\n\t\t\t\tprepareRender: (viewParts: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.prepareRender(viewParts, ctx);\n\t\t\t\t},\n\t\t\t\trender: (viewParts: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.render(viewParts, ctx);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _flushAccumulatedAndRenderNow(): void {\n\t\tconst rendering = this._createCoordinatedRendering();\n\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\tconst data = safeInvokeNoArg(() => rendering.renderText());\n\t\tif (data) {\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n\n\tprivate _getViewPartsToRender(): ViewPart[] {\n\t\tconst result: ViewPart[] = [];\n\t\tlet resultLen = 0;\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tif (viewPart.shouldRender()) {\n\t\t\t\tresult[resultLen++] = viewPart;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _createCoordinatedRendering() {\n\t\treturn {\n\t\t\tprepareRenderText: () => {\n\t\t\t\tif (this._shouldRecomputeGlyphMarginLanes) {\n\t\t\t\t\tthis._shouldRecomputeGlyphMarginLanes = false;\n\t\t\t\t\tconst model = this._computeGlyphMarginLanes();\n\t\t\t\t\tthis._context.configuration.setGlyphMarginDecorationLaneCount(model.requiredLanes);\n\t\t\t\t}\n\t\t\t\tinputLatency.onRenderStart();\n\t\t\t},\n\t\t\trenderText: (): [ViewPart[], RenderingContext] | null => {\n\t\t\t\tif (!this.domNode.domNode.isConnected) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet viewPartsToRender = this._getViewPartsToRender();\n\t\t\t\tif (!this._viewLines.shouldRender() && viewPartsToRender.length === 0) {\n\t\t\t\t\t// Nothing to render\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst partialViewportData = this._context.viewLayout.getLinesViewportData();\n\t\t\t\tthis._context.viewModel.setViewport(partialViewportData.startLineNumber, partialViewportData.endLineNumber, partialViewportData.centeredLineNumber);\n\n\t\t\t\tconst viewportData = new ViewportData(\n\t\t\t\t\tthis._selections,\n\t\t\t\t\tpartialViewportData,\n\t\t\t\t\tthis._context.viewLayout.getWhitespaceViewportData(),\n\t\t\t\t\tthis._context.viewModel\n\t\t\t\t);\n\n\t\t\t\tif (this._contentWidgets.shouldRender()) {\n\t\t\t\t\t// Give the content widgets a chance to set their max width before a possible synchronous layout\n\t\t\t\t\tthis._contentWidgets.onBeforeRender(viewportData);\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLines.shouldRender()) {\n\t\t\t\t\tthis._viewLines.renderText(viewportData);\n\t\t\t\t\tthis._viewLines.onDidRender();\n\n\t\t\t\t\t// Rendering of viewLines might cause scroll events to occur, so collect view parts to render again\n\t\t\t\t\tviewPartsToRender = this._getViewPartsToRender();\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLinesGpu?.shouldRender()) {\n\t\t\t\t\tthis._viewLinesGpu.renderText(viewportData);\n\t\t\t\t\tthis._viewLinesGpu.onDidRender();\n\t\t\t\t}\n\n\t\t\t\treturn [viewPartsToRender, new RenderingContext(this._context.viewLayout, viewportData, this._viewLines, this._viewLinesGpu)];\n\t\t\t},\n\t\t\tprepareRender: (viewPartsToRender: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.prepareRender(ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\trender: (viewPartsToRender: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.render(ctx);\n\t\t\t\t\tviewPart.onDidRender();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// --- BEGIN CodeEditor helpers\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tthis._scrollbar.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tthis._scrollbar.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic restoreState(scrollPosition: { scrollLeft: number; scrollTop: number }): void {\n\t\tthis._context.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: scrollPosition.scrollTop,\n\t\t\tscrollLeft: scrollPosition.scrollLeft\n\t\t}, ScrollType.Immediate);\n\t\tthis._context.viewModel.visibleLinesStabilized();\n\t}\n\n\tpublic getOffsetForColumn(modelLineNumber: number, modelColumn: number): number {\n\t\tconst modelPosition = this._context.viewModel.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\tthis._flushAccumulatedAndRenderNow();\n\t\tconst visibleRange = this._viewLines.visibleRangeForPosition(new Position(viewPosition.lineNumber, viewPosition.column));\n\t\tif (!visibleRange) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn visibleRange.left;\n\t}\n\n\tpublic getLineWidth(modelLineNumber: number): number {\n\t\tconst model = this._context.viewModel.model;\n\t\tconst viewLine = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelLineNumber, model.getLineMaxColumn(modelLineNumber))).lineNumber;\n\t\tthis._flushAccumulatedAndRenderNow();\n\t\tconst width = this._viewLines.getLineWidth(viewLine);\n\n\t\treturn width;\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null {\n\t\tconst mouseTarget = this._pointerHandler.getTargetAtClientPoint(clientX, clientY);\n\t\tif (!mouseTarget) {\n\t\t\treturn null;\n\t\t}\n\t\treturn ViewUserInputEvents.convertViewToModelMouseTarget(mouseTarget, this._context.viewModel.coordinatesConverter);\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): OverviewRuler {\n\t\treturn new OverviewRuler(this._context, cssClassName);\n\t}\n\n\tpublic change(callback: (changeAccessor: IViewZoneChangeAccessor) => unknown): void {\n\t\tthis._viewZones.changeViewZones(callback);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic render(now: boolean, everything: boolean): void {\n\t\tif (everything) {\n\t\t\t// Force everything to render...\n\t\t\tthis._viewLines.forceShouldRender();\n\t\t\tfor (const viewPart of this._viewParts) {\n\t\t\t\tviewPart.forceShouldRender();\n\t\t\t}\n\t\t}\n\t\tif (now) {\n\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t} else {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._editContext.writeScreenReaderContent(reason);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._editContext.focus();\n\t}\n\n\tpublic isFocused(): boolean {\n\t\treturn this._editContext.isFocused();\n\t}\n\n\tpublic isWidgetFocused(): boolean {\n\t\treturn this._widgetFocusTracker.hasFocus();\n\t}\n\n\tpublic setAriaOptions(options: IEditorAriaOptions): void {\n\t\tthis._editContext.setAriaOptions(options);\n\t}\n\n\tpublic addContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutContentWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.setWidgetPosition(\n\t\t\twidgetData.widget,\n\t\t\twidgetData.position?.position ?? null,\n\t\t\twidgetData.position?.secondaryPosition ?? null,\n\t\t\twidgetData.position?.preference ?? null,\n\t\t\twidgetData.position?.positionAffinity ?? null\n\t\t);\n\t\tif (this._contentWidgets.shouldRender()) {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutOverlayWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tconst shouldRender = this._overlayWidgets.setWidgetPosition(widgetData.widget, widgetData.position);\n\t\tif (shouldRender) {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.addWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tconst newPreference = widgetData.position;\n\t\tconst shouldRender = this._glyphMarginWidgets.setWidgetPosition(widgetData.widget, newPreference);\n\t\tif (shouldRender) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.removeWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\t// --- END CodeEditor helpers\n\n}\n\nfunction safeInvokeNoArg<T>(func: () => T): T | null {\n\ttry {\n\t\treturn func();\n\t} catch (e) {\n\t\tonUnexpectedError(e);\n\t\treturn null;\n\t}\n}\n\ninterface ICoordinatedRendering {\n\treadonly window: CodeWindow;\n\tprepareRenderText(): void;\n\trenderText(): [ViewPart[], RenderingContext] | null;\n\tprepareRender(viewParts: ViewPart[], ctx: RenderingContext): void;\n\trender(viewParts: ViewPart[], ctx: RestrictedRenderingContext): void;\n}\n\nclass EditorRenderingCoordinator {\n\n\tpublic static INSTANCE = new EditorRenderingCoordinator();\n\n\tprivate _coordinatedRenderings: ICoordinatedRendering[] = [];\n\tprivate _animationFrameRunners = new Map<CodeWindow, IDisposable>();\n\n\tprivate constructor() { }\n\n\tscheduleCoordinatedRendering(rendering: ICoordinatedRendering): IDisposable {\n\t\tthis._coordinatedRenderings.push(rendering);\n\t\tthis._scheduleRender(rendering.window);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tconst renderingIndex = this._coordinatedRenderings.indexOf(rendering);\n\t\t\t\tif (renderingIndex === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._coordinatedRenderings.splice(renderingIndex, 1);\n\n\t\t\t\tif (this._coordinatedRenderings.length === 0) {\n\t\t\t\t\t// There are no more renderings to coordinate => cancel animation frames\n\t\t\t\t\tfor (const [_, disposable] of this._animationFrameRunners) {\n\t\t\t\t\t\tdisposable.dispose();\n\t\t\t\t\t}\n\t\t\t\t\tthis._animationFrameRunners.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _scheduleRender(window: CodeWindow): void {\n\t\tif (!this._animationFrameRunners.has(window)) {\n\t\t\tconst runner = () => {\n\t\t\t\tthis._animationFrameRunners.delete(window);\n\t\t\t\tthis._onRenderScheduled();\n\t\t\t};\n\t\t\tthis._animationFrameRunners.set(window, dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100));\n\t\t}\n\t}\n\n\tprivate _onRenderScheduled(): void {\n\t\tconst coordinatedRenderings = this._coordinatedRenderings.slice(0);\n\t\tthis._coordinatedRenderings = [];\n\n\t\tfor (const rendering of coordinatedRenderings) {\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\t}\n\n\t\tconst datas: ([ViewPart[], RenderingContext] | null)[] = [];\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tdatas[i] = safeInvokeNoArg(() => rendering.renderText());\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n}\n\nclass CodeEditorWidgetFocusTracker extends Disposable {\n\n\tprivate _hasDomElementFocus: boolean;\n\tprivate readonly _domFocusTracker: dom.IFocusTracker;\n\tprivate readonly _overflowWidgetsDomNode: dom.IFocusTracker | undefined;\n\n\tprivate readonly _onChange: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onChange: Event<void> = this._onChange.event;\n\n\tprivate _overflowWidgetsDomNodeHasFocus: boolean;\n\n\tprivate _hadFocus: boolean | undefined = undefined;\n\n\tconstructor(domElement: HTMLElement, overflowWidgetsDomNode: HTMLElement | undefined) {\n\t\tsuper();\n\n\t\tthis._hasDomElementFocus = false;\n\t\tthis._domFocusTracker = this._register(dom.trackFocus(domElement));\n\n\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\n\t\tthis._register(this._domFocusTracker.onDidFocus(() => {\n\t\t\tthis._hasDomElementFocus = true;\n\t\t\tthis._update();\n\t\t}));\n\t\tthis._register(this._domFocusTracker.onDidBlur(() => {\n\t\t\tthis._hasDomElementFocus = false;\n\t\t\tthis._update();\n\t\t}));\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\tthis._overflowWidgetsDomNode = this._register(dom.trackFocus(overflowWidgetsDomNode));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidFocus(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = true;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidBlur(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t}\n\t}\n\n\tprivate _update() {\n\t\tconst focused = this._hasDomElementFocus || this._overflowWidgetsDomNodeHasFocus;\n\t\tif (this._hadFocus !== focused) {\n\t\t\tthis._hadFocus = focused;\n\t\t\tthis._onChange.fire(undefined);\n\t\t}\n\t}\n\n\tpublic hasFocus(): boolean {\n\t\treturn this._hadFocus ?? false;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../base/browser/dom.js';\nimport { FastDomNode, createFastDomNode } from '../../base/browser/fastDomNode.js';\nimport { IMouseWheelEvent } from '../../base/browser/mouseEvent.js';\nimport { inputLatency } from '../../base/browser/performance.js';\nimport { CodeWindow } from '../../base/browser/window.js';\nimport { BugIndicatingError, onUnexpectedError } from '../../base/common/errors.js';\nimport { Disposable, IDisposable } from '../../base/common/lifecycle.js';\nimport { IPointerHandlerHelper } from './controller/mouseHandler.js';\nimport { PointerHandlerLastRenderData } from './controller/mouseTarget.js';\nimport { PointerHandler } from './controller/pointerHandler.js';\nimport { IContentWidget, IContentWidgetPosition, IEditorAriaOptions, IGlyphMarginWidget, IGlyphMarginWidgetPosition, IMouseTarget, IOverlayWidget, IOverlayWidgetPosition, IViewZoneChangeAccessor } from './editorBrowser.js';\nimport { LineVisibleRanges, RenderingContext, RestrictedRenderingContext } from './view/renderingContext.js';\nimport { ICommandDelegate, ViewController } from './view/viewController.js';\nimport { ContentViewOverlays, MarginViewOverlays } from './view/viewOverlays.js';\nimport { PartFingerprint, PartFingerprints, ViewPart } from './view/viewPart.js';\nimport { ViewUserInputEvents } from './view/viewUserInputEvents.js';\nimport { BlockDecorations } from './viewParts/blockDecorations/blockDecorations.js';\nimport { ViewContentWidgets } from './viewParts/contentWidgets/contentWidgets.js';\nimport { CurrentLineHighlightOverlay, CurrentLineMarginHighlightOverlay } from './viewParts/currentLineHighlight/currentLineHighlight.js';\nimport { DecorationsOverlay } from './viewParts/decorations/decorations.js';\nimport { EditorScrollbar } from './viewParts/editorScrollbar/editorScrollbar.js';\nimport { GlyphMarginWidgets } from './viewParts/glyphMargin/glyphMargin.js';\nimport { IndentGuidesOverlay } from './viewParts/indentGuides/indentGuides.js';\nimport { LineNumbersOverlay } from './viewParts/lineNumbers/lineNumbers.js';\nimport { ViewLines } from './viewParts/viewLines/viewLines.js';\nimport { LinesDecorationsOverlay } from './viewParts/linesDecorations/linesDecorations.js';\nimport { Margin } from './viewParts/margin/margin.js';\nimport { MarginViewLineDecorationsOverlay } from './viewParts/marginDecorations/marginDecorations.js';\nimport { Minimap } from './viewParts/minimap/minimap.js';\nimport { ViewOverlayWidgets } from './viewParts/overlayWidgets/overlayWidgets.js';\nimport { DecorationsOverviewRuler } from './viewParts/overviewRuler/decorationsOverviewRuler.js';\nimport { OverviewRuler } from './viewParts/overviewRuler/overviewRuler.js';\nimport { Rulers } from './viewParts/rulers/rulers.js';\nimport { ScrollDecorationViewPart } from './viewParts/scrollDecoration/scrollDecoration.js';\nimport { SelectionsOverlay } from './viewParts/selections/selections.js';\nimport { ViewCursors } from './viewParts/viewCursors/viewCursors.js';\nimport { ViewZones } from './viewParts/viewZones/viewZones.js';\nimport { WhitespaceOverlay } from './viewParts/whitespace/whitespace.js';\nimport { IEditorConfiguration } from '../common/config/editorConfiguration.js';\nimport { EditorOption } from '../common/config/editorOptions.js';\nimport { Position } from '../common/core/position.js';\nimport { Range } from '../common/core/range.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ScrollType } from '../common/editorCommon.js';\nimport { GlyphMarginLane, IGlyphMarginLanesModel } from '../common/model.js';\nimport { ViewEventHandler } from '../common/viewEventHandler.js';\nimport * as viewEvents from '../common/viewEvents.js';\nimport { ViewportData } from '../common/viewLayout/viewLinesViewportData.js';\nimport { IViewModel } from '../common/viewModel.js';\nimport { ViewContext } from '../common/viewModel/viewContext.js';\nimport { IInstantiationService } from '../../platform/instantiation/common/instantiation.js';\nimport { IColorTheme, getThemeTypeSelector } from '../../platform/theme/common/themeService.js';\nimport { ViewGpuContext } from './gpu/viewGpuContext.js';\nimport { ViewLinesGpu } from './viewParts/viewLinesGpu/viewLinesGpu.js';\nimport { AbstractEditContext } from './controller/editContext/editContext.js';\nimport { IVisibleRangeProvider, TextAreaEditContext } from './controller/editContext/textArea/textAreaEditContext.js';\nimport { NativeEditContext } from './controller/editContext/native/nativeEditContext.js';\nimport { RulersGpu } from './viewParts/rulersGpu/rulersGpu.js';\nimport { GpuMarkOverlay } from './viewParts/gpuMark/gpuMark.js';\nimport { AccessibilitySupport } from '../../platform/accessibility/common/accessibility.js';\nimport { Event, Emitter } from '../../base/common/event.js';\n\n\nexport interface IContentWidgetData {\n\twidget: IContentWidget;\n\tposition: IContentWidgetPosition | null;\n}\n\nexport interface IOverlayWidgetData {\n\twidget: IOverlayWidget;\n\tposition: IOverlayWidgetPosition | null;\n}\n\nexport interface IGlyphMarginWidgetData {\n\twidget: IGlyphMarginWidget;\n\tposition: IGlyphMarginWidgetPosition;\n}\n\nexport class View extends ViewEventHandler {\n\n\tprivate _widgetFocusTracker: CodeEditorWidgetFocusTracker;\n\n\tprivate readonly _scrollbar: EditorScrollbar;\n\tprivate readonly _context: ViewContext;\n\tprivate readonly _viewGpuContext?: ViewGpuContext;\n\tprivate _selections: Selection[];\n\n\t// The view lines\n\tprivate readonly _viewLines: ViewLines;\n\tprivate readonly _viewLinesGpu?: ViewLinesGpu;\n\n\t// These are parts, but we must do some API related calls on them, so we keep a reference\n\tprivate readonly _viewZones: ViewZones;\n\tprivate readonly _contentWidgets: ViewContentWidgets;\n\tprivate readonly _overlayWidgets: ViewOverlayWidgets;\n\tprivate readonly _glyphMarginWidgets: GlyphMarginWidgets;\n\tprivate readonly _viewCursors: ViewCursors;\n\tprivate readonly _viewParts: ViewPart[];\n\tprivate readonly _viewController: ViewController;\n\n\tprivate _editContextEnabled: boolean;\n\tprivate _accessibilitySupport: AccessibilitySupport;\n\tprivate _editContext: AbstractEditContext;\n\tprivate readonly _pointerHandler: PointerHandler;\n\n\t// Dom nodes\n\tprivate readonly _linesContent: FastDomNode<HTMLElement>;\n\tpublic readonly domNode: FastDomNode<HTMLElement>;\n\tprivate readonly _overflowGuardContainer: FastDomNode<HTMLElement>;\n\n\t// Actual mutable state\n\tprivate _shouldRecomputeGlyphMarginLanes: boolean = false;\n\tprivate _renderAnimationFrame: IDisposable | null;\n\tprivate _ownerID: string;\n\n\tconstructor(\n\t\teditorContainer: HTMLElement,\n\t\townerID: string,\n\t\tcommandDelegate: ICommandDelegate,\n\t\tconfiguration: IEditorConfiguration,\n\t\tcolorTheme: IColorTheme,\n\t\tmodel: IViewModel,\n\t\tuserInputEvents: ViewUserInputEvents,\n\t\toverflowWidgetsDomNode: HTMLElement | undefined,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService\n\t) {\n\t\tsuper();\n\t\tthis._ownerID = ownerID;\n\n\t\tthis._widgetFocusTracker = this._register(\n\t\t\tnew CodeEditorWidgetFocusTracker(editorContainer, overflowWidgetsDomNode)\n\t\t);\n\t\tthis._register(this._widgetFocusTracker.onChange(() => {\n\t\t\tthis._context.viewModel.setHasWidgetFocus(this._widgetFocusTracker.hasFocus());\n\t\t}));\n\n\t\tthis._selections = [new Selection(1, 1, 1, 1)];\n\t\tthis._renderAnimationFrame = null;\n\n\t\tthis._overflowGuardContainer = createFastDomNode(document.createElement('div'));\n\t\tPartFingerprints.write(this._overflowGuardContainer, PartFingerprint.OverflowGuard);\n\t\tthis._overflowGuardContainer.setClassName('overflow-guard');\n\n\t\tthis._viewController = new ViewController(configuration, model, userInputEvents, commandDelegate);\n\n\t\t// The view context is passed on to most classes (basically to reduce param. counts in ctors)\n\t\tthis._context = new ViewContext(configuration, colorTheme, model);\n\n\t\t// Ensure the view is the first event handler in order to update the layout\n\t\tthis._context.addEventHandler(this);\n\n\t\tthis._viewParts = [];\n\n\t\t// Keyboard handler\n\t\tthis._editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tthis._accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tthis._editContext = this._instantiateEditContext();\n\n\t\tthis._viewParts.push(this._editContext);\n\n\t\t// These two dom nodes must be constructed up front, since references are needed in the layout provider (scrolling & co.)\n\t\tthis._linesContent = createFastDomNode(document.createElement('div'));\n\t\tthis._linesContent.setClassName('lines-content' + ' monaco-editor-background');\n\t\tthis._linesContent.setPosition('absolute');\n\n\t\tthis.domNode = createFastDomNode(document.createElement('div'));\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\t// Set role 'code' for better screen reader support https://github.com/microsoft/vscode/issues/93438\n\t\tthis.domNode.setAttribute('role', 'code');\n\n\t\tif (this._context.configuration.options.get(EditorOption.experimentalGpuAcceleration) === 'on') {\n\t\t\tthis._viewGpuContext = this._instantiationService.createInstance(ViewGpuContext, this._context);\n\t\t}\n\n\t\tthis._scrollbar = new EditorScrollbar(this._context, this._linesContent, this.domNode, this._overflowGuardContainer);\n\t\tthis._viewParts.push(this._scrollbar);\n\n\t\t// View Lines\n\t\tthis._viewLines = new ViewLines(this._context, this._viewGpuContext, this._linesContent);\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._viewLinesGpu = this._instantiationService.createInstance(ViewLinesGpu, this._context, this._viewGpuContext);\n\t\t}\n\n\t\t// View Zones\n\t\tthis._viewZones = new ViewZones(this._context);\n\t\tthis._viewParts.push(this._viewZones);\n\n\t\t// Decorations overview ruler\n\t\tconst decorationsOverviewRuler = new DecorationsOverviewRuler(this._context);\n\t\tthis._viewParts.push(decorationsOverviewRuler);\n\n\n\t\tconst scrollDecoration = new ScrollDecorationViewPart(this._context);\n\t\tthis._viewParts.push(scrollDecoration);\n\n\t\tconst contentViewOverlays = new ContentViewOverlays(this._context);\n\t\tthis._viewParts.push(contentViewOverlays);\n\t\tcontentViewOverlays.addDynamicOverlay(new CurrentLineHighlightOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new SelectionsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new IndentGuidesOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new DecorationsOverlay(this._context));\n\t\tcontentViewOverlays.addDynamicOverlay(new WhitespaceOverlay(this._context));\n\n\t\tconst marginViewOverlays = new MarginViewOverlays(this._context);\n\t\tthis._viewParts.push(marginViewOverlays);\n\t\tmarginViewOverlays.addDynamicOverlay(new CurrentLineMarginHighlightOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new MarginViewLineDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LinesDecorationsOverlay(this._context));\n\t\tmarginViewOverlays.addDynamicOverlay(new LineNumbersOverlay(this._context));\n\t\tif (this._viewGpuContext) {\n\t\t\tmarginViewOverlays.addDynamicOverlay(new GpuMarkOverlay(this._context, this._viewGpuContext));\n\t\t}\n\n\t\t// Glyph margin widgets\n\t\tthis._glyphMarginWidgets = new GlyphMarginWidgets(this._context);\n\t\tthis._viewParts.push(this._glyphMarginWidgets);\n\n\t\tconst margin = new Margin(this._context);\n\t\tmargin.getDomNode().appendChild(this._viewZones.marginDomNode);\n\t\tmargin.getDomNode().appendChild(marginViewOverlays.getDomNode());\n\t\tmargin.getDomNode().appendChild(this._glyphMarginWidgets.domNode);\n\t\tthis._viewParts.push(margin);\n\n\t\t// Content widgets\n\t\tthis._contentWidgets = new ViewContentWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._contentWidgets);\n\n\t\tthis._viewCursors = new ViewCursors(this._context);\n\t\tthis._viewParts.push(this._viewCursors);\n\n\t\t// Overlay widgets\n\t\tthis._overlayWidgets = new ViewOverlayWidgets(this._context, this.domNode);\n\t\tthis._viewParts.push(this._overlayWidgets);\n\n\t\tconst rulers = this._viewGpuContext\n\t\t\t? new RulersGpu(this._context, this._viewGpuContext)\n\t\t\t: new Rulers(this._context);\n\t\tthis._viewParts.push(rulers);\n\n\t\tconst blockOutline = new BlockDecorations(this._context);\n\t\tthis._viewParts.push(blockOutline);\n\n\t\tconst minimap = new Minimap(this._context);\n\t\tthis._viewParts.push(minimap);\n\n\t\t// -------------- Wire dom nodes up\n\n\t\tif (decorationsOverviewRuler) {\n\t\t\tconst overviewRulerData = this._scrollbar.getOverviewRulerLayoutInfo();\n\t\t\toverviewRulerData.parent.insertBefore(decorationsOverviewRuler.getDomNode(), overviewRulerData.insertBefore);\n\t\t}\n\n\t\tthis._linesContent.appendChild(contentViewOverlays.getDomNode());\n\t\tif ('domNode' in rulers) {\n\t\t\tthis._linesContent.appendChild(rulers.domNode);\n\t\t}\n\t\tthis._linesContent.appendChild(this._viewZones.domNode);\n\t\tthis._linesContent.appendChild(this._viewLines.getDomNode());\n\t\tthis._linesContent.appendChild(this._contentWidgets.domNode);\n\t\tthis._linesContent.appendChild(this._viewCursors.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(margin.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._scrollbar.getDomNode());\n\t\tif (this._viewGpuContext) {\n\t\t\tthis._overflowGuardContainer.appendChild(this._viewGpuContext.canvas);\n\t\t}\n\t\tthis._overflowGuardContainer.appendChild(scrollDecoration.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(minimap.getDomNode());\n\t\tthis._overflowGuardContainer.appendChild(blockOutline.domNode);\n\t\tthis.domNode.appendChild(this._overflowGuardContainer);\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\toverflowWidgetsDomNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode);\n\t\t\toverflowWidgetsDomNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode);\n\t\t} else {\n\t\t\tthis.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode);\n\t\t\tthis.domNode.appendChild(this._overlayWidgets.overflowingOverlayWidgetsDomNode);\n\t\t}\n\n\t\tthis._applyLayout();\n\n\t\t// Pointer handler\n\t\tthis._pointerHandler = this._register(new PointerHandler(this._context, this._viewController, this._createPointerHandlerHelper()));\n\t}\n\n\tprivate _instantiateEditContext(): AbstractEditContext {\n\t\tconst usingExperimentalEditContext = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tif (usingExperimentalEditContext) {\n\t\t\treturn this._instantiationService.createInstance(NativeEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t} else {\n\t\t\treturn this._instantiationService.createInstance(TextAreaEditContext, this._ownerID, this._context, this._overflowGuardContainer, this._viewController, this._createTextAreaHandlerHelper());\n\t\t}\n\t}\n\n\tprivate _updateEditContext(): void {\n\t\tconst editContextEnabled = this._context.configuration.options.get(EditorOption.effectiveEditContext);\n\t\tconst accessibilitySupport = this._context.configuration.options.get(EditorOption.accessibilitySupport);\n\t\tif (this._editContextEnabled === editContextEnabled && this._accessibilitySupport === accessibilitySupport) {\n\t\t\treturn;\n\t\t}\n\t\tthis._editContextEnabled = editContextEnabled;\n\t\tthis._accessibilitySupport = accessibilitySupport;\n\t\tconst isEditContextFocused = this._editContext.isFocused();\n\t\tconst indexOfEditContext = this._viewParts.indexOf(this._editContext);\n\t\tthis._editContext.dispose();\n\t\tthis._editContext = this._instantiateEditContext();\n\t\tif (isEditContextFocused) {\n\t\t\tthis._editContext.focus();\n\t\t}\n\t\tif (indexOfEditContext !== -1) {\n\t\t\tthis._viewParts.splice(indexOfEditContext, 1, this._editContext);\n\t\t}\n\t}\n\n\tprivate _computeGlyphMarginLanes(): IGlyphMarginLanesModel {\n\t\tconst model = this._context.viewModel.model;\n\t\tconst laneModel = this._context.viewModel.glyphLanes;\n\t\ttype Glyph = { range: Range; lane: GlyphMarginLane; persist?: boolean };\n\t\tlet glyphs: Glyph[] = [];\n\t\tlet maxLineNumber = 0;\n\n\t\t// Add all margin decorations\n\t\tglyphs = glyphs.concat(model.getAllMarginDecorations().map((decoration) => {\n\t\t\tconst lane = decoration.options.glyphMargin?.position ?? GlyphMarginLane.Center;\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, decoration.range.endLineNumber);\n\t\t\treturn { range: decoration.range, lane, persist: decoration.options.glyphMargin?.persistLane };\n\t\t}));\n\n\t\t// Add all glyph margin widgets\n\t\tglyphs = glyphs.concat(this._glyphMarginWidgets.getWidgets().map((widget) => {\n\t\t\tconst range = model.validateRange(widget.preference.range);\n\t\t\tmaxLineNumber = Math.max(maxLineNumber, range.endLineNumber);\n\t\t\treturn { range, lane: widget.preference.lane };\n\t\t}));\n\n\t\t// Sorted by their start position\n\t\tglyphs.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n\n\t\tlaneModel.reset(maxLineNumber);\n\t\tfor (const glyph of glyphs) {\n\t\t\tlaneModel.push(glyph.lane, glyph.range, glyph.persist);\n\t\t}\n\n\t\treturn laneModel;\n\t}\n\n\tprivate _createPointerHandlerHelper(): IPointerHandlerHelper {\n\t\treturn {\n\t\t\tviewDomNode: this.domNode.domNode,\n\t\t\tlinesContentDomNode: this._linesContent.domNode,\n\t\t\tviewLinesDomNode: this._viewLines.getDomNode().domNode,\n\t\t\tviewLinesGpu: this._viewLinesGpu,\n\n\t\t\tfocusTextArea: () => {\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tdispatchTextAreaEvent: (event: CustomEvent) => {\n\t\t\t\tthis._editContext.domNode.domNode.dispatchEvent(event);\n\t\t\t},\n\n\t\t\tgetLastRenderData: (): PointerHandlerLastRenderData => {\n\t\t\t\tconst lastViewCursorsRenderData = this._viewCursors.getLastRenderData() || [];\n\t\t\t\tconst lastTextareaPosition = this._editContext.getLastRenderData();\n\t\t\t\treturn new PointerHandlerLastRenderData(lastViewCursorsRenderData, lastTextareaPosition);\n\t\t\t},\n\t\t\trenderNow: (): void => {\n\t\t\t\tthis.render(true, false);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnViewZone: (viewZoneId: string) => {\n\t\t\t\treturn this._viewZones.shouldSuppressMouseDownOnViewZone(viewZoneId);\n\t\t\t},\n\t\t\tshouldSuppressMouseDownOnWidget: (widgetId: string) => {\n\t\t\t\treturn this._contentWidgets.shouldSuppressMouseDownOnWidget(widgetId);\n\t\t\t},\n\t\t\tgetPositionFromDOMInfo: (spanNode: HTMLElement, offset: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.getPositionFromDOMInfo(spanNode, offset);\n\t\t\t},\n\n\t\t\tvisibleRangeForPosition: (lineNumber: number, column: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tconst position = new Position(lineNumber, column);\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position) ?? this._viewLinesGpu?.visibleRangeForPosition(position) ?? null;\n\t\t\t},\n\n\t\t\tgetLineWidth: (lineNumber: number) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\tif (this._viewLinesGpu) {\n\t\t\t\t\tconst result = this._viewLinesGpu.getLineWidth(lineNumber);\n\t\t\t\t\tif (result !== undefined) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._viewLines.getLineWidth(lineNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _createTextAreaHandlerHelper(): IVisibleRangeProvider {\n\t\treturn {\n\t\t\tvisibleRangeForPosition: (position: Position) => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.visibleRangeForPosition(position);\n\t\t\t},\n\t\t\tlinesVisibleRangesForRange: (range: Range, includeNewLines: boolean): LineVisibleRanges[] | null => {\n\t\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t\t\treturn this._viewLines.linesVisibleRangesForRange(range, includeNewLines);\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _applyLayout(): void {\n\t\tconst options = this._context.configuration.options;\n\t\tconst layoutInfo = options.get(EditorOption.layoutInfo);\n\n\t\tthis.domNode.setWidth(layoutInfo.width);\n\t\tthis.domNode.setHeight(layoutInfo.height);\n\n\t\tthis._overflowGuardContainer.setWidth(layoutInfo.width);\n\t\tthis._overflowGuardContainer.setHeight(layoutInfo.height);\n\n\t\t// https://stackoverflow.com/questions/38905916/content-in-google-chrome-larger-than-16777216-px-not-being-rendered\n\t\tthis._linesContent.setWidth(16777216);\n\t\tthis._linesContent.setHeight(16777216);\n\t}\n\n\tprivate _getEditorClassName() {\n\t\tconst focused = this._editContext.isFocused() ? ' focused' : '';\n\t\treturn this._context.configuration.options.get(EditorOption.editorClassName) + ' ' + getThemeTypeSelector(this._context.theme.type) + focused;\n\t}\n\n\t// --- begin event handlers\n\tpublic override handleEvents(events: viewEvents.ViewEvent[]): void {\n\t\tsuper.handleEvents(events);\n\t\tthis._scheduleRender();\n\t}\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\tthis._updateEditContext();\n\t\tthis._applyLayout();\n\t\treturn false;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selections = e.selections;\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\tif (e.affectsGlyphMargin) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onFocusChanged(e: viewEvents.ViewFocusChangedEvent): boolean {\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\tpublic override onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean {\n\t\tthis._context.theme.update(e.theme);\n\t\tthis.domNode.setClassName(this._getEditorClassName());\n\t\treturn false;\n\t}\n\n\t// --- end event handlers\n\n\tpublic override dispose(): void {\n\t\tif (this._renderAnimationFrame !== null) {\n\t\t\tthis._renderAnimationFrame.dispose();\n\t\t\tthis._renderAnimationFrame = null;\n\t\t}\n\n\t\tthis._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove();\n\t\tthis._overlayWidgets.overflowingOverlayWidgetsDomNode.domNode.remove();\n\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._viewGpuContext?.dispose();\n\n\t\tthis._viewLines.dispose();\n\t\tthis._viewLinesGpu?.dispose();\n\n\t\t// Destroy view parts\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tviewPart.dispose();\n\t\t}\n\n\t\tsuper.dispose();\n\t}\n\n\tprivate _scheduleRender(): void {\n\t\tif (this._store.isDisposed) {\n\t\t\tthrow new BugIndicatingError();\n\t\t}\n\t\tif (this._renderAnimationFrame === null) {\n\t\t\t// TODO: workaround fix for https://github.com/microsoft/vscode/issues/229825\n\t\t\tif (this._editContext instanceof NativeEditContext) {\n\t\t\t\tthis._editContext.setEditContextOnDomNode();\n\t\t\t}\n\t\t\tconst rendering = this._createCoordinatedRendering();\n\t\t\tthis._renderAnimationFrame = EditorRenderingCoordinator.INSTANCE.scheduleCoordinatedRendering({\n\t\t\t\twindow: dom.getWindow(this.domNode?.domNode),\n\t\t\t\tprepareRenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn rendering.prepareRenderText();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._renderAnimationFrame = null;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trenderText: () => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.renderText();\n\t\t\t\t},\n\t\t\t\tprepareRender: (viewParts: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.prepareRender(viewParts, ctx);\n\t\t\t\t},\n\t\t\t\trender: (viewParts: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\t\tif (this._store.isDisposed) {\n\t\t\t\t\t\tthrow new BugIndicatingError();\n\t\t\t\t\t}\n\t\t\t\t\treturn rendering.render(viewParts, ctx);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _flushAccumulatedAndRenderNow(): void {\n\t\tconst rendering = this._createCoordinatedRendering();\n\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\tconst data = safeInvokeNoArg(() => rendering.renderText());\n\t\tif (data) {\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n\n\tprivate _getViewPartsToRender(): ViewPart[] {\n\t\tconst result: ViewPart[] = [];\n\t\tlet resultLen = 0;\n\t\tfor (const viewPart of this._viewParts) {\n\t\t\tif (viewPart.shouldRender()) {\n\t\t\t\tresult[resultLen++] = viewPart;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _createCoordinatedRendering() {\n\t\treturn {\n\t\t\tprepareRenderText: () => {\n\t\t\t\tif (this._shouldRecomputeGlyphMarginLanes) {\n\t\t\t\t\tthis._shouldRecomputeGlyphMarginLanes = false;\n\t\t\t\t\tconst model = this._computeGlyphMarginLanes();\n\t\t\t\t\tthis._context.configuration.setGlyphMarginDecorationLaneCount(model.requiredLanes);\n\t\t\t\t}\n\t\t\t\tinputLatency.onRenderStart();\n\t\t\t},\n\t\t\trenderText: (): [ViewPart[], RenderingContext] | null => {\n\t\t\t\tif (!this.domNode.domNode.isConnected) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet viewPartsToRender = this._getViewPartsToRender();\n\t\t\t\tif (!this._viewLines.shouldRender() && viewPartsToRender.length === 0) {\n\t\t\t\t\t// Nothing to render\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst partialViewportData = this._context.viewLayout.getLinesViewportData();\n\t\t\t\tthis._context.viewModel.setViewport(partialViewportData.startLineNumber, partialViewportData.endLineNumber, partialViewportData.centeredLineNumber);\n\n\t\t\t\tconst viewportData = new ViewportData(\n\t\t\t\t\tthis._selections,\n\t\t\t\t\tpartialViewportData,\n\t\t\t\t\tthis._context.viewLayout.getWhitespaceViewportData(),\n\t\t\t\t\tthis._context.viewModel\n\t\t\t\t);\n\n\t\t\t\tif (this._contentWidgets.shouldRender()) {\n\t\t\t\t\t// Give the content widgets a chance to set their max width before a possible synchronous layout\n\t\t\t\t\tthis._contentWidgets.onBeforeRender(viewportData);\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLines.shouldRender()) {\n\t\t\t\t\tthis._viewLines.renderText(viewportData);\n\t\t\t\t\tthis._viewLines.onDidRender();\n\n\t\t\t\t\t// Rendering of viewLines might cause scroll events to occur, so collect view parts to render again\n\t\t\t\t\tviewPartsToRender = this._getViewPartsToRender();\n\t\t\t\t}\n\n\t\t\t\tif (this._viewLinesGpu?.shouldRender()) {\n\t\t\t\t\tthis._viewLinesGpu.renderText(viewportData);\n\t\t\t\t\tthis._viewLinesGpu.onDidRender();\n\t\t\t\t}\n\n\t\t\t\treturn [viewPartsToRender, new RenderingContext(this._context.viewLayout, viewportData, this._viewLines, this._viewLinesGpu)];\n\t\t\t},\n\t\t\tprepareRender: (viewPartsToRender: ViewPart[], ctx: RenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.prepareRender(ctx);\n\t\t\t\t}\n\t\t\t},\n\t\t\trender: (viewPartsToRender: ViewPart[], ctx: RestrictedRenderingContext) => {\n\t\t\t\tfor (const viewPart of viewPartsToRender) {\n\t\t\t\t\tviewPart.render(ctx);\n\t\t\t\t\tviewPart.onDidRender();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// --- BEGIN CodeEditor helpers\n\n\tpublic delegateVerticalScrollbarPointerDown(browserEvent: PointerEvent): void {\n\t\tthis._scrollbar.delegateVerticalScrollbarPointerDown(browserEvent);\n\t}\n\n\tpublic delegateScrollFromMouseWheelEvent(browserEvent: IMouseWheelEvent) {\n\t\tthis._scrollbar.delegateScrollFromMouseWheelEvent(browserEvent);\n\t}\n\n\tpublic restoreState(scrollPosition: { scrollLeft: number; scrollTop: number }): void {\n\t\tthis._context.viewModel.viewLayout.setScrollPosition({\n\t\t\tscrollTop: scrollPosition.scrollTop,\n\t\t\tscrollLeft: scrollPosition.scrollLeft\n\t\t}, ScrollType.Immediate);\n\t\tthis._context.viewModel.visibleLinesStabilized();\n\t}\n\n\tpublic getOffsetForColumn(modelLineNumber: number, modelColumn: number): number {\n\t\tconst modelPosition = this._context.viewModel.model.validatePosition({\n\t\t\tlineNumber: modelLineNumber,\n\t\t\tcolumn: modelColumn\n\t\t});\n\t\tconst viewPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\n\t\tthis._flushAccumulatedAndRenderNow();\n\t\tconst visibleRange = this._viewLines.visibleRangeForPosition(new Position(viewPosition.lineNumber, viewPosition.column));\n\t\tif (!visibleRange) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn visibleRange.left;\n\t}\n\n\tpublic getLineWidth(modelLineNumber: number): number {\n\t\tconst model = this._context.viewModel.model;\n\t\tconst viewLine = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelLineNumber, model.getLineMaxColumn(modelLineNumber))).lineNumber;\n\t\tthis._flushAccumulatedAndRenderNow();\n\t\tconst width = this._viewLines.getLineWidth(viewLine);\n\n\t\treturn width;\n\t}\n\n\tpublic getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null {\n\t\tconst mouseTarget = this._pointerHandler.getTargetAtClientPoint(clientX, clientY);\n\t\tif (!mouseTarget) {\n\t\t\treturn null;\n\t\t}\n\t\treturn ViewUserInputEvents.convertViewToModelMouseTarget(mouseTarget, this._context.viewModel.coordinatesConverter);\n\t}\n\n\tpublic createOverviewRuler(cssClassName: string): OverviewRuler {\n\t\treturn new OverviewRuler(this._context, cssClassName);\n\t}\n\n\tpublic change(callback: (changeAccessor: IViewZoneChangeAccessor) => unknown): void {\n\t\tthis._viewZones.changeViewZones(callback);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic render(now: boolean, everything: boolean): void {\n\t\tif (everything) {\n\t\t\t// Force everything to render...\n\t\t\tthis._viewLines.forceShouldRender();\n\t\t\tfor (const viewPart of this._viewParts) {\n\t\t\t\tviewPart.forceShouldRender();\n\t\t\t}\n\t\t}\n\t\tif (now) {\n\t\t\tthis._flushAccumulatedAndRenderNow();\n\t\t} else {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic writeScreenReaderContent(reason: string): void {\n\t\tthis._editContext.writeScreenReaderContent(reason);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._editContext.focus();\n\t}\n\n\tpublic isFocused(): boolean {\n\t\treturn this._editContext.isFocused();\n\t}\n\n\tpublic isWidgetFocused(): boolean {\n\t\treturn this._widgetFocusTracker.hasFocus();\n\t}\n\n\tpublic setAriaOptions(options: IEditorAriaOptions): void {\n\t\tthis._editContext.setAriaOptions(options);\n\t}\n\n\tpublic addContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutContentWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.setWidgetPosition(\n\t\t\twidgetData.widget,\n\t\t\twidgetData.position?.position ?? null,\n\t\t\twidgetData.position?.secondaryPosition ?? null,\n\t\t\twidgetData.position?.preference ?? null,\n\t\t\twidgetData.position?.positionAffinity ?? null\n\t\t);\n\t\tif (this._contentWidgets.shouldRender()) {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeContentWidget(widgetData: IContentWidgetData): void {\n\t\tthis._contentWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.addWidget(widgetData.widget);\n\t\tthis.layoutOverlayWidget(widgetData);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tconst shouldRender = this._overlayWidgets.setWidgetPosition(widgetData.widget, widgetData.position);\n\t\tif (shouldRender) {\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeOverlayWidget(widgetData: IOverlayWidgetData): void {\n\t\tthis._overlayWidgets.removeWidget(widgetData.widget);\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic addGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.addWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\tpublic layoutGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tconst newPreference = widgetData.position;\n\t\tconst shouldRender = this._glyphMarginWidgets.setWidgetPosition(widgetData.widget, newPreference);\n\t\tif (shouldRender) {\n\t\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\t\tthis._scheduleRender();\n\t\t}\n\t}\n\n\tpublic removeGlyphMarginWidget(widgetData: IGlyphMarginWidgetData): void {\n\t\tthis._glyphMarginWidgets.removeWidget(widgetData.widget);\n\t\tthis._shouldRecomputeGlyphMarginLanes = true;\n\t\tthis._scheduleRender();\n\t}\n\n\t// --- END CodeEditor helpers\n\n}\n\nfunction safeInvokeNoArg<T>(func: () => T): T | null {\n\ttry {\n\t\treturn func();\n\t} catch (e) {\n\t\tonUnexpectedError(e);\n\t\treturn null;\n\t}\n}\n\ninterface ICoordinatedRendering {\n\treadonly window: CodeWindow;\n\tprepareRenderText(): void;\n\trenderText(): [ViewPart[], RenderingContext] | null;\n\tprepareRender(viewParts: ViewPart[], ctx: RenderingContext): void;\n\trender(viewParts: ViewPart[], ctx: RestrictedRenderingContext): void;\n}\n\nclass EditorRenderingCoordinator {\n\n\tpublic static INSTANCE = new EditorRenderingCoordinator();\n\n\tprivate _coordinatedRenderings: ICoordinatedRendering[] = [];\n\tprivate _animationFrameRunners = new Map<CodeWindow, IDisposable>();\n\n\tprivate constructor() { }\n\n\tscheduleCoordinatedRendering(rendering: ICoordinatedRendering): IDisposable {\n\t\tthis._coordinatedRenderings.push(rendering);\n\t\tthis._scheduleRender(rendering.window);\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tconst renderingIndex = this._coordinatedRenderings.indexOf(rendering);\n\t\t\t\tif (renderingIndex === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._coordinatedRenderings.splice(renderingIndex, 1);\n\n\t\t\t\tif (this._coordinatedRenderings.length === 0) {\n\t\t\t\t\t// There are no more renderings to coordinate => cancel animation frames\n\t\t\t\t\tfor (const [_, disposable] of this._animationFrameRunners) {\n\t\t\t\t\t\tdisposable.dispose();\n\t\t\t\t\t}\n\t\t\t\t\tthis._animationFrameRunners.clear();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate _scheduleRender(window: CodeWindow): void {\n\t\tif (!this._animationFrameRunners.has(window)) {\n\t\t\tconst runner = () => {\n\t\t\t\tthis._animationFrameRunners.delete(window);\n\t\t\t\tthis._onRenderScheduled();\n\t\t\t};\n\t\t\tthis._animationFrameRunners.set(window, dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100));\n\t\t}\n\t}\n\n\tprivate _onRenderScheduled(): void {\n\t\tconst coordinatedRenderings = this._coordinatedRenderings.slice(0);\n\t\tthis._coordinatedRenderings = [];\n\n\t\tfor (const rendering of coordinatedRenderings) {\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRenderText());\n\t\t}\n\n\t\tconst datas: ([ViewPart[], RenderingContext] | null)[] = [];\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tdatas[i] = safeInvokeNoArg(() => rendering.renderText());\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.prepareRender(viewParts, ctx));\n\t\t}\n\n\t\tfor (let i = 0, len = coordinatedRenderings.length; i < len; i++) {\n\t\t\tconst rendering = coordinatedRenderings[i];\n\t\t\tconst data = datas[i];\n\t\t\tif (!data) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [viewParts, ctx] = data;\n\t\t\tsafeInvokeNoArg(() => rendering.render(viewParts, ctx));\n\t\t}\n\t}\n}\n\nclass CodeEditorWidgetFocusTracker extends Disposable {\n\n\tprivate _hasDomElementFocus: boolean;\n\tprivate readonly _domFocusTracker: dom.IFocusTracker;\n\tprivate readonly _overflowWidgetsDomNode: dom.IFocusTracker | undefined;\n\n\tprivate readonly _onChange: Emitter<void> = this._register(new Emitter<void>());\n\tpublic readonly onChange: Event<void> = this._onChange.event;\n\n\tprivate _overflowWidgetsDomNodeHasFocus: boolean;\n\n\tprivate _hadFocus: boolean | undefined = undefined;\n\n\tconstructor(domElement: HTMLElement, overflowWidgetsDomNode: HTMLElement | undefined) {\n\t\tsuper();\n\n\t\tthis._hasDomElementFocus = false;\n\t\tthis._domFocusTracker = this._register(dom.trackFocus(domElement));\n\n\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\n\t\tthis._register(this._domFocusTracker.onDidFocus(() => {\n\t\t\tthis._hasDomElementFocus = true;\n\t\t\tthis._update();\n\t\t}));\n\t\tthis._register(this._domFocusTracker.onDidBlur(() => {\n\t\t\tthis._hasDomElementFocus = false;\n\t\t\tthis._update();\n\t\t}));\n\n\t\tif (overflowWidgetsDomNode) {\n\t\t\tthis._overflowWidgetsDomNode = this._register(dom.trackFocus(overflowWidgetsDomNode));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidFocus(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = true;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t\tthis._register(this._overflowWidgetsDomNode.onDidBlur(() => {\n\t\t\t\tthis._overflowWidgetsDomNodeHasFocus = false;\n\t\t\t\tthis._update();\n\t\t\t}));\n\t\t}\n\t}\n\n\tprivate _update() {\n\t\tconst focused = this._hasDomElementFocus || this._overflowWidgetsDomNodeHasFocus;\n\t\tif (this._hadFocus !== focused) {\n\t\t\tthis._hadFocus = focused;\n\t\t\tthis._onChange.fire(undefined);\n\t\t}\n\t}\n\n\tpublic hasFocus(): boolean {\n\t\treturn this._hadFocus ?? false;\n\t}\n}\n"]}
@@ -86,7 +86,9 @@ export class ViewContentWidgets extends ViewPart {
86
86
  setWidgetPosition(widget, primaryAnchor, secondaryAnchor, preference, affinity) {
87
87
  const myWidget = this._widgets[widget.getId()];
88
88
  myWidget.setPosition(primaryAnchor, secondaryAnchor, preference, affinity);
89
- this.setShouldRender();
89
+ if (!myWidget.useDisplayNone) {
90
+ this.setShouldRender();
91
+ }
90
92
  }
91
93
  removeWidget(widget) {
92
94
  const widgetId = widget.getId();
@@ -138,6 +140,7 @@ class Widget {
138
140
  this.id = this._actual.getId();
139
141
  this.allowEditorOverflow = (this._actual.allowEditorOverflow || false) && allowOverflow;
140
142
  this.suppressMouseDown = this._actual.suppressMouseDown || false;
143
+ this.useDisplayNone = this._actual.useDisplayNone || false;
141
144
  this._fixedOverflowWidgets = options.get(51 /* EditorOption.fixedOverflowWidgets */);
142
145
  this._contentWidth = layoutInfo.contentWidth;
143
146
  this._contentLeft = layoutInfo.contentLeft;
@@ -193,7 +196,7 @@ class Widget {
193
196
  setPosition(primaryAnchor, secondaryAnchor, preference, affinity) {
194
197
  this._setPosition(affinity, primaryAnchor, secondaryAnchor);
195
198
  this._preference = preference;
196
- if (this._primaryAnchor.viewPosition && this._preference && this._preference.length > 0) {
199
+ if (!this.useDisplayNone && this._primaryAnchor.viewPosition && this._preference && this._preference.length > 0) {
197
200
  // this content widget would like to be visible if possible
198
201
  // we change it from `display:none` to `display:block` even if it
199
202
  // might be outside the viewport such that we can measure its size