@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,1008 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import { BrowserFeatures } from 'monaco-editor/esm/vs/base/browser/canIUse.js';
3
+ import * as dom from 'monaco-editor/esm/vs/base/browser/dom.js';
4
+ import { ActionBar } from 'monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js';
5
+ import { Button } from 'monaco-editor/esm/vs/base/browser/ui/button/button.js';
6
+ import { Toggle, unthemedToggleStyles } from 'monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js';
7
+ import { InputBox } from 'monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js';
8
+ import { SelectBox } from 'monaco-editor/esm/vs/base/browser/ui/selectBox/selectBox.js';
9
+ import { disposableTimeout } from 'monaco-editor/esm/vs/base/common/async.js';
10
+ import { Codicon } from 'monaco-editor/esm/vs/base/common/codicons.js';
11
+ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
12
+ import { Disposable, DisposableStore } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
13
+ import { isIOS } from 'monaco-editor/esm/vs/base/common/platform.js';
14
+ import { isUndefinedOrNull, isDefined } from 'monaco-editor/esm/vs/base/common/types.js';
15
+ import './media/settingsWidgets.css.js';
16
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
17
+ import { IContextViewService } from 'monaco-editor/esm/vs/platform/contextview/browser/contextView.js';
18
+ import { IThemeService } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
19
+ import { ThemeIcon } from 'monaco-editor/esm/vs/base/common/themables.js';
20
+ import { settingsEditIcon, settingsRemoveIcon, settingsDiscardIcon } from './preferencesIcons.js';
21
+ import { settingsTextInputBackground, settingsTextInputForeground, settingsTextInputBorder, settingsSelectBackground, settingsSelectForeground, settingsSelectBorder, settingsSelectListBorder } from '../common/settingsEditorColorRegistry.js';
22
+ import { getInputBoxStyle, defaultButtonStyles, getSelectBoxStyles } from 'monaco-editor/esm/vs/platform/theme/browser/defaultStyles.js';
23
+ const $ = dom.$;
24
+ class ListSettingListModel {
25
+ get items() {
26
+ const items = ( this._dataItems.map((item, i) => {
27
+ const editing = typeof this._editKey === 'number' && this._editKey === i;
28
+ return {
29
+ ...item,
30
+ editing,
31
+ selected: i === this._selectedIdx || editing
32
+ };
33
+ }));
34
+ if (this._editKey === 'create') {
35
+ items.push({
36
+ editing: true,
37
+ selected: true,
38
+ ...this._newDataItem,
39
+ });
40
+ }
41
+ return items;
42
+ }
43
+ constructor(newItem) {
44
+ this._dataItems = [];
45
+ this._editKey = null;
46
+ this._selectedIdx = null;
47
+ this._newDataItem = newItem;
48
+ }
49
+ setEditKey(key) {
50
+ this._editKey = key;
51
+ }
52
+ setValue(listData) {
53
+ this._dataItems = listData;
54
+ }
55
+ select(idx) {
56
+ this._selectedIdx = idx;
57
+ }
58
+ getSelected() {
59
+ return this._selectedIdx;
60
+ }
61
+ selectNext() {
62
+ if (typeof this._selectedIdx === 'number') {
63
+ this._selectedIdx = Math.min(this._selectedIdx + 1, this._dataItems.length - 1);
64
+ }
65
+ else {
66
+ this._selectedIdx = 0;
67
+ }
68
+ }
69
+ selectPrevious() {
70
+ if (typeof this._selectedIdx === 'number') {
71
+ this._selectedIdx = Math.max(this._selectedIdx - 1, 0);
72
+ }
73
+ else {
74
+ this._selectedIdx = 0;
75
+ }
76
+ }
77
+ }
78
+ let AbstractListSettingWidget = class AbstractListSettingWidget extends Disposable {
79
+ get domNode() {
80
+ return this.listElement;
81
+ }
82
+ get items() {
83
+ return this.model.items;
84
+ }
85
+ get inReadMode() {
86
+ return this.model.items.every(item => !item.editing);
87
+ }
88
+ constructor(container, themeService, contextViewService) {
89
+ super();
90
+ this.container = container;
91
+ this.themeService = themeService;
92
+ this.contextViewService = contextViewService;
93
+ this.rowElements = [];
94
+ this._onDidChangeList = this._register(( new Emitter()));
95
+ this.model = ( new ListSettingListModel(this.getEmptyItem()));
96
+ this.listDisposables = this._register(( new DisposableStore()));
97
+ this.onDidChangeList = this._onDidChangeList.event;
98
+ this.listElement = dom.append(container, $('div'));
99
+ this.listElement.setAttribute('role', 'list');
100
+ this.getContainerClasses().forEach(c => this.listElement.classList.add(c));
101
+ dom.append(container, this.renderAddButton());
102
+ this.renderList();
103
+ this._register(dom.addDisposableListener(this.listElement, dom.EventType.POINTER_DOWN, e => this.onListClick(e)));
104
+ this._register(dom.addDisposableListener(this.listElement, dom.EventType.DBLCLICK, e => this.onListDoubleClick(e)));
105
+ this._register(dom.addStandardDisposableListener(this.listElement, 'keydown', (e) => {
106
+ if (e.equals(16 )) {
107
+ this.selectPreviousRow();
108
+ }
109
+ else if (e.equals(18 )) {
110
+ this.selectNextRow();
111
+ }
112
+ else {
113
+ return;
114
+ }
115
+ e.preventDefault();
116
+ e.stopPropagation();
117
+ }));
118
+ }
119
+ setValue(listData) {
120
+ this.model.setValue(listData);
121
+ this.renderList();
122
+ }
123
+ renderHeader() {
124
+ return;
125
+ }
126
+ isAddButtonVisible() {
127
+ return true;
128
+ }
129
+ renderList() {
130
+ const focused = dom.isAncestor(document.activeElement, this.listElement);
131
+ dom.clearNode(this.listElement);
132
+ this.listDisposables.clear();
133
+ const newMode = ( this.model.items.some(item => !!(item.editing && this.isItemNew(item))));
134
+ this.container.classList.toggle('setting-list-hide-add-button', !this.isAddButtonVisible() || newMode);
135
+ if (this.model.items.length) {
136
+ this.listElement.tabIndex = 0;
137
+ }
138
+ else {
139
+ this.listElement.removeAttribute('tabIndex');
140
+ }
141
+ const header = this.renderHeader();
142
+ const ITEM_HEIGHT = 24;
143
+ let listHeight = ITEM_HEIGHT * this.model.items.length;
144
+ if (header) {
145
+ listHeight += ITEM_HEIGHT;
146
+ this.listElement.appendChild(header);
147
+ }
148
+ this.rowElements = ( this.model.items.map((item, i) => this.renderDataOrEditItem(item, i, focused)));
149
+ this.rowElements.forEach(rowElement => this.listElement.appendChild(rowElement));
150
+ this.listElement.style.height = listHeight + 'px';
151
+ }
152
+ createBasicSelectBox(value) {
153
+ const selectBoxOptions = ( value.options.map(({ value, description }) => ({ text: value, description })));
154
+ const selected = value.options.findIndex(option => value.data === option.value);
155
+ const styles = getSelectBoxStyles({
156
+ selectBackground: settingsSelectBackground,
157
+ selectForeground: settingsSelectForeground,
158
+ selectBorder: settingsSelectBorder,
159
+ selectListBorder: settingsSelectListBorder
160
+ });
161
+ const selectBox = ( new SelectBox(selectBoxOptions, selected, this.contextViewService, styles, {
162
+ useCustomDrawn: !(isIOS && BrowserFeatures.pointerEvents)
163
+ }));
164
+ return selectBox;
165
+ }
166
+ editSetting(idx) {
167
+ this.model.setEditKey(idx);
168
+ this.renderList();
169
+ }
170
+ cancelEdit() {
171
+ this.model.setEditKey('none');
172
+ this.renderList();
173
+ }
174
+ handleItemChange(originalItem, changedItem, idx) {
175
+ this.model.setEditKey('none');
176
+ this._onDidChangeList.fire({
177
+ originalItem,
178
+ item: changedItem,
179
+ targetIndex: idx,
180
+ });
181
+ this.renderList();
182
+ }
183
+ renderDataOrEditItem(item, idx, listFocused) {
184
+ const rowElement = item.editing ?
185
+ this.renderEdit(item, idx) :
186
+ this.renderDataItem(item, idx, listFocused);
187
+ rowElement.setAttribute('role', 'listitem');
188
+ return rowElement;
189
+ }
190
+ renderDataItem(item, idx, listFocused) {
191
+ const rowElementGroup = this.renderItem(item, idx);
192
+ const rowElement = rowElementGroup.rowElement;
193
+ rowElement.setAttribute('data-index', idx + '');
194
+ rowElement.setAttribute('tabindex', item.selected ? '0' : '-1');
195
+ rowElement.classList.toggle('selected', item.selected);
196
+ const actionBar = ( new ActionBar(rowElement));
197
+ this.listDisposables.add(actionBar);
198
+ actionBar.push(this.getActionsForItem(item, idx), { icon: true, label: true });
199
+ this.addTooltipsToRow(rowElementGroup, item);
200
+ if (item.selected && listFocused) {
201
+ this.listDisposables.add(disposableTimeout(() => rowElement.focus()));
202
+ }
203
+ this.listDisposables.add(dom.addDisposableListener(rowElement, 'click', (e) => {
204
+ e.stopPropagation();
205
+ }));
206
+ return rowElement;
207
+ }
208
+ renderAddButton() {
209
+ const rowElement = $('.setting-list-new-row');
210
+ const startAddButton = this._register(( new Button(rowElement, defaultButtonStyles)));
211
+ startAddButton.label = this.getLocalizedStrings().addButtonLabel;
212
+ startAddButton.element.classList.add('setting-list-addButton');
213
+ this._register(startAddButton.onDidClick(() => {
214
+ this.model.setEditKey('create');
215
+ this.renderList();
216
+ }));
217
+ return rowElement;
218
+ }
219
+ onListClick(e) {
220
+ const targetIdx = this.getClickedItemIndex(e);
221
+ if (targetIdx < 0) {
222
+ return;
223
+ }
224
+ e.preventDefault();
225
+ e.stopImmediatePropagation();
226
+ if (this.model.getSelected() === targetIdx) {
227
+ return;
228
+ }
229
+ this.selectRow(targetIdx);
230
+ }
231
+ onListDoubleClick(e) {
232
+ const targetIdx = this.getClickedItemIndex(e);
233
+ if (targetIdx < 0) {
234
+ return;
235
+ }
236
+ const item = this.model.items[targetIdx];
237
+ if (item) {
238
+ this.editSetting(targetIdx);
239
+ e.preventDefault();
240
+ e.stopPropagation();
241
+ }
242
+ }
243
+ getClickedItemIndex(e) {
244
+ if (!e.target) {
245
+ return -1;
246
+ }
247
+ const actionbar = dom.findParentWithClass(e.target, 'monaco-action-bar');
248
+ if (actionbar) {
249
+ return -1;
250
+ }
251
+ const element = dom.findParentWithClass(e.target, 'setting-list-row');
252
+ if (!element) {
253
+ return -1;
254
+ }
255
+ const targetIdxStr = element.getAttribute('data-index');
256
+ if (!targetIdxStr) {
257
+ return -1;
258
+ }
259
+ const targetIdx = parseInt(targetIdxStr);
260
+ return targetIdx;
261
+ }
262
+ selectRow(idx) {
263
+ this.model.select(idx);
264
+ this.rowElements.forEach(row => row.classList.remove('selected'));
265
+ const selectedRow = this.rowElements[this.model.getSelected()];
266
+ selectedRow.classList.add('selected');
267
+ selectedRow.focus();
268
+ }
269
+ selectNextRow() {
270
+ this.model.selectNext();
271
+ this.selectRow(this.model.getSelected());
272
+ }
273
+ selectPreviousRow() {
274
+ this.model.selectPrevious();
275
+ this.selectRow(this.model.getSelected());
276
+ }
277
+ };
278
+ AbstractListSettingWidget = ( __decorate([
279
+ ( __param(1, IThemeService)),
280
+ ( __param(2, IContextViewService))
281
+ ], AbstractListSettingWidget));
282
+ class ListSettingWidget extends AbstractListSettingWidget {
283
+ constructor() {
284
+ super(...arguments);
285
+ this.showAddButton = true;
286
+ }
287
+ setValue(listData, options) {
288
+ this.keyValueSuggester = options?.keySuggester;
289
+ this.showAddButton = options?.showAddButton ?? true;
290
+ super.setValue(listData);
291
+ }
292
+ getEmptyItem() {
293
+ return {
294
+ value: {
295
+ type: 'string',
296
+ data: ''
297
+ }
298
+ };
299
+ }
300
+ isAddButtonVisible() {
301
+ return this.showAddButton;
302
+ }
303
+ getContainerClasses() {
304
+ return ['setting-list-widget'];
305
+ }
306
+ getActionsForItem(item, idx) {
307
+ return [
308
+ {
309
+ class: ThemeIcon.asClassName(settingsEditIcon),
310
+ enabled: true,
311
+ id: 'workbench.action.editListItem',
312
+ tooltip: this.getLocalizedStrings().editActionTooltip,
313
+ run: () => this.editSetting(idx)
314
+ },
315
+ {
316
+ class: ThemeIcon.asClassName(settingsRemoveIcon),
317
+ enabled: true,
318
+ id: 'workbench.action.removeListItem',
319
+ tooltip: this.getLocalizedStrings().deleteActionTooltip,
320
+ run: () => this._onDidChangeList.fire({ originalItem: item, item: undefined, targetIndex: idx })
321
+ }
322
+ ];
323
+ }
324
+ getDragImage(item) {
325
+ const dragImage = $('.monaco-drag-image');
326
+ dragImage.textContent = item.value.data;
327
+ return dragImage;
328
+ }
329
+ renderItem(item, idx) {
330
+ const rowElement = $('.setting-list-row');
331
+ const valueElement = dom.append(rowElement, $('.setting-list-value'));
332
+ const siblingElement = dom.append(rowElement, $('.setting-list-sibling'));
333
+ valueElement.textContent = ( item.value.data.toString());
334
+ siblingElement.textContent = item.sibling ? `when: ${item.sibling}` : null;
335
+ this.addDragAndDrop(rowElement, item, idx);
336
+ return { rowElement, keyElement: valueElement, valueElement: siblingElement };
337
+ }
338
+ addDragAndDrop(rowElement, item, idx) {
339
+ if (this.inReadMode) {
340
+ rowElement.draggable = true;
341
+ rowElement.classList.add('draggable');
342
+ }
343
+ else {
344
+ rowElement.draggable = false;
345
+ rowElement.classList.remove('draggable');
346
+ }
347
+ this.listDisposables.add(dom.addDisposableListener(rowElement, dom.EventType.DRAG_START, (ev) => {
348
+ this.dragDetails = {
349
+ element: rowElement,
350
+ item,
351
+ itemIndex: idx
352
+ };
353
+ if (ev.dataTransfer) {
354
+ ev.dataTransfer.dropEffect = 'move';
355
+ const dragImage = this.getDragImage(item);
356
+ document.body.appendChild(dragImage);
357
+ ev.dataTransfer.setDragImage(dragImage, -10, -10);
358
+ setTimeout(() => document.body.removeChild(dragImage), 0);
359
+ }
360
+ }));
361
+ this.listDisposables.add(dom.addDisposableListener(rowElement, dom.EventType.DRAG_OVER, (ev) => {
362
+ if (!this.dragDetails) {
363
+ return false;
364
+ }
365
+ ev.preventDefault();
366
+ if (ev.dataTransfer) {
367
+ ev.dataTransfer.dropEffect = 'move';
368
+ }
369
+ return true;
370
+ }));
371
+ let counter = 0;
372
+ this.listDisposables.add(dom.addDisposableListener(rowElement, dom.EventType.DRAG_ENTER, (ev) => {
373
+ counter++;
374
+ rowElement.classList.add('drag-hover');
375
+ }));
376
+ this.listDisposables.add(dom.addDisposableListener(rowElement, dom.EventType.DRAG_LEAVE, (ev) => {
377
+ counter--;
378
+ if (!counter) {
379
+ rowElement.classList.remove('drag-hover');
380
+ }
381
+ }));
382
+ this.listDisposables.add(dom.addDisposableListener(rowElement, dom.EventType.DROP, (ev) => {
383
+ if (!this.dragDetails) {
384
+ return false;
385
+ }
386
+ ev.preventDefault();
387
+ counter = 0;
388
+ if (this.dragDetails.element !== rowElement) {
389
+ this._onDidChangeList.fire({
390
+ originalItem: this.dragDetails.item,
391
+ sourceIndex: this.dragDetails.itemIndex,
392
+ item,
393
+ targetIndex: idx
394
+ });
395
+ }
396
+ return true;
397
+ }));
398
+ this.listDisposables.add(dom.addDisposableListener(rowElement, dom.EventType.DRAG_END, (ev) => {
399
+ counter = 0;
400
+ rowElement.classList.remove('drag-hover');
401
+ ev.dataTransfer?.clearData();
402
+ if (this.dragDetails) {
403
+ this.dragDetails = undefined;
404
+ }
405
+ }));
406
+ }
407
+ renderEdit(item, idx) {
408
+ const rowElement = $('.setting-list-edit-row');
409
+ let valueInput;
410
+ let currentDisplayValue;
411
+ let currentEnumOptions;
412
+ if (this.keyValueSuggester) {
413
+ const enumData = this.keyValueSuggester(( this.model.items.map(({ value: { data } }) => data)), idx);
414
+ item = {
415
+ ...item,
416
+ value: {
417
+ type: 'enum',
418
+ data: item.value.data,
419
+ options: enumData ? enumData.options : []
420
+ }
421
+ };
422
+ }
423
+ switch (item.value.type) {
424
+ case 'string':
425
+ valueInput = this.renderInputBox(item.value, rowElement);
426
+ break;
427
+ case 'enum':
428
+ valueInput = this.renderDropdown(item.value, rowElement);
429
+ currentEnumOptions = item.value.options;
430
+ if (item.value.options.length) {
431
+ currentDisplayValue = this.isItemNew(item) ?
432
+ currentEnumOptions[0].value : item.value.data;
433
+ }
434
+ break;
435
+ }
436
+ const updatedInputBoxItem = () => {
437
+ const inputBox = valueInput;
438
+ return {
439
+ value: {
440
+ type: 'string',
441
+ data: inputBox.value
442
+ },
443
+ sibling: siblingInput?.value
444
+ };
445
+ };
446
+ const updatedSelectBoxItem = (selectedValue) => {
447
+ return {
448
+ value: {
449
+ type: 'enum',
450
+ data: selectedValue,
451
+ options: currentEnumOptions ?? []
452
+ }
453
+ };
454
+ };
455
+ const onKeyDown = (e) => {
456
+ if (e.equals(3 )) {
457
+ this.handleItemChange(item, updatedInputBoxItem(), idx);
458
+ }
459
+ else if (e.equals(9 )) {
460
+ this.cancelEdit();
461
+ e.preventDefault();
462
+ }
463
+ rowElement?.focus();
464
+ };
465
+ if (item.value.type !== 'string') {
466
+ const selectBox = valueInput;
467
+ this.listDisposables.add(selectBox.onDidSelect(({ selected }) => {
468
+ currentDisplayValue = selected;
469
+ }));
470
+ }
471
+ else {
472
+ const inputBox = valueInput;
473
+ this.listDisposables.add(dom.addStandardDisposableListener(inputBox.inputElement, dom.EventType.KEY_DOWN, onKeyDown));
474
+ }
475
+ let siblingInput;
476
+ if (!isUndefinedOrNull(item.sibling)) {
477
+ siblingInput = ( new InputBox(rowElement, this.contextViewService, {
478
+ placeholder: this.getLocalizedStrings().siblingInputPlaceholder,
479
+ inputBoxStyles: getInputBoxStyle({
480
+ inputBackground: settingsTextInputBackground,
481
+ inputForeground: settingsTextInputForeground,
482
+ inputBorder: settingsTextInputBorder
483
+ })
484
+ }));
485
+ siblingInput.element.classList.add('setting-list-siblingInput');
486
+ this.listDisposables.add(siblingInput);
487
+ siblingInput.value = item.sibling;
488
+ this.listDisposables.add(dom.addStandardDisposableListener(siblingInput.inputElement, dom.EventType.KEY_DOWN, onKeyDown));
489
+ }
490
+ else if (valueInput instanceof InputBox) {
491
+ valueInput.element.classList.add('no-sibling');
492
+ }
493
+ const okButton = this._register(( new Button(rowElement, defaultButtonStyles)));
494
+ okButton.label = ( localize('okButton', "OK"));
495
+ okButton.element.classList.add('setting-list-ok-button');
496
+ this.listDisposables.add(okButton.onDidClick(() => {
497
+ if (item.value.type === 'string') {
498
+ this.handleItemChange(item, updatedInputBoxItem(), idx);
499
+ }
500
+ else {
501
+ this.handleItemChange(item, updatedSelectBoxItem(currentDisplayValue), idx);
502
+ }
503
+ }));
504
+ const cancelButton = this._register(( new Button(rowElement, { secondary: true, ...defaultButtonStyles })));
505
+ cancelButton.label = ( localize('cancelButton', "Cancel"));
506
+ cancelButton.element.classList.add('setting-list-cancel-button');
507
+ this.listDisposables.add(cancelButton.onDidClick(() => this.cancelEdit()));
508
+ this.listDisposables.add(disposableTimeout(() => {
509
+ valueInput.focus();
510
+ if (valueInput instanceof InputBox) {
511
+ valueInput.select();
512
+ }
513
+ }));
514
+ return rowElement;
515
+ }
516
+ isItemNew(item) {
517
+ return item.value.data === '';
518
+ }
519
+ addTooltipsToRow(rowElementGroup, { value, sibling }) {
520
+ const title = isUndefinedOrNull(sibling)
521
+ ? ( localize('listValueHintLabel', "List item `{0}`", value.data))
522
+ : ( localize(
523
+ 'listSiblingHintLabel',
524
+ "List item `{0}` with sibling `${1}`",
525
+ value.data,
526
+ sibling
527
+ ));
528
+ const { rowElement } = rowElementGroup;
529
+ rowElement.title = title;
530
+ rowElement.setAttribute('aria-label', rowElement.title);
531
+ }
532
+ getLocalizedStrings() {
533
+ return {
534
+ deleteActionTooltip: ( localize('removeItem', "Remove Item")),
535
+ editActionTooltip: ( localize('editItem', "Edit Item")),
536
+ addButtonLabel: ( localize('addItem', "Add Item")),
537
+ inputPlaceholder: ( localize('itemInputPlaceholder', "Item...")),
538
+ siblingInputPlaceholder: ( localize('listSiblingInputPlaceholder', "Sibling...")),
539
+ };
540
+ }
541
+ renderInputBox(value, rowElement) {
542
+ const valueInput = ( new InputBox(rowElement, this.contextViewService, {
543
+ placeholder: this.getLocalizedStrings().inputPlaceholder,
544
+ inputBoxStyles: getInputBoxStyle({
545
+ inputBackground: settingsTextInputBackground,
546
+ inputForeground: settingsTextInputForeground,
547
+ inputBorder: settingsTextInputBorder
548
+ })
549
+ }));
550
+ valueInput.element.classList.add('setting-list-valueInput');
551
+ this.listDisposables.add(valueInput);
552
+ valueInput.value = ( value.data.toString());
553
+ return valueInput;
554
+ }
555
+ renderDropdown(value, rowElement) {
556
+ if (value.type !== 'enum') {
557
+ throw new Error('Valuetype must be enum.');
558
+ }
559
+ const selectBox = this.createBasicSelectBox(value);
560
+ const wrapper = $('.setting-list-object-list-row');
561
+ selectBox.render(wrapper);
562
+ rowElement.appendChild(wrapper);
563
+ return selectBox;
564
+ }
565
+ }
566
+ class ExcludeSettingWidget extends ListSettingWidget {
567
+ getContainerClasses() {
568
+ return ['setting-list-include-exclude-widget'];
569
+ }
570
+ addDragAndDrop(rowElement, item, idx) {
571
+ return;
572
+ }
573
+ addTooltipsToRow(rowElementGroup, { value, sibling }) {
574
+ const title = isUndefinedOrNull(sibling)
575
+ ? ( localize('excludePatternHintLabel', "Exclude files matching `{0}`", value.data))
576
+ : ( localize(
577
+ 'excludeSiblingHintLabel',
578
+ "Exclude files matching `{0}`, only when a file matching `{1}` is present",
579
+ value.data,
580
+ sibling
581
+ ));
582
+ const { rowElement } = rowElementGroup;
583
+ rowElement.title = title;
584
+ rowElement.setAttribute('aria-label', rowElement.title);
585
+ }
586
+ getLocalizedStrings() {
587
+ return {
588
+ deleteActionTooltip: ( localize('removeExcludeItem', "Remove Exclude Item")),
589
+ editActionTooltip: ( localize('editExcludeItem', "Edit Exclude Item")),
590
+ addButtonLabel: ( localize('addPattern', "Add Pattern")),
591
+ inputPlaceholder: ( localize('excludePatternInputPlaceholder', "Exclude Pattern...")),
592
+ siblingInputPlaceholder: ( localize('excludeSiblingInputPlaceholder', "When Pattern Is Present...")),
593
+ };
594
+ }
595
+ }
596
+ class IncludeSettingWidget extends ListSettingWidget {
597
+ getContainerClasses() {
598
+ return ['setting-list-include-exclude-widget'];
599
+ }
600
+ addDragAndDrop(rowElement, item, idx) {
601
+ return;
602
+ }
603
+ addTooltipsToRow(rowElementGroup, { value, sibling }) {
604
+ const title = isUndefinedOrNull(sibling)
605
+ ? ( localize('includePatternHintLabel', "Include files matching `{0}`", value.data))
606
+ : ( localize(
607
+ 'includeSiblingHintLabel',
608
+ "Include files matching `{0}`, only when a file matching `{1}` is present",
609
+ value.data,
610
+ sibling
611
+ ));
612
+ const { rowElement } = rowElementGroup;
613
+ rowElement.title = title;
614
+ rowElement.setAttribute('aria-label', rowElement.title);
615
+ }
616
+ getLocalizedStrings() {
617
+ return {
618
+ deleteActionTooltip: ( localize('removeIncludeItem', "Remove Include Item")),
619
+ editActionTooltip: ( localize('editIncludeItem', "Edit Include Item")),
620
+ addButtonLabel: ( localize('addPattern', "Add Pattern")),
621
+ inputPlaceholder: ( localize('includePatternInputPlaceholder', "Include Pattern...")),
622
+ siblingInputPlaceholder: ( localize('includeSiblingInputPlaceholder', "When Pattern Is Present...")),
623
+ };
624
+ }
625
+ }
626
+ class ObjectSettingDropdownWidget extends AbstractListSettingWidget {
627
+ constructor() {
628
+ super(...arguments);
629
+ this.currentSettingKey = '';
630
+ this.showAddButton = true;
631
+ this.keySuggester = () => undefined;
632
+ this.valueSuggester = () => undefined;
633
+ }
634
+ setValue(listData, options) {
635
+ this.showAddButton = options?.showAddButton ?? this.showAddButton;
636
+ this.keySuggester = options?.keySuggester ?? this.keySuggester;
637
+ this.valueSuggester = options?.valueSuggester ?? this.valueSuggester;
638
+ if (isDefined(options) && options.settingKey !== this.currentSettingKey) {
639
+ this.model.setEditKey('none');
640
+ this.model.select(null);
641
+ this.currentSettingKey = options.settingKey;
642
+ }
643
+ super.setValue(listData);
644
+ }
645
+ isItemNew(item) {
646
+ return item.key.data === '' && item.value.data === '';
647
+ }
648
+ isAddButtonVisible() {
649
+ return this.showAddButton;
650
+ }
651
+ getEmptyItem() {
652
+ return {
653
+ key: { type: 'string', data: '' },
654
+ value: { type: 'string', data: '' },
655
+ removable: true,
656
+ };
657
+ }
658
+ getContainerClasses() {
659
+ return ['setting-list-object-widget'];
660
+ }
661
+ getActionsForItem(item, idx) {
662
+ const actions = [
663
+ {
664
+ class: ThemeIcon.asClassName(settingsEditIcon),
665
+ enabled: true,
666
+ id: 'workbench.action.editListItem',
667
+ tooltip: this.getLocalizedStrings().editActionTooltip,
668
+ run: () => this.editSetting(idx)
669
+ },
670
+ ];
671
+ if (item.removable) {
672
+ actions.push({
673
+ class: ThemeIcon.asClassName(settingsRemoveIcon),
674
+ enabled: true,
675
+ id: 'workbench.action.removeListItem',
676
+ tooltip: this.getLocalizedStrings().deleteActionTooltip,
677
+ run: () => this._onDidChangeList.fire({ originalItem: item, item: undefined, targetIndex: idx })
678
+ });
679
+ }
680
+ else {
681
+ actions.push({
682
+ class: ThemeIcon.asClassName(settingsDiscardIcon),
683
+ enabled: true,
684
+ id: 'workbench.action.resetListItem',
685
+ tooltip: this.getLocalizedStrings().resetActionTooltip,
686
+ run: () => this._onDidChangeList.fire({ originalItem: item, item: undefined, targetIndex: idx })
687
+ });
688
+ }
689
+ return actions;
690
+ }
691
+ renderHeader() {
692
+ const header = $('.setting-list-row-header');
693
+ const keyHeader = dom.append(header, $('.setting-list-object-key'));
694
+ const valueHeader = dom.append(header, $('.setting-list-object-value'));
695
+ const { keyHeaderText, valueHeaderText } = this.getLocalizedStrings();
696
+ keyHeader.textContent = keyHeaderText;
697
+ valueHeader.textContent = valueHeaderText;
698
+ return header;
699
+ }
700
+ renderItem(item, idx) {
701
+ const rowElement = $('.setting-list-row');
702
+ rowElement.classList.add('setting-list-object-row');
703
+ const keyElement = dom.append(rowElement, $('.setting-list-object-key'));
704
+ const valueElement = dom.append(rowElement, $('.setting-list-object-value'));
705
+ keyElement.textContent = item.key.data;
706
+ valueElement.textContent = ( item.value.data.toString());
707
+ return { rowElement, keyElement, valueElement };
708
+ }
709
+ renderEdit(item, idx) {
710
+ const rowElement = $('.setting-list-edit-row.setting-list-object-row');
711
+ const changedItem = { ...item };
712
+ const onKeyChange = (key) => {
713
+ changedItem.key = key;
714
+ okButton.enabled = key.data !== '';
715
+ const suggestedValue = this.valueSuggester(key.data) ?? item.value;
716
+ if (this.shouldUseSuggestion(item.value, changedItem.value, suggestedValue)) {
717
+ onValueChange(suggestedValue);
718
+ renderLatestValue();
719
+ }
720
+ };
721
+ const onValueChange = (value) => {
722
+ changedItem.value = value;
723
+ };
724
+ let keyWidget;
725
+ let keyElement;
726
+ if (this.showAddButton) {
727
+ if (this.isItemNew(item)) {
728
+ const suggestedKey = this.keySuggester(( this.model.items.map(({ key: { data } }) => data)));
729
+ if (isDefined(suggestedKey)) {
730
+ changedItem.key = suggestedKey;
731
+ const suggestedValue = this.valueSuggester(changedItem.key.data);
732
+ onValueChange(suggestedValue ?? changedItem.value);
733
+ }
734
+ }
735
+ const { widget, element } = this.renderEditWidget(changedItem.key, {
736
+ idx,
737
+ isKey: true,
738
+ originalItem: item,
739
+ changedItem,
740
+ update: onKeyChange,
741
+ });
742
+ keyWidget = widget;
743
+ keyElement = element;
744
+ }
745
+ else {
746
+ keyElement = $('.setting-list-object-key');
747
+ keyElement.textContent = item.key.data;
748
+ }
749
+ let valueWidget;
750
+ const valueContainer = $('.setting-list-object-value-container');
751
+ const renderLatestValue = () => {
752
+ const { widget, element } = this.renderEditWidget(changedItem.value, {
753
+ idx,
754
+ isKey: false,
755
+ originalItem: item,
756
+ changedItem,
757
+ update: onValueChange,
758
+ });
759
+ valueWidget = widget;
760
+ dom.clearNode(valueContainer);
761
+ valueContainer.append(element);
762
+ };
763
+ renderLatestValue();
764
+ rowElement.append(keyElement, valueContainer);
765
+ const okButton = this._register(( new Button(rowElement, defaultButtonStyles)));
766
+ okButton.enabled = changedItem.key.data !== '';
767
+ okButton.label = ( localize('okButton', "OK"));
768
+ okButton.element.classList.add('setting-list-ok-button');
769
+ this.listDisposables.add(okButton.onDidClick(() => this.handleItemChange(item, changedItem, idx)));
770
+ const cancelButton = this._register(( new Button(rowElement, { secondary: true, ...defaultButtonStyles })));
771
+ cancelButton.label = ( localize('cancelButton', "Cancel"));
772
+ cancelButton.element.classList.add('setting-list-cancel-button');
773
+ this.listDisposables.add(cancelButton.onDidClick(() => this.cancelEdit()));
774
+ this.listDisposables.add(disposableTimeout(() => {
775
+ const widget = keyWidget ?? valueWidget;
776
+ widget.focus();
777
+ if (widget instanceof InputBox) {
778
+ widget.select();
779
+ }
780
+ }));
781
+ return rowElement;
782
+ }
783
+ renderEditWidget(keyOrValue, options) {
784
+ switch (keyOrValue.type) {
785
+ case 'string':
786
+ return this.renderStringEditWidget(keyOrValue, options);
787
+ case 'enum':
788
+ return this.renderEnumEditWidget(keyOrValue, options);
789
+ case 'boolean':
790
+ return this.renderEnumEditWidget({
791
+ type: 'enum',
792
+ data: ( keyOrValue.data.toString()),
793
+ options: [{ value: 'true' }, { value: 'false' }],
794
+ }, options);
795
+ }
796
+ }
797
+ renderStringEditWidget(keyOrValue, { idx, isKey, originalItem, changedItem, update }) {
798
+ const wrapper = $(isKey ? '.setting-list-object-input-key' : '.setting-list-object-input-value');
799
+ const inputBox = ( new InputBox(wrapper, this.contextViewService, {
800
+ placeholder: isKey
801
+ ? ( localize('objectKeyInputPlaceholder', "Key"))
802
+ : ( localize('objectValueInputPlaceholder', "Value")),
803
+ inputBoxStyles: getInputBoxStyle({
804
+ inputBackground: settingsTextInputBackground,
805
+ inputForeground: settingsTextInputForeground,
806
+ inputBorder: settingsTextInputBorder
807
+ })
808
+ }));
809
+ inputBox.element.classList.add('setting-list-object-input');
810
+ this.listDisposables.add(inputBox);
811
+ inputBox.value = keyOrValue.data;
812
+ this.listDisposables.add(inputBox.onDidChange(value => update({ ...keyOrValue, data: value })));
813
+ const onKeyDown = (e) => {
814
+ if (e.equals(3 )) {
815
+ this.handleItemChange(originalItem, changedItem, idx);
816
+ }
817
+ else if (e.equals(9 )) {
818
+ this.cancelEdit();
819
+ e.preventDefault();
820
+ }
821
+ };
822
+ this.listDisposables.add(dom.addStandardDisposableListener(inputBox.inputElement, dom.EventType.KEY_DOWN, onKeyDown));
823
+ return { widget: inputBox, element: wrapper };
824
+ }
825
+ renderEnumEditWidget(keyOrValue, { isKey, changedItem, update }) {
826
+ const selectBox = this.createBasicSelectBox(keyOrValue);
827
+ const changedKeyOrValue = isKey ? changedItem.key : changedItem.value;
828
+ this.listDisposables.add(selectBox.onDidSelect(({ selected }) => update(changedKeyOrValue.type === 'boolean'
829
+ ? { ...changedKeyOrValue, data: selected === 'true' ? true : false }
830
+ : { ...changedKeyOrValue, data: selected })));
831
+ const wrapper = $('.setting-list-object-input');
832
+ wrapper.classList.add(isKey ? 'setting-list-object-input-key' : 'setting-list-object-input-value');
833
+ selectBox.render(wrapper);
834
+ const selected = keyOrValue.options.findIndex(option => keyOrValue.data === option.value);
835
+ if (selected === -1 && keyOrValue.options.length) {
836
+ update(changedKeyOrValue.type === 'boolean'
837
+ ? { ...changedKeyOrValue, data: true }
838
+ : { ...changedKeyOrValue, data: keyOrValue.options[0].value });
839
+ }
840
+ else if (changedKeyOrValue.type === 'boolean') {
841
+ update({ ...changedKeyOrValue, data: keyOrValue.data === 'true' });
842
+ }
843
+ return { widget: selectBox, element: wrapper };
844
+ }
845
+ shouldUseSuggestion(originalValue, previousValue, newValue) {
846
+ if (newValue.type !== 'enum' && newValue.type === previousValue.type && newValue.data === previousValue.data) {
847
+ return false;
848
+ }
849
+ if (originalValue.data === '') {
850
+ return true;
851
+ }
852
+ if (previousValue.type === newValue.type && newValue.type !== 'enum') {
853
+ return false;
854
+ }
855
+ if (previousValue.type === 'enum' && newValue.type === 'enum') {
856
+ const previousEnums = ( new Set(( previousValue.options.map(({ value }) => value))));
857
+ newValue.options.forEach(({ value }) => previousEnums.delete(value));
858
+ if (previousEnums.size === 0) {
859
+ return false;
860
+ }
861
+ }
862
+ return true;
863
+ }
864
+ addTooltipsToRow(rowElementGroup, item) {
865
+ const { keyElement, valueElement, rowElement } = rowElementGroup;
866
+ const accessibleDescription = ( localize(
867
+ 'objectPairHintLabel',
868
+ "The property `{0}` is set to `{1}`.",
869
+ item.key.data,
870
+ item.value.data
871
+ ));
872
+ const keyDescription = this.getEnumDescription(item.key) ?? item.keyDescription ?? accessibleDescription;
873
+ keyElement.title = keyDescription;
874
+ const valueDescription = this.getEnumDescription(item.value) ?? accessibleDescription;
875
+ valueElement.title = valueDescription;
876
+ rowElement.setAttribute('aria-label', accessibleDescription);
877
+ }
878
+ getEnumDescription(keyOrValue) {
879
+ const enumDescription = keyOrValue.type === 'enum'
880
+ ? keyOrValue.options.find(({ value }) => keyOrValue.data === value)?.description
881
+ : undefined;
882
+ return enumDescription;
883
+ }
884
+ getLocalizedStrings() {
885
+ return {
886
+ deleteActionTooltip: ( localize('removeItem', "Remove Item")),
887
+ resetActionTooltip: ( localize('resetItem', "Reset Item")),
888
+ editActionTooltip: ( localize('editItem', "Edit Item")),
889
+ addButtonLabel: ( localize('addItem', "Add Item")),
890
+ keyHeaderText: ( localize('objectKeyHeader', "Item")),
891
+ valueHeaderText: ( localize('objectValueHeader', "Value")),
892
+ };
893
+ }
894
+ }
895
+ class ObjectSettingCheckboxWidget extends AbstractListSettingWidget {
896
+ constructor() {
897
+ super(...arguments);
898
+ this.currentSettingKey = '';
899
+ }
900
+ setValue(listData, options) {
901
+ if (isDefined(options) && options.settingKey !== this.currentSettingKey) {
902
+ this.model.setEditKey('none');
903
+ this.model.select(null);
904
+ this.currentSettingKey = options.settingKey;
905
+ }
906
+ super.setValue(listData);
907
+ }
908
+ isItemNew(item) {
909
+ return !item.key.data && !item.value.data;
910
+ }
911
+ getEmptyItem() {
912
+ return {
913
+ key: { type: 'string', data: '' },
914
+ value: { type: 'boolean', data: false },
915
+ removable: false
916
+ };
917
+ }
918
+ getContainerClasses() {
919
+ return ['setting-list-object-widget'];
920
+ }
921
+ getActionsForItem(item, idx) {
922
+ return [];
923
+ }
924
+ isAddButtonVisible() {
925
+ return false;
926
+ }
927
+ renderHeader() {
928
+ return undefined;
929
+ }
930
+ renderDataOrEditItem(item, idx, listFocused) {
931
+ const rowElement = this.renderEdit(item, idx);
932
+ rowElement.setAttribute('role', 'listitem');
933
+ return rowElement;
934
+ }
935
+ renderItem(item, idx) {
936
+ const rowElement = $('.blank-row');
937
+ const keyElement = $('.blank-row-key');
938
+ return { rowElement, keyElement };
939
+ }
940
+ renderEdit(item, idx) {
941
+ const rowElement = $('.setting-list-edit-row.setting-list-object-row.setting-item-bool');
942
+ const changedItem = { ...item };
943
+ const onValueChange = (newValue) => {
944
+ changedItem.value.data = newValue;
945
+ this.handleItemChange(item, changedItem, idx);
946
+ };
947
+ const checkboxDescription = item.keyDescription ? `${item.keyDescription} (${item.key.data})` : item.key.data;
948
+ const { element, widget: checkbox } = this.renderEditWidget(changedItem.value.data, checkboxDescription, onValueChange);
949
+ rowElement.appendChild(element);
950
+ const valueElement = dom.append(rowElement, $('.setting-list-object-value'));
951
+ valueElement.textContent = checkboxDescription;
952
+ const rowElementGroup = { rowElement, keyElement: valueElement, valueElement: checkbox.domNode };
953
+ this.addTooltipsToRow(rowElementGroup, item);
954
+ this._register(dom.addDisposableListener(valueElement, dom.EventType.MOUSE_DOWN, e => {
955
+ const targetElement = e.target;
956
+ if (targetElement.tagName.toLowerCase() !== 'a') {
957
+ checkbox.checked = !checkbox.checked;
958
+ onValueChange(checkbox.checked);
959
+ }
960
+ dom.EventHelper.stop(e);
961
+ }));
962
+ return rowElement;
963
+ }
964
+ renderEditWidget(value, checkboxDescription, onValueChange) {
965
+ const checkbox = ( new Toggle({
966
+ icon: Codicon.check,
967
+ actionClassName: 'setting-value-checkbox',
968
+ isChecked: value,
969
+ title: checkboxDescription,
970
+ ...unthemedToggleStyles
971
+ }));
972
+ this.listDisposables.add(checkbox);
973
+ const wrapper = $('.setting-list-object-input');
974
+ wrapper.classList.add('setting-list-object-input-key-checkbox');
975
+ checkbox.domNode.classList.add('setting-value-checkbox');
976
+ wrapper.appendChild(checkbox.domNode);
977
+ this._register(dom.addDisposableListener(wrapper, dom.EventType.MOUSE_DOWN, e => {
978
+ checkbox.checked = !checkbox.checked;
979
+ onValueChange(checkbox.checked);
980
+ e.stopImmediatePropagation();
981
+ }));
982
+ return { widget: checkbox, element: wrapper };
983
+ }
984
+ addTooltipsToRow(rowElementGroup, item) {
985
+ const accessibleDescription = ( localize(
986
+ 'objectPairHintLabel',
987
+ "The property `{0}` is set to `{1}`.",
988
+ item.key.data,
989
+ item.value.data
990
+ ));
991
+ const title = item.keyDescription ?? accessibleDescription;
992
+ const { rowElement, keyElement, valueElement } = rowElementGroup;
993
+ keyElement.title = title;
994
+ valueElement.setAttribute('aria-label', accessibleDescription);
995
+ rowElement.setAttribute('aria-label', accessibleDescription);
996
+ }
997
+ getLocalizedStrings() {
998
+ return {
999
+ deleteActionTooltip: ( localize('removeItem', "Remove Item")),
1000
+ resetActionTooltip: ( localize('resetItem', "Reset Item")),
1001
+ editActionTooltip: ( localize('editItem', "Edit Item")),
1002
+ addButtonLabel: ( localize('addItem', "Add Item")),
1003
+ keyHeaderText: ( localize('objectKeyHeader', "Item")),
1004
+ valueHeaderText: ( localize('objectValueHeader', "Value")),
1005
+ };
1006
+ }
1007
+ }
1008
+ export { AbstractListSettingWidget, ExcludeSettingWidget, IncludeSettingWidget, ListSettingListModel, ListSettingWidget, ObjectSettingCheckboxWidget, ObjectSettingDropdownWidget };