monaco-editor-core 0.57.0 → 0.58.0-dev-20261104

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 (508) 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 +38 -6
  18. package/esm/vs/base/browser/browser.js +8 -0
  19. package/esm/vs/base/browser/browser.js.map +1 -1
  20. package/esm/vs/base/browser/contextmenu.js +8 -1
  21. package/esm/vs/base/browser/contextmenu.js.map +1 -1
  22. package/esm/vs/base/browser/dom.js +34 -5
  23. package/esm/vs/base/browser/dom.js.map +1 -1
  24. package/esm/vs/base/browser/dompurify/dompurify.js +2457 -2640
  25. package/esm/vs/base/browser/markdownRenderer.js +48 -21
  26. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  27. package/esm/vs/base/browser/pixelRatio.js +3 -2
  28. package/esm/vs/base/browser/pixelRatio.js.map +1 -1
  29. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js +5 -2
  30. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
  31. package/esm/vs/base/browser/ui/actionbar/actionbar.js +7 -2
  32. package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
  33. package/esm/vs/base/browser/ui/animations/animations.js +68 -40
  34. package/esm/vs/base/browser/ui/animations/animations.js.map +1 -1
  35. package/esm/vs/base/browser/ui/button/button.js +7 -0
  36. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  37. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  38. package/esm/vs/base/browser/ui/contextview/contextview.css +15 -0
  39. package/esm/vs/base/browser/ui/contextview/contextview.js +266 -40
  40. package/esm/vs/base/browser/ui/contextview/contextview.js.map +1 -1
  41. package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js +72 -0
  42. package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js.map +1 -0
  43. package/esm/vs/base/browser/ui/dialog/dialog.css +5 -0
  44. package/esm/vs/base/browser/ui/dropdown/dropdown.js +2 -1
  45. package/esm/vs/base/browser/ui/dropdown/dropdown.js.map +1 -1
  46. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +1 -0
  47. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
  48. package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
  49. package/esm/vs/base/browser/ui/list/listView.js +87 -15
  50. package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
  51. package/esm/vs/base/browser/ui/list/listWidget.js +37 -15
  52. package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
  53. package/esm/vs/base/browser/ui/menu/menu.js +189 -52
  54. package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
  55. package/esm/vs/base/browser/ui/radio/radio.css +11 -0
  56. package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +2 -1
  57. package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
  58. package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
  59. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +14 -8
  60. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
  61. package/esm/vs/base/browser/ui/splitview/splitview.js +11 -7
  62. package/esm/vs/base/browser/ui/splitview/splitview.js.map +1 -1
  63. package/esm/vs/base/browser/ui/toggle/switch.css +16 -7
  64. package/esm/vs/base/browser/ui/toggle/switch.js +9 -6
  65. package/esm/vs/base/browser/ui/toggle/switch.js.map +1 -1
  66. package/esm/vs/base/browser/ui/toolbar/toolbar.css +1 -2
  67. package/esm/vs/base/browser/ui/toolbar/toolbar.js +85 -38
  68. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  69. package/esm/vs/base/browser/ui/tree/abstractTree.js +48 -9
  70. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  71. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +10 -1
  72. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  73. package/esm/vs/base/browser/ui/tree/objectTree.js +3 -0
  74. package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
  75. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  76. package/esm/vs/base/common/actions.js +8 -2
  77. package/esm/vs/base/common/actions.js.map +1 -1
  78. package/esm/vs/base/common/arrays.js +4 -4
  79. package/esm/vs/base/common/arrays.js.map +1 -1
  80. package/esm/vs/base/common/async.js +12 -8
  81. package/esm/vs/base/common/async.js.map +1 -1
  82. package/esm/vs/base/common/cancellation.js +25 -0
  83. package/esm/vs/base/common/cancellation.js.map +1 -1
  84. package/esm/vs/base/common/codicons.js +2 -0
  85. package/esm/vs/base/common/codicons.js.map +1 -1
  86. package/esm/vs/base/common/codiconsLibrary.js +2 -0
  87. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  88. package/esm/vs/base/common/color.js +1 -1
  89. package/esm/vs/base/common/color.js.map +1 -1
  90. package/esm/vs/base/common/diff/diff.js +60 -1
  91. package/esm/vs/base/common/diff/diff.js.map +1 -1
  92. package/esm/vs/base/common/event.js +1 -1
  93. package/esm/vs/base/common/event.js.map +1 -1
  94. package/esm/vs/base/common/glob.js +1 -0
  95. package/esm/vs/base/common/glob.js.map +1 -1
  96. package/esm/vs/base/common/htmlContent.js +74 -12
  97. package/esm/vs/base/common/htmlContent.js.map +1 -1
  98. package/esm/vs/base/common/json.js +19 -0
  99. package/esm/vs/base/common/json.js.map +1 -0
  100. package/esm/vs/base/common/network.js +16 -0
  101. package/esm/vs/base/common/network.js.map +1 -1
  102. package/esm/vs/base/common/resources.js +14 -2
  103. package/esm/vs/base/common/resources.js.map +1 -1
  104. package/esm/vs/base/common/strings.js +1 -1
  105. package/esm/vs/base/common/strings.js.map +1 -1
  106. package/esm/vs/base/common/uri.js +2 -2
  107. package/esm/vs/base/common/uri.js.map +1 -1
  108. package/esm/vs/editor/browser/config/editorConfiguration.js +1 -1
  109. package/esm/vs/editor/browser/config/fontMeasurements.js +19 -6
  110. package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
  111. package/esm/vs/editor/browser/controller/dragScrolling.js +3 -3
  112. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +11 -5
  113. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  114. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -38
  115. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  116. package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js +3 -3
  117. package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +6 -6
  118. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +12 -10
  119. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  120. package/esm/vs/editor/browser/controller/mouseHandler.js +7 -7
  121. package/esm/vs/editor/browser/controller/mouseTarget.js +3 -3
  122. package/esm/vs/editor/browser/coreCommands.js +2 -2
  123. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  124. package/esm/vs/editor/browser/editorMarkdownSanitizer.js +19 -0
  125. package/esm/vs/editor/browser/editorMarkdownSanitizer.js.map +1 -0
  126. package/esm/vs/editor/browser/gpu/rectangleRenderer.js +1 -1
  127. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
  128. package/esm/vs/editor/browser/observableCodeEditor.js +1 -1
  129. package/esm/vs/editor/browser/services/editorWorkerService.js +3 -2
  130. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  131. package/esm/vs/editor/browser/services/openerService.js +6 -2
  132. package/esm/vs/editor/browser/services/openerService.js.map +1 -1
  133. package/esm/vs/editor/browser/view/domLineBreaksComputer.js +34 -11
  134. package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
  135. package/esm/vs/editor/browser/view/viewController.js +7 -7
  136. package/esm/vs/editor/browser/view/viewController.js.map +1 -1
  137. package/esm/vs/editor/browser/view/viewLayer.js +1 -1
  138. package/esm/vs/editor/browser/view/viewOverlays.js +4 -4
  139. package/esm/vs/editor/browser/view.js +5 -5
  140. package/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.js +1 -1
  141. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +11 -3
  142. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  143. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +6 -6
  144. package/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js +12 -12
  145. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +9 -2
  146. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
  147. package/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js +2 -2
  148. package/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js +2 -2
  149. package/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js +2 -2
  150. package/esm/vs/editor/browser/viewParts/margin/margin.js +2 -2
  151. package/esm/vs/editor/browser/viewParts/minimap/minimap.js +6 -6
  152. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +9 -2
  153. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
  154. package/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js +5 -5
  155. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +3 -3
  156. package/esm/vs/editor/browser/viewParts/rulers/rulers.js +2 -2
  157. package/esm/vs/editor/browser/viewParts/rulersGpu/rulersGpu.js +1 -1
  158. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +3 -3
  159. package/esm/vs/editor/browser/viewParts/selections/selections.js +2 -2
  160. package/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js +2 -2
  161. package/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js +6 -6
  162. package/esm/vs/editor/browser/viewParts/viewLines/viewLineOptions.js +5 -5
  163. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +11 -11
  164. package/esm/vs/editor/browser/viewParts/viewLinesGpu/viewLinesGpu.js +1 -1
  165. package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +2 -2
  166. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +4 -4
  167. package/esm/vs/editor/browser/viewParts/wordWrapIndicator/wordWrapIndicator.js +2 -2
  168. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +22 -21
  169. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  170. package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
  171. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +18 -18
  172. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
  173. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js +3 -3
  174. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +10 -10
  175. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js.map +1 -1
  176. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js +2 -2
  177. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +4 -4
  178. package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js +21 -3
  179. package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js.map +1 -1
  180. package/esm/vs/editor/browser/widget/diffEditor/features/gutterFeature.js +1 -1
  181. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +10 -10
  182. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  183. package/esm/vs/editor/browser/widget/diffEditor/features/overviewRulerFeature.js +1 -1
  184. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  185. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  186. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  187. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js +2 -2
  188. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js.map +1 -1
  189. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js +21 -2
  190. package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js.map +1 -1
  191. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -2
  192. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +11 -3
  193. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  194. package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js +1 -0
  195. package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js.map +1 -1
  196. package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js +64 -0
  197. package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js.map +1 -0
  198. package/esm/vs/editor/common/config/editorConfigurationSchema.js +68 -58
  199. package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
  200. package/esm/vs/editor/common/config/editorOptions.js +560 -500
  201. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  202. package/esm/vs/editor/common/core/editorColorRegistry.js +71 -71
  203. package/esm/vs/editor/common/core/edits/textEdit.js +16 -0
  204. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  205. package/esm/vs/editor/common/cursor/cursor.js +20 -10
  206. package/esm/vs/editor/common/cursor/cursor.js.map +1 -1
  207. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +67 -14
  208. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
  209. package/esm/vs/editor/common/cursor/cursorTypeOperations.js +2 -2
  210. package/esm/vs/editor/common/cursor/cursorTypeOperations.js.map +1 -1
  211. package/esm/vs/editor/common/cursorCommon.js +22 -21
  212. package/esm/vs/editor/common/cursorCommon.js.map +1 -1
  213. package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js +21 -8
  214. package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js.map +1 -1
  215. package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
  216. package/esm/vs/editor/common/diff/externalLinesDiffComputer.js +38 -26
  217. package/esm/vs/editor/common/diff/externalLinesDiffComputer.js.map +1 -1
  218. package/esm/vs/editor/common/diff/rangeMapping.js +11 -1
  219. package/esm/vs/editor/common/diff/rangeMapping.js.map +1 -1
  220. package/esm/vs/editor/common/diff/verifyLinesDiff.js +28 -0
  221. package/esm/vs/editor/common/diff/verifyLinesDiff.js.map +1 -0
  222. package/esm/vs/editor/common/editorContextKeys.js +53 -53
  223. package/esm/vs/editor/common/languages/languageConfiguration.js +8 -0
  224. package/esm/vs/editor/common/languages/languageConfiguration.js.map +1 -1
  225. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  226. package/esm/vs/editor/common/languages.js +56 -56
  227. package/esm/vs/editor/common/model/editStack.js +1 -1
  228. package/esm/vs/editor/common/services/editorWebWorker.js +27 -6
  229. package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
  230. package/esm/vs/editor/common/services/editorWorker.js.map +1 -1
  231. package/esm/vs/editor/common/services/languageService.js +6 -4
  232. package/esm/vs/editor/common/services/languageService.js.map +1 -1
  233. package/esm/vs/editor/common/services/markerDecorationsService.js +21 -2
  234. package/esm/vs/editor/common/services/markerDecorationsService.js.map +1 -1
  235. package/esm/vs/editor/common/standalone/standaloneEnums.js +100 -97
  236. package/esm/vs/editor/common/standalone/standaloneEnums.js.map +1 -1
  237. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  238. package/esm/vs/editor/common/textModelEditSource.js +9 -0
  239. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  240. package/esm/vs/editor/common/viewLayout/viewLayout.js +16 -16
  241. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  242. package/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js +1 -1
  243. package/esm/vs/editor/common/viewModel/viewModelImpl.js +19 -19
  244. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  245. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  246. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +9 -9
  247. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  248. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  249. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +23 -20
  250. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  251. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  252. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  253. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  254. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  255. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  256. package/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js +1 -1
  257. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  258. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  259. package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +25 -10
  260. package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
  261. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  262. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  263. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerContribution.js +1 -1
  264. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +3 -3
  265. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  266. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerParticipant.js +1 -1
  267. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  268. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +17 -17
  269. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
  270. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  271. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  272. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +39 -39
  273. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  274. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  275. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  276. package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js +19 -0
  277. package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js.map +1 -0
  278. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +26 -18
  279. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js.map +1 -1
  280. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  281. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js.map +1 -1
  282. package/esm/vs/editor/contrib/find/browser/findController.js +18 -18
  283. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  284. package/esm/vs/editor/contrib/find/browser/findModel.js +6 -6
  285. package/esm/vs/editor/contrib/find/browser/findWidget.js +40 -40
  286. package/esm/vs/editor/contrib/find/browser/findWidget.js.map +1 -1
  287. package/esm/vs/editor/contrib/folding/browser/folding.js +23 -23
  288. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  289. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  290. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  291. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  292. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  293. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  294. package/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +3 -3
  295. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +2 -2
  296. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +4 -4
  297. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js.map +1 -1
  298. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  299. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  300. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  301. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  302. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  303. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +9 -3
  304. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
  305. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +2 -2
  306. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -1
  307. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  308. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  309. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  310. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  311. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -8
  312. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  313. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +6 -6
  314. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  315. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  316. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +5 -5
  317. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +9 -9
  318. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js +3 -3
  319. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js.map +1 -1
  320. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
  321. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
  322. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -7
  323. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  324. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +6 -5
  325. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js.map +1 -1
  326. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +1 -1
  327. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
  328. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +7 -7
  329. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  330. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
  331. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
  332. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  333. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  334. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  335. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  336. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +5 -4
  337. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js.map +1 -1
  338. package/esm/vs/editor/contrib/links/browser/links.js +16 -15
  339. package/esm/vs/editor/contrib/links/browser/links.js.map +1 -1
  340. package/esm/vs/editor/contrib/longLinesHelper/browser/longLinesHelper.js +1 -1
  341. package/esm/vs/editor/contrib/message/browser/messageController.js +16 -12
  342. package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
  343. package/esm/vs/editor/contrib/middleScroll/browser/middleScrollController.js +1 -1
  344. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +91 -55
  345. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js.map +1 -1
  346. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  347. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js +3 -3
  348. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js.map +1 -1
  349. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +6 -4
  350. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  351. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  352. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  353. package/esm/vs/editor/contrib/placeholderText/browser/placeholderTextContribution.js +1 -1
  354. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +1 -1
  355. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +12 -12
  356. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  357. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +3 -3
  358. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  359. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  360. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +6 -6
  361. package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +23 -13
  362. package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js.map +1 -1
  363. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +5 -5
  364. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +5 -5
  365. package/esm/vs/editor/contrib/snippet/browser/snippetSession.js +2 -2
  366. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  367. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  368. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +10 -8
  369. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  370. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.js +1 -1
  371. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js +2 -2
  372. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +6 -6
  373. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
  374. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +15 -15
  375. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +2 -2
  376. package/esm/vs/editor/contrib/suggest/browser/suggestModel.js +11 -11
  377. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +27 -27
  378. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +8 -6
  379. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  380. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +5 -5
  381. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +3 -3
  382. package/esm/vs/editor/contrib/suggest/browser/wordDistance.js +1 -1
  383. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  384. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  385. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  386. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  387. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +27 -27
  388. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +9 -9
  389. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  390. package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js +1 -1
  391. package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js.map +1 -1
  392. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +50 -14
  393. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
  394. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +6 -6
  395. package/esm/vs/editor/editor.api.d.ts +133 -98
  396. package/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js +1 -1
  397. package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js +5 -3
  398. package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js.map +1 -1
  399. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +15 -1
  400. package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
  401. package/esm/vs/nls.js.map +1 -1
  402. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +72 -66
  403. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js.map +1 -1
  404. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  405. package/esm/vs/platform/actionWidget/browser/actionList.js +434 -136
  406. package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
  407. package/esm/vs/platform/actionWidget/browser/actionWidget.css +74 -4
  408. package/esm/vs/platform/actionWidget/browser/actionWidget.js +24 -26
  409. package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
  410. package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js +16 -0
  411. package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js.map +1 -0
  412. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +15 -17
  413. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  414. package/esm/vs/platform/actions/browser/toolbar.js +25 -12
  415. package/esm/vs/platform/actions/browser/toolbar.js.map +1 -1
  416. package/esm/vs/platform/actions/common/actions.js +4 -2
  417. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  418. package/esm/vs/platform/actions/common/menuService.js +15 -8
  419. package/esm/vs/platform/actions/common/menuService.js.map +1 -1
  420. package/esm/vs/platform/configuration/common/configuration.js +3 -1
  421. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  422. package/esm/vs/platform/configuration/common/configurationModels.js +16 -11
  423. package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
  424. package/esm/vs/platform/configuration/common/configurationRegistry.js +29 -27
  425. package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
  426. package/esm/vs/platform/configuration/common/configurations.js +13 -1
  427. package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
  428. package/esm/vs/platform/contextkey/browser/contextKeyService.js +2 -2
  429. package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
  430. package/esm/vs/platform/contextkey/common/contextkey.js +28 -14
  431. package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
  432. package/esm/vs/platform/contextkey/common/contextkeys.js +10 -10
  433. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  434. package/esm/vs/platform/contextview/browser/contextMenuHandler.js +17 -4
  435. package/esm/vs/platform/contextview/browser/contextMenuHandler.js.map +1 -1
  436. package/esm/vs/platform/contextview/browser/contextMenuService.js +1 -1
  437. package/esm/vs/platform/contextview/browser/contextMenuService.js.map +1 -1
  438. package/esm/vs/platform/contextview/browser/contextView.js.map +1 -1
  439. package/esm/vs/platform/contextview/browser/contextViewService.js +7 -2
  440. package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
  441. package/esm/vs/platform/editor/common/editor.js +17 -0
  442. package/esm/vs/platform/editor/common/editor.js.map +1 -1
  443. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  444. package/esm/vs/platform/hover/browser/hoverService.js +6 -3
  445. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  446. package/esm/vs/platform/hover/browser/hoverWidget.js +38 -6
  447. package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
  448. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +32 -5
  449. package/esm/vs/platform/hover/browser/updatableHoverWidget.js.map +1 -1
  450. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -1
  451. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  452. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
  453. package/esm/vs/platform/keybinding/common/keybindingResolver.js +1 -1
  454. package/esm/vs/platform/keybinding/common/keybindingResolver.js.map +1 -1
  455. package/esm/vs/platform/list/browser/listService.js +27 -27
  456. package/esm/vs/platform/markers/common/markerService.js +11 -8
  457. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  458. package/esm/vs/platform/markers/common/markers.js +6 -6
  459. package/esm/vs/platform/markers/common/markers.js.map +1 -1
  460. package/esm/vs/platform/notification/common/notification.js.map +1 -1
  461. package/esm/vs/platform/notification/common/notificationMessage.js +37 -0
  462. package/esm/vs/platform/notification/common/notificationMessage.js.map +1 -0
  463. package/esm/vs/platform/opener/common/opener.js.map +1 -1
  464. package/esm/vs/platform/progress/common/progress.js.map +1 -1
  465. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  466. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  467. package/esm/vs/platform/quickinput/browser/media/quickInput.css +33 -2
  468. package/esm/vs/platform/quickinput/browser/quickAccess.js +7 -4
  469. package/esm/vs/platform/quickinput/browser/quickAccess.js.map +1 -1
  470. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  471. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  472. package/esm/vs/platform/quickinput/browser/quickInputController.js +65 -15
  473. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  474. package/esm/vs/platform/quickinput/browser/quickInputList.js +96 -90
  475. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  476. package/esm/vs/platform/quickinput/browser/quickInputService.js +5 -7
  477. package/esm/vs/platform/quickinput/browser/quickInputService.js.map +1 -1
  478. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  479. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  480. package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
  481. package/esm/vs/platform/quickinput/common/quickAccess.js.map +1 -1
  482. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  483. package/esm/vs/platform/storage/common/storage.js.map +1 -1
  484. package/esm/vs/platform/theme/common/colorRegistry.js +1 -0
  485. package/esm/vs/platform/theme/common/colorRegistry.js.map +1 -1
  486. package/esm/vs/platform/theme/common/colorUtils.js +11 -3
  487. package/esm/vs/platform/theme/common/colorUtils.js.map +1 -1
  488. package/esm/vs/platform/theme/common/colors/baseColors.js +19 -19
  489. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -9
  490. package/esm/vs/platform/theme/common/colors/chartsColors.js.map +1 -1
  491. package/esm/vs/platform/theme/common/colors/confettiColors.js +14 -0
  492. package/esm/vs/platform/theme/common/colors/confettiColors.js.map +1 -0
  493. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  494. package/esm/vs/platform/theme/common/colors/inputColors.js +48 -48
  495. package/esm/vs/platform/theme/common/colors/inputColors.js.map +1 -1
  496. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  497. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  498. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  499. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  500. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  501. package/esm/vs/platform/theme/common/colors/quickpickColors.js +10 -10
  502. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  503. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  504. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  505. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  506. package/monaco.d.ts +133 -98
  507. package/package.json +3 -3
  508. package/version.txt +1 -1
@@ -25,6 +25,7 @@ import { Emitter } from '../../../../base/common/event.js';
25
25
  import { isOnColorDecorator } from '../../colorPicker/browser/hoverColorPicker/hoverColorPicker.js';
26
26
  import { isModifierKey } from '../../../../base/common/keyCodes.js';
27
27
  import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';
28
+ import { isHTMLElement } from '../../../../base/browser/dom.js';
28
29
  // sticky hover widget which doesn't disappear on focus out and such
29
30
  const _sticky = false;
30
31
  let ContentHoverController = class ContentHoverController extends Disposable {
@@ -119,7 +120,8 @@ let ContentHoverController = class ContentHoverController extends Disposable {
119
120
  if (!this._contentWidget || !this._contentWidget.getDomNode().isConnected) {
120
121
  return false;
121
122
  }
122
- return isMousePositionWithinElement(this._contentWidget.getDomNode(), mouseEvent.event.posx, mouseEvent.event.posy);
123
+ return this._contentWidget.containsNode(mouseEvent.event.target)
124
+ || isMousePositionWithinElement(this._contentWidget.getDomNode(), mouseEvent.event.posx, mouseEvent.event.posy);
123
125
  }
124
126
  _onEditorMouseUp() {
125
127
  if (this._ignoreMouseEvents) {
@@ -135,6 +137,10 @@ let ContentHoverController = class ContentHoverController extends Disposable {
135
137
  return;
136
138
  }
137
139
  this._cancelScheduler();
140
+ const relatedTarget = mouseEvent.event.browserEvent.relatedTarget;
141
+ if (isHTMLElement(relatedTarget) && this._contentWidget?.containsNode(relatedTarget)) {
142
+ return;
143
+ }
138
144
  const shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);
139
145
  if (shouldKeepHoverWidgetVisible) {
140
146
  return;
@@ -213,7 +219,7 @@ let ContentHoverController = class ContentHoverController extends Disposable {
213
219
  return isContentHoverWidgetVisible && this._hoverSettings.sticky && hidingDelay > 0;
214
220
  }
215
221
  _reactToEditorMouseMove(mouseEvent) {
216
- if (shouldShowHover(this._hoverSettings.enabled, this._editor.getOption(86 /* EditorOption.multiCursorModifier */), mouseEvent)) {
222
+ if (shouldShowHover(this._hoverSettings.enabled, this._editor.getOption(87 /* EditorOption.multiCursorModifier */), mouseEvent)) {
217
223
  const contentWidget = this._getOrCreateContentWidget();
218
224
  if (contentWidget.showsOrWillShow(mouseEvent)) {
219
225
  return;
@@ -229,7 +235,7 @@ let ContentHoverController = class ContentHoverController extends Disposable {
229
235
  return;
230
236
  }
231
237
  if (this._hoverSettings.enabled === 'onKeyboardModifier'
232
- && isTriggerModifierPressed(this._editor.getOption(86 /* EditorOption.multiCursorModifier */), e)
238
+ && isTriggerModifierPressed(this._editor.getOption(87 /* EditorOption.multiCursorModifier */), e)
233
239
  && this._mouseMoveEvent) {
234
240
  if (!this._contentWidget.isVisible) {
235
241
  this._contentWidget.showsOrWillShow(this._mouseMoveEvent);
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/hover/browser/contentHoverController.ts","vs/editor/contrib/hover/browser/contentHoverController.ts"],"names":[],"mappings":"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","file":"contentHoverController.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 { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID, SHOW_OR_FOCUS_HOVER_ACTION_ID } from './hoverActionIds.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor, IEditorMouseEvent, IPartialEditorMouseEvent } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IScrollEvent } from '../../../common/editorCommon.js';\nimport { HoverStartMode, HoverStartSource } from './hoverOperation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { InlineSuggestionHintsContentWidget } from '../../inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ResultKind } from '../../../../platform/keybinding/common/keybindingResolver.js';\nimport { HoverVerbosityAction } from '../../../common/languages.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { isMousePositionWithinElement, shouldShowHover, isTriggerModifierPressed } from './hoverUtils.js';\nimport { ContentHoverWidgetWrapper } from './contentHoverWidgetWrapper.js';\nimport './hover.css';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { isOnColorDecorator } from '../../colorPicker/browser/hoverColorPicker/hoverColorPicker.js';\nimport { isModifierKey, KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\n\n// sticky hover widget which doesn't disappear on focus out and such\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\ninterface IHoverSettings {\n\treadonly enabled: 'on' | 'off' | 'onKeyboardModifier';\n\treadonly sticky: boolean;\n\treadonly hidingDelay: number;\n}\n\nexport class ContentHoverController extends Disposable implements IEditorContribution {\n\n\tprivate readonly _onHoverContentsChanged = this._register(new Emitter<void>());\n\n\tpublic static readonly ID = 'editor.contrib.contentHover';\n\n\tpublic shouldKeepOpenOnEditorMouseMoveOrLeave: boolean = false;\n\n\tprivate readonly _listenersStore = new DisposableStore();\n\n\tprivate _contentWidget: ContentHoverWidgetWrapper | undefined;\n\n\tprivate _mouseMoveEvent: IEditorMouseEvent | undefined;\n\tprivate _reactToEditorMouseMoveRunner: RunOnceScheduler;\n\n\tprivate _hoverSettings!: IHoverSettings;\n\tprivate _isMouseDown: boolean = false;\n\n\tprivate _ignoreMouseEvents: boolean = false;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IContextMenuService _contextMenuService: IContextMenuService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\t\tthis._reactToEditorMouseMoveRunner = this._register(new RunOnceScheduler(\n\t\t\t() => {\n\t\t\t\tif (this._mouseMoveEvent) {\n\t\t\t\t\tthis._reactToEditorMouseMove(this._mouseMoveEvent);\n\t\t\t\t}\n\t\t\t}, 0\n\t\t));\n\t\tthis._register(_contextMenuService.onDidShowContextMenu(() => {\n\t\t\tthis.hideContentHover();\n\t\t\tthis._ignoreMouseEvents = true;\n\t\t}));\n\t\tthis._register(_contextMenuService.onDidHideContextMenu(() => {\n\t\t\tthis._ignoreMouseEvents = false;\n\t\t}));\n\t\tthis._hookListeners();\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.hover)) {\n\t\t\t\tthis._unhookListeners();\n\t\t\t\tthis._hookListeners();\n\t\t\t}\n\t\t}));\n\t}\n\n\tstatic get(editor: ICodeEditor): ContentHoverController | null {\n\t\treturn editor.getContribution<ContentHoverController>(ContentHoverController.ID);\n\t}\n\n\tprivate _hookListeners(): void {\n\t\tconst hoverOpts = this._editor.getOption(EditorOption.hover);\n\t\tthis._hoverSettings = {\n\t\t\tenabled: hoverOpts.enabled,\n\t\t\tsticky: hoverOpts.sticky,\n\t\t\thidingDelay: hoverOpts.hidingDelay\n\t\t};\n\t\tif (hoverOpts.enabled === 'off') {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t}\n\t\tthis._listenersStore.add(this._editor.onMouseDown((e: IEditorMouseEvent) => this._onEditorMouseDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseUp(() => this._onEditorMouseUp()));\n\t\tthis._listenersStore.add(this._editor.onMouseMove((e: IEditorMouseEvent) => this._onEditorMouseMove(e)));\n\t\tthis._listenersStore.add(this._editor.onKeyDown((e: IKeyboardEvent) => this._onKeyDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseLeave((e) => this._onEditorMouseLeave(e)));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModel(() => this._cancelSchedulerAndHide()));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModelContent(() => this._cancelScheduler()));\n\t\tthis._listenersStore.add(this._editor.onDidScrollChange((e: IScrollEvent) => this._onEditorScrollChanged(e)));\n\t}\n\n\tprivate _unhookListeners(): void {\n\t\tthis._listenersStore.clear();\n\t}\n\n\tprivate _cancelSchedulerAndHide(): void {\n\t\tthis._cancelScheduler();\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _cancelScheduler() {\n\t\tthis._mouseMoveEvent = undefined;\n\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t}\n\n\tprivate _onEditorScrollChanged(e: IScrollEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (e.scrollTopChanged || e.scrollLeftChanged) {\n\t\t\tthis.hideContentHover();\n\t\t}\n\t}\n\n\tprivate _onEditorMouseDown(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = true;\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepHoverWidgetVisible(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\treturn this._isMouseOnContentHoverWidget(mouseEvent) || this._isContentWidgetResizing() || isOnColorDecorator(mouseEvent);\n\t}\n\n\tprivate _isMouseOnContentHoverWidget(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\tif (!this._contentWidget || !this._contentWidget.getDomNode().isConnected) {\n\t\t\treturn false;\n\t\t}\n\t\treturn isMousePositionWithinElement(this._contentWidget.getDomNode(), mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\tprivate _onEditorMouseUp(): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = false;\n\t}\n\n\tprivate _onEditorMouseLeave(mouseEvent: IPartialEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.shouldKeepOpenOnEditorMouseMoveOrLeave) {\n\t\t\treturn;\n\t\t}\n\t\tthis._cancelScheduler();\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepCurrentHover(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst contentWidget = this._contentWidget;\n\t\tif (!contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isHoverSticky = this._hoverSettings.sticky;\n\t\tconst isMouseOnStickyContentHoverWidget = (mouseEvent: IEditorMouseEvent, isHoverSticky: boolean): boolean => {\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\treturn isHoverSticky && isMouseOnContentHoverWidget;\n\t\t};\n\t\tconst isMouseOnColorPickerOrChoosingColor = (mouseEvent: IEditorMouseEvent): boolean => {\n\t\t\tconst isColorPickerVisible = contentWidget.isColorPickerVisible;\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\tconst isMouseOnHoverWithColorPicker = isColorPickerVisible && isMouseOnContentHoverWidget;\n\t\t\tconst isMaybeChoosingColor = isColorPickerVisible && this._isMouseDown;\n\t\t\treturn isMouseOnHoverWithColorPicker || isMaybeChoosingColor;\n\t\t};\n\t\t// TODO@aiday-mar verify if the following is necessary code\n\t\tconst isTextSelectedWithinContentHoverWidget = (mouseEvent: IEditorMouseEvent, sticky: boolean): boolean => {\n\t\t\tconst view = mouseEvent.event.browserEvent.view;\n\t\t\tif (!view) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn sticky && contentWidget.containsNode(view.document.activeElement) && !view.getSelection()?.isCollapsed;\n\t\t};\n\t\tconst isFocused = contentWidget.isFocused;\n\t\tconst isResizing = contentWidget.isResizing;\n\t\tconst isStickyAndVisibleFromKeyboard = this._hoverSettings.sticky && contentWidget.isVisibleFromKeyboard;\n\n\t\treturn this.shouldKeepOpenOnEditorMouseMoveOrLeave\n\t\t\t|| isFocused\n\t\t\t|| isResizing\n\t\t\t|| isStickyAndVisibleFromKeyboard\n\t\t\t|| isMouseOnStickyContentHoverWidget(mouseEvent, isHoverSticky)\n\t\t\t|| isMouseOnColorPickerOrChoosingColor(mouseEvent)\n\t\t\t|| isTextSelectedWithinContentHoverWidget(mouseEvent, isHoverSticky);\n\t}\n\n\tprivate _onEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\t// When the user is dragging to select text (mouse down started outside the hover widget),\n\t\t// hide the hover and suppress any new hover computation to avoid covering the selection.\n\t\tif (this._isMouseDown && !this._shouldKeepHoverWidgetVisible(mouseEvent)) {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t\treturn;\n\t\t}\n\t\tthis._mouseMoveEvent = mouseEvent;\n\t\tconst shouldKeepCurrentHover = this._shouldKeepCurrentHover(mouseEvent);\n\t\tif (shouldKeepCurrentHover) {\n\t\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t\t\treturn;\n\t\t}\n\t\tconst shouldRescheduleHoverComputation = this._shouldRescheduleHoverComputation();\n\t\tif (shouldRescheduleHoverComputation) {\n\t\t\tif (!this._reactToEditorMouseMoveRunner.isScheduled()) {\n\t\t\t\tthis._reactToEditorMouseMoveRunner.schedule(this._hoverSettings.hidingDelay);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._reactToEditorMouseMove(mouseEvent);\n\t}\n\n\tprivate _shouldRescheduleHoverComputation(): boolean {\n\t\tconst hidingDelay = this._hoverSettings.hidingDelay;\n\t\tconst isContentHoverWidgetVisible = this._contentWidget?.isVisible ?? false;\n\t\t// If the mouse is not over the widget, and if sticky is on,\n\t\t// then give it a grace period before reacting to the mouse event\n\t\treturn isContentHoverWidgetVisible && this._hoverSettings.sticky && hidingDelay > 0;\n\t}\n\n\tprivate _reactToEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (shouldShowHover(\n\t\t\tthis._hoverSettings.enabled,\n\t\t\tthis._editor.getOption(EditorOption.multiCursorModifier),\n\t\t\tmouseEvent\n\t\t)) {\n\t\t\tconst contentWidget: ContentHoverWidgetWrapper = this._getOrCreateContentWidget();\n\t\t\tif (contentWidget.showsOrWillShow(mouseEvent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _onKeyDown(e: IKeyboardEvent): void {\n\t\tif (this._ignoreMouseEvents || !this._contentWidget) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._hoverSettings.enabled === 'onKeyboardModifier'\n\t\t\t&& isTriggerModifierPressed(this._editor.getOption(EditorOption.multiCursorModifier), e)\n\t\t\t&& this._mouseMoveEvent) {\n\t\t\tif (!this._contentWidget.isVisible) {\n\t\t\t\tthis._contentWidget.showsOrWillShow(this._mouseMoveEvent);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPotentialKeyboardShortcut = this._isPotentialKeyboardShortcut(e);\n\t\tconst isModifierKeyPressed = isModifierKey(e.keyCode);\n\t\tif (isPotentialKeyboardShortcut || isModifierKeyPressed) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._contentWidget.isFocused && e.keyCode === KeyCode.Tab) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _isPotentialKeyboardShortcut(e: IKeyboardEvent): boolean {\n\t\tif (!this._editor.hasModel() || !this._contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst resolvedKeyboardEvent = this._keybindingService.softDispatch(e, this._editor.getDomNode());\n\t\tconst moreChordsAreNeeded = resolvedKeyboardEvent.kind === ResultKind.MoreChordsNeeded;\n\t\tconst isHoverAction = resolvedKeyboardEvent.kind === ResultKind.KbFound\n\t\t\t&& (resolvedKeyboardEvent.commandId === SHOW_OR_FOCUS_HOVER_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === INCREASE_HOVER_VERBOSITY_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === DECREASE_HOVER_VERBOSITY_ACTION_ID)\n\t\t\t&& this._contentWidget.isVisible;\n\t\treturn moreChordsAreNeeded || isHoverAction;\n\t}\n\n\tpublic hideContentHover(): void {\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tif (InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._contentWidget?.hide();\n\t}\n\n\tprivate _getOrCreateContentWidget(): ContentHoverWidgetWrapper {\n\t\tif (!this._contentWidget) {\n\t\t\tthis._contentWidget = this._instantiationService.createInstance(ContentHoverWidgetWrapper, this._editor);\n\t\t\tthis._listenersStore.add(this._contentWidget.onContentsChanged(() => this._onHoverContentsChanged.fire()));\n\t\t}\n\t\treturn this._contentWidget;\n\t}\n\n\tpublic showContentHover(\n\t\trange: Range,\n\t\tmode: HoverStartMode,\n\t\tsource: HoverStartSource,\n\t\tfocus: boolean\n\t): void {\n\t\tthis._getOrCreateContentWidget().startShowingAtRange(range, mode, source, focus);\n\t}\n\n\tprivate _isContentWidgetResizing(): boolean {\n\t\treturn this._contentWidget?.widget.isResizing || false;\n\t}\n\n\tpublic focusedHoverPartIndex(): number {\n\t\treturn this._getOrCreateContentWidget().focusedHoverPartIndex();\n\t}\n\n\tpublic updateHoverVerbosityLevel(action: HoverVerbosityAction, index: number, focus?: boolean): void {\n\t\tthis._getOrCreateContentWidget().updateHoverVerbosityLevel(action, index, focus);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._contentWidget?.focus();\n\t}\n\n\tpublic scrollUp(): void {\n\t\tthis._contentWidget?.scrollUp();\n\t}\n\n\tpublic scrollDown(): void {\n\t\tthis._contentWidget?.scrollDown();\n\t}\n\n\tpublic scrollLeft(): void {\n\t\tthis._contentWidget?.scrollLeft();\n\t}\n\n\tpublic scrollRight(): void {\n\t\tthis._contentWidget?.scrollRight();\n\t}\n\n\tpublic pageUp(): void {\n\t\tthis._contentWidget?.pageUp();\n\t}\n\n\tpublic pageDown(): void {\n\t\tthis._contentWidget?.pageDown();\n\t}\n\n\tpublic goToTop(): void {\n\t\tthis._contentWidget?.goToTop();\n\t}\n\n\tpublic goToBottom(): void {\n\t\tthis._contentWidget?.goToBottom();\n\t}\n\n\tpublic get isColorPickerVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isColorPickerVisible;\n\t}\n\n\tpublic get isHoverVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isVisible;\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._unhookListeners();\n\t\tthis._listenersStore.dispose();\n\t\tthis._contentWidget?.dispose();\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID, SHOW_OR_FOCUS_HOVER_ACTION_ID } from './hoverActionIds.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor, IEditorMouseEvent, IPartialEditorMouseEvent } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IScrollEvent } from '../../../common/editorCommon.js';\nimport { HoverStartMode, HoverStartSource } from './hoverOperation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { InlineSuggestionHintsContentWidget } from '../../inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ResultKind } from '../../../../platform/keybinding/common/keybindingResolver.js';\nimport { HoverVerbosityAction } from '../../../common/languages.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { isMousePositionWithinElement, shouldShowHover, isTriggerModifierPressed } from './hoverUtils.js';\nimport { ContentHoverWidgetWrapper } from './contentHoverWidgetWrapper.js';\nimport './hover.css';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { isOnColorDecorator } from '../../colorPicker/browser/hoverColorPicker/hoverColorPicker.js';\nimport { isModifierKey, KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\n\n// sticky hover widget which doesn't disappear on focus out and such\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\ninterface IHoverSettings {\n\treadonly enabled: 'on' | 'off' | 'onKeyboardModifier';\n\treadonly sticky: boolean;\n\treadonly hidingDelay: number;\n}\n\nexport class ContentHoverController extends Disposable implements IEditorContribution {\n\n\tprivate readonly _onHoverContentsChanged = this._register(new Emitter<void>());\n\n\tpublic static readonly ID = 'editor.contrib.contentHover';\n\n\tpublic shouldKeepOpenOnEditorMouseMoveOrLeave: boolean = false;\n\n\tprivate readonly _listenersStore = new DisposableStore();\n\n\tprivate _contentWidget: ContentHoverWidgetWrapper | undefined;\n\n\tprivate _mouseMoveEvent: IEditorMouseEvent | undefined;\n\tprivate _reactToEditorMouseMoveRunner: RunOnceScheduler;\n\n\tprivate _hoverSettings!: IHoverSettings;\n\tprivate _isMouseDown: boolean = false;\n\n\tprivate _ignoreMouseEvents: boolean = false;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IContextMenuService _contextMenuService: IContextMenuService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\t\tthis._reactToEditorMouseMoveRunner = this._register(new RunOnceScheduler(\n\t\t\t() => {\n\t\t\t\tif (this._mouseMoveEvent) {\n\t\t\t\t\tthis._reactToEditorMouseMove(this._mouseMoveEvent);\n\t\t\t\t}\n\t\t\t}, 0\n\t\t));\n\t\tthis._register(_contextMenuService.onDidShowContextMenu(() => {\n\t\t\tthis.hideContentHover();\n\t\t\tthis._ignoreMouseEvents = true;\n\t\t}));\n\t\tthis._register(_contextMenuService.onDidHideContextMenu(() => {\n\t\t\tthis._ignoreMouseEvents = false;\n\t\t}));\n\t\tthis._hookListeners();\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.hover)) {\n\t\t\t\tthis._unhookListeners();\n\t\t\t\tthis._hookListeners();\n\t\t\t}\n\t\t}));\n\t}\n\n\tstatic get(editor: ICodeEditor): ContentHoverController | null {\n\t\treturn editor.getContribution<ContentHoverController>(ContentHoverController.ID);\n\t}\n\n\tprivate _hookListeners(): void {\n\t\tconst hoverOpts = this._editor.getOption(EditorOption.hover);\n\t\tthis._hoverSettings = {\n\t\t\tenabled: hoverOpts.enabled,\n\t\t\tsticky: hoverOpts.sticky,\n\t\t\thidingDelay: hoverOpts.hidingDelay\n\t\t};\n\t\tif (hoverOpts.enabled === 'off') {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t}\n\t\tthis._listenersStore.add(this._editor.onMouseDown((e: IEditorMouseEvent) => this._onEditorMouseDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseUp(() => this._onEditorMouseUp()));\n\t\tthis._listenersStore.add(this._editor.onMouseMove((e: IEditorMouseEvent) => this._onEditorMouseMove(e)));\n\t\tthis._listenersStore.add(this._editor.onKeyDown((e: IKeyboardEvent) => this._onKeyDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseLeave((e) => this._onEditorMouseLeave(e)));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModel(() => this._cancelSchedulerAndHide()));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModelContent(() => this._cancelScheduler()));\n\t\tthis._listenersStore.add(this._editor.onDidScrollChange((e: IScrollEvent) => this._onEditorScrollChanged(e)));\n\t}\n\n\tprivate _unhookListeners(): void {\n\t\tthis._listenersStore.clear();\n\t}\n\n\tprivate _cancelSchedulerAndHide(): void {\n\t\tthis._cancelScheduler();\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _cancelScheduler() {\n\t\tthis._mouseMoveEvent = undefined;\n\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t}\n\n\tprivate _onEditorScrollChanged(e: IScrollEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (e.scrollTopChanged || e.scrollLeftChanged) {\n\t\t\tthis.hideContentHover();\n\t\t}\n\t}\n\n\tprivate _onEditorMouseDown(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = true;\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepHoverWidgetVisible(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\treturn this._isMouseOnContentHoverWidget(mouseEvent) || this._isContentWidgetResizing() || isOnColorDecorator(mouseEvent);\n\t}\n\n\tprivate _isMouseOnContentHoverWidget(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\tif (!this._contentWidget || !this._contentWidget.getDomNode().isConnected) {\n\t\t\treturn false;\n\t\t}\n\t\treturn isMousePositionWithinElement(this._contentWidget.getDomNode(), mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\tprivate _onEditorMouseUp(): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = false;\n\t}\n\n\tprivate _onEditorMouseLeave(mouseEvent: IPartialEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.shouldKeepOpenOnEditorMouseMoveOrLeave) {\n\t\t\treturn;\n\t\t}\n\t\tthis._cancelScheduler();\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepCurrentHover(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst contentWidget = this._contentWidget;\n\t\tif (!contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isHoverSticky = this._hoverSettings.sticky;\n\t\tconst isMouseOnStickyContentHoverWidget = (mouseEvent: IEditorMouseEvent, isHoverSticky: boolean): boolean => {\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\treturn isHoverSticky && isMouseOnContentHoverWidget;\n\t\t};\n\t\tconst isMouseOnColorPickerOrChoosingColor = (mouseEvent: IEditorMouseEvent): boolean => {\n\t\t\tconst isColorPickerVisible = contentWidget.isColorPickerVisible;\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\tconst isMouseOnHoverWithColorPicker = isColorPickerVisible && isMouseOnContentHoverWidget;\n\t\t\tconst isMaybeChoosingColor = isColorPickerVisible && this._isMouseDown;\n\t\t\treturn isMouseOnHoverWithColorPicker || isMaybeChoosingColor;\n\t\t};\n\t\t// TODO@aiday-mar verify if the following is necessary code\n\t\tconst isTextSelectedWithinContentHoverWidget = (mouseEvent: IEditorMouseEvent, sticky: boolean): boolean => {\n\t\t\tconst view = mouseEvent.event.browserEvent.view;\n\t\t\tif (!view) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn sticky && contentWidget.containsNode(view.document.activeElement) && !view.getSelection()?.isCollapsed;\n\t\t};\n\t\tconst isFocused = contentWidget.isFocused;\n\t\tconst isResizing = contentWidget.isResizing;\n\t\tconst isStickyAndVisibleFromKeyboard = this._hoverSettings.sticky && contentWidget.isVisibleFromKeyboard;\n\n\t\treturn this.shouldKeepOpenOnEditorMouseMoveOrLeave\n\t\t\t|| isFocused\n\t\t\t|| isResizing\n\t\t\t|| isStickyAndVisibleFromKeyboard\n\t\t\t|| isMouseOnStickyContentHoverWidget(mouseEvent, isHoverSticky)\n\t\t\t|| isMouseOnColorPickerOrChoosingColor(mouseEvent)\n\t\t\t|| isTextSelectedWithinContentHoverWidget(mouseEvent, isHoverSticky);\n\t}\n\n\tprivate _onEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\t// When the user is dragging to select text (mouse down started outside the hover widget),\n\t\t// hide the hover and suppress any new hover computation to avoid covering the selection.\n\t\tif (this._isMouseDown && !this._shouldKeepHoverWidgetVisible(mouseEvent)) {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t\treturn;\n\t\t}\n\t\tthis._mouseMoveEvent = mouseEvent;\n\t\tconst shouldKeepCurrentHover = this._shouldKeepCurrentHover(mouseEvent);\n\t\tif (shouldKeepCurrentHover) {\n\t\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t\t\treturn;\n\t\t}\n\t\tconst shouldRescheduleHoverComputation = this._shouldRescheduleHoverComputation();\n\t\tif (shouldRescheduleHoverComputation) {\n\t\t\tif (!this._reactToEditorMouseMoveRunner.isScheduled()) {\n\t\t\t\tthis._reactToEditorMouseMoveRunner.schedule(this._hoverSettings.hidingDelay);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._reactToEditorMouseMove(mouseEvent);\n\t}\n\n\tprivate _shouldRescheduleHoverComputation(): boolean {\n\t\tconst hidingDelay = this._hoverSettings.hidingDelay;\n\t\tconst isContentHoverWidgetVisible = this._contentWidget?.isVisible ?? false;\n\t\t// If the mouse is not over the widget, and if sticky is on,\n\t\t// then give it a grace period before reacting to the mouse event\n\t\treturn isContentHoverWidgetVisible && this._hoverSettings.sticky && hidingDelay > 0;\n\t}\n\n\tprivate _reactToEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (shouldShowHover(\n\t\t\tthis._hoverSettings.enabled,\n\t\t\tthis._editor.getOption(EditorOption.multiCursorModifier),\n\t\t\tmouseEvent\n\t\t)) {\n\t\t\tconst contentWidget: ContentHoverWidgetWrapper = this._getOrCreateContentWidget();\n\t\t\tif (contentWidget.showsOrWillShow(mouseEvent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _onKeyDown(e: IKeyboardEvent): void {\n\t\tif (this._ignoreMouseEvents || !this._contentWidget) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._hoverSettings.enabled === 'onKeyboardModifier'\n\t\t\t&& isTriggerModifierPressed(this._editor.getOption(EditorOption.multiCursorModifier), e)\n\t\t\t&& this._mouseMoveEvent) {\n\t\t\tif (!this._contentWidget.isVisible) {\n\t\t\t\tthis._contentWidget.showsOrWillShow(this._mouseMoveEvent);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPotentialKeyboardShortcut = this._isPotentialKeyboardShortcut(e);\n\t\tconst isModifierKeyPressed = isModifierKey(e.keyCode);\n\t\tif (isPotentialKeyboardShortcut || isModifierKeyPressed) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._contentWidget.isFocused && e.keyCode === KeyCode.Tab) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _isPotentialKeyboardShortcut(e: IKeyboardEvent): boolean {\n\t\tif (!this._editor.hasModel() || !this._contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst resolvedKeyboardEvent = this._keybindingService.softDispatch(e, this._editor.getDomNode());\n\t\tconst moreChordsAreNeeded = resolvedKeyboardEvent.kind === ResultKind.MoreChordsNeeded;\n\t\tconst isHoverAction = resolvedKeyboardEvent.kind === ResultKind.KbFound\n\t\t\t&& (resolvedKeyboardEvent.commandId === SHOW_OR_FOCUS_HOVER_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === INCREASE_HOVER_VERBOSITY_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === DECREASE_HOVER_VERBOSITY_ACTION_ID)\n\t\t\t&& this._contentWidget.isVisible;\n\t\treturn moreChordsAreNeeded || isHoverAction;\n\t}\n\n\tpublic hideContentHover(): void {\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tif (InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._contentWidget?.hide();\n\t}\n\n\tprivate _getOrCreateContentWidget(): ContentHoverWidgetWrapper {\n\t\tif (!this._contentWidget) {\n\t\t\tthis._contentWidget = this._instantiationService.createInstance(ContentHoverWidgetWrapper, this._editor);\n\t\t\tthis._listenersStore.add(this._contentWidget.onContentsChanged(() => this._onHoverContentsChanged.fire()));\n\t\t}\n\t\treturn this._contentWidget;\n\t}\n\n\tpublic showContentHover(\n\t\trange: Range,\n\t\tmode: HoverStartMode,\n\t\tsource: HoverStartSource,\n\t\tfocus: boolean\n\t): void {\n\t\tthis._getOrCreateContentWidget().startShowingAtRange(range, mode, source, focus);\n\t}\n\n\tprivate _isContentWidgetResizing(): boolean {\n\t\treturn this._contentWidget?.widget.isResizing || false;\n\t}\n\n\tpublic focusedHoverPartIndex(): number {\n\t\treturn this._getOrCreateContentWidget().focusedHoverPartIndex();\n\t}\n\n\tpublic updateHoverVerbosityLevel(action: HoverVerbosityAction, index: number, focus?: boolean): void {\n\t\tthis._getOrCreateContentWidget().updateHoverVerbosityLevel(action, index, focus);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._contentWidget?.focus();\n\t}\n\n\tpublic scrollUp(): void {\n\t\tthis._contentWidget?.scrollUp();\n\t}\n\n\tpublic scrollDown(): void {\n\t\tthis._contentWidget?.scrollDown();\n\t}\n\n\tpublic scrollLeft(): void {\n\t\tthis._contentWidget?.scrollLeft();\n\t}\n\n\tpublic scrollRight(): void {\n\t\tthis._contentWidget?.scrollRight();\n\t}\n\n\tpublic pageUp(): void {\n\t\tthis._contentWidget?.pageUp();\n\t}\n\n\tpublic pageDown(): void {\n\t\tthis._contentWidget?.pageDown();\n\t}\n\n\tpublic goToTop(): void {\n\t\tthis._contentWidget?.goToTop();\n\t}\n\n\tpublic goToBottom(): void {\n\t\tthis._contentWidget?.goToBottom();\n\t}\n\n\tpublic get isColorPickerVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isColorPickerVisible;\n\t}\n\n\tpublic get isHoverVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isVisible;\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._unhookListeners();\n\t\tthis._listenersStore.dispose();\n\t\tthis._contentWidget?.dispose();\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/hover/browser/contentHoverController.ts","vs/editor/contrib/hover/browser/contentHoverController.ts"],"names":[],"mappings":"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","file":"contentHoverController.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 { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID, SHOW_OR_FOCUS_HOVER_ACTION_ID } from './hoverActionIds.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor, IEditorMouseEvent, IPartialEditorMouseEvent } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IScrollEvent } from '../../../common/editorCommon.js';\nimport { HoverStartMode, HoverStartSource } from './hoverOperation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { InlineSuggestionHintsContentWidget } from '../../inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ResultKind } from '../../../../platform/keybinding/common/keybindingResolver.js';\nimport { HoverVerbosityAction } from '../../../common/languages.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { isMousePositionWithinElement, shouldShowHover, isTriggerModifierPressed } from './hoverUtils.js';\nimport { ContentHoverWidgetWrapper } from './contentHoverWidgetWrapper.js';\nimport './hover.css';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { isOnColorDecorator } from '../../colorPicker/browser/hoverColorPicker/hoverColorPicker.js';\nimport { isModifierKey, KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\nimport { isHTMLElement } from '../../../../base/browser/dom.js';\n\n// sticky hover widget which doesn't disappear on focus out and such\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\ninterface IHoverSettings {\n\treadonly enabled: 'on' | 'off' | 'onKeyboardModifier';\n\treadonly sticky: boolean;\n\treadonly hidingDelay: number;\n}\n\nexport class ContentHoverController extends Disposable implements IEditorContribution {\n\n\tprivate readonly _onHoverContentsChanged = this._register(new Emitter<void>());\n\n\tpublic static readonly ID = 'editor.contrib.contentHover';\n\n\tpublic shouldKeepOpenOnEditorMouseMoveOrLeave: boolean = false;\n\n\tprivate readonly _listenersStore = new DisposableStore();\n\n\tprivate _contentWidget: ContentHoverWidgetWrapper | undefined;\n\n\tprivate _mouseMoveEvent: IEditorMouseEvent | undefined;\n\tprivate _reactToEditorMouseMoveRunner: RunOnceScheduler;\n\n\tprivate _hoverSettings!: IHoverSettings;\n\tprivate _isMouseDown: boolean = false;\n\n\tprivate _ignoreMouseEvents: boolean = false;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IContextMenuService _contextMenuService: IContextMenuService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\t\tthis._reactToEditorMouseMoveRunner = this._register(new RunOnceScheduler(\n\t\t\t() => {\n\t\t\t\tif (this._mouseMoveEvent) {\n\t\t\t\t\tthis._reactToEditorMouseMove(this._mouseMoveEvent);\n\t\t\t\t}\n\t\t\t}, 0\n\t\t));\n\t\tthis._register(_contextMenuService.onDidShowContextMenu(() => {\n\t\t\tthis.hideContentHover();\n\t\t\tthis._ignoreMouseEvents = true;\n\t\t}));\n\t\tthis._register(_contextMenuService.onDidHideContextMenu(() => {\n\t\t\tthis._ignoreMouseEvents = false;\n\t\t}));\n\t\tthis._hookListeners();\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.hover)) {\n\t\t\t\tthis._unhookListeners();\n\t\t\t\tthis._hookListeners();\n\t\t\t}\n\t\t}));\n\t}\n\n\tstatic get(editor: ICodeEditor): ContentHoverController | null {\n\t\treturn editor.getContribution<ContentHoverController>(ContentHoverController.ID);\n\t}\n\n\tprivate _hookListeners(): void {\n\t\tconst hoverOpts = this._editor.getOption(EditorOption.hover);\n\t\tthis._hoverSettings = {\n\t\t\tenabled: hoverOpts.enabled,\n\t\t\tsticky: hoverOpts.sticky,\n\t\t\thidingDelay: hoverOpts.hidingDelay\n\t\t};\n\t\tif (hoverOpts.enabled === 'off') {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t}\n\t\tthis._listenersStore.add(this._editor.onMouseDown((e: IEditorMouseEvent) => this._onEditorMouseDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseUp(() => this._onEditorMouseUp()));\n\t\tthis._listenersStore.add(this._editor.onMouseMove((e: IEditorMouseEvent) => this._onEditorMouseMove(e)));\n\t\tthis._listenersStore.add(this._editor.onKeyDown((e: IKeyboardEvent) => this._onKeyDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseLeave((e) => this._onEditorMouseLeave(e)));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModel(() => this._cancelSchedulerAndHide()));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModelContent(() => this._cancelScheduler()));\n\t\tthis._listenersStore.add(this._editor.onDidScrollChange((e: IScrollEvent) => this._onEditorScrollChanged(e)));\n\t}\n\n\tprivate _unhookListeners(): void {\n\t\tthis._listenersStore.clear();\n\t}\n\n\tprivate _cancelSchedulerAndHide(): void {\n\t\tthis._cancelScheduler();\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _cancelScheduler() {\n\t\tthis._mouseMoveEvent = undefined;\n\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t}\n\n\tprivate _onEditorScrollChanged(e: IScrollEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (e.scrollTopChanged || e.scrollLeftChanged) {\n\t\t\tthis.hideContentHover();\n\t\t}\n\t}\n\n\tprivate _onEditorMouseDown(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = true;\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepHoverWidgetVisible(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\treturn this._isMouseOnContentHoverWidget(mouseEvent) || this._isContentWidgetResizing() || isOnColorDecorator(mouseEvent);\n\t}\n\n\tprivate _isMouseOnContentHoverWidget(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\tif (!this._contentWidget || !this._contentWidget.getDomNode().isConnected) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._contentWidget.containsNode(mouseEvent.event.target)\n\t\t\t|| isMousePositionWithinElement(this._contentWidget.getDomNode(), mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\tprivate _onEditorMouseUp(): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = false;\n\t}\n\n\tprivate _onEditorMouseLeave(mouseEvent: IPartialEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.shouldKeepOpenOnEditorMouseMoveOrLeave) {\n\t\t\treturn;\n\t\t}\n\t\tthis._cancelScheduler();\n\t\tconst relatedTarget = mouseEvent.event.browserEvent.relatedTarget;\n\t\tif (isHTMLElement(relatedTarget) && this._contentWidget?.containsNode(relatedTarget)) {\n\t\t\treturn;\n\t\t}\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepCurrentHover(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst contentWidget = this._contentWidget;\n\t\tif (!contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isHoverSticky = this._hoverSettings.sticky;\n\t\tconst isMouseOnStickyContentHoverWidget = (mouseEvent: IEditorMouseEvent, isHoverSticky: boolean): boolean => {\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\treturn isHoverSticky && isMouseOnContentHoverWidget;\n\t\t};\n\t\tconst isMouseOnColorPickerOrChoosingColor = (mouseEvent: IEditorMouseEvent): boolean => {\n\t\t\tconst isColorPickerVisible = contentWidget.isColorPickerVisible;\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\tconst isMouseOnHoverWithColorPicker = isColorPickerVisible && isMouseOnContentHoverWidget;\n\t\t\tconst isMaybeChoosingColor = isColorPickerVisible && this._isMouseDown;\n\t\t\treturn isMouseOnHoverWithColorPicker || isMaybeChoosingColor;\n\t\t};\n\t\t// TODO@aiday-mar verify if the following is necessary code\n\t\tconst isTextSelectedWithinContentHoverWidget = (mouseEvent: IEditorMouseEvent, sticky: boolean): boolean => {\n\t\t\tconst view = mouseEvent.event.browserEvent.view;\n\t\t\tif (!view) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn sticky && contentWidget.containsNode(view.document.activeElement) && !view.getSelection()?.isCollapsed;\n\t\t};\n\t\tconst isFocused = contentWidget.isFocused;\n\t\tconst isResizing = contentWidget.isResizing;\n\t\tconst isStickyAndVisibleFromKeyboard = this._hoverSettings.sticky && contentWidget.isVisibleFromKeyboard;\n\n\t\treturn this.shouldKeepOpenOnEditorMouseMoveOrLeave\n\t\t\t|| isFocused\n\t\t\t|| isResizing\n\t\t\t|| isStickyAndVisibleFromKeyboard\n\t\t\t|| isMouseOnStickyContentHoverWidget(mouseEvent, isHoverSticky)\n\t\t\t|| isMouseOnColorPickerOrChoosingColor(mouseEvent)\n\t\t\t|| isTextSelectedWithinContentHoverWidget(mouseEvent, isHoverSticky);\n\t}\n\n\tprivate _onEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\t// When the user is dragging to select text (mouse down started outside the hover widget),\n\t\t// hide the hover and suppress any new hover computation to avoid covering the selection.\n\t\tif (this._isMouseDown && !this._shouldKeepHoverWidgetVisible(mouseEvent)) {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t\treturn;\n\t\t}\n\t\tthis._mouseMoveEvent = mouseEvent;\n\t\tconst shouldKeepCurrentHover = this._shouldKeepCurrentHover(mouseEvent);\n\t\tif (shouldKeepCurrentHover) {\n\t\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t\t\treturn;\n\t\t}\n\t\tconst shouldRescheduleHoverComputation = this._shouldRescheduleHoverComputation();\n\t\tif (shouldRescheduleHoverComputation) {\n\t\t\tif (!this._reactToEditorMouseMoveRunner.isScheduled()) {\n\t\t\t\tthis._reactToEditorMouseMoveRunner.schedule(this._hoverSettings.hidingDelay);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._reactToEditorMouseMove(mouseEvent);\n\t}\n\n\tprivate _shouldRescheduleHoverComputation(): boolean {\n\t\tconst hidingDelay = this._hoverSettings.hidingDelay;\n\t\tconst isContentHoverWidgetVisible = this._contentWidget?.isVisible ?? false;\n\t\t// If the mouse is not over the widget, and if sticky is on,\n\t\t// then give it a grace period before reacting to the mouse event\n\t\treturn isContentHoverWidgetVisible && this._hoverSettings.sticky && hidingDelay > 0;\n\t}\n\n\tprivate _reactToEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (shouldShowHover(\n\t\t\tthis._hoverSettings.enabled,\n\t\t\tthis._editor.getOption(EditorOption.multiCursorModifier),\n\t\t\tmouseEvent\n\t\t)) {\n\t\t\tconst contentWidget: ContentHoverWidgetWrapper = this._getOrCreateContentWidget();\n\t\t\tif (contentWidget.showsOrWillShow(mouseEvent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _onKeyDown(e: IKeyboardEvent): void {\n\t\tif (this._ignoreMouseEvents || !this._contentWidget) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._hoverSettings.enabled === 'onKeyboardModifier'\n\t\t\t&& isTriggerModifierPressed(this._editor.getOption(EditorOption.multiCursorModifier), e)\n\t\t\t&& this._mouseMoveEvent) {\n\t\t\tif (!this._contentWidget.isVisible) {\n\t\t\t\tthis._contentWidget.showsOrWillShow(this._mouseMoveEvent);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPotentialKeyboardShortcut = this._isPotentialKeyboardShortcut(e);\n\t\tconst isModifierKeyPressed = isModifierKey(e.keyCode);\n\t\tif (isPotentialKeyboardShortcut || isModifierKeyPressed) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._contentWidget.isFocused && e.keyCode === KeyCode.Tab) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _isPotentialKeyboardShortcut(e: IKeyboardEvent): boolean {\n\t\tif (!this._editor.hasModel() || !this._contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst resolvedKeyboardEvent = this._keybindingService.softDispatch(e, this._editor.getDomNode());\n\t\tconst moreChordsAreNeeded = resolvedKeyboardEvent.kind === ResultKind.MoreChordsNeeded;\n\t\tconst isHoverAction = resolvedKeyboardEvent.kind === ResultKind.KbFound\n\t\t\t&& (resolvedKeyboardEvent.commandId === SHOW_OR_FOCUS_HOVER_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === INCREASE_HOVER_VERBOSITY_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === DECREASE_HOVER_VERBOSITY_ACTION_ID)\n\t\t\t&& this._contentWidget.isVisible;\n\t\treturn moreChordsAreNeeded || isHoverAction;\n\t}\n\n\tpublic hideContentHover(): void {\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tif (InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._contentWidget?.hide();\n\t}\n\n\tprivate _getOrCreateContentWidget(): ContentHoverWidgetWrapper {\n\t\tif (!this._contentWidget) {\n\t\t\tthis._contentWidget = this._instantiationService.createInstance(ContentHoverWidgetWrapper, this._editor);\n\t\t\tthis._listenersStore.add(this._contentWidget.onContentsChanged(() => this._onHoverContentsChanged.fire()));\n\t\t}\n\t\treturn this._contentWidget;\n\t}\n\n\tpublic showContentHover(\n\t\trange: Range,\n\t\tmode: HoverStartMode,\n\t\tsource: HoverStartSource,\n\t\tfocus: boolean\n\t): void {\n\t\tthis._getOrCreateContentWidget().startShowingAtRange(range, mode, source, focus);\n\t}\n\n\tprivate _isContentWidgetResizing(): boolean {\n\t\treturn this._contentWidget?.widget.isResizing || false;\n\t}\n\n\tpublic focusedHoverPartIndex(): number {\n\t\treturn this._getOrCreateContentWidget().focusedHoverPartIndex();\n\t}\n\n\tpublic updateHoverVerbosityLevel(action: HoverVerbosityAction, index: number, focus?: boolean): void {\n\t\tthis._getOrCreateContentWidget().updateHoverVerbosityLevel(action, index, focus);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._contentWidget?.focus();\n\t}\n\n\tpublic scrollUp(): void {\n\t\tthis._contentWidget?.scrollUp();\n\t}\n\n\tpublic scrollDown(): void {\n\t\tthis._contentWidget?.scrollDown();\n\t}\n\n\tpublic scrollLeft(): void {\n\t\tthis._contentWidget?.scrollLeft();\n\t}\n\n\tpublic scrollRight(): void {\n\t\tthis._contentWidget?.scrollRight();\n\t}\n\n\tpublic pageUp(): void {\n\t\tthis._contentWidget?.pageUp();\n\t}\n\n\tpublic pageDown(): void {\n\t\tthis._contentWidget?.pageDown();\n\t}\n\n\tpublic goToTop(): void {\n\t\tthis._contentWidget?.goToTop();\n\t}\n\n\tpublic goToBottom(): void {\n\t\tthis._contentWidget?.goToBottom();\n\t}\n\n\tpublic get isColorPickerVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isColorPickerVisible;\n\t}\n\n\tpublic get isHoverVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isVisible;\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._unhookListeners();\n\t\tthis._listenersStore.dispose();\n\t\tthis._contentWidget?.dispose();\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID, SHOW_OR_FOCUS_HOVER_ACTION_ID } from './hoverActionIds.js';\nimport { IKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditor, IEditorMouseEvent, IPartialEditorMouseEvent } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, IScrollEvent } from '../../../common/editorCommon.js';\nimport { HoverStartMode, HoverStartSource } from './hoverOperation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { InlineSuggestionHintsContentWidget } from '../../inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ResultKind } from '../../../../platform/keybinding/common/keybindingResolver.js';\nimport { HoverVerbosityAction } from '../../../common/languages.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { isMousePositionWithinElement, shouldShowHover, isTriggerModifierPressed } from './hoverUtils.js';\nimport { ContentHoverWidgetWrapper } from './contentHoverWidgetWrapper.js';\nimport './hover.css';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { isOnColorDecorator } from '../../colorPicker/browser/hoverColorPicker/hoverColorPicker.js';\nimport { isModifierKey, KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\nimport { isHTMLElement } from '../../../../base/browser/dom.js';\n\n// sticky hover widget which doesn't disappear on focus out and such\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\ninterface IHoverSettings {\n\treadonly enabled: 'on' | 'off' | 'onKeyboardModifier';\n\treadonly sticky: boolean;\n\treadonly hidingDelay: number;\n}\n\nexport class ContentHoverController extends Disposable implements IEditorContribution {\n\n\tprivate readonly _onHoverContentsChanged = this._register(new Emitter<void>());\n\n\tpublic static readonly ID = 'editor.contrib.contentHover';\n\n\tpublic shouldKeepOpenOnEditorMouseMoveOrLeave: boolean = false;\n\n\tprivate readonly _listenersStore = new DisposableStore();\n\n\tprivate _contentWidget: ContentHoverWidgetWrapper | undefined;\n\n\tprivate _mouseMoveEvent: IEditorMouseEvent | undefined;\n\tprivate _reactToEditorMouseMoveRunner: RunOnceScheduler;\n\n\tprivate _hoverSettings!: IHoverSettings;\n\tprivate _isMouseDown: boolean = false;\n\n\tprivate _ignoreMouseEvents: boolean = false;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IContextMenuService _contextMenuService: IContextMenuService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService\n\t) {\n\t\tsuper();\n\t\tthis._reactToEditorMouseMoveRunner = this._register(new RunOnceScheduler(\n\t\t\t() => {\n\t\t\t\tif (this._mouseMoveEvent) {\n\t\t\t\t\tthis._reactToEditorMouseMove(this._mouseMoveEvent);\n\t\t\t\t}\n\t\t\t}, 0\n\t\t));\n\t\tthis._register(_contextMenuService.onDidShowContextMenu(() => {\n\t\t\tthis.hideContentHover();\n\t\t\tthis._ignoreMouseEvents = true;\n\t\t}));\n\t\tthis._register(_contextMenuService.onDidHideContextMenu(() => {\n\t\t\tthis._ignoreMouseEvents = false;\n\t\t}));\n\t\tthis._hookListeners();\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.hover)) {\n\t\t\t\tthis._unhookListeners();\n\t\t\t\tthis._hookListeners();\n\t\t\t}\n\t\t}));\n\t}\n\n\tstatic get(editor: ICodeEditor): ContentHoverController | null {\n\t\treturn editor.getContribution<ContentHoverController>(ContentHoverController.ID);\n\t}\n\n\tprivate _hookListeners(): void {\n\t\tconst hoverOpts = this._editor.getOption(EditorOption.hover);\n\t\tthis._hoverSettings = {\n\t\t\tenabled: hoverOpts.enabled,\n\t\t\tsticky: hoverOpts.sticky,\n\t\t\thidingDelay: hoverOpts.hidingDelay\n\t\t};\n\t\tif (hoverOpts.enabled === 'off') {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t}\n\t\tthis._listenersStore.add(this._editor.onMouseDown((e: IEditorMouseEvent) => this._onEditorMouseDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseUp(() => this._onEditorMouseUp()));\n\t\tthis._listenersStore.add(this._editor.onMouseMove((e: IEditorMouseEvent) => this._onEditorMouseMove(e)));\n\t\tthis._listenersStore.add(this._editor.onKeyDown((e: IKeyboardEvent) => this._onKeyDown(e)));\n\t\tthis._listenersStore.add(this._editor.onMouseLeave((e) => this._onEditorMouseLeave(e)));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModel(() => this._cancelSchedulerAndHide()));\n\t\tthis._listenersStore.add(this._editor.onDidChangeModelContent(() => this._cancelScheduler()));\n\t\tthis._listenersStore.add(this._editor.onDidScrollChange((e: IScrollEvent) => this._onEditorScrollChanged(e)));\n\t}\n\n\tprivate _unhookListeners(): void {\n\t\tthis._listenersStore.clear();\n\t}\n\n\tprivate _cancelSchedulerAndHide(): void {\n\t\tthis._cancelScheduler();\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _cancelScheduler() {\n\t\tthis._mouseMoveEvent = undefined;\n\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t}\n\n\tprivate _onEditorScrollChanged(e: IScrollEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (e.scrollTopChanged || e.scrollLeftChanged) {\n\t\t\tthis.hideContentHover();\n\t\t}\n\t}\n\n\tprivate _onEditorMouseDown(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = true;\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepHoverWidgetVisible(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\treturn this._isMouseOnContentHoverWidget(mouseEvent) || this._isContentWidgetResizing() || isOnColorDecorator(mouseEvent);\n\t}\n\n\tprivate _isMouseOnContentHoverWidget(mouseEvent: IPartialEditorMouseEvent): boolean {\n\t\tif (!this._contentWidget || !this._contentWidget.getDomNode().isConnected) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._contentWidget.containsNode(mouseEvent.event.target)\n\t\t\t|| isMousePositionWithinElement(this._contentWidget.getDomNode(), mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\tprivate _onEditorMouseUp(): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isMouseDown = false;\n\t}\n\n\tprivate _onEditorMouseLeave(mouseEvent: IPartialEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.shouldKeepOpenOnEditorMouseMoveOrLeave) {\n\t\t\treturn;\n\t\t}\n\t\tthis._cancelScheduler();\n\t\tconst relatedTarget = mouseEvent.event.browserEvent.relatedTarget;\n\t\tif (isHTMLElement(relatedTarget) && this._contentWidget?.containsNode(relatedTarget)) {\n\t\t\treturn;\n\t\t}\n\t\tconst shouldKeepHoverWidgetVisible = this._shouldKeepHoverWidgetVisible(mouseEvent);\n\t\tif (shouldKeepHoverWidgetVisible) {\n\t\t\treturn;\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _shouldKeepCurrentHover(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst contentWidget = this._contentWidget;\n\t\tif (!contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst isHoverSticky = this._hoverSettings.sticky;\n\t\tconst isMouseOnStickyContentHoverWidget = (mouseEvent: IEditorMouseEvent, isHoverSticky: boolean): boolean => {\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\treturn isHoverSticky && isMouseOnContentHoverWidget;\n\t\t};\n\t\tconst isMouseOnColorPickerOrChoosingColor = (mouseEvent: IEditorMouseEvent): boolean => {\n\t\t\tconst isColorPickerVisible = contentWidget.isColorPickerVisible;\n\t\t\tconst isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n\t\t\tconst isMouseOnHoverWithColorPicker = isColorPickerVisible && isMouseOnContentHoverWidget;\n\t\t\tconst isMaybeChoosingColor = isColorPickerVisible && this._isMouseDown;\n\t\t\treturn isMouseOnHoverWithColorPicker || isMaybeChoosingColor;\n\t\t};\n\t\t// TODO@aiday-mar verify if the following is necessary code\n\t\tconst isTextSelectedWithinContentHoverWidget = (mouseEvent: IEditorMouseEvent, sticky: boolean): boolean => {\n\t\t\tconst view = mouseEvent.event.browserEvent.view;\n\t\t\tif (!view) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn sticky && contentWidget.containsNode(view.document.activeElement) && !view.getSelection()?.isCollapsed;\n\t\t};\n\t\tconst isFocused = contentWidget.isFocused;\n\t\tconst isResizing = contentWidget.isResizing;\n\t\tconst isStickyAndVisibleFromKeyboard = this._hoverSettings.sticky && contentWidget.isVisibleFromKeyboard;\n\n\t\treturn this.shouldKeepOpenOnEditorMouseMoveOrLeave\n\t\t\t|| isFocused\n\t\t\t|| isResizing\n\t\t\t|| isStickyAndVisibleFromKeyboard\n\t\t\t|| isMouseOnStickyContentHoverWidget(mouseEvent, isHoverSticky)\n\t\t\t|| isMouseOnColorPickerOrChoosingColor(mouseEvent)\n\t\t\t|| isTextSelectedWithinContentHoverWidget(mouseEvent, isHoverSticky);\n\t}\n\n\tprivate _onEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (this._ignoreMouseEvents) {\n\t\t\treturn;\n\t\t}\n\t\t// When the user is dragging to select text (mouse down started outside the hover widget),\n\t\t// hide the hover and suppress any new hover computation to avoid covering the selection.\n\t\tif (this._isMouseDown && !this._shouldKeepHoverWidgetVisible(mouseEvent)) {\n\t\t\tthis._cancelSchedulerAndHide();\n\t\t\treturn;\n\t\t}\n\t\tthis._mouseMoveEvent = mouseEvent;\n\t\tconst shouldKeepCurrentHover = this._shouldKeepCurrentHover(mouseEvent);\n\t\tif (shouldKeepCurrentHover) {\n\t\t\tthis._reactToEditorMouseMoveRunner.cancel();\n\t\t\treturn;\n\t\t}\n\t\tconst shouldRescheduleHoverComputation = this._shouldRescheduleHoverComputation();\n\t\tif (shouldRescheduleHoverComputation) {\n\t\t\tif (!this._reactToEditorMouseMoveRunner.isScheduled()) {\n\t\t\t\tthis._reactToEditorMouseMoveRunner.schedule(this._hoverSettings.hidingDelay);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tthis._reactToEditorMouseMove(mouseEvent);\n\t}\n\n\tprivate _shouldRescheduleHoverComputation(): boolean {\n\t\tconst hidingDelay = this._hoverSettings.hidingDelay;\n\t\tconst isContentHoverWidgetVisible = this._contentWidget?.isVisible ?? false;\n\t\t// If the mouse is not over the widget, and if sticky is on,\n\t\t// then give it a grace period before reacting to the mouse event\n\t\treturn isContentHoverWidgetVisible && this._hoverSettings.sticky && hidingDelay > 0;\n\t}\n\n\tprivate _reactToEditorMouseMove(mouseEvent: IEditorMouseEvent): void {\n\t\tif (shouldShowHover(\n\t\t\tthis._hoverSettings.enabled,\n\t\t\tthis._editor.getOption(EditorOption.multiCursorModifier),\n\t\t\tmouseEvent\n\t\t)) {\n\t\t\tconst contentWidget: ContentHoverWidgetWrapper = this._getOrCreateContentWidget();\n\t\t\tif (contentWidget.showsOrWillShow(mouseEvent)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _onKeyDown(e: IKeyboardEvent): void {\n\t\tif (this._ignoreMouseEvents || !this._contentWidget) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._hoverSettings.enabled === 'onKeyboardModifier'\n\t\t\t&& isTriggerModifierPressed(this._editor.getOption(EditorOption.multiCursorModifier), e)\n\t\t\t&& this._mouseMoveEvent) {\n\t\t\tif (!this._contentWidget.isVisible) {\n\t\t\t\tthis._contentWidget.showsOrWillShow(this._mouseMoveEvent);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPotentialKeyboardShortcut = this._isPotentialKeyboardShortcut(e);\n\t\tconst isModifierKeyPressed = isModifierKey(e.keyCode);\n\t\tif (isPotentialKeyboardShortcut || isModifierKeyPressed) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._contentWidget.isFocused && e.keyCode === KeyCode.Tab) {\n\t\t\treturn;\n\t\t}\n\t\tthis.hideContentHover();\n\t}\n\n\tprivate _isPotentialKeyboardShortcut(e: IKeyboardEvent): boolean {\n\t\tif (!this._editor.hasModel() || !this._contentWidget) {\n\t\t\treturn false;\n\t\t}\n\t\tconst resolvedKeyboardEvent = this._keybindingService.softDispatch(e, this._editor.getDomNode());\n\t\tconst moreChordsAreNeeded = resolvedKeyboardEvent.kind === ResultKind.MoreChordsNeeded;\n\t\tconst isHoverAction = resolvedKeyboardEvent.kind === ResultKind.KbFound\n\t\t\t&& (resolvedKeyboardEvent.commandId === SHOW_OR_FOCUS_HOVER_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === INCREASE_HOVER_VERBOSITY_ACTION_ID\n\t\t\t\t|| resolvedKeyboardEvent.commandId === DECREASE_HOVER_VERBOSITY_ACTION_ID)\n\t\t\t&& this._contentWidget.isVisible;\n\t\treturn moreChordsAreNeeded || isHoverAction;\n\t}\n\n\tpublic hideContentHover(): void {\n\t\tif (_sticky) {\n\t\t\treturn;\n\t\t}\n\t\tif (InlineSuggestionHintsContentWidget.dropDownVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._contentWidget?.hide();\n\t}\n\n\tprivate _getOrCreateContentWidget(): ContentHoverWidgetWrapper {\n\t\tif (!this._contentWidget) {\n\t\t\tthis._contentWidget = this._instantiationService.createInstance(ContentHoverWidgetWrapper, this._editor);\n\t\t\tthis._listenersStore.add(this._contentWidget.onContentsChanged(() => this._onHoverContentsChanged.fire()));\n\t\t}\n\t\treturn this._contentWidget;\n\t}\n\n\tpublic showContentHover(\n\t\trange: Range,\n\t\tmode: HoverStartMode,\n\t\tsource: HoverStartSource,\n\t\tfocus: boolean\n\t): void {\n\t\tthis._getOrCreateContentWidget().startShowingAtRange(range, mode, source, focus);\n\t}\n\n\tprivate _isContentWidgetResizing(): boolean {\n\t\treturn this._contentWidget?.widget.isResizing || false;\n\t}\n\n\tpublic focusedHoverPartIndex(): number {\n\t\treturn this._getOrCreateContentWidget().focusedHoverPartIndex();\n\t}\n\n\tpublic updateHoverVerbosityLevel(action: HoverVerbosityAction, index: number, focus?: boolean): void {\n\t\tthis._getOrCreateContentWidget().updateHoverVerbosityLevel(action, index, focus);\n\t}\n\n\tpublic focus(): void {\n\t\tthis._contentWidget?.focus();\n\t}\n\n\tpublic scrollUp(): void {\n\t\tthis._contentWidget?.scrollUp();\n\t}\n\n\tpublic scrollDown(): void {\n\t\tthis._contentWidget?.scrollDown();\n\t}\n\n\tpublic scrollLeft(): void {\n\t\tthis._contentWidget?.scrollLeft();\n\t}\n\n\tpublic scrollRight(): void {\n\t\tthis._contentWidget?.scrollRight();\n\t}\n\n\tpublic pageUp(): void {\n\t\tthis._contentWidget?.pageUp();\n\t}\n\n\tpublic pageDown(): void {\n\t\tthis._contentWidget?.pageDown();\n\t}\n\n\tpublic goToTop(): void {\n\t\tthis._contentWidget?.goToTop();\n\t}\n\n\tpublic goToBottom(): void {\n\t\tthis._contentWidget?.goToBottom();\n\t}\n\n\tpublic get isColorPickerVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isColorPickerVisible;\n\t}\n\n\tpublic get isHoverVisible(): boolean | undefined {\n\t\treturn this._contentWidget?.isVisible;\n\t}\n\n\tpublic override dispose(): void {\n\t\tsuper.dispose();\n\t\tthis._unhookListeners();\n\t\tthis._listenersStore.dispose();\n\t\tthis._contentWidget?.dispose();\n\t}\n}\n"]}
@@ -130,7 +130,7 @@ let GlyphHoverController = class GlyphHoverController extends Disposable {
130
130
  if (!mouseEvent) {
131
131
  return;
132
132
  }
133
- if (!shouldShowHover(this._hoverSettings.enabled, this._editor.getOption(86 /* EditorOption.multiCursorModifier */), mouseEvent)) {
133
+ if (!shouldShowHover(this._hoverSettings.enabled, this._editor.getOption(87 /* EditorOption.multiCursorModifier */), mouseEvent)) {
134
134
  if (_sticky) {
135
135
  return;
136
136
  }
@@ -155,7 +155,7 @@ let GlyphHoverController = class GlyphHoverController extends Disposable {
155
155
  return;
156
156
  }
157
157
  if (this._hoverSettings.enabled === 'onKeyboardModifier'
158
- && isTriggerModifierPressed(this._editor.getOption(86 /* EditorOption.multiCursorModifier */), e)
158
+ && isTriggerModifierPressed(this._editor.getOption(87 /* EditorOption.multiCursorModifier */), e)
159
159
  && this._mouseMoveEvent) {
160
160
  this._tryShowHoverWidget(this._mouseMoveEvent);
161
161
  return;
@@ -15,6 +15,7 @@ var GlyphHoverWidget_1;
15
15
  import * as dom from '../../../../base/browser/dom.js';
16
16
  import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';
17
17
  import { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';
18
+ import { getEditorMarkdownSanitizerConfig } from '../../../browser/editorMarkdownSanitizer.js';
18
19
  import { HoverOperation } from './hoverOperation.js';
19
20
  import { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';
20
21
  import { GlyphHoverComputer } from './glyphHoverComputer.js';
@@ -121,7 +122,7 @@ let GlyphHoverWidget = class GlyphHoverWidget extends Disposable {
121
122
  for (const msg of messages) {
122
123
  const markdownHoverElement = $('div.hover-row.markdown-hover');
123
124
  const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));
124
- const renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { context: this._editor }));
125
+ const renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { context: this._editor, sanitizerConfig: getEditorMarkdownSanitizerConfig(this._editor) }));
125
126
  hoverContentsElement.appendChild(renderedContents.element);
126
127
  fragment.appendChild(markdownHoverElement);
127
128
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/hover/browser/glyphHoverWidget.ts","vs/editor/contrib/hover/browser/glyphHoverWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;AAGrG,OAAO,EAAE,cAAc,EAA+B,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAE/E,OAAO,EAAmC,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AACzH,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAET,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;;aAExB,OAAE,GAAG,sCAAH,AAAyC,CAAC;IAcnE,YACC,MAAmB,EACO,wBAAmE;QAE7F,KAAK,EAAE,CAAC;QAFmC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAf9E,wBAAmB,GAAG,IAAI,CAAC;QAS1B,wBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;QAS5E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAA4B,EAAE,EAAE;YACrF,IAAI,CAAC,CAAC,UAAU,gCAAuB,EAAE,CAAC;gBACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEe,OAAO;QACtB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK;QACX,OAAO,kBAAgB,CAAC,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAEM,WAAW;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,WAAW;QAClB,gDAAgD;QAChD,MAAM,WAAW,GAAkB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1H,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,0BAA0B;QACjC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnD,yDAAyD;YACzD,0CAA0C;YAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,iCAAyB,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChF,CAAC;IACF,CAAC;IAEM,eAAe,CAAC,UAA6B;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,gDAAwC,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1F,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,gDAAwC,EAAE,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,UAAkB,EAAE,UAA4B;QACvE,IAAI,IAAI,CAAC,qBAAqB;eAC1B,IAAI,CAAC,qBAAqB,CAAC,UAAU,KAAK,UAAU;eACpD,IAAI,CAAC,qBAAqB,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC1D,2FAA2F;YAC3F,OAAO;QACR,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,KAAK,iCAAyB,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChF,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,WAAW,CAAC,MAA6D;QAChF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAE9B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;IACF,CAAC;IAEO,eAAe,CAAC,UAAkB,EAAE,UAA4B,EAAE,QAAyB;QAClG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAEnD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,oBAAoB,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAC/D,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClI,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAEO,eAAe,CAAC,IAAU;QACjC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAEO,OAAO,CAAC,UAAkB,EAAE,UAA4B;QAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,kCAAyB,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC7D,MAAM,GAAG,GAAG,gBAAgB,GAAG,eAAe,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,GAAG,YAAY,CAAC,gBAAgB,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1I,8DAA8D;QAC9D,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAEtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,4CAAmC,CAAC;QACvF,IAAI,oBAAoB,EAAE,CAAC;YAC1B,iDAAiD;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,aAAa,EAAE,CAAC;gBACnB,MAAM,UAAU,GAAG,GAAG,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;gBAC7D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;gBACxE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,cAAc,IAAI,CAAC;YACjF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,kDAAkD;YAClD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,cAAc,IAAI,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,8CAA8C;IACjG,CAAC;IAEO,aAAa,CAAC,CAAa;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,8BAA8B,GAAG,CAAC,aAAa,IAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,IAAI,8BAA8B,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;IACF,CAAC;;AA9LW,gBAAgB;IAkB1B,WAAA,wBAAwB,CAAA;GAlBd,gBAAgB,CA+L5B","file":"glyphHoverWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\tpublic readonly allowEditorOverflow = true;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { context: this._editor }));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\n\t\t// Constrain the hover widget to stay within the editor bounds\n\t\tconst editorHeight = editorLayout.height;\n\t\tconst maxTop = editorHeight - nodeHeight;\n\t\tconst constrainedTop = Math.max(0, Math.min(Math.round(top), maxTop));\n\n\t\tconst fixedOverflowWidgets = this._editor.getOption(EditorOption.fixedOverflowWidgets);\n\t\tif (fixedOverflowWidgets) {\n\t\t\t// Use fixed positioning relative to the viewport\n\t\t\tconst editorDomNode = this._editor.getDomNode();\n\t\t\tif (editorDomNode) {\n\t\t\t\tconst editorRect = dom.getDomNodePagePosition(editorDomNode);\n\t\t\t\tthis._hover.containerDomNode.style.position = 'fixed';\n\t\t\t\tthis._hover.containerDomNode.style.left = `${editorRect.left + left}px`;\n\t\t\t\tthis._hover.containerDomNode.style.top = `${editorRect.top + constrainedTop}px`;\n\t\t\t}\n\t\t} else {\n\t\t\t// Use absolute positioning relative to the editor\n\t\t\tthis._hover.containerDomNode.style.position = 'absolute';\n\t\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\t\tthis._hover.containerDomNode.style.top = `${constrainedTop}px`;\n\t\t}\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\tpublic readonly allowEditorOverflow = true;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { context: this._editor }));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\n\t\t// Constrain the hover widget to stay within the editor bounds\n\t\tconst editorHeight = editorLayout.height;\n\t\tconst maxTop = editorHeight - nodeHeight;\n\t\tconst constrainedTop = Math.max(0, Math.min(Math.round(top), maxTop));\n\n\t\tconst fixedOverflowWidgets = this._editor.getOption(EditorOption.fixedOverflowWidgets);\n\t\tif (fixedOverflowWidgets) {\n\t\t\t// Use fixed positioning relative to the viewport\n\t\t\tconst editorDomNode = this._editor.getDomNode();\n\t\t\tif (editorDomNode) {\n\t\t\t\tconst editorRect = dom.getDomNodePagePosition(editorDomNode);\n\t\t\t\tthis._hover.containerDomNode.style.position = 'fixed';\n\t\t\t\tthis._hover.containerDomNode.style.left = `${editorRect.left + left}px`;\n\t\t\t\tthis._hover.containerDomNode.style.top = `${editorRect.top + constrainedTop}px`;\n\t\t\t}\n\t\t} else {\n\t\t\t// Use absolute positioning relative to the editor\n\t\t\tthis._hover.containerDomNode.style.position = 'absolute';\n\t\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\t\tthis._hover.containerDomNode.style.top = `${constrainedTop}px`;\n\t\t}\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/hover/browser/glyphHoverWidget.ts","vs/editor/contrib/hover/browser/glyphHoverWidget.ts"],"names":[],"mappings":"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","file":"glyphHoverWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { getEditorMarkdownSanitizerConfig } from '../../../browser/editorMarkdownSanitizer.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\tpublic readonly allowEditorOverflow = true;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { context: this._editor, sanitizerConfig: getEditorMarkdownSanitizerConfig(this._editor) }));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\n\t\t// Constrain the hover widget to stay within the editor bounds\n\t\tconst editorHeight = editorLayout.height;\n\t\tconst maxTop = editorHeight - nodeHeight;\n\t\tconst constrainedTop = Math.max(0, Math.min(Math.round(top), maxTop));\n\n\t\tconst fixedOverflowWidgets = this._editor.getOption(EditorOption.fixedOverflowWidgets);\n\t\tif (fixedOverflowWidgets) {\n\t\t\t// Use fixed positioning relative to the viewport\n\t\t\tconst editorDomNode = this._editor.getDomNode();\n\t\t\tif (editorDomNode) {\n\t\t\t\tconst editorRect = dom.getDomNodePagePosition(editorDomNode);\n\t\t\t\tthis._hover.containerDomNode.style.position = 'fixed';\n\t\t\t\tthis._hover.containerDomNode.style.left = `${editorRect.left + left}px`;\n\t\t\t\tthis._hover.containerDomNode.style.top = `${editorRect.top + constrainedTop}px`;\n\t\t\t}\n\t\t} else {\n\t\t\t// Use absolute positioning relative to the editor\n\t\t\tthis._hover.containerDomNode.style.position = 'absolute';\n\t\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\t\tthis._hover.containerDomNode.style.top = `${constrainedTop}px`;\n\t\t}\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../../platform/markdown/browser/markdownRenderer.js';\nimport { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { getEditorMarkdownSanitizerConfig } from '../../../browser/editorMarkdownSanitizer.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\tpublic readonly allowEditorOverflow = true;\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { context: this._editor, sanitizerConfig: getEditorMarkdownSanitizerConfig(this._editor) }));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\n\t\t// Constrain the hover widget to stay within the editor bounds\n\t\tconst editorHeight = editorLayout.height;\n\t\tconst maxTop = editorHeight - nodeHeight;\n\t\tconst constrainedTop = Math.max(0, Math.min(Math.round(top), maxTop));\n\n\t\tconst fixedOverflowWidgets = this._editor.getOption(EditorOption.fixedOverflowWidgets);\n\t\tif (fixedOverflowWidgets) {\n\t\t\t// Use fixed positioning relative to the viewport\n\t\t\tconst editorDomNode = this._editor.getDomNode();\n\t\t\tif (editorDomNode) {\n\t\t\t\tconst editorRect = dom.getDomNodePagePosition(editorDomNode);\n\t\t\t\tthis._hover.containerDomNode.style.position = 'fixed';\n\t\t\t\tthis._hover.containerDomNode.style.left = `${editorRect.left + left}px`;\n\t\t\t\tthis._hover.containerDomNode.style.top = `${editorRect.top + constrainedTop}px`;\n\t\t\t}\n\t\t} else {\n\t\t\t// Use absolute positioning relative to the editor\n\t\t\tthis._hover.containerDomNode.style.position = 'absolute';\n\t\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\t\tthis._hover.containerDomNode.style.top = `${constrainedTop}px`;\n\t\t}\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n}\n"]}
@@ -15,8 +15,8 @@ export const PAGE_DOWN_HOVER_ACTION_ID = 'editor.action.pageDownHover';
15
15
  export const GO_TO_TOP_HOVER_ACTION_ID = 'editor.action.goToTopHover';
16
16
  export const GO_TO_BOTTOM_HOVER_ACTION_ID = 'editor.action.goToBottomHover';
17
17
  export const INCREASE_HOVER_VERBOSITY_ACTION_ID = 'editor.action.increaseHoverVerbosityLevel';
18
- export const INCREASE_HOVER_VERBOSITY_ACTION_LABEL = nls.localize(1160, "Increase Hover Verbosity Level");
18
+ export const INCREASE_HOVER_VERBOSITY_ACTION_LABEL = nls.localize(1167, "Increase Hover Verbosity Level");
19
19
  export const DECREASE_HOVER_VERBOSITY_ACTION_ID = 'editor.action.decreaseHoverVerbosityLevel';
20
- export const DECREASE_HOVER_VERBOSITY_ACTION_LABEL = nls.localize(1161, "Decrease Hover Verbosity Level");
20
+ export const DECREASE_HOVER_VERBOSITY_ACTION_LABEL = nls.localize(1168, "Decrease Hover Verbosity Level");
21
21
  export const HIDE_LONG_LINE_WARNING_HOVER_ACTION_ID = 'editor.action.hideLongLineWarningHover';
22
22
  //# sourceMappingURL=hoverActionIds.js.map