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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +29 -8
  18. package/esm/vs/base/browser/dom.js +31 -34
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/dompurify/dompurify.js +0 -1
  21. package/esm/vs/base/browser/keyboardEvent.js +3 -3
  22. package/esm/vs/base/browser/keyboardEvent.js.map +1 -1
  23. package/esm/vs/base/browser/markdownRenderer.js +5 -2
  24. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  25. package/esm/vs/base/browser/pixelRatio.js +5 -5
  26. package/esm/vs/base/browser/pixelRatio.js.map +1 -1
  27. package/esm/vs/base/browser/trustedTypes.js +1 -1
  28. package/esm/vs/base/browser/trustedTypes.js.map +1 -1
  29. package/esm/vs/base/browser/ui/actionbar/actionbar.js +3 -0
  30. package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
  31. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  32. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +7 -0
  33. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
  34. package/esm/vs/base/browser/ui/hover/hoverWidget.css +0 -13
  35. package/esm/vs/base/browser/ui/inputbox/inputBox.js +7 -0
  36. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  37. package/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css +4 -2
  38. package/esm/vs/base/browser/ui/list/listView.js +7 -2
  39. package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
  40. package/esm/vs/base/browser/ui/list/rowCache.js +1 -4
  41. package/esm/vs/base/browser/ui/list/rowCache.js.map +1 -1
  42. package/esm/vs/base/browser/ui/menu/menu.js +14 -12
  43. package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
  44. package/esm/vs/base/browser/ui/selectBox/selectBox.js +4 -0
  45. package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
  46. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css +12 -32
  47. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +8 -18
  48. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
  49. package/esm/vs/base/browser/ui/toolbar/toolbar.js +41 -14
  50. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  51. package/esm/vs/base/browser/ui/tree/abstractTree.js +11 -0
  52. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  53. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +1 -0
  54. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  55. package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
  56. package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
  57. package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
  58. package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
  59. package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
  60. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  61. package/esm/vs/base/common/arrays.js +10 -0
  62. package/esm/vs/base/common/arrays.js.map +1 -1
  63. package/esm/vs/base/common/async.js +34 -0
  64. package/esm/vs/base/common/async.js.map +1 -1
  65. package/esm/vs/base/common/buffer.js +1 -1
  66. package/esm/vs/base/common/buffer.js.map +1 -1
  67. package/esm/vs/base/common/cancellation.js.map +1 -1
  68. package/esm/vs/base/common/codiconsLibrary.js +3 -0
  69. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  70. package/esm/vs/base/common/collections.js.map +1 -1
  71. package/esm/vs/base/common/equals.js.map +1 -1
  72. package/esm/vs/base/common/event.js +32 -15
  73. package/esm/vs/base/common/event.js.map +1 -1
  74. package/esm/vs/base/common/filters.js +22 -3
  75. package/esm/vs/base/common/filters.js.map +1 -1
  76. package/esm/vs/base/common/hotReload.js +2 -2
  77. package/esm/vs/base/common/hotReload.js.map +1 -1
  78. package/esm/vs/base/common/iterator.js +1 -1
  79. package/esm/vs/base/common/iterator.js.map +1 -1
  80. package/esm/vs/base/common/keyCodes.js +7 -6
  81. package/esm/vs/base/common/keyCodes.js.map +1 -1
  82. package/esm/vs/base/common/linkedList.js.map +1 -1
  83. package/esm/vs/base/common/map.js +8 -5
  84. package/esm/vs/base/common/map.js.map +1 -1
  85. package/esm/vs/base/common/marked/marked.js +0 -1
  86. package/esm/vs/base/common/network.js +26 -1
  87. package/esm/vs/base/common/network.js.map +1 -1
  88. package/esm/vs/base/common/normalization.js +19 -6
  89. package/esm/vs/base/common/normalization.js.map +1 -1
  90. package/esm/vs/base/common/observableInternal/debugLocation.js +1 -2
  91. package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
  92. package/esm/vs/base/common/observableInternal/debugName.js +0 -1
  93. package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
  94. package/esm/vs/base/common/observableInternal/index.js +4 -4
  95. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  96. package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js +38 -10
  97. package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js.map +1 -1
  98. package/esm/vs/base/common/observableInternal/observables/baseObservable.js +3 -3
  99. package/esm/vs/base/common/observableInternal/observables/baseObservable.js.map +1 -1
  100. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +1 -4
  101. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
  102. package/esm/vs/base/common/observableInternal/utils/utils.js +46 -5
  103. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  104. package/esm/vs/base/common/path.js +1 -0
  105. package/esm/vs/base/common/path.js.map +1 -1
  106. package/esm/vs/base/common/strings.js +27 -19
  107. package/esm/vs/base/common/strings.js.map +1 -1
  108. package/esm/vs/base/common/worker/webWorker.js +10 -7
  109. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  110. package/esm/vs/editor/browser/config/elementSizeObserver.js +5 -5
  111. package/esm/vs/editor/browser/config/elementSizeObserver.js.map +1 -1
  112. package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
  113. package/esm/vs/editor/browser/config/migrateOptions.js +6 -0
  114. package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
  115. package/esm/vs/editor/browser/config/tabFocus.js +4 -2
  116. package/esm/vs/editor/browser/config/tabFocus.js.map +1 -1
  117. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -0
  118. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  119. package/esm/vs/editor/browser/coreCommands.js +1 -2
  120. package/esm/vs/editor/browser/coreCommands.js.map +1 -1
  121. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  122. package/esm/vs/editor/browser/observableCodeEditor.js +32 -1
  123. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  124. package/esm/vs/editor/browser/services/contribution.js +9 -0
  125. package/esm/vs/editor/browser/services/contribution.js.map +1 -0
  126. package/esm/vs/editor/browser/services/editorWorkerService.js +27 -14
  127. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  128. package/esm/vs/editor/browser/services/openerService.js +5 -1
  129. package/esm/vs/editor/browser/services/openerService.js.map +1 -1
  130. package/esm/vs/editor/browser/view/domLineBreaksComputer.js +1 -1
  131. package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
  132. package/esm/vs/editor/browser/view/renderingContext.js +1 -1
  133. package/esm/vs/editor/browser/view/renderingContext.js.map +1 -1
  134. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +10 -3
  135. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map +1 -1
  136. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +3 -4
  137. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
  138. package/esm/vs/editor/browser/viewParts/minimap/minimap.js +1 -1
  139. package/esm/vs/editor/browser/viewParts/minimap/minimap.js.map +1 -1
  140. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +1 -1
  141. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
  142. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +4 -2
  143. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map +1 -1
  144. package/esm/vs/editor/browser/viewParts/rulers/rulers.js +1 -3
  145. package/esm/vs/editor/browser/viewParts/rulers/rulers.js.map +1 -1
  146. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +1 -1
  147. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map +1 -1
  148. package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js +2 -1
  149. package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js.map +1 -1
  150. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +6 -18
  151. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
  152. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +0 -7
  153. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js.map +1 -1
  154. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +7 -2
  155. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  156. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -0
  157. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
  158. package/esm/vs/editor/common/commands/replaceCommand.js +2 -2
  159. package/esm/vs/editor/common/commands/replaceCommand.js.map +1 -1
  160. package/esm/vs/editor/common/config/editorOptions.js +374 -360
  161. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  162. package/esm/vs/editor/common/core/2d/rect.js +7 -0
  163. package/esm/vs/editor/common/core/2d/rect.js.map +1 -1
  164. package/esm/vs/editor/common/core/2d/size.js +20 -0
  165. package/esm/vs/editor/common/core/2d/size.js.map +1 -0
  166. package/esm/vs/editor/common/core/editorColorRegistry.js +69 -68
  167. package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
  168. package/esm/vs/editor/common/core/ranges/offsetRange.js +9 -0
  169. package/esm/vs/editor/common/core/ranges/offsetRange.js.map +1 -1
  170. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  171. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  172. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  173. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  174. package/esm/vs/editor/common/languages.js +56 -56
  175. package/esm/vs/editor/common/languages.js.map +1 -1
  176. package/esm/vs/editor/common/model/editStack.js +1 -1
  177. package/esm/vs/editor/common/services/languagesAssociations.js +6 -8
  178. package/esm/vs/editor/common/services/languagesAssociations.js.map +1 -1
  179. package/esm/vs/editor/common/standaloneStrings.js +11 -10
  180. package/esm/vs/editor/common/standaloneStrings.js.map +1 -1
  181. package/esm/vs/editor/common/textModelEditSource.js +1 -1
  182. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  183. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  184. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  185. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  186. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  187. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  188. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  189. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  190. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  191. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  192. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  193. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  194. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  195. package/esm/vs/editor/contrib/codelens/browser/codelens.js.map +1 -1
  196. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  197. package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
  198. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  199. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  200. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  201. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  202. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  203. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  204. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  205. package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js +14 -0
  206. package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js.map +1 -1
  207. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  208. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  209. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  210. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  211. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  212. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  213. package/esm/vs/editor/contrib/find/browser/findController.js +17 -17
  214. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  215. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  216. package/esm/vs/editor/contrib/find/browser/findWidgetSearchHistory.js.map +1 -1
  217. package/esm/vs/editor/contrib/find/browser/replaceWidgetHistory.js.map +1 -1
  218. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  219. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  220. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  221. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  222. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  223. package/esm/vs/editor/contrib/format/browser/format.js +21 -6
  224. package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
  225. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  226. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  227. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  228. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  229. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  230. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  231. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  232. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  233. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  234. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  235. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  236. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +5 -10
  237. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
  238. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +11 -6
  239. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js.map +1 -1
  240. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  241. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  242. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  243. package/esm/vs/editor/contrib/hover/browser/hoverUtils.js +24 -0
  244. package/esm/vs/editor/contrib/hover/browser/hoverUtils.js.map +1 -1
  245. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  246. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  247. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  248. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  249. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  250. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
  251. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  252. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +18 -16
  253. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  254. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  255. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  256. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +42 -37
  257. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  258. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +3 -3
  259. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +1 -1
  260. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +8 -8
  261. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  262. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +54 -43
  263. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  264. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +12 -12
  265. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  266. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +74 -48
  267. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  268. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +8 -36
  269. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  270. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js +10 -11
  271. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js.map +1 -1
  272. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +105 -119
  273. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  274. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  275. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +8 -36
  276. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  277. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js +95 -0
  278. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js.map +1 -0
  279. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +17 -9
  280. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  281. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +428 -0
  282. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -0
  283. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +290 -0
  284. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -0
  285. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  286. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js +103 -0
  287. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js.map +1 -0
  288. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js +32 -0
  289. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js.map +1 -0
  290. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +44 -11
  291. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  292. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +10 -0
  293. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +181 -0
  294. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -0
  295. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  296. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  297. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -31
  298. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  299. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  300. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  301. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  302. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  303. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  304. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  305. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  306. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  307. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +2 -2
  308. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js.map +1 -1
  309. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +18 -13
  310. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  311. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  312. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  313. package/esm/vs/editor/contrib/rename/browser/rename.js +12 -12
  314. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  315. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  316. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  317. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  318. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  319. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  320. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -1
  321. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  322. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  323. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  324. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  325. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  326. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  327. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  328. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  329. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  330. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  331. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  332. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -29
  333. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  334. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  335. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  336. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +4 -4
  337. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
  338. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  339. package/esm/vs/editor/editor.all.js +1 -0
  340. package/esm/vs/editor/editor.all.js.map +1 -1
  341. package/esm/vs/editor/editor.api.d.ts +9 -5
  342. package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js +22 -2
  343. package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js.map +1 -1
  344. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +39 -0
  345. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -0
  346. package/esm/vs/editor/standalone/browser/standaloneEditor.js +2 -1
  347. package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
  348. package/esm/vs/editor/standalone/browser/standaloneServices.js +3 -21
  349. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  350. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js +4 -4
  351. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
  352. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  353. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  354. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  355. package/esm/vs/platform/actionWidget/browser/actionWidget.css +7 -0
  356. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  357. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +7 -9
  358. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  359. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  360. package/esm/vs/platform/actions/common/actions.js +2 -0
  361. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  362. package/esm/vs/platform/actions/common/menuService.js +2 -2
  363. package/esm/vs/platform/configuration/common/configuration.js +5 -4
  364. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  365. package/esm/vs/platform/configuration/common/configurationModels.js +21 -10
  366. package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
  367. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  368. package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
  369. package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
  370. package/esm/vs/platform/contextkey/browser/contextKeyService.js +3 -3
  371. package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
  372. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  373. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  374. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  375. package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
  376. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  377. package/esm/vs/platform/hover/browser/hoverService.js +17 -8
  378. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  379. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  380. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  381. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  382. package/esm/vs/platform/list/browser/listService.js +27 -27
  383. package/esm/vs/platform/list/browser/listService.js.map +1 -1
  384. package/esm/vs/platform/markers/common/markerService.js +2 -2
  385. package/esm/vs/platform/markers/common/markers.js +6 -6
  386. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +51 -39
  387. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
  388. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  389. package/esm/vs/platform/quickinput/browser/media/quickInput.css +9 -3
  390. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  391. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  392. package/esm/vs/platform/quickinput/browser/quickInputController.js +35 -14
  393. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  394. package/esm/vs/platform/quickinput/browser/quickInputList.js +4 -1
  395. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  396. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  397. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  398. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +78 -39
  399. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  400. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +21 -8
  401. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  402. package/esm/vs/platform/telemetry/common/gdprTypings.js.map +1 -1
  403. package/esm/vs/platform/telemetry/common/telemetry.js.map +1 -1
  404. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  405. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  406. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  407. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  408. package/esm/vs/platform/theme/common/colors/editorColors.js.map +1 -1
  409. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  410. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  411. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  412. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  413. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  414. package/esm/vs/platform/theme/common/colors/miscColors.js.map +1 -1
  415. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  416. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  417. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  418. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  419. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js +12 -0
  420. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -0
  421. package/esm/vs/platform/webWorker/browser/webWorkerService.js +7 -0
  422. package/esm/vs/platform/webWorker/browser/webWorkerService.js.map +1 -0
  423. package/esm/vs/{base/browser/webWorkerFactory.js → platform/webWorker/browser/webWorkerServiceImpl.js} +47 -66
  424. package/esm/vs/platform/webWorker/browser/webWorkerServiceImpl.js.map +1 -0
  425. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  426. package/monaco.d.ts +9 -5
  427. package/package.json +2 -2
  428. package/esm/vs/base/browser/webWorkerFactory.js.map +0 -1
  429. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js +0 -82
  430. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/observableCodeEditor.ts","vs/editor/browser/observableCodeEditor.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAe,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACxG,OAAO,EAAE,aAAa,EAAoD,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE/Q,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAKxD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAEnD;;EAEE;AACF,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACvD,OAAO,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,OAAO,oBAAqB,SAAQ,UAAU;aAC3B,SAAI,GAAG,IAAI,GAAG,EAAqC,CAAC;IAE5E;;MAEE;IACK,MAAM,CAAC,GAAG,CAAC,MAAmB;QACpC,IAAI,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC1C,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;gBAClC,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,IAAI,EAAE,CAAC;oBACV,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACzC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,CAAC,CAAC,OAAO,EAAE,CAAC;gBACb,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAKO,YAAY;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE;gBACnD,uCAAuC;YACxC,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEO,UAAU;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAoB,CAAC;YACpC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,CAAC,CAAC,MAAM,EAAE,CAAC;QACZ,CAAC;IACF,CAAC;IAED,YAAoC,MAAmB;QACtD,KAAK,EAAE,CAAC;QAD2B,WAAM,GAAN,MAAM,CAAa;QAEtD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,iCAAuB,CAAC,CAAC;QACtI,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAuD,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC;QACzK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,mBAAmB,CACrC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAC9F,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,IAAI,CACnC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,WAAW,CAC3B,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EACxE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,IAAI,IAAI,CAC9E,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YAC9C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO;gBACN,OAAO;oBACN,EAAE,CAAC,OAAO,EAAE,CAAC;oBACb,EAAE,CAAC,OAAO,EAAE,CAAC;gBACd,CAAC;aACD,CAAC;QACH,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YAClD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;gBACN,OAAO;oBACN,EAAE,CAAC,OAAO,EAAE,CAAC;oBACb,EAAE,CAAC,OAAO,EAAE,CAAC;gBACd,CAAC;aACD,CAAC;QACH,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YAClD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;gBACjD,CAAC,CAAC,SAAS,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE;gBAC/C,CAAC,CAAC,SAAS,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YACH,OAAO;gBACN,OAAO;oBACN,EAAE,CAAC,OAAO,EAAE,CAAC;oBACb,EAAE,CAAC,OAAO,EAAE,CAAC;gBACd,CAAC;aACD,CAAC;QACH,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAClC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAC5F,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACpB,IAAI,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAChC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACF,CAAC;QACF,CAAC,CACD,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrI,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/J,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC;QAClJ,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAgB,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC;QACrH,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAS,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAc,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACtG,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC7E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QAC3F,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QACjH,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAEnH,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;YAChD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAClE,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;YACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;gBACjG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE;YACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACV,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC;IAIM,WAAW,CAAI,EAA4B;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC;YACJ,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,OAAO,SAAc,CAAC;YAAC,CAAC;YACnC,OAAO,EAAE,CAAC,IAAI,CAAC,mBAAoB,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAEO,YAAY;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;YACzG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IA+CM,SAAS,CAAyB,EAAK,EAAE,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE;QACvF,OAAO,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;YAC/E,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;gBAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;QACzC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IAEM,cAAc,CAAC,WAAiD;QACtE,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAC;QACxE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,0BAA0B,WAAW,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE;YAC/G,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,GAAG,CAAC;YACL,OAAO,EAAE,GAAG,EAAE;gBACb,qBAAqB,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;SACD,CAAC,CAAC;QACH,OAAO,CAAC,CAAC;IACV,CAAC;IAIM,mBAAmB,CAAC,MAAgC;QAC1D,MAAM,eAAe,GAAG,yBAAyB,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAmB;YACzB,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO;YAChC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe;YAC5B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE;SAC9D,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,GAAG,EAAE;YACxB,CAAC,CAAC,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,mBAAmB,CAAC,MAAgC;QAC1D,MAAM,eAAe,GAAG,yBAAyB,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,GAAmB;YACzB,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO;YAChC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxC,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe;YAC5B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;SAC/C,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,GAAG,EAAE;YACxB,CAAC,CAAC,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,sBAAsB,CAAC,SAAiC,EAAE,KAAsB;QACtF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClG,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE3G,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;YAC1D,MAAM,CAAC,GAAG,CACT,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,KAAK,CAAC,eAAe,GAAG,SAAS;gBACrE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC,CACxD;kBACC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAC7B,CAAC;YACF,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACnI,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,eAAe,CAAC,QAAsC,EAAE,KAAsB;QACpF,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,mBAAmB,CAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpL,MAAM,eAAe,GAAG,0BAA0B,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAmB;YACzB,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO;YACzB,WAAW,EAAE,GAAG,EAAE;gBACjB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,+CAAuC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACvG,CAAC;YACD,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe;YAC5B,mBAAmB,EAAE,KAAK;YAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE;gBACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChC,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;oBAC3D,sCAAsC;oBACtC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBACtH,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBACvF,CAAC;YACF,CAAC;SACD,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,MAAM,CAAC;IACf,CAAC;IAID,eAAe,CAAC,SAAiD,EAAE,KAAsB;QACxF,MAAM,SAAS,GAAG,eAAe,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAClE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YACrC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACzB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,CAAC;QAEJ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YACtC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,SAAS,CAAC;IAClB,CAAC;IAID,4BAA4B,CAAC,QAAiD;QAC7E,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,GAAG,GAAG,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5E,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACb,CAAC;YAED,IAAI,CAAC,SAAS,kCAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErD,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACJ,CAAC;IAID,wBAAwB,CAAC,UAA+C;QACvE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACb,CAAC;YAED,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,8BAA8B,CAAC,UAA8C;QAC5E,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,UAAU,YAAY,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErF,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,OAAO,CAAC;QAChB,CAAC,CAAC,CAAC;IACJ,CAAC","file":"observableCodeEditor.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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/observableCodeEditor.ts","vs/editor/browser/observableCodeEditor.ts"],"names":[],"mappings":"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","file":"observableCodeEditor.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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, IReader, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableSignalFromEvent, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\t\tthis._onDidChangeViewZones = observableSignalFromEvent(this, this.editor.onDidChangeViewZones);\n\t\tthis._onDidHiddenAreasChanged = observableSignalFromEvent(this, this.editor.onDidChangeHiddenAreas);\n\t\tthis._onDidLineHeightChanged = observableSignalFromEvent(this, this.editor.onDidChangeLineHeight);\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\t/**\n\t * Uses an approximation if the exact position cannot be determined.\n\t */\n\tgetLeftOfPosition(position: Position, reader: IReader | undefined): number {\n\t\tthis.layoutInfo.read(reader);\n\t\tthis.value.read(reader);\n\n\t\tlet offset = this.editor.getOffsetForColumn(position.lineNumber, position.column);\n\t\tif (offset === -1) {\n\t\t\t// approximation\n\t\t\tconst typicalHalfwidthCharacterWidth = this.editor.getOption(EditorOption.fontInfo).typicalHalfwidthCharacterWidth;\n\t\t\tconst approximation = position.column * typicalHalfwidthCharacterWidth;\n\t\t\toffset = approximation;\n\t\t}\n\t\treturn offset;\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n\tprivate readonly _onDidChangeViewZones;\n\tprivate readonly _onDidHiddenAreasChanged;\n\tprivate readonly _onDidLineHeightChanged;\n\n\t/**\n\t * Get the vertical position (top offset) for the line's bottom w.r.t. to the first line.\n\t */\n\tobserveTopForLineNumber(lineNumber: number): IObservable<number> {\n\t\treturn derived(reader => {\n\t\t\tthis.layoutInfo.read(reader);\n\t\t\tthis._onDidChangeViewZones.read(reader);\n\t\t\tthis._onDidHiddenAreasChanged.read(reader);\n\t\t\tthis._onDidLineHeightChanged.read(reader);\n\t\t\tthis._versionId.read(reader);\n\t\t\treturn this.editor.getTopForLineNumber(lineNumber);\n\t\t});\n\t}\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, IReader, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableSignalFromEvent, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\t\tthis._onDidChangeViewZones = observableSignalFromEvent(this, this.editor.onDidChangeViewZones);\n\t\tthis._onDidHiddenAreasChanged = observableSignalFromEvent(this, this.editor.onDidChangeHiddenAreas);\n\t\tthis._onDidLineHeightChanged = observableSignalFromEvent(this, this.editor.onDidChangeLineHeight);\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\t/**\n\t * Uses an approximation if the exact position cannot be determined.\n\t */\n\tgetLeftOfPosition(position: Position, reader: IReader | undefined): number {\n\t\tthis.layoutInfo.read(reader);\n\t\tthis.value.read(reader);\n\n\t\tlet offset = this.editor.getOffsetForColumn(position.lineNumber, position.column);\n\t\tif (offset === -1) {\n\t\t\t// approximation\n\t\t\tconst typicalHalfwidthCharacterWidth = this.editor.getOption(EditorOption.fontInfo).typicalHalfwidthCharacterWidth;\n\t\t\tconst approximation = position.column * typicalHalfwidthCharacterWidth;\n\t\t\toffset = approximation;\n\t\t}\n\t\treturn offset;\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n\tprivate readonly _onDidChangeViewZones;\n\tprivate readonly _onDidHiddenAreasChanged;\n\tprivate readonly _onDidLineHeightChanged;\n\n\t/**\n\t * Get the vertical position (top offset) for the line's bottom w.r.t. to the first line.\n\t */\n\tobserveTopForLineNumber(lineNumber: number): IObservable<number> {\n\t\treturn derived(reader => {\n\t\t\tthis.layoutInfo.read(reader);\n\t\t\tthis._onDidChangeViewZones.read(reader);\n\t\t\tthis._onDidHiddenAreasChanged.read(reader);\n\t\t\tthis._onDidLineHeightChanged.read(reader);\n\t\t\tthis._versionId.read(reader);\n\t\t\treturn this.editor.getTopForLineNumber(lineNumber);\n\t\t});\n\t}\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { registerSingleton } from '../../../platform/instantiation/common/extensions.js';
6
+ import { IEditorWorkerService } from '../../common/services/editorWorker.js';
7
+ import { EditorWorkerService } from './editorWorkerService.js';
8
+ registerSingleton(IEditorWorkerService, EditorWorkerService, 0 /* InstantiationType.Eager */);
9
+ //# sourceMappingURL=contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/contribution.ts","vs/editor/browser/services/contribution.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,iBAAiB,EAAqB,MAAM,sDAAsD,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,iBAAiB,CAAC,oBAAoB,EAAE,mBAAmB,kCAAqG,CAAC","file":"contribution.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 { registerSingleton, InstantiationType } from '../../../platform/instantiation/common/extensions.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { EditorWorkerService } from './editorWorkerService.js';\n\nregisterSingleton(IEditorWorkerService, EditorWorkerService, InstantiationType.Eager /* registers link detection and word based suggestions for any document */);\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 { registerSingleton, InstantiationType } from '../../../platform/instantiation/common/extensions.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { EditorWorkerService } from './editorWorkerService.js';\n\nregisterSingleton(IEditorWorkerService, EditorWorkerService, InstantiationType.Eager /* registers link detection and word based suggestions for any document */);\n"]}
@@ -14,7 +14,8 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  import { timeout } from '../../../base/common/async.js';
15
15
  import { Disposable } from '../../../base/common/lifecycle.js';
16
16
  import { logOnceWebWorkerWarning } from '../../../base/common/worker/webWorker.js';
17
- import { createWebWorker } from '../../../base/browser/webWorkerFactory.js';
17
+ import { WebWorkerDescriptor } from '../../../platform/webWorker/browser/webWorkerDescriptor.js';
18
+ import { IWebWorkerService } from '../../../platform/webWorker/browser/webWorkerService.js';
18
19
  import { Range } from '../../common/core/range.js';
19
20
  import { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';
20
21
  import { EditorWorker } from '../../common/services/editorWebWorker.js';
@@ -32,6 +33,7 @@ import { mainWindow } from '../../../base/browser/window.js';
32
33
  import { WindowIntervalTimer } from '../../../base/browser/dom.js';
33
34
  import { WorkerTextModelSyncClient } from '../../common/services/textModelSync/textModelSync.impl.js';
34
35
  import { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';
36
+ import { FileAccess } from '../../../base/common/network.js';
35
37
  /**
36
38
  * Stop the worker if it was not needed for 5 min.
37
39
  */
@@ -47,11 +49,17 @@ function canSyncModel(modelService, resource) {
47
49
  return true;
48
50
  }
49
51
  let EditorWorkerService = class EditorWorkerService extends Disposable {
50
- constructor(workerDescriptor, modelService, configurationService, logService, _languageConfigurationService, languageFeaturesService) {
52
+ constructor(modelService, configurationService, logService, _languageConfigurationService, languageFeaturesService, _webWorkerService) {
51
53
  super();
52
54
  this._languageConfigurationService = _languageConfigurationService;
55
+ this._webWorkerService = _webWorkerService;
53
56
  this._modelService = modelService;
54
- this._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService));
57
+ const workerDescriptor = new WebWorkerDescriptor({
58
+ esmModuleLocation: () => FileAccess.asBrowserUri('vs/editor/common/services/editorWebWorkerMain.js'),
59
+ esmModuleLocationBundler: () => new URL('../../common/services/editorWebWorkerMain.js?workerModule', import.meta.url),
60
+ label: 'editorWorkerService'
61
+ });
62
+ this._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService, this._webWorkerService));
55
63
  this._logService = logService;
56
64
  // register default link-provider and default completions-provider
57
65
  this._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {
@@ -150,11 +158,12 @@ let EditorWorkerService = class EditorWorkerService extends Disposable {
150
158
  }
151
159
  };
152
160
  EditorWorkerService = __decorate([
153
- __param(1, IModelService),
154
- __param(2, ITextResourceConfigurationService),
155
- __param(3, ILogService),
156
- __param(4, ILanguageConfigurationService),
157
- __param(5, ILanguageFeaturesService)
161
+ __param(0, IModelService),
162
+ __param(1, ITextResourceConfigurationService),
163
+ __param(2, ILogService),
164
+ __param(3, ILanguageConfigurationService),
165
+ __param(4, ILanguageFeaturesService),
166
+ __param(5, IWebWorkerService)
158
167
  ], EditorWorkerService);
159
168
  export { EditorWorkerService };
160
169
  class WordBasedCompletionItemProvider {
@@ -220,10 +229,11 @@ class WordBasedCompletionItemProvider {
220
229
  }
221
230
  }
222
231
  let WorkerManager = class WorkerManager extends Disposable {
223
- constructor(_workerDescriptor, modelService) {
232
+ constructor(_workerDescriptor, modelService, webWorkerService) {
224
233
  super();
225
234
  this._workerDescriptor = _workerDescriptor;
226
235
  this._modelService = modelService;
236
+ this._webWorkerService = webWorkerService;
227
237
  this._editorWorkerClient = null;
228
238
  this._lastWorkerUsedTime = (new Date()).getTime();
229
239
  const stopWorkerInterval = this._register(new WindowIntervalTimer());
@@ -267,13 +277,14 @@ let WorkerManager = class WorkerManager extends Disposable {
267
277
  withWorker() {
268
278
  this._lastWorkerUsedTime = (new Date()).getTime();
269
279
  if (!this._editorWorkerClient) {
270
- this._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService);
280
+ this._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService, this._webWorkerService);
271
281
  }
272
282
  return Promise.resolve(this._editorWorkerClient);
273
283
  }
274
284
  };
275
285
  WorkerManager = __decorate([
276
- __param(1, IModelService)
286
+ __param(1, IModelService),
287
+ __param(2, IWebWorkerService)
277
288
  ], WorkerManager);
278
289
  class SynchronousWorkerClient {
279
290
  constructor(instance) {
@@ -288,11 +299,12 @@ class SynchronousWorkerClient {
288
299
  }
289
300
  }
290
301
  let EditorWorkerClient = class EditorWorkerClient extends Disposable {
291
- constructor(_workerDescriptorOrWorker, keepIdleModels, modelService) {
302
+ constructor(_workerDescriptorOrWorker, keepIdleModels, modelService, webWorkerService) {
292
303
  super();
293
304
  this._workerDescriptorOrWorker = _workerDescriptorOrWorker;
294
305
  this._disposed = false;
295
306
  this._modelService = modelService;
307
+ this._webWorkerService = webWorkerService;
296
308
  this._keepIdleModels = keepIdleModels;
297
309
  this._worker = null;
298
310
  this._modelManager = null;
@@ -304,7 +316,7 @@ let EditorWorkerClient = class EditorWorkerClient extends Disposable {
304
316
  _getOrCreateWorker() {
305
317
  if (!this._worker) {
306
318
  try {
307
- this._worker = this._register(createWebWorker(this._workerDescriptorOrWorker));
319
+ this._worker = this._register(this._webWorkerService.createWorkerClient(this._workerDescriptorOrWorker));
308
320
  EditorWorkerHost.setChannel(this._worker, this._createEditorWorkerHost());
309
321
  }
310
322
  catch (err) {
@@ -360,7 +372,8 @@ let EditorWorkerClient = class EditorWorkerClient extends Disposable {
360
372
  }
361
373
  };
362
374
  EditorWorkerClient = __decorate([
363
- __param(2, IModelService)
375
+ __param(2, IModelService),
376
+ __param(3, IWebWorkerService)
364
377
  ], EditorWorkerClient);
365
378
  export { EditorWorkerClient };
366
379
  //# sourceMappingURL=editorWorkerService.js.map