@codingame/monaco-vscode-api 1.79.1 → 1.79.2-next.1

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 (467) hide show
  1. package/README.md +11 -2
  2. package/dist/api.js +10 -8
  3. package/dist/composite.d.ts +65 -0
  4. package/dist/configurationRegistry.d.ts +212 -0
  5. package/dist/contextkey.d.ts +1 -1
  6. package/dist/default-extensions/json.js +1 -0
  7. package/dist/default-extensions/theme-defaults.js +2 -2
  8. package/dist/editorBrowser.d.ts +272 -3
  9. package/dist/event.d.ts +6 -1
  10. package/dist/{extension-tools-0c4c1ad7.js → extension-tools-3c2bf0a4.js} +698 -507
  11. package/dist/extensions.d.ts +3 -2
  12. package/dist/extensions.d2.ts +6 -17
  13. package/dist/extensionsRegistry.d.ts +15 -9
  14. package/dist/files.d.ts +71 -7
  15. package/dist/jsonSchema.d.ts +1 -1
  16. package/dist/keybinding.d.ts +2 -2
  17. package/dist/languageFeatures.d.ts +703 -61
  18. package/dist/monaco.d.ts +5 -4
  19. package/dist/override/vs/workbench/contrib/notebook/browser/contrib/find/findMatchDecorationModel.js +2 -0
  20. package/dist/override/vs/workbench/contrib/notebook/browser/notebookEditor.js +2 -0
  21. package/dist/override/vs/workbench/contrib/notebook/browser/notebookEditorWidget.js +2 -0
  22. package/dist/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +2 -1
  23. package/dist/platform.d.ts +11 -0
  24. package/dist/rollup-extension-directory-plugin.js +1 -1
  25. package/dist/rollup-vsix-plugin.js +2 -2
  26. package/dist/service-override/configuration.d.ts +5 -206
  27. package/dist/service-override/dialogs.js +16 -1
  28. package/dist/service-override/files.d.ts +2 -2
  29. package/dist/service-override/files.js +1 -1
  30. package/dist/service-override/markers.d.ts +7 -0
  31. package/dist/service-override/markers.js +6 -0
  32. package/dist/service-override/output.d.ts +7 -0
  33. package/dist/service-override/output.js +22 -0
  34. package/dist/service-override/preferences.js +7 -1
  35. package/dist/service-override/quickaccess.js +0 -9
  36. package/dist/service-override/search.d.ts +7 -0
  37. package/dist/service-override/search.js +19 -0
  38. package/dist/service-override/terminal.d.ts +607 -0
  39. package/dist/service-override/terminal.js +98 -0
  40. package/dist/service-override/tools/editor.js +1 -1
  41. package/dist/service-override/views.d.ts +561 -335
  42. package/dist/service-override/views.js +51 -11
  43. package/dist/services.d.ts +2627 -108
  44. package/dist/services.js +3 -0
  45. package/dist/severity.d.ts +16 -0
  46. package/dist/uri.d.ts +22 -11
  47. package/dist/views.d.ts +270 -0
  48. package/dist/vscode/vs/base/common/processes.js +24 -0
  49. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/decorations.js +20 -0
  50. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/delegatingEditorImpl.js +106 -0
  51. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorSash.js +59 -0
  52. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.contribution.js +41 -0
  53. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.js +369 -0
  54. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffModel.js +247 -0
  55. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/lineAlignment.js +179 -0
  56. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/overviewRulerPart.js +121 -0
  57. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/style.css.js +4 -0
  58. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/unchangedRanges.js +184 -0
  59. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/utils.js +88 -0
  60. package/dist/vscode/vs/platform/extensionManagement/common/extensionManagement.js +38 -1
  61. package/dist/vscode/vs/platform/extensionManagement/common/extensionManagementUtil.js +5 -1
  62. package/dist/vscode/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +13 -5
  63. package/dist/vscode/vs/platform/files/common/fileService.js +43 -5
  64. package/dist/vscode/vs/platform/files/common/files.js +3 -1
  65. package/dist/vscode/vs/platform/languagePacks/common/languagePacks.js +4 -1
  66. package/dist/vscode/vs/platform/log/common/bufferLog.js +34 -0
  67. package/dist/vscode/vs/platform/log/common/fileLog.js +105 -0
  68. package/dist/vscode/vs/platform/quickinput/browser/quickPickPin.js +1 -1
  69. package/dist/vscode/vs/platform/remote/common/remoteAuthorityResolver.js +20 -1
  70. package/dist/vscode/vs/platform/request/browser/requestService.js +1 -1
  71. package/dist/vscode/vs/platform/request/common/request.js +3 -3
  72. package/dist/vscode/vs/platform/storage/common/storage.js +3 -0
  73. package/dist/vscode/vs/platform/terminal/common/capabilities/bufferMarkCapability.js +39 -0
  74. package/dist/vscode/vs/platform/terminal/common/capabilities/commandDetectionCapability.js +565 -0
  75. package/dist/vscode/vs/platform/terminal/common/capabilities/cwdDetectionCapability.js +27 -0
  76. package/dist/vscode/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.js +22 -0
  77. package/dist/vscode/vs/platform/terminal/common/capabilities/partialCommandDetectionCapability.js +46 -0
  78. package/dist/vscode/vs/platform/terminal/common/capabilities/terminalCapabilityStore.js +80 -0
  79. package/dist/vscode/vs/platform/terminal/common/environmentVariable.js +7 -0
  80. package/dist/vscode/vs/platform/terminal/common/environmentVariableCollection.js +196 -0
  81. package/dist/vscode/vs/platform/terminal/common/environmentVariableShared.js +23 -0
  82. package/dist/vscode/vs/platform/terminal/common/terminal.js +21 -1
  83. package/dist/vscode/vs/platform/terminal/common/terminalDataBuffering.js +45 -0
  84. package/dist/vscode/vs/platform/terminal/common/terminalEnvironment.js +37 -0
  85. package/dist/vscode/vs/platform/terminal/common/terminalPlatformConfiguration.js +622 -0
  86. package/dist/vscode/vs/platform/terminal/common/terminalProfiles.js +107 -0
  87. package/dist/vscode/vs/platform/terminal/common/terminalRecorder.js +66 -0
  88. package/dist/vscode/vs/platform/terminal/common/terminalStrings.js +16 -0
  89. package/dist/vscode/vs/platform/terminal/common/xterm/shellIntegrationAddon.js +321 -0
  90. package/dist/vscode/vs/platform/userDataSync/common/settingsMerge.js +39 -1
  91. package/dist/vscode/vs/platform/userDataSync/common/userDataSync.js +19 -0
  92. package/dist/vscode/vs/platform/window/common/window.js +7 -1
  93. package/dist/vscode/vs/platform/workspace/common/canonicalUri.js +3 -0
  94. package/dist/vscode/vs/platform/workspace/common/virtualWorkspace.js +4 -1
  95. package/dist/vscode/vs/platform/workspaces/common/workspaces.js +2 -2
  96. package/dist/vscode/vs/workbench/api/browser/mainThreadCommands.js +2 -3
  97. package/dist/vscode/vs/workbench/api/browser/mainThreadEditorTabs.js +473 -0
  98. package/dist/vscode/vs/workbench/api/browser/mainThreadLanguageFeatures.js +45 -38
  99. package/dist/vscode/vs/workbench/api/browser/mainThreadSearch.js +146 -0
  100. package/dist/vscode/vs/workbench/api/browser/mainThreadStatusBar.js +33 -52
  101. package/dist/vscode/vs/workbench/api/browser/mainThreadTerminalService.js +395 -0
  102. package/dist/vscode/vs/workbench/api/browser/mainThreadTheming.js +22 -0
  103. package/dist/vscode/vs/workbench/api/browser/mainThreadTreeViews.js +10 -5
  104. package/dist/vscode/vs/workbench/api/browser/mainThreadWindow.js +11 -4
  105. package/dist/vscode/vs/workbench/api/browser/mainThreadWorkspace.js +34 -11
  106. package/dist/vscode/vs/workbench/api/browser/statusBarExtensionPoint.js +81 -0
  107. package/dist/vscode/vs/workbench/api/common/extHost.protocol.js +7 -2
  108. package/dist/vscode/vs/workbench/api/common/extHostDebugService.js +4 -13
  109. package/dist/vscode/vs/workbench/api/common/extHostExtensionService.js +30 -15
  110. package/dist/vscode/vs/workbench/api/common/extHostFileSystemConsumer.js +20 -6
  111. package/dist/vscode/vs/workbench/api/common/extHostLanguageFeatures.js +41 -8
  112. package/dist/vscode/vs/workbench/api/common/extHostManagedSockets.js +3 -0
  113. package/dist/vscode/vs/workbench/api/common/extHostSearch.js +109 -0
  114. package/dist/vscode/vs/workbench/api/common/extHostStatusBar.js +33 -6
  115. package/dist/vscode/vs/workbench/api/common/extHostTerminalService.js +879 -1
  116. package/dist/vscode/vs/workbench/api/common/extHostTheming.js +38 -0
  117. package/dist/vscode/vs/workbench/api/common/extHostTreeViews.js +8 -5
  118. package/dist/vscode/vs/workbench/api/common/extHostTypeConverters.js +15 -17
  119. package/dist/vscode/vs/workbench/api/common/extHostTypes.js +117 -4
  120. package/dist/vscode/vs/workbench/api/common/extHostWindow.js +28 -6
  121. package/dist/vscode/vs/workbench/api/common/extHostWorkspace.js +28 -0
  122. package/dist/vscode/vs/workbench/api/common/shared/dataTransferCache.js +11 -14
  123. package/dist/vscode/vs/workbench/api/node/extHostTerminalService.js +22 -0
  124. package/dist/vscode/vs/workbench/browser/actions/layoutActions.js +2 -1
  125. package/dist/vscode/vs/workbench/browser/actions/windowActions.js +2 -2
  126. package/dist/vscode/vs/workbench/browser/dnd.js +56 -2
  127. package/dist/vscode/vs/workbench/browser/parts/compositePart.js +1 -1
  128. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialogHandler.js +2 -2
  129. package/dist/vscode/vs/workbench/browser/parts/editor/editor.contribution.js +1 -0
  130. package/dist/vscode/vs/workbench/browser/parts/editor/editor.js +1 -0
  131. package/dist/vscode/vs/workbench/browser/parts/editor/editorCommands.js +9 -10
  132. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupView.js +15 -9
  133. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupWatermark.js +13 -17
  134. package/dist/vscode/vs/workbench/browser/parts/editor/editorStatus.js +1 -1
  135. package/dist/vscode/vs/workbench/browser/parts/editor/editorsObserver.js +2 -2
  136. package/dist/vscode/vs/workbench/browser/parts/editor/media/editorgroupview.css.js +1 -1
  137. package/dist/vscode/vs/workbench/browser/parts/editor/media/tabstitlecontrol.css.js +1 -1
  138. package/dist/vscode/vs/workbench/browser/parts/editor/noTabsTitleControl.js +3 -1
  139. package/dist/vscode/vs/workbench/browser/parts/editor/tabsTitleControl.js +60 -11
  140. package/dist/vscode/vs/workbench/browser/parts/editor/textDiffEditor.js +16 -10
  141. package/dist/vscode/vs/workbench/browser/parts/editor/textResourceEditor.js +1 -1
  142. package/dist/vscode/vs/workbench/browser/parts/statusbar/media/statusbarpart.css.js +1 -1
  143. package/dist/vscode/vs/workbench/browser/parts/views/checkbox.js +10 -0
  144. package/dist/vscode/vs/workbench/browser/parts/views/treeView.js +78 -14
  145. package/dist/vscode/vs/workbench/browser/parts/views/viewPaneContainer.js +1 -1
  146. package/dist/vscode/vs/workbench/browser/workbench.contribution.js +65 -6
  147. package/dist/vscode/vs/workbench/common/configuration.js +8 -1
  148. package/dist/vscode/vs/workbench/common/contextkeys.js +9 -1
  149. package/dist/vscode/vs/workbench/common/editor/editorGroupModel.js +5 -1
  150. package/dist/vscode/vs/workbench/common/editor/resourceEditorInput.js +6 -3
  151. package/dist/vscode/vs/workbench/common/editor/textResourceEditorInput.js +9 -6
  152. package/dist/vscode/vs/workbench/common/editor.js +1 -5
  153. package/dist/vscode/vs/workbench/common/resources.js +111 -34
  154. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +1 -1
  155. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +1 -1
  156. package/dist/vscode/vs/workbench/contrib/chat/browser/chat.js +3 -0
  157. package/dist/vscode/vs/workbench/contrib/chat/common/chatService.js +3 -0
  158. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js +6 -4
  159. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.css.js +4 -0
  160. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js +250 -0
  161. package/dist/vscode/vs/workbench/contrib/customEditor/browser/customEditorInput.js +290 -0
  162. package/dist/vscode/vs/workbench/contrib/customEditor/common/customEditor.js +3 -0
  163. package/dist/vscode/vs/workbench/contrib/debug/browser/debugActionViewItems.js +1 -0
  164. package/dist/vscode/vs/workbench/contrib/debug/browser/debugCommands.js +2 -1
  165. package/dist/vscode/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +20 -20
  166. package/dist/vscode/vs/workbench/contrib/debug/browser/debugEditorActions.js +5 -3
  167. package/dist/vscode/vs/workbench/contrib/debug/browser/debugEditorContribution.js +5 -2
  168. package/dist/vscode/vs/workbench/contrib/debug/browser/debugHover.js +33 -6
  169. package/dist/vscode/vs/workbench/contrib/debug/browser/debugSession.js +1 -1
  170. package/dist/vscode/vs/workbench/contrib/debug/browser/debugTaskRunner.js +1 -1
  171. package/dist/vscode/vs/workbench/contrib/debug/browser/repl.js +3 -3
  172. package/dist/vscode/vs/workbench/contrib/debug/common/debugModel.js +29 -17
  173. package/dist/vscode/vs/workbench/contrib/debug/common/debugStorage.js +11 -10
  174. package/dist/vscode/vs/workbench/contrib/debug/common/debugger.js +10 -6
  175. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsActions.js +2514 -0
  176. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsIcons.js +82 -0
  177. package/dist/vscode/vs/workbench/contrib/extensions/browser/media/extensionActions.css.js +4 -0
  178. package/dist/vscode/vs/workbench/contrib/extensions/common/extensions.js +6 -1
  179. package/dist/vscode/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js +16 -0
  180. package/dist/vscode/vs/workbench/contrib/files/browser/editors/fileEditorInput.js +2 -3
  181. package/dist/vscode/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js +2 -0
  182. package/dist/vscode/vs/workbench/contrib/files/browser/explorerService.js +10 -6
  183. package/dist/vscode/vs/workbench/contrib/files/browser/explorerViewlet.js +3 -18
  184. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.contribution.js +37 -2
  185. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.js +65 -3
  186. package/dist/vscode/vs/workbench/contrib/files/browser/fileCommands.js +3 -3
  187. package/dist/vscode/vs/workbench/contrib/files/browser/fileConstants.js +3 -1
  188. package/dist/vscode/vs/workbench/contrib/files/browser/files.contribution.js +41 -6
  189. package/dist/vscode/vs/workbench/contrib/files/browser/files.js +1 -0
  190. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerView.js +3 -3
  191. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerViewer.js +6 -2
  192. package/dist/vscode/vs/workbench/contrib/files/common/explorerModel.js +16 -9
  193. package/dist/vscode/vs/workbench/contrib/files/common/files.js +1 -6
  194. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveDocumentService.js +3 -0
  195. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +200 -0
  196. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +3 -0
  197. package/dist/vscode/vs/workbench/contrib/markers/browser/markers.contribution.js +586 -0
  198. package/dist/vscode/vs/workbench/contrib/markers/browser/markersFilterOptions.js +75 -0
  199. package/dist/vscode/vs/workbench/contrib/markers/browser/markersModel.js +201 -0
  200. package/dist/vscode/vs/workbench/contrib/markers/browser/markersTable.js +451 -0
  201. package/dist/vscode/vs/workbench/contrib/markers/browser/markersTreeViewer.js +670 -0
  202. package/dist/vscode/vs/workbench/contrib/markers/browser/markersView.js +857 -0
  203. package/dist/vscode/vs/workbench/contrib/markers/browser/markersViewActions.css.js +4 -0
  204. package/dist/vscode/vs/workbench/contrib/markers/browser/markersViewActions.js +132 -0
  205. package/dist/vscode/vs/workbench/contrib/markers/browser/media/markers.css.js +4 -0
  206. package/dist/vscode/vs/workbench/contrib/markers/browser/messages.js +171 -0
  207. package/dist/vscode/vs/workbench/contrib/markers/common/markers.js +15 -1
  208. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +135 -0
  209. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +421 -0
  210. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.js +5 -0
  211. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +55 -0
  212. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/editing.js +54 -0
  213. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/lineRange.js +108 -0
  214. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +334 -0
  215. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +606 -0
  216. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.js +307 -0
  217. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/rangeUtils.js +36 -0
  218. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +165 -0
  219. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/telemetry.js +78 -0
  220. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/utils.js +68 -0
  221. package/dist/vscode/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +2 -0
  222. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/findFilters.js +70 -0
  223. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.css.js +4 -0
  224. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.js +158 -0
  225. package/dist/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser.js +6 -1
  226. package/dist/vscode/vs/workbench/contrib/notebook/browser/services/notebookEditorService.js +3 -0
  227. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookCommon.js +16 -1
  228. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookService.js +3 -0
  229. package/dist/vscode/vs/workbench/contrib/output/browser/logViewer.js +64 -0
  230. package/dist/vscode/vs/workbench/contrib/output/browser/output.contribution.js +378 -0
  231. package/dist/vscode/vs/workbench/contrib/output/browser/outputServices.js +39 -3
  232. package/dist/vscode/vs/workbench/contrib/output/browser/outputView.js +220 -0
  233. package/dist/vscode/vs/workbench/contrib/output/common/outputChannelModel.js +12 -3
  234. package/dist/vscode/vs/workbench/contrib/output/common/outputLinkComputer.js +129 -0
  235. package/dist/vscode/vs/workbench/contrib/preferences/browser/keybindingWidgets.js +270 -0
  236. package/dist/vscode/vs/workbench/contrib/preferences/browser/keybindingsEditor.js +1080 -0
  237. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/keybindings.css.js +4 -0
  238. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css.js +4 -0
  239. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/preferences.css.js +4 -0
  240. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css.js +4 -0
  241. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css.js +4 -0
  242. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferences.contribution.js +1154 -0
  243. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesActions.js +94 -0
  244. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesEditor.js +47 -0
  245. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesIcons.js +37 -0
  246. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesRenderers.js +731 -0
  247. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesSearch.js +271 -0
  248. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesWidgets.js +479 -0
  249. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsEditor2.js +1465 -0
  250. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.js +506 -0
  251. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsLayout.js +296 -0
  252. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsSearchMenu.js +79 -0
  253. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsTree.js +1984 -0
  254. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsTreeModels.js +759 -0
  255. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsWidgets.js +1008 -0
  256. package/dist/vscode/vs/workbench/contrib/preferences/browser/tocTree.js +196 -0
  257. package/dist/vscode/vs/workbench/contrib/preferences/common/preferences.js +68 -0
  258. package/dist/vscode/vs/workbench/contrib/preferences/common/preferencesContribution.js +157 -0
  259. package/dist/vscode/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry.js +67 -0
  260. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +16 -16
  261. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +1 -2
  262. package/dist/vscode/vs/workbench/contrib/remote/browser/remoteExplorer.js +23 -2
  263. package/dist/vscode/vs/workbench/contrib/remote/browser/tunnelView.js +5 -5
  264. package/dist/vscode/vs/workbench/contrib/search/browser/media/searchview.css.js +4 -0
  265. package/dist/vscode/vs/workbench/contrib/search/browser/patternInputWidget.js +217 -0
  266. package/dist/vscode/vs/workbench/contrib/search/browser/replace.js +3 -0
  267. package/dist/vscode/vs/workbench/contrib/search/browser/replaceContributions.js +7 -0
  268. package/dist/vscode/vs/workbench/contrib/search/browser/replaceService.js +222 -0
  269. package/dist/vscode/vs/workbench/contrib/search/browser/search.contribution.js +54 -15
  270. package/dist/vscode/vs/workbench/contrib/search/browser/searchActionsBase.js +17 -0
  271. package/dist/vscode/vs/workbench/contrib/search/browser/searchFindInput.js +41 -0
  272. package/dist/vscode/vs/workbench/contrib/search/browser/searchIcons.js +35 -0
  273. package/dist/vscode/vs/workbench/contrib/search/browser/searchMessage.js +58 -0
  274. package/dist/vscode/vs/workbench/contrib/search/browser/searchModel.js +1842 -0
  275. package/dist/vscode/vs/workbench/contrib/search/browser/searchNotebookHelpers.js +49 -0
  276. package/dist/vscode/vs/workbench/contrib/search/browser/searchResultsView.js +379 -0
  277. package/dist/vscode/vs/workbench/contrib/search/browser/searchView.js +1867 -0
  278. package/dist/vscode/vs/workbench/contrib/search/browser/searchWidget.js +628 -0
  279. package/dist/vscode/vs/workbench/contrib/search/common/constants.js +30 -1
  280. package/dist/vscode/vs/workbench/contrib/search/common/search.js +9 -1
  281. package/dist/vscode/vs/workbench/contrib/search/common/searchHistoryService.js +42 -0
  282. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/constants.js +11 -0
  283. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css.js +4 -0
  284. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js +477 -0
  285. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditor.js +697 -0
  286. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js +188 -0
  287. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +295 -0
  288. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorModel.js +135 -0
  289. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js +268 -0
  290. package/dist/vscode/vs/workbench/contrib/snippets/browser/tabCompletion.js +2 -2
  291. package/dist/vscode/vs/workbench/contrib/tasks/common/taskService.js +16 -1
  292. package/dist/vscode/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js +119 -0
  293. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/scrollbar.css.js +4 -0
  294. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/terminal.css.js +4 -0
  295. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/widgets.css.js +4 -0
  296. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/xterm.css.js +4 -0
  297. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.contribution.js +238 -0
  298. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.js +4 -1
  299. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalActions.js +1930 -0
  300. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalCommands.js +22 -0
  301. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js +213 -0
  302. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalContextMenu.js +17 -0
  303. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditor.js +186 -0
  304. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +199 -0
  305. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorService.js +239 -0
  306. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalExtensions.js +22 -0
  307. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalGroup.js +482 -0
  308. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalGroupService.js +372 -0
  309. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcon.js +60 -1
  310. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcons.js +37 -0
  311. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstance.js +2123 -0
  312. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstanceService.js +79 -0
  313. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalMainContribution.js +82 -0
  314. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalMenus.js +850 -0
  315. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js +142 -0
  316. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProcessManager.js +618 -0
  317. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.js +278 -0
  318. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.js +417 -0
  319. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileService.js +213 -0
  320. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js +144 -0
  321. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalRunRecentQuickPick.js +267 -0
  322. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalService.js +1063 -0
  323. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalStatusList.js +108 -0
  324. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTabbedView.js +417 -0
  325. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTabsList.js +680 -0
  326. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTooltip.js +72 -0
  327. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalUri.js +39 -0
  328. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalView.js +535 -0
  329. package/dist/vscode/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js +36 -0
  330. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.js +469 -0
  331. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/decorationStyles.js +97 -0
  332. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.js +56 -0
  333. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.js +416 -0
  334. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/suggestAddon.js +390 -0
  335. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.js +587 -0
  336. package/dist/vscode/vs/workbench/contrib/terminal/common/environmentVariable.js +3 -0
  337. package/dist/vscode/vs/workbench/contrib/terminal/common/environmentVariableService.js +94 -0
  338. package/dist/vscode/vs/workbench/contrib/terminal/common/history.js +356 -0
  339. package/dist/vscode/vs/workbench/contrib/terminal/common/terminal.js +266 -0
  340. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +23 -16
  341. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalConfiguration.js +965 -0
  342. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalContextKey.js +157 -0
  343. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalEnvironment.js +272 -0
  344. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalExtensionPoints.js +27 -0
  345. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalStrings.js +86 -0
  346. package/dist/vscode/vs/workbench/contrib/terminal/electron-sandbox/terminalProfileResolverService.js +46 -0
  347. package/dist/vscode/vs/workbench/contrib/terminalContrib/links/browser/links.js +3 -0
  348. package/dist/vscode/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkProviderService.js +26 -0
  349. package/dist/vscode/vs/workbench/contrib/terminalContrib/quickFix/browser/quickFix.js +3 -0
  350. package/dist/vscode/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixService.js +143 -0
  351. package/dist/vscode/vs/workbench/contrib/webviewPanel/browser/webviewEditorInput.js +85 -0
  352. package/dist/vscode/vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService.js +52 -0
  353. package/dist/vscode/vs/workbench/services/actions/common/menusExtensionPoint.js +14 -6
  354. package/dist/vscode/vs/workbench/services/assignment/common/assignmentService.js +3 -0
  355. package/dist/vscode/vs/workbench/services/configuration/browser/configurationService.js +13 -13
  356. package/dist/vscode/vs/workbench/services/configuration/common/configuration.js +2 -1
  357. package/dist/vscode/vs/workbench/services/configuration/common/configurationEditing.js +2 -2
  358. package/dist/vscode/vs/workbench/services/configuration/common/jsonEditingService.js +2 -2
  359. package/dist/vscode/vs/workbench/services/dialogs/browser/abstractFileDialogService.js +302 -0
  360. package/dist/vscode/vs/workbench/services/dialogs/browser/simpleFileDialog.js +971 -0
  361. package/dist/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.js +3 -2
  362. package/dist/vscode/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.js +4 -0
  363. package/dist/vscode/vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig.js +2 -0
  364. package/dist/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.js +3 -0
  365. package/dist/vscode/vs/workbench/services/extensions/common/extensions.js +14 -2
  366. package/dist/vscode/vs/workbench/services/extensions/common/extensionsApiProposals.js +10 -1
  367. package/dist/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +70 -3
  368. package/dist/vscode/vs/workbench/services/hover/browser/hoverService.js +1 -1
  369. package/dist/vscode/vs/workbench/services/hover/browser/hoverWidget.js +2 -1
  370. package/dist/vscode/vs/workbench/services/hover/browser/media/hover.css.js +1 -1
  371. package/dist/vscode/vs/workbench/services/keybinding/common/keybindingEditing.js +275 -0
  372. package/dist/vscode/vs/workbench/services/localization/common/locale.js +3 -0
  373. package/dist/vscode/vs/workbench/services/log/common/logConstants.js +2 -0
  374. package/dist/vscode/vs/workbench/services/output/common/output.js +4 -1
  375. package/dist/vscode/vs/workbench/services/preferences/common/preferences.js +22 -1
  376. package/dist/vscode/vs/workbench/services/preferences/common/preferencesModels.js +6 -0
  377. package/dist/vscode/vs/workbench/services/preferences/common/preferencesValidation.js +37 -1
  378. package/dist/vscode/vs/workbench/services/remote/common/remoteAgentService.js +69 -0
  379. package/dist/vscode/vs/workbench/services/remote/common/remoteExplorerService.js +66 -27
  380. package/dist/vscode/vs/workbench/services/search/common/fileSearchManager.js +265 -0
  381. package/dist/vscode/vs/workbench/services/search/common/queryBuilder.js +6 -0
  382. package/dist/vscode/vs/workbench/services/search/common/replace.js +203 -0
  383. package/dist/vscode/vs/workbench/services/search/common/search.js +227 -1
  384. package/dist/vscode/vs/workbench/services/search/common/searchExtTypes.js +6 -0
  385. package/dist/vscode/vs/workbench/services/search/common/searchHelpers.js +72 -0
  386. package/dist/vscode/vs/workbench/services/search/common/searchService.js +355 -0
  387. package/dist/vscode/vs/workbench/services/search/common/textSearchManager.js +309 -0
  388. package/dist/vscode/vs/workbench/services/suggest/browser/media/suggest.css.js +4 -0
  389. package/dist/vscode/vs/workbench/services/suggest/browser/simpleCompletionItem.js +10 -0
  390. package/dist/vscode/vs/workbench/services/suggest/browser/simpleCompletionModel.js +98 -0
  391. package/dist/vscode/vs/workbench/services/suggest/browser/simpleSuggestWidget.js +399 -0
  392. package/dist/vscode/vs/workbench/services/suggest/browser/simpleSuggestWidgetRenderer.js +83 -0
  393. package/dist/vscode/vs/workbench/services/terminal/common/embedderTerminalService.js +3 -0
  394. package/dist/vscode/vs/workbench/services/textfile/browser/textFileService.js +1 -1
  395. package/dist/vscode/vs/workbench/services/textfile/common/textFileEditorModel.js +10 -3
  396. package/dist/vscode/vs/workbench/services/themes/browser/fileIconThemeData.js +3 -3
  397. package/dist/vscode/vs/workbench/services/themes/browser/productIconThemeData.js +3 -3
  398. package/dist/vscode/vs/workbench/services/themes/common/colorThemeData.js +3 -3
  399. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorInput.js +6 -4
  400. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorModel.js +3 -0
  401. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorService.js +4 -0
  402. package/dist/vscode/vs/workbench/services/userActivity/common/userActivityRegistry.js +15 -0
  403. package/dist/vscode/vs/workbench/services/userActivity/common/userActivityService.js +37 -0
  404. package/dist/vscode/vs/workbench/services/userDataSync/common/userDataSync.js +7 -0
  405. package/dist/vscode/vs/workbench/services/workingCopy/common/workingCopyEditorService.js +40 -0
  406. package/dist/vscode/vs/workbench/services/workingCopy/common/workingCopyService.js +12 -0
  407. package/dist/vscode/vs/workbench/services/workspaces/common/canonicalUriService.js +19 -0
  408. package/dist/vscode-default-extensions/css/syntaxes/css.tmLanguage.json.extensionResource.js +1 -1
  409. package/dist/vscode-default-extensions/json/package.json.js +1 -1
  410. package/dist/vscode-default-extensions/json/syntaxes/JSONC.tmLanguage.json.extensionResource.js +1 -1
  411. package/dist/vscode-default-extensions/json/syntaxes/JSONL.tmLanguage.json.extensionResource.js +2 -0
  412. package/dist/vscode-default-extensions/latex/syntaxes/Bibtex.tmLanguage.json.extensionResource.js +1 -1
  413. package/dist/vscode-default-extensions/latex/syntaxes/LaTeX.tmLanguage.json.extensionResource.js +1 -1
  414. package/dist/vscode-default-extensions/latex/syntaxes/TeX.tmLanguage.json.extensionResource.js +1 -1
  415. package/dist/vscode-default-extensions/latex/syntaxes/cpp-grammar-bailout.tmLanguage.json.extensionResource.js +1 -1
  416. package/dist/vscode-default-extensions/latex/syntaxes/markdown-latex-combined.tmLanguage.json.extensionResource.js +1 -1
  417. package/dist/vscode-default-extensions/lua/syntaxes/lua.tmLanguage.json.extensionResource.js +1 -1
  418. package/dist/vscode-default-extensions/perl/package.json.js +1 -1
  419. package/dist/vscode-default-extensions/php/snippets/php.code-snippets.extensionResource.js +1 -1
  420. package/dist/vscode-default-extensions/sql/language-configuration.json.extensionResource.js +1 -1
  421. package/dist/vscode-default-extensions/theme-abyss/themes/abyss-color-theme.json.extensionResource.js +1 -1
  422. package/dist/vscode-default-extensions/theme-defaults/package.json.js +1 -1
  423. package/dist/vscode-default-extensions/theme-defaults/themes/dark_modern.json.extensionResource.js +2 -0
  424. package/dist/vscode-default-extensions/theme-defaults/themes/dark_vs.json.extensionResource.js +1 -1
  425. package/dist/vscode-default-extensions/theme-defaults/themes/hc_black.json.extensionResource.js +1 -1
  426. package/dist/vscode-default-extensions/theme-defaults/themes/hc_light.json.extensionResource.js +1 -1
  427. package/dist/vscode-default-extensions/theme-defaults/themes/light_modern.json.extensionResource.js +2 -0
  428. package/dist/vscode-default-extensions/theme-defaults/themes/light_vs.json.extensionResource.js +1 -1
  429. package/dist/vscode-default-extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json.extensionResource.js +1 -1
  430. package/dist/vscode-default-extensions/theme-monokai/themes/monokai-color-theme.json.extensionResource.js +1 -1
  431. package/dist/vscode-default-extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json.extensionResource.js +1 -1
  432. package/dist/vscode-default-extensions/theme-quietlight/themes/quietlight-color-theme.json.extensionResource.js +1 -1
  433. package/dist/vscode-default-extensions/theme-red/themes/Red-color-theme.json.extensionResource.js +1 -1
  434. package/dist/vscode-default-extensions/theme-seti/icons/vs-seti-icon-theme.json.extensionResource.js +1 -1
  435. package/dist/vscode-default-extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json.extensionResource.js +1 -1
  436. package/dist/vscode-default-extensions/theme-solarized-light/themes/solarized-light-color-theme.json.extensionResource.js +1 -1
  437. package/dist/vscode-default-extensions/theme-tomorrow-night-blue/themes/tomorrow-night-blue-color-theme.json.extensionResource.js +1 -1
  438. package/dist/vscode-default-extensions/vb/language-configuration.json.extensionResource.js +1 -1
  439. package/dist/vscode-services/env.js +4 -2
  440. package/dist/vscode-services/extHost.js +32 -48
  441. package/dist/vscode-services/missing-services.js +407 -29
  442. package/dist/vscode-services/window.js +59 -65
  443. package/dist/vscode-services/workspace.js +19 -5
  444. package/dist/workers/outputLinkComputer.worker.d.ts +2 -0
  445. package/dist/workers/outputLinkComputer.worker.js +3 -0
  446. package/dist/workspace.d.ts +1 -1
  447. package/monaco-editor-treemending.patch +1305 -1184
  448. package/package.json +65 -19
  449. package/dist/activity.d.ts +0 -2802
  450. package/dist/collections.d.ts +0 -7
  451. package/dist/colorRegistry.d.ts +0 -710
  452. package/dist/vscode/vs/platform/product/common/product.js +0 -48
  453. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionFollowups.js +0 -30
  454. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionInputPart.js +0 -196
  455. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionListRenderer.js +0 -622
  456. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionOptions.js +0 -77
  457. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionWidget.js +0 -311
  458. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/media/interactiveSession.css.js +0 -4
  459. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionContextKeys.js +0 -56
  460. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionModel.js +0 -305
  461. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionService.js +0 -13
  462. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionServiceImpl.js +0 -379
  463. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionViewModel.js +0 -207
  464. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionWidgetHistoryService.js +0 -3
  465. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionWordCounter.js +0 -25
  466. package/dist/vscode-default-extensions/theme-defaults/themes/dark_plus_experimental.json.extensionResource.js +0 -2
  467. package/dist/vscode-default-extensions/theme-defaults/themes/light_plus_experimental.json.extensionResource.js +0 -2
@@ -0,0 +1,1080 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import './media/keybindingsEditor.css.js';
3
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
4
+ import { Delayer } from 'monaco-editor/esm/vs/base/common/async.js';
5
+ import * as dom from 'monaco-editor/esm/vs/base/browser/dom.js';
6
+ import { isIOS, OS } from 'monaco-editor/esm/vs/base/common/platform.js';
7
+ import { DisposableStore, Disposable, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
8
+ import { ToggleActionViewItem } from 'monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js';
9
+ import { HighlightedLabel } from 'monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js';
10
+ import { KeybindingLabel } from 'monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js';
11
+ import { Action, Separator } from 'monaco-editor/esm/vs/base/common/actions.js';
12
+ import { ActionBar } from 'monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js';
13
+ import { EditorPane } from '../../../browser/parts/editor/editorPane.js';
14
+ import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
15
+ import { IClipboardService } from 'monaco-editor/esm/vs/platform/clipboard/common/clipboardService.js';
16
+ import { KEYBINDING_ENTRY_TEMPLATE_ID } from '../../../services/preferences/browser/keybindingsEditorModel.js';
17
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
18
+ import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
19
+ import { DefineKeybindingWidget, KeybindingsSearchWidget } from './keybindingWidgets.js';
20
+ import { CONTEXT_KEYBINDINGS_EDITOR, CONTEXT_KEYBINDINGS_SEARCH_FOCUS, CONTEXT_KEYBINDING_FOCUS, KEYBINDINGS_EDITOR_COMMAND_RECORD_SEARCH_KEYS, KEYBINDINGS_EDITOR_COMMAND_SORTBY_PRECEDENCE, KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, KEYBINDINGS_EDITOR_COMMAND_DEFINE, KEYBINDINGS_EDITOR_COMMAND_ADD, KEYBINDINGS_EDITOR_COMMAND_DEFINE_WHEN, KEYBINDINGS_EDITOR_COMMAND_REMOVE, KEYBINDINGS_EDITOR_COMMAND_RESET, KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR, KEYBINDINGS_EDITOR_COMMAND_COPY, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND, KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND_TITLE, CONTEXT_WHEN_FOCUS } from '../common/preferences.js';
21
+ import { IContextMenuService } from 'monaco-editor/esm/vs/platform/contextview/browser/contextView.js';
22
+ import { IKeybindingEditingService } from '../../../services/keybinding/common/keybindingEditing.js';
23
+ import { registerThemingParticipant, IThemeService } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
24
+ import { ThemeIcon } from 'monaco-editor/esm/vs/base/common/themables.js';
25
+ import { IContextKeyService, RawContextKey } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
26
+ import { registerColor, tableOddRowsBackgroundColor, foreground, listActiveSelectionForeground, listActiveSelectionBackground, listInactiveSelectionForeground, listInactiveSelectionBackground, listFocusForeground, listFocusBackground, listHoverForeground, listHoverBackground, asCssVariable, badgeBackground, badgeForeground, contrastBorder, editorBackground } from 'monaco-editor/esm/vs/platform/theme/common/colorRegistry.js';
27
+ import { IEditorService } from '../../../services/editor/common/editorService.js';
28
+ import { EditorExtensionsRegistry } from 'monaco-editor/esm/vs/editor/browser/editorExtensions.js';
29
+ import { WorkbenchTable } from 'monaco-editor/esm/vs/platform/list/browser/listService.js';
30
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
31
+ import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
32
+ import { Emitter, Event } from 'monaco-editor/esm/vs/base/common/event.js';
33
+ import { MenuRegistry, MenuId, isIMenuItem } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
34
+ import { WORKBENCH_BACKGROUND } from '../../../common/theme.js';
35
+ import { keybindingsRecordKeysIcon, keybindingsSortIcon, preferencesClearInputIcon, keybindingsEditIcon, keybindingsAddIcon } from './preferencesIcons.js';
36
+ import { ToolBar } from 'monaco-editor/esm/vs/base/browser/ui/toolbar/toolbar.js';
37
+ import { getInputBoxStyle, defaultToggleStyles, defaultKeybindingLabelStyles } from 'monaco-editor/esm/vs/platform/theme/browser/defaultStyles.js';
38
+ import { IExtensionsWorkbenchService } from '../../extensions/common/extensions.js';
39
+ import { StandardKeyboardEvent } from 'monaco-editor/esm/vs/base/browser/keyboardEvent.js';
40
+ import { isString } from 'monaco-editor/esm/vs/base/common/types.js';
41
+ import { SuggestEnabledInput } from '../../codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js';
42
+ import { settingsTextInputBorder } from '../common/settingsEditorColorRegistry.js';
43
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
44
+ const $ = dom.$;
45
+ let KeybindingsEditor = class KeybindingsEditor extends EditorPane {
46
+ constructor(telemetryService, themeService, keybindingsService, contextMenuService, keybindingEditingService, contextKeyService, notificationService, clipboardService, instantiationService, editorService, storageService, configurationService) {
47
+ super(KeybindingsEditor.ID, telemetryService, themeService, storageService);
48
+ this.keybindingsService = keybindingsService;
49
+ this.contextMenuService = contextMenuService;
50
+ this.keybindingEditingService = keybindingEditingService;
51
+ this.contextKeyService = contextKeyService;
52
+ this.notificationService = notificationService;
53
+ this.clipboardService = clipboardService;
54
+ this.instantiationService = instantiationService;
55
+ this.editorService = editorService;
56
+ this.configurationService = configurationService;
57
+ this._onDefineWhenExpression = this._register(( new Emitter()));
58
+ this.onDefineWhenExpression = this._onDefineWhenExpression.event;
59
+ this._onRejectWhenExpression = this._register(( new Emitter()));
60
+ this.onRejectWhenExpression = this._onRejectWhenExpression.event;
61
+ this._onAcceptWhenExpression = this._register(( new Emitter()));
62
+ this.onAcceptWhenExpression = this._onAcceptWhenExpression.event;
63
+ this._onLayout = this._register(( new Emitter()));
64
+ this.onLayout = this._onLayout.event;
65
+ this.keybindingsEditorModel = null;
66
+ this.unAssignedKeybindingItemToRevealAndFocus = null;
67
+ this.tableEntries = [];
68
+ this.dimension = null;
69
+ this.latestEmptyFilters = [];
70
+ this.delayedFiltering = ( new Delayer(300));
71
+ this._register(keybindingsService.onDidUpdateKeybindings(() => this.render(!!this.keybindingFocusContextKey.get())));
72
+ this.keybindingsEditorContextKey = CONTEXT_KEYBINDINGS_EDITOR.bindTo(this.contextKeyService);
73
+ this.searchFocusContextKey = CONTEXT_KEYBINDINGS_SEARCH_FOCUS.bindTo(this.contextKeyService);
74
+ this.keybindingFocusContextKey = CONTEXT_KEYBINDING_FOCUS.bindTo(this.contextKeyService);
75
+ this.searchHistoryDelayer = ( new Delayer(500));
76
+ this.recordKeysAction = ( new Action(KEYBINDINGS_EDITOR_COMMAND_RECORD_SEARCH_KEYS, ( localize('recordKeysLabel', "Record Keys")), ThemeIcon.asClassName(keybindingsRecordKeysIcon)));
77
+ this.recordKeysAction.checked = false;
78
+ this.sortByPrecedenceAction = ( new Action(KEYBINDINGS_EDITOR_COMMAND_SORTBY_PRECEDENCE, ( localize('sortByPrecedeneLabel', "Sort by Precedence (Highest first)")), ThemeIcon.asClassName(keybindingsSortIcon)));
79
+ this.sortByPrecedenceAction.checked = false;
80
+ this.overflowWidgetsDomNode = $('.keybindings-overflow-widgets-container.monaco-editor');
81
+ }
82
+ createEditor(parent) {
83
+ const keybindingsEditorElement = dom.append(parent, $('div', { class: 'keybindings-editor' }));
84
+ this.createAriaLabelElement(keybindingsEditorElement);
85
+ this.createOverlayContainer(keybindingsEditorElement);
86
+ this.createHeader(keybindingsEditorElement);
87
+ this.createBody(keybindingsEditorElement);
88
+ }
89
+ setInput(input, options, context, token) {
90
+ this.keybindingsEditorContextKey.set(true);
91
+ return super.setInput(input, options, context, token)
92
+ .then(() => this.render(!!(options && options.preserveFocus)));
93
+ }
94
+ clearInput() {
95
+ super.clearInput();
96
+ this.keybindingsEditorContextKey.reset();
97
+ this.keybindingFocusContextKey.reset();
98
+ }
99
+ layout(dimension) {
100
+ this.dimension = dimension;
101
+ this.layoutSearchWidget(dimension);
102
+ this.overlayContainer.style.width = dimension.width + 'px';
103
+ this.overlayContainer.style.height = dimension.height + 'px';
104
+ this.defineKeybindingWidget.layout(this.dimension);
105
+ this.layoutKeybindingsTable();
106
+ this._onLayout.fire();
107
+ }
108
+ focus() {
109
+ const activeKeybindingEntry = this.activeKeybindingEntry;
110
+ if (activeKeybindingEntry) {
111
+ this.selectEntry(activeKeybindingEntry);
112
+ }
113
+ else if (!isIOS) {
114
+ this.searchWidget.focus();
115
+ }
116
+ }
117
+ get activeKeybindingEntry() {
118
+ const focusedElement = this.keybindingsTable.getFocusedElements()[0];
119
+ return focusedElement && focusedElement.templateId === KEYBINDING_ENTRY_TEMPLATE_ID ? focusedElement : null;
120
+ }
121
+ async defineKeybinding(keybindingEntry, add) {
122
+ this.selectEntry(keybindingEntry);
123
+ this.showOverlayContainer();
124
+ try {
125
+ const key = await this.defineKeybindingWidget.define();
126
+ if (key) {
127
+ await this.updateKeybinding(keybindingEntry, key, keybindingEntry.keybindingItem.when, add);
128
+ }
129
+ }
130
+ catch (error) {
131
+ this.onKeybindingEditingError(error);
132
+ }
133
+ finally {
134
+ this.hideOverlayContainer();
135
+ this.selectEntry(keybindingEntry);
136
+ }
137
+ }
138
+ defineWhenExpression(keybindingEntry) {
139
+ if (keybindingEntry.keybindingItem.keybinding) {
140
+ this.selectEntry(keybindingEntry);
141
+ this._onDefineWhenExpression.fire(keybindingEntry);
142
+ }
143
+ }
144
+ rejectWhenExpression(keybindingEntry) {
145
+ this._onRejectWhenExpression.fire(keybindingEntry);
146
+ }
147
+ acceptWhenExpression(keybindingEntry) {
148
+ this._onAcceptWhenExpression.fire(keybindingEntry);
149
+ }
150
+ async updateKeybinding(keybindingEntry, key, when, add) {
151
+ const currentKey = keybindingEntry.keybindingItem.keybinding ? keybindingEntry.keybindingItem.keybinding.getUserSettingsLabel() : '';
152
+ if (currentKey !== key || keybindingEntry.keybindingItem.when !== when) {
153
+ if (add) {
154
+ await this.keybindingEditingService.addKeybinding(keybindingEntry.keybindingItem.keybindingItem, key, when || undefined);
155
+ }
156
+ else {
157
+ await this.keybindingEditingService.editKeybinding(keybindingEntry.keybindingItem.keybindingItem, key, when || undefined);
158
+ }
159
+ if (!keybindingEntry.keybindingItem.keybinding) {
160
+ this.unAssignedKeybindingItemToRevealAndFocus = keybindingEntry;
161
+ }
162
+ }
163
+ }
164
+ async removeKeybinding(keybindingEntry) {
165
+ this.selectEntry(keybindingEntry);
166
+ if (keybindingEntry.keybindingItem.keybinding) {
167
+ try {
168
+ await this.keybindingEditingService.removeKeybinding(keybindingEntry.keybindingItem.keybindingItem);
169
+ this.focus();
170
+ }
171
+ catch (error) {
172
+ this.onKeybindingEditingError(error);
173
+ this.selectEntry(keybindingEntry);
174
+ }
175
+ }
176
+ }
177
+ async resetKeybinding(keybindingEntry) {
178
+ this.selectEntry(keybindingEntry);
179
+ try {
180
+ await this.keybindingEditingService.resetKeybinding(keybindingEntry.keybindingItem.keybindingItem);
181
+ if (!keybindingEntry.keybindingItem.keybinding) {
182
+ this.unAssignedKeybindingItemToRevealAndFocus = keybindingEntry;
183
+ }
184
+ this.selectEntry(keybindingEntry);
185
+ }
186
+ catch (error) {
187
+ this.onKeybindingEditingError(error);
188
+ this.selectEntry(keybindingEntry);
189
+ }
190
+ }
191
+ async copyKeybinding(keybinding) {
192
+ this.selectEntry(keybinding);
193
+ const userFriendlyKeybinding = {
194
+ key: keybinding.keybindingItem.keybinding ? keybinding.keybindingItem.keybinding.getUserSettingsLabel() || '' : '',
195
+ command: keybinding.keybindingItem.command
196
+ };
197
+ if (keybinding.keybindingItem.when) {
198
+ userFriendlyKeybinding.when = keybinding.keybindingItem.when;
199
+ }
200
+ await this.clipboardService.writeText(JSON.stringify(userFriendlyKeybinding, null, ' '));
201
+ }
202
+ async copyKeybindingCommand(keybinding) {
203
+ this.selectEntry(keybinding);
204
+ await this.clipboardService.writeText(keybinding.keybindingItem.command);
205
+ }
206
+ async copyKeybindingCommandTitle(keybinding) {
207
+ this.selectEntry(keybinding);
208
+ await this.clipboardService.writeText(keybinding.keybindingItem.commandLabel);
209
+ }
210
+ focusSearch() {
211
+ this.searchWidget.focus();
212
+ }
213
+ search(filter) {
214
+ this.focusSearch();
215
+ this.searchWidget.setValue(filter);
216
+ this.selectEntry(0);
217
+ }
218
+ clearSearchResults() {
219
+ this.searchWidget.clear();
220
+ }
221
+ showSimilarKeybindings(keybindingEntry) {
222
+ const value = `"${keybindingEntry.keybindingItem.keybinding.getAriaLabel()}"`;
223
+ if (value !== this.searchWidget.getValue()) {
224
+ this.searchWidget.setValue(value);
225
+ }
226
+ }
227
+ createAriaLabelElement(parent) {
228
+ this.ariaLabelElement = dom.append(parent, dom.$(''));
229
+ this.ariaLabelElement.setAttribute('id', 'keybindings-editor-aria-label-element');
230
+ this.ariaLabelElement.setAttribute('aria-live', 'assertive');
231
+ }
232
+ createOverlayContainer(parent) {
233
+ this.overlayContainer = dom.append(parent, $('.overlay-container'));
234
+ this.overlayContainer.style.position = 'absolute';
235
+ this.overlayContainer.style.zIndex = '40';
236
+ this.defineKeybindingWidget = this._register(this.instantiationService.createInstance(DefineKeybindingWidget, this.overlayContainer));
237
+ this._register(this.defineKeybindingWidget.onDidChange(keybindingStr => this.defineKeybindingWidget.printExisting(this.keybindingsEditorModel.fetch(`"${keybindingStr}"`).length)));
238
+ this._register(this.defineKeybindingWidget.onShowExistingKeybidings(keybindingStr => this.searchWidget.setValue(`"${keybindingStr}"`)));
239
+ this.hideOverlayContainer();
240
+ }
241
+ showOverlayContainer() {
242
+ this.overlayContainer.style.display = 'block';
243
+ }
244
+ hideOverlayContainer() {
245
+ this.overlayContainer.style.display = 'none';
246
+ }
247
+ createHeader(parent) {
248
+ this.headerContainer = dom.append(parent, $('.keybindings-header'));
249
+ const fullTextSearchPlaceholder = ( localize(
250
+ 'SearchKeybindings.FullTextSearchPlaceholder',
251
+ "Type to search in keybindings"
252
+ ));
253
+ const keybindingsSearchPlaceholder = ( localize(
254
+ 'SearchKeybindings.KeybindingsSearchPlaceholder',
255
+ "Recording Keys. Press Escape to exit"
256
+ ));
257
+ const clearInputAction = ( new Action(KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, ( localize('clearInput', "Clear Keybindings Search Input")), ThemeIcon.asClassName(preferencesClearInputIcon), false, async () => this.clearSearchResults()));
258
+ const searchContainer = dom.append(this.headerContainer, $('.search-container'));
259
+ this.searchWidget = this._register(this.instantiationService.createInstance(KeybindingsSearchWidget, searchContainer, {
260
+ ariaLabel: fullTextSearchPlaceholder,
261
+ placeholder: fullTextSearchPlaceholder,
262
+ focusKey: this.searchFocusContextKey,
263
+ ariaLabelledBy: 'keybindings-editor-aria-label-element',
264
+ recordEnter: true,
265
+ quoteRecordedKeys: true,
266
+ history: this.getMemento(0 , 0 )['searchHistory'] || [],
267
+ inputBoxStyles: getInputBoxStyle({
268
+ inputBorder: settingsTextInputBorder
269
+ })
270
+ }));
271
+ this._register(this.searchWidget.onDidChange(searchValue => {
272
+ clearInputAction.enabled = !!searchValue;
273
+ this.delayedFiltering.trigger(() => this.filterKeybindings());
274
+ this.updateSearchOptions();
275
+ }));
276
+ this._register(this.searchWidget.onEscape(() => this.recordKeysAction.checked = false));
277
+ this.actionsContainer = dom.append(searchContainer, dom.$('.keybindings-search-actions-container'));
278
+ const recordingBadge = this.createRecordingBadge(this.actionsContainer);
279
+ this._register(this.sortByPrecedenceAction.onDidChange(e => {
280
+ if (e.checked !== undefined) {
281
+ this.renderKeybindingsEntries(false);
282
+ }
283
+ this.updateSearchOptions();
284
+ }));
285
+ this._register(this.recordKeysAction.onDidChange(e => {
286
+ if (e.checked !== undefined) {
287
+ recordingBadge.classList.toggle('disabled', !e.checked);
288
+ if (e.checked) {
289
+ this.searchWidget.inputBox.setPlaceHolder(keybindingsSearchPlaceholder);
290
+ this.searchWidget.inputBox.setAriaLabel(keybindingsSearchPlaceholder);
291
+ this.searchWidget.startRecordingKeys();
292
+ this.searchWidget.focus();
293
+ }
294
+ else {
295
+ this.searchWidget.inputBox.setPlaceHolder(fullTextSearchPlaceholder);
296
+ this.searchWidget.inputBox.setAriaLabel(fullTextSearchPlaceholder);
297
+ this.searchWidget.stopRecordingKeys();
298
+ this.searchWidget.focus();
299
+ }
300
+ this.updateSearchOptions();
301
+ }
302
+ }));
303
+ const actions = [this.recordKeysAction, this.sortByPrecedenceAction, clearInputAction];
304
+ const toolBar = this._register(( new ToolBar(this.actionsContainer, this.contextMenuService, {
305
+ actionViewItemProvider: (action) => {
306
+ if (action.id === this.sortByPrecedenceAction.id || action.id === this.recordKeysAction.id) {
307
+ return ( new ToggleActionViewItem(
308
+ null,
309
+ action,
310
+ { keybinding: this.keybindingsService.lookupKeybinding(action.id)?.getLabel(), toggleStyles: defaultToggleStyles }
311
+ ));
312
+ }
313
+ return undefined;
314
+ },
315
+ getKeyBinding: action => this.keybindingsService.lookupKeybinding(action.id)
316
+ })));
317
+ toolBar.setActions(actions);
318
+ this._register(this.keybindingsService.onDidUpdateKeybindings(() => toolBar.setActions(actions)));
319
+ }
320
+ updateSearchOptions() {
321
+ const keybindingsEditorInput = this.input;
322
+ if (keybindingsEditorInput) {
323
+ keybindingsEditorInput.searchOptions = {
324
+ searchValue: this.searchWidget.getValue(),
325
+ recordKeybindings: !!this.recordKeysAction.checked,
326
+ sortByPrecedence: !!this.sortByPrecedenceAction.checked
327
+ };
328
+ }
329
+ }
330
+ createRecordingBadge(container) {
331
+ const recordingBadge = dom.append(container, dom.$('.recording-badge.monaco-count-badge.long.disabled'));
332
+ recordingBadge.textContent = ( localize('recording', "Recording Keys"));
333
+ recordingBadge.style.backgroundColor = asCssVariable(badgeBackground);
334
+ recordingBadge.style.color = asCssVariable(badgeForeground);
335
+ recordingBadge.style.border = `1px solid ${asCssVariable(contrastBorder)}`;
336
+ return recordingBadge;
337
+ }
338
+ layoutSearchWidget(dimension) {
339
+ this.searchWidget.layout(dimension);
340
+ this.headerContainer.classList.toggle('small', dimension.width < 400);
341
+ this.searchWidget.inputBox.inputElement.style.paddingRight = `${dom.getTotalWidth(this.actionsContainer) + 12}px`;
342
+ }
343
+ createBody(parent) {
344
+ const bodyContainer = dom.append(parent, $('.keybindings-body'));
345
+ this.createTable(bodyContainer);
346
+ }
347
+ createTable(parent) {
348
+ this.keybindingsTableContainer = dom.append(parent, $('.keybindings-table-container'));
349
+ this.keybindingsTable = this._register(this.instantiationService.createInstance(WorkbenchTable, 'KeybindingsEditor', this.keybindingsTableContainer, ( new Delegate()), [
350
+ {
351
+ label: '',
352
+ tooltip: '',
353
+ weight: 0,
354
+ minimumWidth: 40,
355
+ maximumWidth: 40,
356
+ templateId: ActionsColumnRenderer.TEMPLATE_ID,
357
+ project(row) { return row; }
358
+ },
359
+ {
360
+ label: ( localize('command', "Command")),
361
+ tooltip: '',
362
+ weight: 0.3,
363
+ templateId: CommandColumnRenderer.TEMPLATE_ID,
364
+ project(row) { return row; }
365
+ },
366
+ {
367
+ label: ( localize('keybinding', "Keybinding")),
368
+ tooltip: '',
369
+ weight: 0.2,
370
+ templateId: KeybindingColumnRenderer.TEMPLATE_ID,
371
+ project(row) { return row; }
372
+ },
373
+ {
374
+ label: ( localize('when', "When")),
375
+ tooltip: '',
376
+ weight: 0.35,
377
+ templateId: WhenColumnRenderer.TEMPLATE_ID,
378
+ project(row) { return row; }
379
+ },
380
+ {
381
+ label: ( localize('source', "Source")),
382
+ tooltip: '',
383
+ weight: 0.15,
384
+ templateId: SourceColumnRenderer.TEMPLATE_ID,
385
+ project(row) { return row; }
386
+ },
387
+ ], [
388
+ this.instantiationService.createInstance(ActionsColumnRenderer, this),
389
+ this.instantiationService.createInstance(CommandColumnRenderer),
390
+ this.instantiationService.createInstance(KeybindingColumnRenderer),
391
+ this.instantiationService.createInstance(WhenColumnRenderer, this),
392
+ this.instantiationService.createInstance(SourceColumnRenderer),
393
+ ], {
394
+ identityProvider: { getId: (e) => e.id },
395
+ horizontalScrolling: false,
396
+ accessibilityProvider: ( new AccessibilityProvider(this.configurationService)),
397
+ keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e) => e.keybindingItem.commandLabel || e.keybindingItem.command },
398
+ overrideStyles: {
399
+ listBackground: editorBackground
400
+ },
401
+ multipleSelectionSupport: false,
402
+ setRowLineHeight: false,
403
+ openOnSingleClick: false,
404
+ transformOptimization: false
405
+ }));
406
+ this._register(this.keybindingsTable.onContextMenu(e => this.onContextMenu(e)));
407
+ this._register(this.keybindingsTable.onDidChangeFocus(e => this.onFocusChange()));
408
+ this._register(this.keybindingsTable.onDidFocus(() => {
409
+ this.keybindingsTable.getHTMLElement().classList.add('focused');
410
+ this.onFocusChange();
411
+ }));
412
+ this._register(this.keybindingsTable.onDidBlur(() => {
413
+ this.keybindingsTable.getHTMLElement().classList.remove('focused');
414
+ this.keybindingFocusContextKey.reset();
415
+ }));
416
+ this._register(this.keybindingsTable.onDidOpen((e) => {
417
+ if (e.browserEvent?.defaultPrevented) {
418
+ return;
419
+ }
420
+ const activeKeybindingEntry = this.activeKeybindingEntry;
421
+ if (activeKeybindingEntry) {
422
+ this.defineKeybinding(activeKeybindingEntry, false);
423
+ }
424
+ }));
425
+ dom.append(this.keybindingsTableContainer, this.overflowWidgetsDomNode);
426
+ }
427
+ async render(preserveFocus) {
428
+ if (this.input) {
429
+ const input = this.input;
430
+ this.keybindingsEditorModel = await input.resolve();
431
+ await this.keybindingsEditorModel.resolve(this.getActionsLabels());
432
+ this.renderKeybindingsEntries(false, preserveFocus);
433
+ if (input.searchOptions) {
434
+ this.recordKeysAction.checked = input.searchOptions.recordKeybindings;
435
+ this.sortByPrecedenceAction.checked = input.searchOptions.sortByPrecedence;
436
+ this.searchWidget.setValue(input.searchOptions.searchValue);
437
+ }
438
+ else {
439
+ this.updateSearchOptions();
440
+ }
441
+ }
442
+ }
443
+ getActionsLabels() {
444
+ const actionsLabels = ( new Map());
445
+ for (const editorAction of EditorExtensionsRegistry.getEditorActions()) {
446
+ actionsLabels.set(editorAction.id, editorAction.label);
447
+ }
448
+ for (const menuItem of MenuRegistry.getMenuItems(MenuId.CommandPalette)) {
449
+ if (isIMenuItem(menuItem)) {
450
+ const title = typeof menuItem.command.title === 'string' ? menuItem.command.title : menuItem.command.title.value;
451
+ const category = menuItem.command.category ? typeof menuItem.command.category === 'string' ? menuItem.command.category : menuItem.command.category.value : undefined;
452
+ actionsLabels.set(menuItem.command.id, category ? `${category}: ${title}` : title);
453
+ }
454
+ }
455
+ return actionsLabels;
456
+ }
457
+ filterKeybindings() {
458
+ this.renderKeybindingsEntries(this.searchWidget.hasFocus());
459
+ this.searchHistoryDelayer.trigger(() => {
460
+ this.searchWidget.inputBox.addToHistory();
461
+ this.getMemento(0 , 0 )['searchHistory'] = this.searchWidget.inputBox.getHistory();
462
+ this.saveState();
463
+ });
464
+ }
465
+ clearKeyboardShortcutSearchHistory() {
466
+ this.searchWidget.inputBox.clearHistory();
467
+ this.getMemento(0 , 0 )['searchHistory'] = this.searchWidget.inputBox.getHistory();
468
+ this.saveState();
469
+ }
470
+ renderKeybindingsEntries(reset, preserveFocus) {
471
+ if (this.keybindingsEditorModel) {
472
+ const filter = this.searchWidget.getValue();
473
+ const keybindingsEntries = this.keybindingsEditorModel.fetch(filter, this.sortByPrecedenceAction.checked);
474
+ this.ariaLabelElement.setAttribute('aria-label', this.getAriaLabel(keybindingsEntries));
475
+ if (keybindingsEntries.length === 0) {
476
+ this.latestEmptyFilters.push(filter);
477
+ }
478
+ const currentSelectedIndex = this.keybindingsTable.getSelection()[0];
479
+ this.tableEntries = keybindingsEntries;
480
+ this.keybindingsTable.splice(0, this.keybindingsTable.length, this.tableEntries);
481
+ this.layoutKeybindingsTable();
482
+ if (reset) {
483
+ this.keybindingsTable.setSelection([]);
484
+ this.keybindingsTable.setFocus([]);
485
+ }
486
+ else {
487
+ if (this.unAssignedKeybindingItemToRevealAndFocus) {
488
+ const index = this.getNewIndexOfUnassignedKeybinding(this.unAssignedKeybindingItemToRevealAndFocus);
489
+ if (index !== -1) {
490
+ this.keybindingsTable.reveal(index, 0.2);
491
+ this.selectEntry(index);
492
+ }
493
+ this.unAssignedKeybindingItemToRevealAndFocus = null;
494
+ }
495
+ else if (currentSelectedIndex !== -1 && currentSelectedIndex < this.tableEntries.length) {
496
+ this.selectEntry(currentSelectedIndex, preserveFocus);
497
+ }
498
+ else if (this.editorService.activeEditorPane === this && !preserveFocus) {
499
+ this.focus();
500
+ }
501
+ }
502
+ }
503
+ }
504
+ getAriaLabel(keybindingsEntries) {
505
+ if (this.sortByPrecedenceAction.checked) {
506
+ return ( localize(
507
+ 'show sorted keybindings',
508
+ "Showing {0} Keybindings in precedence order",
509
+ keybindingsEntries.length
510
+ ));
511
+ }
512
+ else {
513
+ return ( localize(
514
+ 'show keybindings',
515
+ "Showing {0} Keybindings in alphabetical order",
516
+ keybindingsEntries.length
517
+ ));
518
+ }
519
+ }
520
+ layoutKeybindingsTable() {
521
+ if (!this.dimension) {
522
+ return;
523
+ }
524
+ const tableHeight = this.dimension.height - ((dom.getDomNodePagePosition(this.headerContainer).height + 12) );
525
+ this.keybindingsTableContainer.style.height = `${tableHeight}px`;
526
+ this.keybindingsTable.layout(tableHeight);
527
+ }
528
+ getIndexOf(listEntry) {
529
+ const index = this.tableEntries.indexOf(listEntry);
530
+ if (index === -1) {
531
+ for (let i = 0; i < this.tableEntries.length; i++) {
532
+ if (this.tableEntries[i].id === listEntry.id) {
533
+ return i;
534
+ }
535
+ }
536
+ }
537
+ return index;
538
+ }
539
+ getNewIndexOfUnassignedKeybinding(unassignedKeybinding) {
540
+ for (let index = 0; index < this.tableEntries.length; index++) {
541
+ const entry = this.tableEntries[index];
542
+ if (entry.templateId === KEYBINDING_ENTRY_TEMPLATE_ID) {
543
+ const keybindingItemEntry = entry;
544
+ if (keybindingItemEntry.keybindingItem.command === unassignedKeybinding.keybindingItem.command) {
545
+ return index;
546
+ }
547
+ }
548
+ }
549
+ return -1;
550
+ }
551
+ selectEntry(keybindingItemEntry, focus = true) {
552
+ const index = typeof keybindingItemEntry === 'number' ? keybindingItemEntry : this.getIndexOf(keybindingItemEntry);
553
+ if (index !== -1 && index < this.keybindingsTable.length) {
554
+ if (focus) {
555
+ this.keybindingsTable.domFocus();
556
+ this.keybindingsTable.setFocus([index]);
557
+ }
558
+ this.keybindingsTable.setSelection([index]);
559
+ }
560
+ }
561
+ focusKeybindings() {
562
+ this.keybindingsTable.domFocus();
563
+ const currentFocusIndices = this.keybindingsTable.getFocus();
564
+ this.keybindingsTable.setFocus([currentFocusIndices.length ? currentFocusIndices[0] : 0]);
565
+ }
566
+ selectKeybinding(keybindingItemEntry) {
567
+ this.selectEntry(keybindingItemEntry);
568
+ }
569
+ recordSearchKeys() {
570
+ this.recordKeysAction.checked = true;
571
+ }
572
+ toggleSortByPrecedence() {
573
+ this.sortByPrecedenceAction.checked = !this.sortByPrecedenceAction.checked;
574
+ }
575
+ onContextMenu(e) {
576
+ if (!e.element) {
577
+ return;
578
+ }
579
+ if (e.element.templateId === KEYBINDING_ENTRY_TEMPLATE_ID) {
580
+ const keybindingItemEntry = e.element;
581
+ this.selectEntry(keybindingItemEntry);
582
+ this.contextMenuService.showContextMenu({
583
+ getAnchor: () => e.anchor,
584
+ getActions: () => [
585
+ this.createCopyAction(keybindingItemEntry),
586
+ this.createCopyCommandAction(keybindingItemEntry),
587
+ this.createCopyCommandTitleAction(keybindingItemEntry),
588
+ ( new Separator()),
589
+ ...(keybindingItemEntry.keybindingItem.keybinding
590
+ ? [this.createDefineKeybindingAction(keybindingItemEntry), this.createAddKeybindingAction(keybindingItemEntry)]
591
+ : [this.createDefineKeybindingAction(keybindingItemEntry)]),
592
+ ( new Separator()),
593
+ this.createRemoveAction(keybindingItemEntry),
594
+ this.createResetAction(keybindingItemEntry),
595
+ ( new Separator()),
596
+ this.createDefineWhenExpressionAction(keybindingItemEntry),
597
+ ( new Separator()),
598
+ this.createShowConflictsAction(keybindingItemEntry)
599
+ ]
600
+ });
601
+ }
602
+ }
603
+ onFocusChange() {
604
+ this.keybindingFocusContextKey.reset();
605
+ const element = this.keybindingsTable.getFocusedElements()[0];
606
+ if (!element) {
607
+ return;
608
+ }
609
+ if (element.templateId === KEYBINDING_ENTRY_TEMPLATE_ID) {
610
+ this.keybindingFocusContextKey.set(true);
611
+ }
612
+ }
613
+ createDefineKeybindingAction(keybindingItemEntry) {
614
+ return {
615
+ label: keybindingItemEntry.keybindingItem.keybinding ? ( localize('changeLabel', "Change Keybinding...")) : ( localize('addLabel', "Add Keybinding...")),
616
+ enabled: true,
617
+ id: KEYBINDINGS_EDITOR_COMMAND_DEFINE,
618
+ run: () => this.defineKeybinding(keybindingItemEntry, false)
619
+ };
620
+ }
621
+ createAddKeybindingAction(keybindingItemEntry) {
622
+ return {
623
+ label: ( localize('addLabel', "Add Keybinding...")),
624
+ enabled: true,
625
+ id: KEYBINDINGS_EDITOR_COMMAND_ADD,
626
+ run: () => this.defineKeybinding(keybindingItemEntry, true)
627
+ };
628
+ }
629
+ createDefineWhenExpressionAction(keybindingItemEntry) {
630
+ return {
631
+ label: ( localize('editWhen', "Change When Expression")),
632
+ enabled: !!keybindingItemEntry.keybindingItem.keybinding,
633
+ id: KEYBINDINGS_EDITOR_COMMAND_DEFINE_WHEN,
634
+ run: () => this.defineWhenExpression(keybindingItemEntry)
635
+ };
636
+ }
637
+ createRemoveAction(keybindingItem) {
638
+ return {
639
+ label: ( localize('removeLabel', "Remove Keybinding")),
640
+ enabled: !!keybindingItem.keybindingItem.keybinding,
641
+ id: KEYBINDINGS_EDITOR_COMMAND_REMOVE,
642
+ run: () => this.removeKeybinding(keybindingItem)
643
+ };
644
+ }
645
+ createResetAction(keybindingItem) {
646
+ return {
647
+ label: ( localize('resetLabel', "Reset Keybinding")),
648
+ enabled: !keybindingItem.keybindingItem.keybindingItem.isDefault,
649
+ id: KEYBINDINGS_EDITOR_COMMAND_RESET,
650
+ run: () => this.resetKeybinding(keybindingItem)
651
+ };
652
+ }
653
+ createShowConflictsAction(keybindingItem) {
654
+ return {
655
+ label: ( localize('showSameKeybindings', "Show Same Keybindings")),
656
+ enabled: !!keybindingItem.keybindingItem.keybinding,
657
+ id: KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR,
658
+ run: () => this.showSimilarKeybindings(keybindingItem)
659
+ };
660
+ }
661
+ createCopyAction(keybindingItem) {
662
+ return {
663
+ label: ( localize('copyLabel', "Copy")),
664
+ enabled: true,
665
+ id: KEYBINDINGS_EDITOR_COMMAND_COPY,
666
+ run: () => this.copyKeybinding(keybindingItem)
667
+ };
668
+ }
669
+ createCopyCommandAction(keybinding) {
670
+ return {
671
+ label: ( localize('copyCommandLabel', "Copy Command ID")),
672
+ enabled: true,
673
+ id: KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND,
674
+ run: () => this.copyKeybindingCommand(keybinding)
675
+ };
676
+ }
677
+ createCopyCommandTitleAction(keybinding) {
678
+ return {
679
+ label: ( localize('copyCommandTitleLabel', "Copy Command Title")),
680
+ enabled: !!keybinding.keybindingItem.commandLabel,
681
+ id: KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND_TITLE,
682
+ run: () => this.copyKeybindingCommandTitle(keybinding)
683
+ };
684
+ }
685
+ onKeybindingEditingError(error) {
686
+ this.notificationService.error(typeof error === 'string' ? error : ( localize(
687
+ 'error',
688
+ "Error '{0}' while editing the keybinding. Please open 'keybindings.json' file and check for errors.",
689
+ `${error}`
690
+ )));
691
+ }
692
+ };
693
+ KeybindingsEditor.ID = 'workbench.editor.keybindings';
694
+ KeybindingsEditor = ( __decorate([
695
+ ( __param(0, ITelemetryService)),
696
+ ( __param(1, IThemeService)),
697
+ ( __param(2, IKeybindingService)),
698
+ ( __param(3, IContextMenuService)),
699
+ ( __param(4, IKeybindingEditingService)),
700
+ ( __param(5, IContextKeyService)),
701
+ ( __param(6, INotificationService)),
702
+ ( __param(7, IClipboardService)),
703
+ ( __param(8, IInstantiationService)),
704
+ ( __param(9, IEditorService)),
705
+ ( __param(10, IStorageService)),
706
+ ( __param(11, IConfigurationService))
707
+ ], KeybindingsEditor));
708
+ class Delegate {
709
+ constructor() {
710
+ this.headerRowHeight = 30;
711
+ }
712
+ getHeight(element) {
713
+ if (element.templateId === KEYBINDING_ENTRY_TEMPLATE_ID) {
714
+ const commandIdMatched = element.keybindingItem.commandLabel && element.commandIdMatches;
715
+ const commandDefaultLabelMatched = !!element.commandDefaultLabelMatches;
716
+ const extensionIdMatched = !!element.extensionIdMatches;
717
+ if (commandIdMatched && commandDefaultLabelMatched) {
718
+ return 60;
719
+ }
720
+ if (extensionIdMatched || commandIdMatched || commandDefaultLabelMatched) {
721
+ return 40;
722
+ }
723
+ }
724
+ return 24;
725
+ }
726
+ }
727
+ let ActionsColumnRenderer = class ActionsColumnRenderer {
728
+ constructor(keybindingsEditor, keybindingsService) {
729
+ this.keybindingsEditor = keybindingsEditor;
730
+ this.keybindingsService = keybindingsService;
731
+ this.templateId = ActionsColumnRenderer.TEMPLATE_ID;
732
+ }
733
+ renderTemplate(container) {
734
+ const element = dom.append(container, $('.actions'));
735
+ const actionBar = ( new ActionBar(element, { animated: false }));
736
+ return { actionBar };
737
+ }
738
+ renderElement(keybindingItemEntry, index, templateData, height) {
739
+ templateData.actionBar.clear();
740
+ const actions = [];
741
+ if (keybindingItemEntry.keybindingItem.keybinding) {
742
+ actions.push(this.createEditAction(keybindingItemEntry));
743
+ }
744
+ else {
745
+ actions.push(this.createAddAction(keybindingItemEntry));
746
+ }
747
+ templateData.actionBar.push(actions, { icon: true });
748
+ }
749
+ createEditAction(keybindingItemEntry) {
750
+ const keybinding = this.keybindingsService.lookupKeybinding(KEYBINDINGS_EDITOR_COMMAND_DEFINE);
751
+ return {
752
+ class: ThemeIcon.asClassName(keybindingsEditIcon),
753
+ enabled: true,
754
+ id: 'editKeybinding',
755
+ tooltip: keybinding ? ( localize(
756
+ 'editKeybindingLabelWithKey',
757
+ "Change Keybinding {0}",
758
+ `(${keybinding.getLabel()})`
759
+ )) : ( localize('editKeybindingLabel', "Change Keybinding")),
760
+ run: () => this.keybindingsEditor.defineKeybinding(keybindingItemEntry, false)
761
+ };
762
+ }
763
+ createAddAction(keybindingItemEntry) {
764
+ const keybinding = this.keybindingsService.lookupKeybinding(KEYBINDINGS_EDITOR_COMMAND_DEFINE);
765
+ return {
766
+ class: ThemeIcon.asClassName(keybindingsAddIcon),
767
+ enabled: true,
768
+ id: 'addKeybinding',
769
+ tooltip: keybinding ? ( localize(
770
+ 'addKeybindingLabelWithKey',
771
+ "Add Keybinding {0}",
772
+ `(${keybinding.getLabel()})`
773
+ )) : ( localize('addKeybindingLabel', "Add Keybinding")),
774
+ run: () => this.keybindingsEditor.defineKeybinding(keybindingItemEntry, false)
775
+ };
776
+ }
777
+ disposeTemplate(templateData) {
778
+ templateData.actionBar.dispose();
779
+ }
780
+ };
781
+ ActionsColumnRenderer.TEMPLATE_ID = 'actions';
782
+ ActionsColumnRenderer = ( __decorate([
783
+ ( __param(1, IKeybindingService))
784
+ ], ActionsColumnRenderer));
785
+ class CommandColumnRenderer {
786
+ constructor() {
787
+ this.templateId = CommandColumnRenderer.TEMPLATE_ID;
788
+ }
789
+ renderTemplate(container) {
790
+ const commandColumn = dom.append(container, $('.command'));
791
+ const commandLabelContainer = dom.append(commandColumn, $('.command-label'));
792
+ const commandLabel = ( new HighlightedLabel(commandLabelContainer));
793
+ const commandDefaultLabelContainer = dom.append(commandColumn, $('.command-default-label'));
794
+ const commandDefaultLabel = ( new HighlightedLabel(commandDefaultLabelContainer));
795
+ const commandIdLabelContainer = dom.append(commandColumn, $('.command-id.code'));
796
+ const commandIdLabel = ( new HighlightedLabel(commandIdLabelContainer));
797
+ return { commandColumn, commandLabelContainer, commandLabel, commandDefaultLabelContainer, commandDefaultLabel, commandIdLabelContainer, commandIdLabel };
798
+ }
799
+ renderElement(keybindingItemEntry, index, templateData, height) {
800
+ const keybindingItem = keybindingItemEntry.keybindingItem;
801
+ const commandIdMatched = !!(keybindingItem.commandLabel && keybindingItemEntry.commandIdMatches);
802
+ const commandDefaultLabelMatched = !!keybindingItemEntry.commandDefaultLabelMatches;
803
+ templateData.commandColumn.classList.toggle('vertical-align-column', commandIdMatched || commandDefaultLabelMatched);
804
+ templateData.commandColumn.title = keybindingItem.commandLabel ? ( localize('title', "{0} ({1})", keybindingItem.commandLabel, keybindingItem.command)) : keybindingItem.command;
805
+ if (keybindingItem.commandLabel) {
806
+ templateData.commandLabelContainer.classList.remove('hide');
807
+ templateData.commandLabel.set(keybindingItem.commandLabel, keybindingItemEntry.commandLabelMatches);
808
+ }
809
+ else {
810
+ templateData.commandLabelContainer.classList.add('hide');
811
+ templateData.commandLabel.set(undefined);
812
+ }
813
+ if (keybindingItemEntry.commandDefaultLabelMatches) {
814
+ templateData.commandDefaultLabelContainer.classList.remove('hide');
815
+ templateData.commandDefaultLabel.set(keybindingItem.commandDefaultLabel, keybindingItemEntry.commandDefaultLabelMatches);
816
+ }
817
+ else {
818
+ templateData.commandDefaultLabelContainer.classList.add('hide');
819
+ templateData.commandDefaultLabel.set(undefined);
820
+ }
821
+ if (keybindingItemEntry.commandIdMatches || !keybindingItem.commandLabel) {
822
+ templateData.commandIdLabelContainer.classList.remove('hide');
823
+ templateData.commandIdLabel.set(keybindingItem.command, keybindingItemEntry.commandIdMatches);
824
+ }
825
+ else {
826
+ templateData.commandIdLabelContainer.classList.add('hide');
827
+ templateData.commandIdLabel.set(undefined);
828
+ }
829
+ }
830
+ disposeTemplate(templateData) { }
831
+ }
832
+ CommandColumnRenderer.TEMPLATE_ID = 'commands';
833
+ class KeybindingColumnRenderer {
834
+ constructor() {
835
+ this.templateId = KeybindingColumnRenderer.TEMPLATE_ID;
836
+ }
837
+ renderTemplate(container) {
838
+ const element = dom.append(container, $('.keybinding'));
839
+ const keybindingLabel = ( new KeybindingLabel(
840
+ dom.append(element, $('div.keybinding-label')),
841
+ OS,
842
+ defaultKeybindingLabelStyles
843
+ ));
844
+ return { keybindingLabel };
845
+ }
846
+ renderElement(keybindingItemEntry, index, templateData, height) {
847
+ if (keybindingItemEntry.keybindingItem.keybinding) {
848
+ templateData.keybindingLabel.set(keybindingItemEntry.keybindingItem.keybinding, keybindingItemEntry.keybindingMatches);
849
+ }
850
+ else {
851
+ templateData.keybindingLabel.set(undefined, undefined);
852
+ }
853
+ }
854
+ disposeTemplate(templateData) {
855
+ }
856
+ }
857
+ KeybindingColumnRenderer.TEMPLATE_ID = 'keybindings';
858
+ function onClick(element, callback) {
859
+ const disposables = ( new DisposableStore());
860
+ disposables.add(dom.addDisposableListener(element, dom.EventType.CLICK, dom.finalHandler(callback)));
861
+ disposables.add(dom.addDisposableListener(element, dom.EventType.KEY_UP, e => {
862
+ const keyboardEvent = ( new StandardKeyboardEvent(e));
863
+ if (keyboardEvent.equals(10 ) || keyboardEvent.equals(3 )) {
864
+ e.preventDefault();
865
+ e.stopPropagation();
866
+ callback();
867
+ }
868
+ }));
869
+ return disposables;
870
+ }
871
+ let SourceColumnRenderer = class SourceColumnRenderer {
872
+ constructor(extensionsWorkbenchService) {
873
+ this.extensionsWorkbenchService = extensionsWorkbenchService;
874
+ this.templateId = SourceColumnRenderer.TEMPLATE_ID;
875
+ }
876
+ renderTemplate(container) {
877
+ const sourceColumn = dom.append(container, $('.source'));
878
+ const sourceLabel = ( new HighlightedLabel(dom.append(sourceColumn, $('.source-label'))));
879
+ const extensionContainer = dom.append(sourceColumn, $('.extension-container'));
880
+ const extensionLabel = dom.append(extensionContainer, $('a.extension-label', { tabindex: 0 }));
881
+ const extensionId = ( new HighlightedLabel(dom.append(extensionContainer, $('.extension-id-container.code'))));
882
+ return { sourceColumn, sourceLabel, extensionLabel, extensionContainer, extensionId, disposables: ( new DisposableStore()) };
883
+ }
884
+ renderElement(keybindingItemEntry, index, templateData, height) {
885
+ if (isString(keybindingItemEntry.keybindingItem.source)) {
886
+ templateData.extensionContainer.classList.add('hide');
887
+ templateData.sourceLabel.element.classList.remove('hide');
888
+ templateData.sourceColumn.title = '';
889
+ templateData.sourceLabel.set(keybindingItemEntry.keybindingItem.source || '-', keybindingItemEntry.sourceMatches);
890
+ }
891
+ else {
892
+ templateData.extensionContainer.classList.remove('hide');
893
+ templateData.sourceLabel.element.classList.add('hide');
894
+ const extension = keybindingItemEntry.keybindingItem.source;
895
+ const extensionLabel = extension.displayName ?? extension.identifier.value;
896
+ templateData.sourceColumn.title = ( localize('extension label', "Extension ({0})", extensionLabel));
897
+ templateData.extensionLabel.textContent = extensionLabel;
898
+ templateData.disposables.add(onClick(templateData.extensionLabel, () => {
899
+ this.extensionsWorkbenchService.open(extension.identifier.value);
900
+ }));
901
+ if (keybindingItemEntry.extensionIdMatches) {
902
+ templateData.extensionId.element.classList.remove('hide');
903
+ templateData.extensionId.set(extension.identifier.value, keybindingItemEntry.extensionIdMatches);
904
+ }
905
+ else {
906
+ templateData.extensionId.element.classList.add('hide');
907
+ templateData.extensionId.set(undefined);
908
+ }
909
+ }
910
+ }
911
+ disposeTemplate(templateData) {
912
+ templateData.disposables.dispose();
913
+ }
914
+ };
915
+ SourceColumnRenderer.TEMPLATE_ID = 'source';
916
+ SourceColumnRenderer = ( __decorate([
917
+ ( __param(0, IExtensionsWorkbenchService))
918
+ ], SourceColumnRenderer));
919
+ let WhenInputWidget = class WhenInputWidget extends Disposable {
920
+ constructor(parent, keybindingsEditor, instantiationService, contextKeyService) {
921
+ super();
922
+ this._onDidAccept = this._register(( new Emitter()));
923
+ this.onDidAccept = this._onDidAccept.event;
924
+ this._onDidReject = this._register(( new Emitter()));
925
+ this.onDidReject = this._onDidReject.event;
926
+ const focusContextKey = CONTEXT_WHEN_FOCUS.bindTo(contextKeyService);
927
+ this.input = this._register(instantiationService.createInstance(SuggestEnabledInput, 'keyboardshortcutseditor#wheninput', parent, {
928
+ provideResults: () => {
929
+ const result = [];
930
+ for (const contextKey of RawContextKey.all()) {
931
+ result.push({ label: contextKey.key, documentation: contextKey.description, detail: contextKey.type, kind: 14 });
932
+ }
933
+ return result;
934
+ },
935
+ triggerCharacters: ['!', ' '],
936
+ wordDefinition: /[a-zA-Z.]+/,
937
+ alwaysShowSuggestions: true,
938
+ }, '', `keyboardshortcutseditor#wheninput`, { focusContextKey, overflowWidgetsDomNode: keybindingsEditor.overflowWidgetsDomNode }));
939
+ this._register((dom.addDisposableListener(this.input.element, dom.EventType.DBLCLICK, e => dom.EventHelper.stop(e))));
940
+ this._register(toDisposable(() => focusContextKey.reset()));
941
+ this._register(keybindingsEditor.onAcceptWhenExpression(() => this._onDidAccept.fire(this.input.getValue())));
942
+ this._register(Event.any(keybindingsEditor.onRejectWhenExpression, this.input.onDidBlur)(() => this._onDidReject.fire()));
943
+ }
944
+ layout(dimension) {
945
+ this.input.layout(dimension);
946
+ }
947
+ show(value) {
948
+ this.input.setValue(value);
949
+ this.input.focus(true);
950
+ }
951
+ };
952
+ WhenInputWidget = ( __decorate([
953
+ ( __param(2, IInstantiationService)),
954
+ ( __param(3, IContextKeyService))
955
+ ], WhenInputWidget));
956
+ let WhenColumnRenderer = class WhenColumnRenderer {
957
+ constructor(keybindingsEditor, instantiationService) {
958
+ this.keybindingsEditor = keybindingsEditor;
959
+ this.instantiationService = instantiationService;
960
+ this.templateId = WhenColumnRenderer.TEMPLATE_ID;
961
+ }
962
+ renderTemplate(container) {
963
+ const element = dom.append(container, $('.when'));
964
+ const whenLabelContainer = dom.append(element, $('div.when-label'));
965
+ const whenLabel = ( new HighlightedLabel(whenLabelContainer));
966
+ const whenInputContainer = dom.append(element, $('div.when-input-container'));
967
+ return {
968
+ element,
969
+ whenLabelContainer,
970
+ whenLabel,
971
+ whenInputContainer,
972
+ disposables: ( new DisposableStore()),
973
+ };
974
+ }
975
+ renderElement(keybindingItemEntry, index, templateData, height) {
976
+ templateData.disposables.clear();
977
+ const whenInputDisposables = templateData.disposables.add(( new DisposableStore()));
978
+ templateData.disposables.add(this.keybindingsEditor.onDefineWhenExpression(e => {
979
+ if (keybindingItemEntry === e) {
980
+ templateData.element.classList.add('input-mode');
981
+ const inputWidget = whenInputDisposables.add(this.instantiationService.createInstance(WhenInputWidget, templateData.whenInputContainer, this.keybindingsEditor));
982
+ inputWidget.layout(new dom.Dimension(templateData.element.parentElement.clientWidth, 18));
983
+ inputWidget.show(keybindingItemEntry.keybindingItem.when || '');
984
+ const hideInputWidget = () => {
985
+ whenInputDisposables.clear();
986
+ templateData.element.classList.remove('input-mode');
987
+ templateData.element.parentElement.style.paddingLeft = '10px';
988
+ dom.clearNode(templateData.whenInputContainer);
989
+ };
990
+ whenInputDisposables.add(inputWidget.onDidAccept(value => {
991
+ hideInputWidget();
992
+ this.keybindingsEditor.updateKeybinding(keybindingItemEntry, keybindingItemEntry.keybindingItem.keybinding ? keybindingItemEntry.keybindingItem.keybinding.getUserSettingsLabel() || '' : '', value);
993
+ this.keybindingsEditor.selectKeybinding(keybindingItemEntry);
994
+ }));
995
+ whenInputDisposables.add(inputWidget.onDidReject(() => {
996
+ hideInputWidget();
997
+ this.keybindingsEditor.selectKeybinding(keybindingItemEntry);
998
+ }));
999
+ templateData.element.parentElement.style.paddingLeft = '0px';
1000
+ }
1001
+ }));
1002
+ templateData.whenLabelContainer.classList.toggle('code', !!keybindingItemEntry.keybindingItem.when);
1003
+ templateData.whenLabelContainer.classList.toggle('empty', !keybindingItemEntry.keybindingItem.when);
1004
+ if (keybindingItemEntry.keybindingItem.when) {
1005
+ templateData.whenLabel.set(keybindingItemEntry.keybindingItem.when, keybindingItemEntry.whenMatches);
1006
+ templateData.whenLabel.element.title = keybindingItemEntry.keybindingItem.when;
1007
+ templateData.element.title = keybindingItemEntry.keybindingItem.when;
1008
+ }
1009
+ else {
1010
+ templateData.whenLabel.set('-');
1011
+ templateData.whenLabel.element.title = '';
1012
+ templateData.element.title = '';
1013
+ }
1014
+ }
1015
+ disposeTemplate(templateData) {
1016
+ templateData.disposables.dispose();
1017
+ }
1018
+ };
1019
+ WhenColumnRenderer.TEMPLATE_ID = 'when';
1020
+ WhenColumnRenderer = ( __decorate([
1021
+ ( __param(1, IInstantiationService))
1022
+ ], WhenColumnRenderer));
1023
+ class AccessibilityProvider {
1024
+ constructor(configurationService) {
1025
+ this.configurationService = configurationService;
1026
+ }
1027
+ getWidgetAriaLabel() {
1028
+ return ( localize('keybindingsLabel', "Keybindings"));
1029
+ }
1030
+ getAriaLabel({ keybindingItem }) {
1031
+ const ariaLabel = [
1032
+ keybindingItem.commandLabel ? keybindingItem.commandLabel : keybindingItem.command,
1033
+ keybindingItem.keybinding?.getAriaLabel() || ( localize('noKeybinding', "No keybinding assigned")),
1034
+ keybindingItem.when ? keybindingItem.when : ( localize('noWhen', "No when context")),
1035
+ isString(keybindingItem.source) ? keybindingItem.source : keybindingItem.source.description ?? keybindingItem.source.identifier.value,
1036
+ ];
1037
+ if (this.configurationService.getValue("accessibility.verbosity.keybindingsEditor" )) {
1038
+ const kbEditorAriaLabel = ( localize(
1039
+ 'keyboard shortcuts aria label',
1040
+ "use space or enter to change the keybinding."
1041
+ ));
1042
+ ariaLabel.push(kbEditorAriaLabel);
1043
+ }
1044
+ return ariaLabel.join(', ');
1045
+ }
1046
+ }
1047
+ registerColor('keybindingTable.headerBackground', { dark: tableOddRowsBackgroundColor, light: tableOddRowsBackgroundColor, hcDark: tableOddRowsBackgroundColor, hcLight: tableOddRowsBackgroundColor }, 'Background color for the keyboard shortcuts table header.');
1048
+ registerColor('keybindingTable.rowsBackground', { light: tableOddRowsBackgroundColor, dark: tableOddRowsBackgroundColor, hcDark: tableOddRowsBackgroundColor, hcLight: tableOddRowsBackgroundColor }, 'Background color for the keyboard shortcuts table alternating rows.');
1049
+ registerThemingParticipant((theme, collector) => {
1050
+ const foregroundColor = theme.getColor(foreground);
1051
+ if (foregroundColor) {
1052
+ const whenForegroundColor = ( foregroundColor.transparent(.8)).makeOpaque(WORKBENCH_BACKGROUND(theme));
1053
+ collector.addRule(`.keybindings-editor > .keybindings-body > .keybindings-table-container .monaco-table .monaco-table-tr .monaco-table-td .code { color: ${whenForegroundColor}; }`);
1054
+ }
1055
+ const listActiveSelectionForegroundColor = theme.getColor(listActiveSelectionForeground);
1056
+ const listActiveSelectionBackgroundColor = theme.getColor(listActiveSelectionBackground);
1057
+ if (listActiveSelectionForegroundColor && listActiveSelectionBackgroundColor) {
1058
+ const whenForegroundColor = ( listActiveSelectionForegroundColor.transparent(.8)).makeOpaque(listActiveSelectionBackgroundColor);
1059
+ collector.addRule(`.keybindings-editor > .keybindings-body > .keybindings-table-container .monaco-table.focused .monaco-list-row.selected .monaco-table-tr .monaco-table-td .code { color: ${whenForegroundColor}; }`);
1060
+ }
1061
+ const listInactiveSelectionForegroundColor = theme.getColor(listInactiveSelectionForeground);
1062
+ const listInactiveSelectionBackgroundColor = theme.getColor(listInactiveSelectionBackground);
1063
+ if (listInactiveSelectionForegroundColor && listInactiveSelectionBackgroundColor) {
1064
+ const whenForegroundColor = ( listInactiveSelectionForegroundColor.transparent(.8)).makeOpaque(listInactiveSelectionBackgroundColor);
1065
+ collector.addRule(`.keybindings-editor > .keybindings-body > .keybindings-table-container .monaco-table .monaco-list-row.selected .monaco-table-tr .monaco-table-td .code { color: ${whenForegroundColor}; }`);
1066
+ }
1067
+ const listFocusForegroundColor = theme.getColor(listFocusForeground);
1068
+ const listFocusBackgroundColor = theme.getColor(listFocusBackground);
1069
+ if (listFocusForegroundColor && listFocusBackgroundColor) {
1070
+ const whenForegroundColor = ( listFocusForegroundColor.transparent(.8)).makeOpaque(listFocusBackgroundColor);
1071
+ collector.addRule(`.keybindings-editor > .keybindings-body > .keybindings-table-container .monaco-table.focused .monaco-list-row.focused .monaco-table-tr .monaco-table-td .code { color: ${whenForegroundColor}; }`);
1072
+ }
1073
+ const listHoverForegroundColor = theme.getColor(listHoverForeground);
1074
+ const listHoverBackgroundColor = theme.getColor(listHoverBackground);
1075
+ if (listHoverForegroundColor && listHoverBackgroundColor) {
1076
+ const whenForegroundColor = ( listHoverForegroundColor.transparent(.8)).makeOpaque(listHoverBackgroundColor);
1077
+ collector.addRule(`.keybindings-editor > .keybindings-body > .keybindings-table-container .monaco-table.focused .monaco-list-row:hover:not(.focused):not(.selected) .monaco-table-tr .monaco-table-td .code { color: ${whenForegroundColor}; }`);
1078
+ }
1079
+ });
1080
+ export { KeybindingsEditor };