@codingame/monaco-vscode-api 1.79.0 → 1.79.2-next.0

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 (644) hide show
  1. package/README.md +17 -6
  2. package/dist/api.js +12 -10
  3. package/dist/composite.d.ts +65 -0
  4. package/dist/configurationRegistry.d.ts +212 -0
  5. package/dist/contextkey.d.ts +2 -2
  6. package/dist/default-extension.js +23 -0
  7. package/dist/default-extensions/json.js +1 -0
  8. package/dist/default-extensions/theme-defaults.js +2 -2
  9. package/dist/editor.d.ts +4 -320
  10. package/dist/editorBrowser.d.ts +597 -11
  11. package/dist/event.d.ts +6 -1
  12. package/dist/{extension-tools-d0cfdea1.js → extension-tools-3c2bf0a4.js} +1032 -706
  13. package/dist/extensions.d.ts +6 -6
  14. package/dist/extensions.d2.ts +6 -17
  15. package/dist/extensions.js +4 -37
  16. package/dist/extensionsRegistry.d.ts +15 -9
  17. package/dist/files.d.ts +73 -9
  18. package/dist/jsonSchema.d.ts +1 -1
  19. package/dist/keybinding.d.ts +3 -3
  20. package/dist/languageFeatures.d.ts +706 -65
  21. package/dist/log.d.ts +1 -1
  22. package/dist/monaco.d.ts +33 -33
  23. package/dist/monaco.js +62 -6
  24. package/dist/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js +2 -0
  25. package/dist/override/vs/workbench/contrib/notebook/browser/contrib/find/findMatchDecorationModel.js +2 -0
  26. package/dist/override/vs/workbench/contrib/notebook/browser/notebookEditor.js +2 -0
  27. package/dist/override/vs/workbench/contrib/notebook/browser/notebookEditorWidget.js +2 -0
  28. package/dist/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +5 -0
  29. package/dist/platform.d.ts +11 -0
  30. package/dist/rollup-extension-directory-plugin.js +1 -2
  31. package/dist/rollup-vsix-plugin.js +1 -2
  32. package/dist/service-override/configuration.d.ts +7 -208
  33. package/dist/service-override/editor.d.ts +13 -0
  34. package/dist/service-override/{modelEditor.js → editor.js} +6 -62
  35. package/dist/service-override/files.d.ts +4 -4
  36. package/dist/service-override/files.js +14 -2
  37. package/dist/service-override/keybindings.js +3 -79
  38. package/dist/service-override/layout.js +6 -2
  39. package/dist/service-override/markers.d.ts +7 -0
  40. package/dist/service-override/markers.js +6 -0
  41. package/dist/service-override/model.d.ts +7 -0
  42. package/dist/service-override/model.js +10 -0
  43. package/dist/service-override/output.d.ts +7 -0
  44. package/dist/service-override/output.js +22 -0
  45. package/dist/service-override/preferences.js +7 -1
  46. package/dist/service-override/quickaccess.d.ts +7 -0
  47. package/dist/service-override/quickaccess.js +71 -0
  48. package/dist/service-override/search.d.ts +7 -0
  49. package/dist/service-override/search.js +19 -0
  50. package/dist/service-override/snippets.js +5 -1
  51. package/dist/service-override/terminal.d.ts +607 -0
  52. package/dist/service-override/terminal.js +98 -0
  53. package/dist/service-override/textmate.js +7 -2
  54. package/dist/service-override/theme.d.ts +1 -1
  55. package/dist/service-override/tools/editor.js +73 -0
  56. package/dist/service-override/views.d.ts +569 -481
  57. package/dist/service-override/views.js +149 -15
  58. package/dist/services.d.ts +2819 -203
  59. package/dist/services.js +3 -0
  60. package/dist/severity.d.ts +16 -0
  61. package/dist/uri.d.ts +22 -11
  62. package/dist/views.d.ts +270 -0
  63. package/dist/vscode/vs/base/browser/ui/centered/centeredViewLayout.js +178 -0
  64. package/dist/vscode/vs/base/browser/ui/grid/grid.js +452 -0
  65. package/dist/vscode/vs/base/browser/ui/grid/gridview.css.js +4 -0
  66. package/dist/vscode/vs/base/browser/ui/grid/gridview.js +999 -0
  67. package/dist/vscode/vs/base/browser/ui/iconLabel/simpleIconLabel.js +14 -0
  68. package/dist/vscode/vs/base/browser/ui/menu/menubar.css.js +4 -0
  69. package/dist/vscode/vs/base/browser/ui/menu/menubar.js +1 -1
  70. package/dist/vscode/vs/base/browser/ui/splitview/paneview.css.js +4 -0
  71. package/dist/vscode/vs/base/browser/ui/splitview/paneview.js +1 -1
  72. package/dist/vscode/vs/base/common/processes.js +24 -0
  73. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/decorations.js +20 -0
  74. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/delegatingEditorImpl.js +106 -0
  75. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorSash.js +59 -0
  76. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.contribution.js +41 -0
  77. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffEditorWidget2.js +369 -0
  78. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/diffModel.js +247 -0
  79. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/lineAlignment.js +179 -0
  80. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/overviewRulerPart.js +121 -0
  81. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/style.css.js +4 -0
  82. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/unchangedRanges.js +184 -0
  83. package/dist/vscode/vs/editor/browser/widget/diffEditorWidget2/utils.js +88 -0
  84. package/dist/vscode/vs/platform/extensionManagement/common/extensionManagement.js +39 -1
  85. package/dist/vscode/vs/platform/extensionManagement/common/extensionManagementUtil.js +5 -1
  86. package/dist/vscode/vs/platform/extensionManagement/common/extensionStorage.js +1 -1
  87. package/dist/vscode/vs/platform/extensionResourceLoader/common/extensionResourceLoader.js +13 -5
  88. package/dist/vscode/vs/platform/files/common/fileService.js +43 -5
  89. package/dist/vscode/vs/platform/files/common/files.js +3 -1
  90. package/dist/vscode/vs/platform/languagePacks/common/languagePacks.js +4 -1
  91. package/dist/vscode/vs/platform/log/common/bufferLog.js +34 -0
  92. package/dist/vscode/vs/platform/log/common/fileLog.js +105 -0
  93. package/dist/vscode/vs/platform/quickinput/browser/quickPickPin.js +94 -0
  94. package/dist/vscode/vs/platform/remote/common/remoteAuthorityResolver.js +20 -1
  95. package/dist/vscode/vs/platform/request/browser/requestService.js +1 -1
  96. package/dist/vscode/vs/platform/request/common/request.js +3 -3
  97. package/dist/vscode/vs/platform/storage/common/storage.js +3 -0
  98. package/dist/vscode/vs/platform/terminal/common/capabilities/bufferMarkCapability.js +39 -0
  99. package/dist/vscode/vs/platform/terminal/common/capabilities/commandDetectionCapability.js +565 -0
  100. package/dist/vscode/vs/platform/terminal/common/capabilities/cwdDetectionCapability.js +27 -0
  101. package/dist/vscode/vs/platform/terminal/common/capabilities/naiveCwdDetectionCapability.js +22 -0
  102. package/dist/vscode/vs/platform/terminal/common/capabilities/partialCommandDetectionCapability.js +46 -0
  103. package/dist/vscode/vs/platform/terminal/common/capabilities/terminalCapabilityStore.js +80 -0
  104. package/dist/vscode/vs/platform/terminal/common/environmentVariable.js +7 -0
  105. package/dist/vscode/vs/platform/terminal/common/environmentVariableCollection.js +196 -0
  106. package/dist/vscode/vs/platform/terminal/common/environmentVariableShared.js +23 -0
  107. package/dist/vscode/vs/platform/terminal/common/terminal.js +23 -0
  108. package/dist/vscode/vs/platform/terminal/common/terminalDataBuffering.js +45 -0
  109. package/dist/vscode/vs/platform/terminal/common/terminalEnvironment.js +37 -0
  110. package/dist/vscode/vs/platform/terminal/common/terminalPlatformConfiguration.js +622 -0
  111. package/dist/vscode/vs/platform/terminal/common/terminalProfiles.js +107 -0
  112. package/dist/vscode/vs/platform/terminal/common/terminalRecorder.js +66 -0
  113. package/dist/vscode/vs/platform/terminal/common/terminalStrings.js +16 -0
  114. package/dist/vscode/vs/platform/terminal/common/xterm/shellIntegrationAddon.js +321 -0
  115. package/dist/vscode/vs/platform/update/common/update.js +11 -1
  116. package/dist/vscode/vs/platform/userDataSync/common/settingsMerge.js +39 -1
  117. package/dist/vscode/vs/platform/userDataSync/common/userDataSync.js +19 -0
  118. package/dist/vscode/vs/platform/workspace/common/canonicalUri.js +3 -0
  119. package/dist/vscode/vs/platform/workspace/common/virtualWorkspace.js +4 -1
  120. package/dist/vscode/vs/platform/workspaces/common/workspaces.js +2 -2
  121. package/dist/vscode/vs/workbench/api/browser/mainThreadCommands.js +2 -3
  122. package/dist/vscode/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +1 -1
  123. package/dist/vscode/vs/workbench/api/browser/mainThreadEditorTabs.js +473 -0
  124. package/dist/vscode/vs/workbench/api/browser/mainThreadLanguageFeatures.js +45 -38
  125. package/dist/vscode/vs/workbench/api/browser/mainThreadSearch.js +146 -0
  126. package/dist/vscode/vs/workbench/api/browser/mainThreadStatusBar.js +49 -0
  127. package/dist/vscode/vs/workbench/api/browser/mainThreadTerminalService.js +395 -0
  128. package/dist/vscode/vs/workbench/api/browser/mainThreadTheming.js +22 -0
  129. package/dist/vscode/vs/workbench/api/browser/mainThreadTreeViews.js +10 -5
  130. package/dist/vscode/vs/workbench/api/browser/mainThreadWindow.js +11 -4
  131. package/dist/vscode/vs/workbench/api/browser/mainThreadWorkspace.js +34 -11
  132. package/dist/vscode/vs/workbench/api/browser/statusBarExtensionPoint.js +81 -0
  133. package/dist/vscode/vs/workbench/api/common/extHost.protocol.js +7 -2
  134. package/dist/vscode/vs/workbench/api/common/extHostDebugService.js +4 -13
  135. package/dist/vscode/vs/workbench/api/common/extHostExtensionService.js +30 -15
  136. package/dist/vscode/vs/workbench/api/common/extHostFileSystemConsumer.js +20 -6
  137. package/dist/vscode/vs/workbench/api/common/extHostLanguageFeatures.js +41 -8
  138. package/dist/vscode/vs/workbench/api/common/extHostManagedSockets.js +3 -0
  139. package/dist/vscode/vs/workbench/api/common/extHostSearch.js +109 -0
  140. package/dist/vscode/vs/workbench/api/common/extHostStatusBar.js +261 -0
  141. package/dist/vscode/vs/workbench/api/common/extHostTerminalService.js +879 -1
  142. package/dist/vscode/vs/workbench/api/common/extHostTheming.js +38 -0
  143. package/dist/vscode/vs/workbench/api/common/extHostTreeViews.js +8 -5
  144. package/dist/vscode/vs/workbench/api/common/extHostTypeConverters.js +15 -17
  145. package/dist/vscode/vs/workbench/api/common/extHostTypes.js +122 -4
  146. package/dist/vscode/vs/workbench/api/common/extHostWindow.js +28 -6
  147. package/dist/vscode/vs/workbench/api/common/extHostWorkspace.js +28 -0
  148. package/dist/vscode/vs/workbench/api/common/shared/dataTransferCache.js +11 -14
  149. package/dist/vscode/vs/workbench/api/node/extHostTerminalService.js +22 -0
  150. package/dist/vscode/vs/workbench/browser/actions/layoutActions.js +22 -18
  151. package/dist/vscode/vs/workbench/browser/actions/quickAccessActions.js +204 -0
  152. package/dist/vscode/vs/workbench/browser/actions/windowActions.js +2 -2
  153. package/dist/vscode/vs/workbench/browser/dnd.js +82 -3
  154. package/dist/vscode/vs/workbench/browser/editor.js +94 -0
  155. package/dist/vscode/vs/workbench/browser/labels.js +23 -2
  156. package/dist/vscode/vs/workbench/browser/media/part.css.js +4 -0
  157. package/dist/vscode/vs/workbench/browser/part.js +1 -1
  158. package/dist/vscode/vs/workbench/browser/parts/activitybar/activitybarActions.js +1 -1
  159. package/dist/vscode/vs/workbench/browser/parts/activitybar/activitybarPart.js +3 -3
  160. package/dist/vscode/vs/workbench/browser/parts/activitybar/media/activityaction.css.js +4 -0
  161. package/dist/vscode/vs/workbench/browser/parts/activitybar/media/activitybarpart.css.js +4 -0
  162. package/dist/vscode/vs/workbench/browser/parts/auxiliarybar/auxiliaryBarActions.js +14 -26
  163. package/dist/vscode/vs/workbench/browser/parts/compositePart.js +2 -2
  164. package/dist/vscode/vs/workbench/browser/parts/dialogs/dialogHandler.js +2 -2
  165. package/dist/vscode/vs/workbench/browser/parts/editor/binaryDiffEditor.js +43 -0
  166. package/dist/vscode/vs/workbench/browser/parts/editor/binaryEditor.js +55 -0
  167. package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbs.js +330 -0
  168. package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbsControl.js +690 -0
  169. package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbsModel.js +142 -0
  170. package/dist/vscode/vs/workbench/browser/parts/editor/breadcrumbsPicker.js +414 -0
  171. package/dist/vscode/vs/workbench/browser/parts/editor/editor.contribution.js +801 -6
  172. package/dist/vscode/vs/workbench/browser/parts/editor/editor.js +57 -1
  173. package/dist/vscode/vs/workbench/browser/parts/editor/editorActions.js +1484 -107
  174. package/dist/vscode/vs/workbench/browser/parts/editor/editorCommands.js +1125 -9
  175. package/dist/vscode/vs/workbench/browser/parts/editor/editorDropTarget.js +499 -0
  176. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupView.js +1225 -0
  177. package/dist/vscode/vs/workbench/browser/parts/editor/editorGroupWatermark.js +133 -0
  178. package/dist/vscode/vs/workbench/browser/parts/editor/editorPane.js +242 -0
  179. package/dist/vscode/vs/workbench/browser/parts/editor/editorPanes.js +297 -0
  180. package/dist/vscode/vs/workbench/browser/parts/editor/editorPart.js +841 -0
  181. package/dist/vscode/vs/workbench/browser/parts/editor/editorPlaceholder.js +235 -0
  182. package/dist/vscode/vs/workbench/browser/parts/editor/editorQuickAccess.js +1 -1
  183. package/dist/vscode/vs/workbench/browser/parts/editor/editorStatus.js +1152 -0
  184. package/dist/vscode/vs/workbench/browser/parts/editor/editorWithViewState.js +139 -0
  185. package/dist/vscode/vs/workbench/browser/parts/editor/editorsObserver.js +339 -0
  186. package/dist/vscode/vs/workbench/browser/parts/editor/media/breadcrumbscontrol.css.js +4 -0
  187. package/dist/vscode/vs/workbench/browser/parts/editor/media/editordroptarget.css.js +4 -0
  188. package/dist/vscode/vs/workbench/browser/parts/editor/media/editorgroupview.css.js +4 -0
  189. package/dist/vscode/vs/workbench/browser/parts/editor/media/editorplaceholder.css.js +4 -0
  190. package/dist/vscode/vs/workbench/browser/parts/editor/media/editorquickaccess.css.js +4 -0
  191. package/dist/vscode/vs/workbench/browser/parts/editor/media/editorstatus.css.js +4 -0
  192. package/dist/vscode/vs/workbench/browser/parts/editor/media/notabstitlecontrol.css.js +4 -0
  193. package/dist/vscode/vs/workbench/browser/parts/editor/media/sidebysideeditor.css.js +4 -0
  194. package/dist/vscode/vs/workbench/browser/parts/editor/media/tabstitlecontrol.css.js +4 -0
  195. package/dist/vscode/vs/workbench/browser/parts/editor/media/titlecontrol.css.js +4 -0
  196. package/dist/vscode/vs/workbench/browser/parts/editor/noTabsTitleControl.js +245 -0
  197. package/dist/vscode/vs/workbench/browser/parts/editor/sideBySideEditor.js +387 -0
  198. package/dist/vscode/vs/workbench/browser/parts/editor/tabFocus.js +77 -0
  199. package/dist/vscode/vs/workbench/browser/parts/editor/tabsTitleControl.js +1553 -0
  200. package/dist/vscode/vs/workbench/browser/parts/editor/textCodeEditor.js +79 -0
  201. package/dist/vscode/vs/workbench/browser/parts/editor/textDiffEditor.js +310 -0
  202. package/dist/vscode/vs/workbench/browser/parts/editor/textEditor.js +220 -0
  203. package/dist/vscode/vs/workbench/browser/parts/editor/textResourceEditor.js +149 -0
  204. package/dist/vscode/vs/workbench/browser/parts/editor/titleControl.js +284 -0
  205. package/dist/vscode/vs/workbench/browser/parts/media/compositepart.css.js +4 -0
  206. package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsActions.css.js +4 -0
  207. package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsCenter.css.js +4 -0
  208. package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsList.css.js +4 -0
  209. package/dist/vscode/vs/workbench/browser/parts/notifications/media/notificationsToasts.css.js +4 -0
  210. package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsActions.js +8 -8
  211. package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsCenter.js +2 -2
  212. package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsList.js +1 -1
  213. package/dist/vscode/vs/workbench/browser/parts/notifications/notificationsToasts.js +1 -1
  214. package/dist/vscode/vs/workbench/browser/parts/panel/media/basepanelpart.css.js +4 -0
  215. package/dist/vscode/vs/workbench/browser/parts/panel/media/panelpart.css.js +4 -0
  216. package/dist/vscode/vs/workbench/browser/parts/panel/panelActions.js +19 -5
  217. package/dist/vscode/vs/workbench/browser/parts/panel/panelPart.js +2 -2
  218. package/dist/vscode/vs/workbench/browser/parts/sidebar/media/sidebarpart.css.js +4 -0
  219. package/dist/vscode/vs/workbench/browser/parts/sidebar/sidebarPart.js +1 -1
  220. package/dist/vscode/vs/workbench/browser/parts/statusbar/media/statusbarpart.css.js +4 -0
  221. package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarActions.js +109 -0
  222. package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarItem.js +224 -0
  223. package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarModel.js +251 -0
  224. package/dist/vscode/vs/workbench/browser/parts/statusbar/statusbarPart.js +439 -0
  225. package/dist/vscode/vs/workbench/browser/parts/titlebar/media/menubarControl.css.js +4 -0
  226. package/dist/vscode/vs/workbench/browser/parts/titlebar/menubarControl.js +76 -3
  227. package/dist/vscode/vs/workbench/browser/parts/views/checkbox.js +10 -0
  228. package/dist/vscode/vs/workbench/browser/parts/views/media/paneviewlet.css.js +4 -0
  229. package/dist/vscode/vs/workbench/browser/parts/views/media/views.css.js +4 -0
  230. package/dist/vscode/vs/workbench/browser/parts/views/treeView.js +79 -15
  231. package/dist/vscode/vs/workbench/browser/parts/views/viewPane.js +5 -5
  232. package/dist/vscode/vs/workbench/browser/parts/views/viewPaneContainer.js +2 -2
  233. package/dist/vscode/vs/workbench/browser/parts/views/viewsService.js +4 -4
  234. package/dist/vscode/vs/workbench/browser/quickaccess.js +6 -2
  235. package/dist/vscode/vs/workbench/browser/workbench.contribution.js +1167 -0
  236. package/dist/vscode/vs/workbench/common/configuration.js +8 -1
  237. package/dist/vscode/vs/workbench/common/contextkeys.js +42 -1
  238. package/dist/vscode/vs/workbench/common/editor/editorGroupModel.js +678 -0
  239. package/dist/vscode/vs/workbench/common/editor/resourceEditorInput.js +6 -3
  240. package/dist/vscode/vs/workbench/common/editor/textResourceEditorInput.js +9 -6
  241. package/dist/vscode/vs/workbench/common/editor.js +57 -5
  242. package/dist/vscode/vs/workbench/common/resources.js +111 -34
  243. package/dist/vscode/vs/workbench/common/theme.js +35 -35
  244. package/dist/vscode/vs/workbench/common/views.js +1 -1
  245. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkEditService.js +1 -1
  246. package/dist/vscode/vs/workbench/contrib/bulkEdit/browser/bulkTextEdits.js +1 -1
  247. package/dist/vscode/vs/workbench/contrib/callHierarchy/browser/callHierarchy.contribution.js +4 -4
  248. package/dist/vscode/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek.js +1 -1
  249. package/dist/vscode/vs/workbench/contrib/callHierarchy/browser/media/callHierarchy.css.js +4 -0
  250. package/dist/vscode/vs/workbench/contrib/chat/browser/chat.js +3 -0
  251. package/dist/vscode/vs/workbench/contrib/chat/common/chatService.js +3 -0
  252. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint.js +6 -4
  253. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess.js +77 -0
  254. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.js +217 -0
  255. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.css.js +4 -0
  256. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.js +250 -0
  257. package/dist/vscode/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch.js +24 -0
  258. package/dist/vscode/vs/workbench/contrib/customEditor/browser/customEditorInput.js +290 -0
  259. package/dist/vscode/vs/workbench/contrib/customEditor/common/customEditor.js +3 -0
  260. package/dist/vscode/vs/workbench/contrib/debug/browser/breakpointWidget.js +1 -1
  261. package/dist/vscode/vs/workbench/contrib/debug/browser/callStackEditorContribution.js +1 -1
  262. package/dist/vscode/vs/workbench/contrib/debug/browser/debug.contribution.js +30 -4
  263. package/dist/vscode/vs/workbench/contrib/debug/browser/debugActionViewItems.js +1 -0
  264. package/dist/vscode/vs/workbench/contrib/debug/browser/debugCommands.js +15 -2
  265. package/dist/vscode/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +20 -20
  266. package/dist/vscode/vs/workbench/contrib/debug/browser/debugEditorActions.js +5 -3
  267. package/dist/vscode/vs/workbench/contrib/debug/browser/debugEditorContribution.js +5 -2
  268. package/dist/vscode/vs/workbench/contrib/debug/browser/debugHover.js +33 -6
  269. package/dist/vscode/vs/workbench/contrib/debug/browser/debugIcons.js +77 -127
  270. package/dist/vscode/vs/workbench/contrib/debug/browser/debugSession.js +1 -1
  271. package/dist/vscode/vs/workbench/contrib/debug/browser/debugTaskRunner.js +1 -1
  272. package/dist/vscode/vs/workbench/contrib/debug/browser/debugToolBar.js +1 -1
  273. package/dist/vscode/vs/workbench/contrib/debug/browser/debugViewlet.js +1 -1
  274. package/dist/vscode/vs/workbench/contrib/debug/browser/disassemblyView.js +620 -0
  275. package/dist/vscode/vs/workbench/contrib/debug/browser/exceptionWidget.js +1 -1
  276. package/dist/vscode/vs/workbench/contrib/debug/browser/media/breakpointWidget.css.js +4 -0
  277. package/dist/vscode/vs/workbench/contrib/debug/browser/media/callStackEditorContribution.css.js +4 -0
  278. package/dist/vscode/vs/workbench/contrib/debug/browser/media/debug.contribution.css.js +4 -0
  279. package/dist/vscode/vs/workbench/contrib/debug/browser/media/debugHover.css.js +4 -0
  280. package/dist/vscode/vs/workbench/contrib/debug/browser/media/debugToolBar.css.js +4 -0
  281. package/dist/vscode/vs/workbench/contrib/debug/browser/media/debugViewlet.css.js +4 -0
  282. package/dist/vscode/vs/workbench/contrib/debug/browser/media/exceptionWidget.css.js +4 -0
  283. package/dist/vscode/vs/workbench/contrib/debug/browser/media/repl.css.js +4 -0
  284. package/dist/vscode/vs/workbench/contrib/debug/browser/repl.js +4 -4
  285. package/dist/vscode/vs/workbench/contrib/debug/common/debug.js +2 -1
  286. package/dist/vscode/vs/workbench/contrib/debug/common/debugModel.js +29 -17
  287. package/dist/vscode/vs/workbench/contrib/debug/common/debugStorage.js +11 -10
  288. package/dist/vscode/vs/workbench/contrib/debug/common/debugger.js +10 -6
  289. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsActions.js +2514 -0
  290. package/dist/vscode/vs/workbench/contrib/extensions/browser/extensionsIcons.js +82 -0
  291. package/dist/vscode/vs/workbench/contrib/extensions/browser/media/extensionActions.css.js +4 -0
  292. package/dist/vscode/vs/workbench/contrib/extensions/common/extensions.js +6 -1
  293. package/dist/vscode/vs/workbench/contrib/extensions/common/extensionsFileTemplate.js +16 -0
  294. package/dist/vscode/vs/workbench/contrib/files/browser/editors/binaryFileEditor.js +71 -0
  295. package/dist/vscode/vs/workbench/contrib/files/browser/editors/fileEditorInput.js +2 -3
  296. package/dist/vscode/vs/workbench/contrib/files/browser/editors/textFileEditor.js +225 -0
  297. package/dist/vscode/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.js +2 -0
  298. package/dist/vscode/vs/workbench/contrib/files/browser/explorerService.js +10 -6
  299. package/dist/vscode/vs/workbench/contrib/files/browser/explorerViewlet.js +8 -22
  300. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.contribution.js +306 -5
  301. package/dist/vscode/vs/workbench/contrib/files/browser/fileActions.js +68 -3
  302. package/dist/vscode/vs/workbench/contrib/files/browser/fileCommands.js +27 -9
  303. package/dist/vscode/vs/workbench/contrib/files/browser/fileConstants.js +10 -1
  304. package/dist/vscode/vs/workbench/contrib/files/browser/files.contribution.js +51 -6
  305. package/dist/vscode/vs/workbench/contrib/files/browser/files.js +1 -0
  306. package/dist/vscode/vs/workbench/contrib/files/browser/media/explorerviewlet.css.js +4 -0
  307. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerView.js +3 -3
  308. package/dist/vscode/vs/workbench/contrib/files/browser/views/explorerViewer.js +6 -2
  309. package/dist/vscode/vs/workbench/contrib/files/browser/views/media/openeditors.css.js +4 -0
  310. package/dist/vscode/vs/workbench/contrib/files/browser/views/openEditorsView.js +608 -0
  311. package/dist/vscode/vs/workbench/contrib/files/common/explorerModel.js +16 -9
  312. package/dist/vscode/vs/workbench/contrib/files/common/files.js +2 -6
  313. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveDocumentService.js +3 -0
  314. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +200 -0
  315. package/dist/vscode/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +3 -0
  316. package/dist/vscode/vs/workbench/contrib/markers/browser/markers.contribution.js +586 -0
  317. package/dist/vscode/vs/workbench/contrib/markers/browser/markersFilterOptions.js +75 -0
  318. package/dist/vscode/vs/workbench/contrib/markers/browser/markersModel.js +201 -0
  319. package/dist/vscode/vs/workbench/contrib/markers/browser/markersTable.js +451 -0
  320. package/dist/vscode/vs/workbench/contrib/markers/browser/markersTreeViewer.js +670 -0
  321. package/dist/vscode/vs/workbench/contrib/markers/browser/markersView.js +857 -0
  322. package/dist/vscode/vs/workbench/contrib/markers/browser/markersViewActions.css.js +4 -0
  323. package/dist/vscode/vs/workbench/contrib/markers/browser/markersViewActions.js +132 -0
  324. package/dist/vscode/vs/workbench/contrib/markers/browser/media/markers.css.js +4 -0
  325. package/dist/vscode/vs/workbench/contrib/markers/browser/messages.js +171 -0
  326. package/dist/vscode/vs/workbench/contrib/markers/common/markers.js +15 -1
  327. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +135 -0
  328. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +421 -0
  329. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.js +5 -0
  330. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +55 -0
  331. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/editing.js +54 -0
  332. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/lineRange.js +108 -0
  333. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +334 -0
  334. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +606 -0
  335. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.js +307 -0
  336. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/rangeUtils.js +36 -0
  337. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +165 -0
  338. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/telemetry.js +78 -0
  339. package/dist/vscode/vs/workbench/contrib/mergeEditor/browser/utils.js +68 -0
  340. package/dist/vscode/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +2 -0
  341. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/findFilters.js +70 -0
  342. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.css.js +4 -0
  343. package/dist/vscode/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.js +158 -0
  344. package/dist/vscode/vs/workbench/contrib/notebook/browser/notebookBrowser.js +8 -3
  345. package/dist/vscode/vs/workbench/contrib/notebook/browser/services/notebookEditorService.js +3 -0
  346. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookCommon.js +16 -1
  347. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookService.js +1 -8
  348. package/dist/vscode/vs/workbench/contrib/output/browser/logViewer.js +64 -0
  349. package/dist/vscode/vs/workbench/contrib/output/browser/output.contribution.js +378 -0
  350. package/dist/vscode/vs/workbench/contrib/output/browser/outputServices.js +39 -3
  351. package/dist/vscode/vs/workbench/contrib/output/browser/outputView.js +220 -0
  352. package/dist/vscode/vs/workbench/contrib/output/common/outputChannelModel.js +12 -3
  353. package/dist/vscode/vs/workbench/contrib/output/common/outputLinkComputer.js +129 -0
  354. package/dist/vscode/vs/workbench/contrib/preferences/browser/keybindingWidgets.js +270 -0
  355. package/dist/vscode/vs/workbench/contrib/preferences/browser/keybindingsEditor.js +1080 -0
  356. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/keybindings.css.js +4 -0
  357. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/keybindingsEditor.css.js +4 -0
  358. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/preferences.css.js +4 -0
  359. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css.js +4 -0
  360. package/dist/vscode/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css.js +4 -0
  361. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferences.contribution.js +1154 -0
  362. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesActions.js +94 -0
  363. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesEditor.js +47 -0
  364. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesIcons.js +37 -0
  365. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesRenderers.js +731 -0
  366. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesSearch.js +271 -0
  367. package/dist/vscode/vs/workbench/contrib/preferences/browser/preferencesWidgets.js +479 -0
  368. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsEditor2.js +1465 -0
  369. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsEditorSettingIndicators.js +506 -0
  370. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsLayout.js +296 -0
  371. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsSearchMenu.js +79 -0
  372. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsTree.js +1984 -0
  373. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsTreeModels.js +759 -0
  374. package/dist/vscode/vs/workbench/contrib/preferences/browser/settingsWidgets.js +1008 -0
  375. package/dist/vscode/vs/workbench/contrib/preferences/browser/tocTree.js +196 -0
  376. package/dist/vscode/vs/workbench/contrib/preferences/common/preferences.js +68 -0
  377. package/dist/vscode/vs/workbench/contrib/preferences/common/preferencesContribution.js +157 -0
  378. package/dist/vscode/vs/workbench/contrib/preferences/common/settingsEditorColorRegistry.js +67 -0
  379. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.js +49 -17
  380. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/quickAccess.contribution.js +129 -0
  381. package/dist/vscode/vs/workbench/contrib/quickaccess/browser/viewQuickAccess.js +225 -0
  382. package/dist/vscode/vs/workbench/contrib/remote/browser/media/tunnelView.css.js +4 -0
  383. package/dist/vscode/vs/workbench/contrib/remote/browser/remoteExplorer.js +23 -2
  384. package/dist/vscode/vs/workbench/contrib/remote/browser/remoteIcons.js +21 -17
  385. package/dist/vscode/vs/workbench/contrib/remote/browser/tunnelView.js +6 -6
  386. package/dist/vscode/vs/workbench/contrib/search/browser/anythingQuickAccess.js +757 -0
  387. package/dist/vscode/vs/workbench/contrib/search/browser/media/anythingQuickAccess.css.js +4 -0
  388. package/dist/vscode/vs/workbench/contrib/search/browser/media/searchview.css.js +4 -0
  389. package/dist/vscode/vs/workbench/contrib/search/browser/patternInputWidget.js +217 -0
  390. package/dist/vscode/vs/workbench/contrib/search/browser/replace.js +3 -0
  391. package/dist/vscode/vs/workbench/contrib/search/browser/replaceContributions.js +7 -0
  392. package/dist/vscode/vs/workbench/contrib/search/browser/replaceService.js +222 -0
  393. package/dist/vscode/vs/workbench/contrib/search/browser/search.contribution.js +467 -0
  394. package/dist/vscode/vs/workbench/contrib/search/browser/searchActionsBase.js +17 -0
  395. package/dist/vscode/vs/workbench/contrib/search/browser/searchFindInput.js +41 -0
  396. package/dist/vscode/vs/workbench/contrib/search/browser/searchIcons.js +35 -0
  397. package/dist/vscode/vs/workbench/contrib/search/browser/searchMessage.js +58 -0
  398. package/dist/vscode/vs/workbench/contrib/search/browser/searchModel.js +1842 -0
  399. package/dist/vscode/vs/workbench/contrib/search/browser/searchNotebookHelpers.js +49 -0
  400. package/dist/vscode/vs/workbench/contrib/search/browser/searchResultsView.js +379 -0
  401. package/dist/vscode/vs/workbench/contrib/search/browser/searchView.js +1867 -0
  402. package/dist/vscode/vs/workbench/contrib/search/browser/searchWidget.js +628 -0
  403. package/dist/vscode/vs/workbench/contrib/search/browser/symbolsQuickAccess.js +219 -0
  404. package/dist/vscode/vs/workbench/contrib/search/common/cacheState.js +85 -0
  405. package/dist/vscode/vs/workbench/contrib/search/common/constants.js +31 -0
  406. package/dist/vscode/vs/workbench/contrib/search/common/search.js +127 -1
  407. package/dist/vscode/vs/workbench/contrib/search/common/searchHistoryService.js +42 -0
  408. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/constants.js +11 -0
  409. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/media/searchEditor.css.js +4 -0
  410. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditor.contribution.js +477 -0
  411. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditor.js +697 -0
  412. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorActions.js +188 -0
  413. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorInput.js +295 -0
  414. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorModel.js +135 -0
  415. package/dist/vscode/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization.js +268 -0
  416. package/dist/vscode/vs/workbench/contrib/snippets/browser/tabCompletion.js +2 -2
  417. package/dist/vscode/vs/workbench/contrib/tasks/browser/taskQuickPick.js +385 -0
  418. package/dist/vscode/vs/workbench/contrib/tasks/browser/tasksQuickAccess.js +108 -0
  419. package/dist/vscode/vs/workbench/contrib/tasks/common/taskService.js +16 -1
  420. package/dist/vscode/vs/workbench/contrib/tasks/common/tasks.js +351 -0
  421. package/dist/vscode/vs/workbench/contrib/terminal/browser/environmentVariableInfo.js +119 -0
  422. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/scrollbar.css.js +4 -0
  423. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/terminal.css.js +4 -0
  424. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/widgets.css.js +4 -0
  425. package/dist/vscode/vs/workbench/contrib/terminal/browser/media/xterm.css.js +4 -0
  426. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.contribution.js +238 -0
  427. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminal.js +7 -0
  428. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalActions.js +1930 -0
  429. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalCommands.js +22 -0
  430. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalConfigHelper.js +213 -0
  431. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalContextMenu.js +17 -0
  432. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditor.js +186 -0
  433. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorInput.js +199 -0
  434. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalEditorService.js +239 -0
  435. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalExtensions.js +22 -0
  436. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalGroup.js +482 -0
  437. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalGroupService.js +372 -0
  438. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcon.js +103 -0
  439. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalIcons.js +37 -0
  440. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstance.js +2123 -0
  441. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalInstanceService.js +79 -0
  442. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalMainContribution.js +82 -0
  443. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalMenus.js +850 -0
  444. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js +142 -0
  445. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProcessManager.js +618 -0
  446. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileQuickpick.js +278 -0
  447. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileResolverService.js +417 -0
  448. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalProfileService.js +213 -0
  449. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalQuickAccess.js +144 -0
  450. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalRunRecentQuickPick.js +267 -0
  451. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalService.js +1063 -0
  452. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalStatusList.js +108 -0
  453. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTabbedView.js +417 -0
  454. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTabsList.js +680 -0
  455. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalTooltip.js +72 -0
  456. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalUri.js +39 -0
  457. package/dist/vscode/vs/workbench/contrib/terminal/browser/terminalView.js +535 -0
  458. package/dist/vscode/vs/workbench/contrib/terminal/browser/widgets/widgetManager.js +36 -0
  459. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/decorationAddon.js +469 -0
  460. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/decorationStyles.js +97 -0
  461. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/lineDataEventAddon.js +56 -0
  462. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/markNavigationAddon.js +416 -0
  463. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/suggestAddon.js +390 -0
  464. package/dist/vscode/vs/workbench/contrib/terminal/browser/xterm/xtermTerminal.js +587 -0
  465. package/dist/vscode/vs/workbench/contrib/terminal/common/environmentVariable.js +3 -0
  466. package/dist/vscode/vs/workbench/contrib/terminal/common/environmentVariableService.js +94 -0
  467. package/dist/vscode/vs/workbench/contrib/terminal/common/history.js +356 -0
  468. package/dist/vscode/vs/workbench/contrib/terminal/common/terminal.js +266 -0
  469. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalColorRegistry.js +169 -16
  470. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalConfiguration.js +965 -0
  471. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalContextKey.js +157 -0
  472. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalEnvironment.js +272 -0
  473. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalExtensionPoints.js +27 -0
  474. package/dist/vscode/vs/workbench/contrib/terminal/common/terminalStrings.js +86 -0
  475. package/dist/vscode/vs/workbench/contrib/terminal/electron-sandbox/terminalProfileResolverService.js +46 -0
  476. package/dist/vscode/vs/workbench/contrib/terminalContrib/links/browser/links.js +3 -0
  477. package/dist/vscode/vs/workbench/contrib/terminalContrib/links/browser/terminalLinkProviderService.js +26 -0
  478. package/dist/vscode/vs/workbench/contrib/terminalContrib/quickFix/browser/quickFix.js +3 -0
  479. package/dist/vscode/vs/workbench/contrib/terminalContrib/quickFix/browser/terminalQuickFixService.js +143 -0
  480. package/dist/vscode/vs/workbench/contrib/typeHierarchy/browser/media/typeHierarchy.css.js +4 -0
  481. package/dist/vscode/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyPeek.js +1 -1
  482. package/dist/vscode/vs/workbench/contrib/webviewPanel/browser/webviewEditorInput.js +85 -0
  483. package/dist/vscode/vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService.js +52 -0
  484. package/dist/vscode/vs/workbench/services/actions/common/menusExtensionPoint.js +14 -6
  485. package/dist/vscode/vs/workbench/services/assignment/common/assignmentService.js +3 -0
  486. package/dist/vscode/vs/workbench/services/configuration/browser/configurationService.js +13 -13
  487. package/dist/vscode/vs/workbench/services/configuration/common/configuration.js +2 -1
  488. package/dist/vscode/vs/workbench/services/configuration/common/configurationEditing.js +2 -2
  489. package/dist/vscode/vs/workbench/services/configuration/common/jsonEditingService.js +2 -2
  490. package/dist/vscode/vs/workbench/services/editor/browser/editorDropService.js +3 -0
  491. package/dist/vscode/vs/workbench/services/editor/browser/editorResolverService.js +619 -0
  492. package/dist/vscode/vs/workbench/services/editor/browser/editorService.js +720 -0
  493. package/dist/vscode/vs/workbench/services/editor/common/editorGroupFinder.js +116 -0
  494. package/dist/vscode/vs/workbench/services/editor/common/editorGroupsService.js +6 -1
  495. package/dist/vscode/vs/workbench/services/editor/common/editorResolverService.js +34 -1
  496. package/dist/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.js +3 -2
  497. package/dist/vscode/vs/workbench/services/extensionRecommendations/common/extensionRecommendations.js +4 -0
  498. package/dist/vscode/vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig.js +2 -0
  499. package/dist/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.js +3 -0
  500. package/dist/vscode/vs/workbench/services/extensions/common/extensions.js +14 -2
  501. package/dist/vscode/vs/workbench/services/extensions/common/extensionsApiProposals.js +10 -1
  502. package/dist/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.js +70 -3
  503. package/dist/vscode/vs/workbench/services/history/browser/historyService.js +1451 -0
  504. package/dist/vscode/vs/workbench/services/hover/browser/hoverService.js +2 -2
  505. package/dist/vscode/vs/workbench/services/hover/browser/hoverWidget.js +2 -1
  506. package/dist/vscode/vs/workbench/services/hover/browser/media/hover.css.js +4 -0
  507. package/dist/vscode/vs/workbench/services/keybinding/common/keybindingEditing.js +275 -0
  508. package/dist/vscode/vs/workbench/services/languageDetection/common/languageDetectionWorkerService.js +2 -1
  509. package/dist/vscode/vs/workbench/services/localization/common/locale.js +3 -0
  510. package/dist/vscode/vs/workbench/services/log/common/logConstants.js +2 -0
  511. package/dist/vscode/vs/workbench/services/outline/browser/outline.js +3 -0
  512. package/dist/vscode/vs/workbench/services/output/common/output.js +4 -1
  513. package/dist/vscode/vs/workbench/services/preferences/common/preferences.js +22 -1
  514. package/dist/vscode/vs/workbench/services/preferences/common/preferencesModels.js +6 -0
  515. package/dist/vscode/vs/workbench/services/preferences/common/preferencesValidation.js +37 -1
  516. package/dist/vscode/vs/workbench/services/progress/browser/progressIndicator.js +72 -1
  517. package/dist/vscode/vs/workbench/services/quickinput/browser/quickInputService.js +67 -0
  518. package/dist/vscode/vs/workbench/services/remote/common/remoteAgentService.js +69 -0
  519. package/dist/vscode/vs/workbench/services/remote/common/remoteExplorerService.js +66 -27
  520. package/dist/vscode/vs/workbench/services/search/common/fileSearchManager.js +265 -0
  521. package/dist/vscode/vs/workbench/services/search/common/queryBuilder.js +6 -0
  522. package/dist/vscode/vs/workbench/services/search/common/replace.js +203 -0
  523. package/dist/vscode/vs/workbench/services/search/common/search.js +117 -1
  524. package/dist/vscode/vs/workbench/services/search/common/searchExtTypes.js +6 -0
  525. package/dist/vscode/vs/workbench/services/search/common/textSearchManager.js +309 -0
  526. package/dist/vscode/vs/workbench/services/semanticSimilarity/common/semanticSimilarityService.js +54 -1
  527. package/dist/vscode/vs/workbench/services/statusbar/browser/statusbar.js +15 -0
  528. package/dist/vscode/vs/workbench/services/suggest/browser/media/suggest.css.js +4 -0
  529. package/dist/vscode/vs/workbench/services/suggest/browser/simpleCompletionItem.js +10 -0
  530. package/dist/vscode/vs/workbench/services/suggest/browser/simpleCompletionModel.js +98 -0
  531. package/dist/vscode/vs/workbench/services/suggest/browser/simpleSuggestWidget.js +399 -0
  532. package/dist/vscode/vs/workbench/services/suggest/browser/simpleSuggestWidgetRenderer.js +83 -0
  533. package/dist/vscode/vs/workbench/services/terminal/common/embedderTerminalService.js +3 -0
  534. package/dist/vscode/vs/workbench/services/textMate/browser/worker/textMate.worker.js +90 -0
  535. package/dist/vscode/vs/workbench/services/textMate/browser/worker/textMateWorkerModel.js +133 -0
  536. package/dist/vscode/vs/workbench/services/textfile/browser/textFileService.js +1 -1
  537. package/dist/vscode/vs/workbench/services/textfile/common/textFileEditorModel.js +10 -3
  538. package/dist/vscode/vs/workbench/services/themes/browser/fileIconThemeData.js +3 -3
  539. package/dist/vscode/vs/workbench/services/themes/browser/productIconThemeData.js +3 -3
  540. package/dist/vscode/vs/workbench/services/themes/common/colorThemeData.js +3 -3
  541. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorInput.js +6 -4
  542. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorModel.js +3 -0
  543. package/dist/vscode/vs/workbench/services/untitled/common/untitledTextEditorService.js +114 -3
  544. package/dist/vscode/vs/workbench/services/userActivity/common/userActivityRegistry.js +15 -0
  545. package/dist/vscode/vs/workbench/services/userActivity/common/userActivityService.js +37 -0
  546. package/dist/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.js +1 -1
  547. package/dist/vscode/vs/workbench/services/userDataSync/common/userDataSync.js +7 -0
  548. package/dist/vscode/vs/workbench/services/workingCopy/common/workingCopyEditorService.js +40 -0
  549. package/dist/vscode/vs/workbench/services/workingCopy/common/workingCopyService.js +12 -0
  550. package/dist/vscode/vs/workbench/services/workspaces/common/canonicalUriService.js +19 -0
  551. package/dist/vscode-default-extensions/css/syntaxes/css.tmLanguage.json.extensionResource.js +1 -1
  552. package/dist/vscode-default-extensions/json/package.json.js +1 -1
  553. package/dist/vscode-default-extensions/json/syntaxes/JSONC.tmLanguage.json.extensionResource.js +1 -1
  554. package/dist/vscode-default-extensions/json/syntaxes/JSONL.tmLanguage.json.extensionResource.js +2 -0
  555. package/dist/vscode-default-extensions/latex/syntaxes/Bibtex.tmLanguage.json.extensionResource.js +1 -1
  556. package/dist/vscode-default-extensions/latex/syntaxes/LaTeX.tmLanguage.json.extensionResource.js +1 -1
  557. package/dist/vscode-default-extensions/latex/syntaxes/TeX.tmLanguage.json.extensionResource.js +1 -1
  558. package/dist/vscode-default-extensions/latex/syntaxes/cpp-grammar-bailout.tmLanguage.json.extensionResource.js +1 -1
  559. package/dist/vscode-default-extensions/latex/syntaxes/markdown-latex-combined.tmLanguage.json.extensionResource.js +1 -1
  560. package/dist/vscode-default-extensions/lua/syntaxes/lua.tmLanguage.json.extensionResource.js +1 -1
  561. package/dist/vscode-default-extensions/perl/package.json.js +1 -1
  562. package/dist/vscode-default-extensions/php/snippets/php.code-snippets.extensionResource.js +1 -1
  563. package/dist/vscode-default-extensions/sql/language-configuration.json.extensionResource.js +1 -1
  564. package/dist/vscode-default-extensions/theme-abyss/themes/abyss-color-theme.json.extensionResource.js +1 -1
  565. package/dist/vscode-default-extensions/theme-defaults/package.json.js +1 -1
  566. package/dist/vscode-default-extensions/theme-defaults/themes/dark_modern.json.extensionResource.js +2 -0
  567. package/dist/vscode-default-extensions/theme-defaults/themes/dark_vs.json.extensionResource.js +1 -1
  568. package/dist/vscode-default-extensions/theme-defaults/themes/hc_black.json.extensionResource.js +1 -1
  569. package/dist/vscode-default-extensions/theme-defaults/themes/hc_light.json.extensionResource.js +1 -1
  570. package/dist/vscode-default-extensions/theme-defaults/themes/light_modern.json.extensionResource.js +2 -0
  571. package/dist/vscode-default-extensions/theme-defaults/themes/light_vs.json.extensionResource.js +1 -1
  572. package/dist/vscode-default-extensions/theme-kimbie-dark/themes/kimbie-dark-color-theme.json.extensionResource.js +1 -1
  573. package/dist/vscode-default-extensions/theme-monokai/themes/monokai-color-theme.json.extensionResource.js +1 -1
  574. package/dist/vscode-default-extensions/theme-monokai-dimmed/themes/dimmed-monokai-color-theme.json.extensionResource.js +1 -1
  575. package/dist/vscode-default-extensions/theme-quietlight/themes/quietlight-color-theme.json.extensionResource.js +1 -1
  576. package/dist/vscode-default-extensions/theme-red/themes/Red-color-theme.json.extensionResource.js +1 -1
  577. package/dist/vscode-default-extensions/theme-seti/icons/vs-seti-icon-theme.json.extensionResource.js +1 -1
  578. package/dist/vscode-default-extensions/theme-solarized-dark/themes/solarized-dark-color-theme.json.extensionResource.js +1 -1
  579. package/dist/vscode-default-extensions/theme-solarized-light/themes/solarized-light-color-theme.json.extensionResource.js +1 -1
  580. package/dist/vscode-default-extensions/theme-tomorrow-night-blue/themes/tomorrow-night-blue-color-theme.json.extensionResource.js +1 -1
  581. package/dist/vscode-default-extensions/vb/language-configuration.json.extensionResource.js +1 -1
  582. package/dist/vscode-services/env.js +4 -2
  583. package/dist/vscode-services/extHost.js +41 -50
  584. package/dist/vscode-services/missing-services.js +504 -12
  585. package/dist/vscode-services/window.js +80 -67
  586. package/dist/vscode-services/workspace.js +19 -4
  587. package/dist/workbenchThemeService.d.ts +1 -1
  588. package/dist/workers/outputLinkComputer.worker.d.ts +2 -0
  589. package/dist/workers/outputLinkComputer.worker.js +3 -0
  590. package/dist/workers/textMate.worker.d.ts +2 -0
  591. package/dist/workers/textMate.worker.js +3 -0
  592. package/dist/workspace.d.ts +1 -1
  593. package/monaco-editor-treemending.patch +1305 -1184
  594. package/package.json +98 -32
  595. package/dist/activity.d.ts +0 -2902
  596. package/dist/assets/activityaction.css +0 -224
  597. package/dist/assets/activitybarpart.css +0 -65
  598. package/dist/assets/basepanelpart.css +0 -221
  599. package/dist/assets/breakpointWidget.css +0 -31
  600. package/dist/assets/callHierarchy.css +0 -62
  601. package/dist/assets/callStackEditorContribution.css +0 -12
  602. package/dist/assets/compositepart.css +0 -17
  603. package/dist/assets/debug.contribution.css +0 -138
  604. package/dist/assets/debugHover.css +0 -80
  605. package/dist/assets/debugToolBar.css +0 -49
  606. package/dist/assets/debugViewlet.css +0 -337
  607. package/dist/assets/editorquickaccess.css +0 -8
  608. package/dist/assets/exceptionWidget.css +0 -52
  609. package/dist/assets/explorerviewlet.css +0 -129
  610. package/dist/assets/hover.css +0 -127
  611. package/dist/assets/interactiveSession.css +0 -340
  612. package/dist/assets/menubar.css +0 -111
  613. package/dist/assets/menubarControl.css +0 -61
  614. package/dist/assets/notificationsActions.css +0 -14
  615. package/dist/assets/notificationsCenter.css +0 -69
  616. package/dist/assets/notificationsList.css +0 -152
  617. package/dist/assets/notificationsToasts.css +0 -63
  618. package/dist/assets/panelpart.css +0 -75
  619. package/dist/assets/paneview.css +0 -148
  620. package/dist/assets/paneviewlet.css +0 -79
  621. package/dist/assets/part.css +0 -109
  622. package/dist/assets/repl.css +0 -145
  623. package/dist/assets/sidebarpart.css +0 -61
  624. package/dist/assets/tunnelView.css +0 -107
  625. package/dist/assets/typeHierarchy.css +0 -62
  626. package/dist/assets/views.css +0 -297
  627. package/dist/collections.d.ts +0 -7
  628. package/dist/colorRegistry.d.ts +0 -710
  629. package/dist/override/vs/workbench/browser/parts/editor/textEditor.js +0 -2
  630. package/dist/override/vs/workbench/contrib/files/browser/views/openEditorsView.js +0 -2
  631. package/dist/service-override/modelEditor.d.ts +0 -14
  632. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionFollowups.js +0 -30
  633. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionInputPart.js +0 -196
  634. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionListRenderer.js +0 -622
  635. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionOptions.js +0 -77
  636. package/dist/vscode/vs/workbench/contrib/interactiveSession/browser/interactiveSessionWidget.js +0 -311
  637. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionContextKeys.js +0 -48
  638. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionService.js +0 -8
  639. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionViewModel.js +0 -207
  640. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionWidgetHistoryService.js +0 -3
  641. package/dist/vscode/vs/workbench/contrib/interactiveSession/common/interactiveSessionWordCounter.js +0 -25
  642. package/dist/vscode/vs/workbench/contrib/notebook/common/notebookEditorInput.js +0 -249
  643. package/dist/vscode-default-extensions/theme-defaults/themes/dark_plus_experimental.json.extensionResource.js +0 -2
  644. package/dist/vscode-default-extensions/theme-defaults/themes/light_plus_experimental.json.extensionResource.js +0 -2
@@ -0,0 +1,1553 @@
1
+ import { __decorate, __param } from '../../../../../../node_modules/tslib/tslib.es6.js';
2
+ import './media/tabstitlecontrol.css.js';
3
+ import { isWindows, isMacintosh } from 'monaco-editor/esm/vs/base/common/platform.js';
4
+ import { shorten } from 'monaco-editor/esm/vs/base/common/labels.js';
5
+ import { DEFAULT_EDITOR_ASSOCIATION, EditorResourceAccessor, SideBySideEditor } from '../../../common/editor.js';
6
+ import { computeEditorAriaLabel } from '../../editor.js';
7
+ import { StandardKeyboardEvent } from 'monaco-editor/esm/vs/base/browser/keyboardEvent.js';
8
+ import { Gesture, EventType as EventType$1 } from 'monaco-editor/esm/vs/base/browser/touch.js';
9
+ import { ResourceLabels, DEFAULT_LABELS_CONTAINER } from '../../labels.js';
10
+ import { ActionBar } from 'monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js';
11
+ import { IContextMenuService } from 'monaco-editor/esm/vs/platform/contextview/browser/contextView.js';
12
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
13
+ import { IKeybindingService } from 'monaco-editor/esm/vs/platform/keybinding/common/keybinding.js';
14
+ import { IContextKeyService } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkey.js';
15
+ import { MenuId, IMenuService } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
16
+ import { TitleControl, EditorCommandsContextActionRunner } from './titleControl.js';
17
+ import { IQuickInputService } from 'monaco-editor/esm/vs/platform/quickinput/common/quickInput.js';
18
+ import { MutableDisposable, DisposableStore, dispose, combinedDisposable, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
19
+ import { ScrollableElement } from 'monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js';
20
+ import { getOrSet } from 'monaco-editor/esm/vs/base/common/map.js';
21
+ import { registerThemingParticipant, IThemeService } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
22
+ import { TAB_BORDER, TAB_HOVER_BACKGROUND, TAB_UNFOCUSED_HOVER_BACKGROUND, TAB_HOVER_FOREGROUND, TAB_UNFOCUSED_HOVER_FOREGROUND, TAB_HOVER_BORDER, TAB_UNFOCUSED_HOVER_BORDER, EDITOR_GROUP_HEADER_TABS_BACKGROUND, EDITOR_DRAG_AND_DROP_BACKGROUND, TAB_ACTIVE_BACKGROUND, TAB_UNFOCUSED_ACTIVE_BACKGROUND, TAB_INACTIVE_BACKGROUND, TAB_UNFOCUSED_INACTIVE_BACKGROUND, EDITOR_GROUP_HEADER_TABS_BORDER, TAB_ACTIVE_BORDER, TAB_UNFOCUSED_ACTIVE_BORDER, TAB_ACTIVE_BORDER_TOP, TAB_UNFOCUSED_ACTIVE_BORDER_TOP, TAB_ACTIVE_FOREGROUND, TAB_UNFOCUSED_ACTIVE_FOREGROUND, TAB_INACTIVE_FOREGROUND, TAB_UNFOCUSED_INACTIVE_FOREGROUND, TAB_ACTIVE_MODIFIED_BORDER, TAB_INACTIVE_MODIFIED_BORDER, TAB_UNFOCUSED_ACTIVE_MODIFIED_BORDER, TAB_UNFOCUSED_INACTIVE_MODIFIED_BORDER, TAB_LAST_PINNED_BORDER, WORKBENCH_BACKGROUND } from '../../../common/theme.js';
23
+ import { activeContrastBorder, contrastBorder, editorBackground } from 'monaco-editor/esm/vs/platform/theme/common/colorRegistry.js';
24
+ import { DraggedEditorIdentifier, DraggedEditorGroupIdentifier, extractTreeDropData, ResourcesDropHandler } from '../../dnd.js';
25
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
26
+ import { IEditorGroupsService } from '../../../services/editor/common/editorGroupsService.js';
27
+ import { Dimension, addDisposableListener, EventType, EventHelper, DragAndDropObserver, clearNode, scheduleAtNextAnimationFrame, findParentWithClass } from 'monaco-editor/esm/vs/base/browser/dom.js';
28
+ import { localize } from 'monaco-editor/esm/vs/nls.js';
29
+ import { CloseOneEditorAction, UnpinEditorAction } from './editorActions.js';
30
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
31
+ import { BreadcrumbsControl } from './breadcrumbsControl.js';
32
+ import { IFileService } from 'monaco-editor/esm/vs/platform/files/common/files.js';
33
+ import { assertAllDefined, assertIsDefined } from 'monaco-editor/esm/vs/base/common/types.js';
34
+ import { IEditorService } from '../../../services/editor/common/editorService.js';
35
+ import { basenameOrAuthority } from 'monaco-editor/esm/vs/base/common/resources.js';
36
+ import { RunOnceScheduler } from 'monaco-editor/esm/vs/base/common/async.js';
37
+ import { IPathService } from '../../../services/path/common/pathService.js';
38
+ import { win32, posix } from 'monaco-editor/esm/vs/base/common/path.js';
39
+ import { insert, coalesce } from 'monaco-editor/esm/vs/base/common/arrays.js';
40
+ import { isHighContrast } from 'monaco-editor/esm/vs/platform/theme/common/theme.js';
41
+ import { isSafari } from 'monaco-editor/esm/vs/base/browser/browser.js';
42
+ import { equals } from 'monaco-editor/esm/vs/base/common/objects.js';
43
+ import { EditorActivation } from 'monaco-editor/esm/vs/platform/editor/common/editor.js';
44
+ import { UNLOCK_GROUP_COMMAND_ID } from './editorCommands.js';
45
+ import { StandardMouseEvent } from 'monaco-editor/esm/vs/base/browser/mouseEvent.js';
46
+ import { ITreeViewsDnDService } from 'monaco-editor/esm/vs/editor/common/services/treeViewsDndService.js';
47
+ import { DraggedTreeItemsIdentifier } from 'monaco-editor/esm/vs/editor/common/services/treeViewsDnd.js';
48
+ let TabsTitleControl = class TabsTitleControl extends TitleControl {
49
+ constructor(parent, accessor, group, contextMenuService, instantiationService, contextKeyService, keybindingService, notificationService, menuService, quickInputService, themeService, configurationService, fileService, editorService, pathService, editorGroupService, treeViewsDragAndDropService) {
50
+ super(parent, accessor, group, contextMenuService, instantiationService, contextKeyService, keybindingService, notificationService, menuService, quickInputService, themeService, configurationService, fileService);
51
+ this.editorService = editorService;
52
+ this.pathService = pathService;
53
+ this.editorGroupService = editorGroupService;
54
+ this.treeViewsDragAndDropService = treeViewsDragAndDropService;
55
+ this.closeEditorAction = this._register(this.instantiationService.createInstance(CloseOneEditorAction, CloseOneEditorAction.ID, CloseOneEditorAction.LABEL));
56
+ this.unpinEditorAction = this._register(this.instantiationService.createInstance(UnpinEditorAction, UnpinEditorAction.ID, UnpinEditorAction.LABEL));
57
+ this.tabResourceLabels = this._register(this.instantiationService.createInstance(ResourceLabels, DEFAULT_LABELS_CONTAINER));
58
+ this.tabLabels = [];
59
+ this.tabActionBars = [];
60
+ this.tabDisposables = [];
61
+ this.dimensions = {
62
+ container: Dimension.None,
63
+ available: Dimension.None
64
+ };
65
+ this.layoutScheduler = this._register(( new MutableDisposable()));
66
+ this.path = isWindows ? win32 : posix;
67
+ this.lastMouseWheelEventTime = 0;
68
+ this.isMouseOverTabs = false;
69
+ this.updateEditorLabelScheduler = this._register(( new RunOnceScheduler(() => this.doUpdateEditorLabels(), 0)));
70
+ (async () => this.path = await this.pathService.path)();
71
+ this._register(this.tabResourceLabels.onDidChangeDecorations(() => this.doHandleDecorationsChange()));
72
+ }
73
+ create(parent) {
74
+ this.titleContainer = parent;
75
+ this.tabsAndActionsContainer = document.createElement('div');
76
+ this.tabsAndActionsContainer.classList.add('tabs-and-actions-container');
77
+ this.titleContainer.appendChild(this.tabsAndActionsContainer);
78
+ this.tabsContainer = document.createElement('div');
79
+ this.tabsContainer.setAttribute('role', 'tablist');
80
+ this.tabsContainer.draggable = true;
81
+ this.tabsContainer.classList.add('tabs-container');
82
+ this._register(Gesture.addTarget(this.tabsContainer));
83
+ this.tabSizingFixedDisposables = this._register(( new DisposableStore()));
84
+ this.updateTabSizing(false);
85
+ this.tabsScrollbar = this._register(this.createTabsScrollbar(this.tabsContainer));
86
+ this.tabsAndActionsContainer.appendChild(this.tabsScrollbar.getDomNode());
87
+ this.registerTabsContainerListeners(this.tabsContainer, this.tabsScrollbar);
88
+ this.editorToolbarContainer = document.createElement('div');
89
+ this.editorToolbarContainer.classList.add('editor-actions');
90
+ this.tabsAndActionsContainer.appendChild(this.editorToolbarContainer);
91
+ this.createEditorActionsToolBar(this.editorToolbarContainer);
92
+ const breadcrumbsContainer = document.createElement('div');
93
+ breadcrumbsContainer.classList.add('tabs-breadcrumbs');
94
+ this.titleContainer.appendChild(breadcrumbsContainer);
95
+ this.createBreadcrumbsControl(breadcrumbsContainer, { showFileIcons: true, showSymbolIcons: true, showDecorationColors: false, showPlaceholder: true });
96
+ }
97
+ createTabsScrollbar(scrollable) {
98
+ const tabsScrollbar = ( new ScrollableElement(scrollable, {
99
+ horizontal: 1 ,
100
+ horizontalScrollbarSize: this.getTabsScrollbarSizing(),
101
+ vertical: 2 ,
102
+ scrollYToX: true,
103
+ useShadows: false
104
+ }));
105
+ tabsScrollbar.onScroll(e => {
106
+ if (e.scrollLeftChanged) {
107
+ scrollable.scrollLeft = e.scrollLeft;
108
+ }
109
+ });
110
+ return tabsScrollbar;
111
+ }
112
+ updateTabsScrollbarSizing() {
113
+ this.tabsScrollbar?.updateOptions({
114
+ horizontalScrollbarSize: this.getTabsScrollbarSizing()
115
+ });
116
+ }
117
+ updateTabSizing(fromEvent) {
118
+ const [tabsContainer, tabSizingFixedDisposables] = assertAllDefined(this.tabsContainer, this.tabSizingFixedDisposables);
119
+ tabSizingFixedDisposables.clear();
120
+ const options = this.accessor.partOptions;
121
+ if (options.tabSizing === 'fixed') {
122
+ tabsContainer.style.setProperty('--tab-sizing-fixed-max-width', `${options.tabSizingFixedMaxWidth}px`);
123
+ tabSizingFixedDisposables.add(addDisposableListener(tabsContainer, EventType.MOUSE_ENTER, () => {
124
+ this.isMouseOverTabs = true;
125
+ }));
126
+ tabSizingFixedDisposables.add(addDisposableListener(tabsContainer, EventType.MOUSE_LEAVE, () => {
127
+ this.isMouseOverTabs = false;
128
+ this.updateTabsFixedWidth(false);
129
+ }));
130
+ }
131
+ else if (fromEvent) {
132
+ tabsContainer.style.removeProperty('--tab-sizing-fixed-max-width');
133
+ this.updateTabsFixedWidth(false);
134
+ }
135
+ }
136
+ updateTabsFixedWidth(fixed) {
137
+ this.forEachTab((editor, index, tabContainer) => {
138
+ if (fixed) {
139
+ const { width } = tabContainer.getBoundingClientRect();
140
+ tabContainer.style.setProperty('--tab-sizing-current-width', `${width}px`);
141
+ }
142
+ else {
143
+ tabContainer.style.removeProperty('--tab-sizing-current-width');
144
+ }
145
+ });
146
+ }
147
+ getTabsScrollbarSizing() {
148
+ if (this.accessor.partOptions.titleScrollbarSizing !== 'large') {
149
+ return TabsTitleControl.SCROLLBAR_SIZES.default;
150
+ }
151
+ return TabsTitleControl.SCROLLBAR_SIZES.large;
152
+ }
153
+ registerTabsContainerListeners(tabsContainer, tabsScrollbar) {
154
+ this.enableGroupDragging(tabsContainer);
155
+ this._register(addDisposableListener(tabsContainer, EventType.SCROLL, () => {
156
+ if (tabsContainer.classList.contains('scroll')) {
157
+ tabsScrollbar.setScrollPosition({
158
+ scrollLeft: tabsContainer.scrollLeft
159
+ });
160
+ }
161
+ }));
162
+ for (const eventType of [EventType$1.Tap, EventType.DBLCLICK]) {
163
+ this._register(addDisposableListener(tabsContainer, eventType, (e) => {
164
+ if (eventType === EventType.DBLCLICK) {
165
+ if (e.target !== tabsContainer) {
166
+ return;
167
+ }
168
+ }
169
+ else {
170
+ if (e.tapCount !== 2) {
171
+ return;
172
+ }
173
+ if (e.initialTarget !== tabsContainer) {
174
+ return;
175
+ }
176
+ }
177
+ EventHelper.stop(e);
178
+ this.editorService.openEditor({
179
+ resource: undefined,
180
+ options: {
181
+ pinned: true,
182
+ index: this.group.count,
183
+ override: DEFAULT_EDITOR_ASSOCIATION.id
184
+ }
185
+ }, this.group.id);
186
+ }));
187
+ }
188
+ this._register(addDisposableListener(tabsContainer, EventType.MOUSE_DOWN, e => {
189
+ if (e.button === 1) {
190
+ e.preventDefault();
191
+ }
192
+ }));
193
+ this._register(( new DragAndDropObserver(tabsContainer, {
194
+ onDragEnter: e => {
195
+ tabsContainer.classList.add('scroll');
196
+ if (e.target !== tabsContainer) {
197
+ this.updateDropFeedback(tabsContainer, false);
198
+ return;
199
+ }
200
+ if (!this.isSupportedDropTransfer(e)) {
201
+ if (e.dataTransfer) {
202
+ e.dataTransfer.dropEffect = 'none';
203
+ }
204
+ return;
205
+ }
206
+ let isLocalDragAndDrop = false;
207
+ if (this.editorTransfer.hasData(DraggedEditorIdentifier.prototype)) {
208
+ isLocalDragAndDrop = true;
209
+ const data = this.editorTransfer.getData(DraggedEditorIdentifier.prototype);
210
+ if (Array.isArray(data)) {
211
+ const localDraggedEditor = data[0].identifier;
212
+ if (this.group.id === localDraggedEditor.groupId && this.group.getIndexOfEditor(localDraggedEditor.editor) === this.group.count - 1) {
213
+ if (e.dataTransfer) {
214
+ e.dataTransfer.dropEffect = 'none';
215
+ }
216
+ return;
217
+ }
218
+ }
219
+ }
220
+ if (!isLocalDragAndDrop) {
221
+ if (e.dataTransfer) {
222
+ e.dataTransfer.dropEffect = 'copy';
223
+ }
224
+ }
225
+ this.updateDropFeedback(tabsContainer, true);
226
+ },
227
+ onDragLeave: e => {
228
+ this.updateDropFeedback(tabsContainer, false);
229
+ tabsContainer.classList.remove('scroll');
230
+ },
231
+ onDragEnd: e => {
232
+ this.updateDropFeedback(tabsContainer, false);
233
+ tabsContainer.classList.remove('scroll');
234
+ },
235
+ onDrop: e => {
236
+ this.updateDropFeedback(tabsContainer, false);
237
+ tabsContainer.classList.remove('scroll');
238
+ if (e.target === tabsContainer) {
239
+ this.onDrop(e, this.group.count, tabsContainer);
240
+ }
241
+ }
242
+ })));
243
+ this._register(addDisposableListener(tabsContainer, EventType.MOUSE_WHEEL, (e) => {
244
+ const activeEditor = this.group.activeEditor;
245
+ if (!activeEditor || this.group.count < 2) {
246
+ return;
247
+ }
248
+ if (this.accessor.partOptions.scrollToSwitchTabs === true) {
249
+ if (e.shiftKey) {
250
+ return;
251
+ }
252
+ }
253
+ else {
254
+ if (!e.shiftKey) {
255
+ return;
256
+ }
257
+ }
258
+ const now = Date.now();
259
+ if (now - this.lastMouseWheelEventTime < TabsTitleControl.MOUSE_WHEEL_EVENT_THRESHOLD - 2 * (Math.abs(e.deltaX) + Math.abs(e.deltaY))) {
260
+ return;
261
+ }
262
+ this.lastMouseWheelEventTime = now;
263
+ let tabSwitchDirection;
264
+ if (e.deltaX + e.deltaY < -TabsTitleControl.MOUSE_WHEEL_DISTANCE_THRESHOLD) {
265
+ tabSwitchDirection = -1;
266
+ }
267
+ else if (e.deltaX + e.deltaY > TabsTitleControl.MOUSE_WHEEL_DISTANCE_THRESHOLD) {
268
+ tabSwitchDirection = 1;
269
+ }
270
+ else {
271
+ return;
272
+ }
273
+ const nextEditor = this.group.getEditorByIndex(this.group.getIndexOfEditor(activeEditor) + tabSwitchDirection);
274
+ if (!nextEditor) {
275
+ return;
276
+ }
277
+ this.group.openEditor(nextEditor);
278
+ EventHelper.stop(e, true);
279
+ }));
280
+ const showContextMenu = (e) => {
281
+ EventHelper.stop(e);
282
+ let anchor = tabsContainer;
283
+ if (e instanceof MouseEvent) {
284
+ const event = ( new StandardMouseEvent(e));
285
+ anchor = { x: event.posx, y: event.posy };
286
+ }
287
+ this.contextMenuService.showContextMenu({
288
+ getAnchor: () => anchor,
289
+ menuId: MenuId.EditorTabsBarContext,
290
+ contextKeyService: this.contextKeyService,
291
+ menuActionOptions: { shouldForwardArgs: true },
292
+ getActionsContext: () => ({ groupId: this.group.id }),
293
+ getKeyBinding: action => this.getKeybinding(action),
294
+ onHide: () => this.group.focus()
295
+ });
296
+ };
297
+ this._register(addDisposableListener(tabsContainer, EventType$1.Contextmenu, e => showContextMenu(e)));
298
+ this._register(addDisposableListener(tabsContainer, EventType.CONTEXT_MENU, e => showContextMenu(e)));
299
+ }
300
+ doHandleDecorationsChange() {
301
+ this.layout(this.dimensions);
302
+ }
303
+ updateEditorActionsToolbar() {
304
+ super.updateEditorActionsToolbar();
305
+ this.layout(this.dimensions);
306
+ }
307
+ openEditor(editor) {
308
+ this.handleOpenedEditors();
309
+ }
310
+ openEditors(editors) {
311
+ this.handleOpenedEditors();
312
+ }
313
+ handleOpenedEditors() {
314
+ const [tabsContainer, tabsScrollbar] = assertAllDefined(this.tabsContainer, this.tabsScrollbar);
315
+ for (let i = tabsContainer.children.length; i < this.group.count; i++) {
316
+ tabsContainer.appendChild(this.createTab(i, tabsContainer, tabsScrollbar));
317
+ }
318
+ const activeEditorChanged = this.didActiveEditorChange();
319
+ const oldActiveTabLabel = this.activeTabLabel;
320
+ const oldTabLabelsLength = this.tabLabels.length;
321
+ this.computeTabLabels();
322
+ if (activeEditorChanged ||
323
+ oldTabLabelsLength !== this.tabLabels.length ||
324
+ !this.equalsEditorInputLabel(oldActiveTabLabel, this.activeTabLabel)
325
+ ) {
326
+ this.redraw({ forceRevealActiveTab: true });
327
+ this.breadcrumbsControl?.update();
328
+ }
329
+ else {
330
+ this.layout(this.dimensions, { forceRevealActiveTab: true });
331
+ this.breadcrumbsControl?.revealLast();
332
+ }
333
+ }
334
+ didActiveEditorChange() {
335
+ if (!this.activeTabLabel?.editor && this.group.activeEditor ||
336
+ this.activeTabLabel?.editor && !this.group.activeEditor ||
337
+ (!this.activeTabLabel?.editor || !this.group.isActive(this.activeTabLabel.editor))
338
+ ) {
339
+ return true;
340
+ }
341
+ return false;
342
+ }
343
+ equalsEditorInputLabel(labelA, labelB) {
344
+ if (labelA === labelB) {
345
+ return true;
346
+ }
347
+ if (!labelA || !labelB) {
348
+ return false;
349
+ }
350
+ return labelA.name === labelB.name &&
351
+ labelA.description === labelB.description &&
352
+ labelA.forceDescription === labelB.forceDescription &&
353
+ labelA.title === labelB.title &&
354
+ labelA.ariaLabel === labelB.ariaLabel;
355
+ }
356
+ beforeCloseEditor(editor) {
357
+ if (this.isMouseOverTabs && this.accessor.partOptions.tabSizing === 'fixed') {
358
+ const closingLastTab = this.group.isLast(editor);
359
+ this.updateTabsFixedWidth(!closingLastTab);
360
+ }
361
+ }
362
+ closeEditor(editor) {
363
+ this.handleClosedEditors();
364
+ }
365
+ closeEditors(editors) {
366
+ this.handleClosedEditors();
367
+ }
368
+ handleClosedEditors() {
369
+ if (this.group.activeEditor) {
370
+ const tabsContainer = assertIsDefined(this.tabsContainer);
371
+ while (tabsContainer.children.length > this.group.count) {
372
+ tabsContainer.lastChild?.remove();
373
+ dispose(this.tabDisposables.pop());
374
+ }
375
+ this.computeTabLabels();
376
+ this.redraw({ forceRevealActiveTab: true });
377
+ }
378
+ else {
379
+ if (this.tabsContainer) {
380
+ clearNode(this.tabsContainer);
381
+ }
382
+ this.tabDisposables = dispose(this.tabDisposables);
383
+ this.tabResourceLabels.clear();
384
+ this.tabLabels = [];
385
+ this.activeTabLabel = undefined;
386
+ this.tabActionBars = [];
387
+ this.clearEditorActionsToolbar();
388
+ this.breadcrumbsControl?.update();
389
+ }
390
+ }
391
+ moveEditor(editor, fromIndex, targetIndex) {
392
+ const editorLabel = this.tabLabels[fromIndex];
393
+ this.tabLabels.splice(fromIndex, 1);
394
+ this.tabLabels.splice(targetIndex, 0, editorLabel);
395
+ this.forEachTab((editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar) => {
396
+ this.redrawTab(editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar);
397
+ }, Math.min(fromIndex, targetIndex),
398
+ Math.max(fromIndex, targetIndex)
399
+ );
400
+ this.layout(this.dimensions, { forceRevealActiveTab: true });
401
+ }
402
+ pinEditor(editor) {
403
+ this.withTab(editor, (editor, index, tabContainer, tabLabelWidget, tabLabel) => this.redrawTabLabel(editor, index, tabContainer, tabLabelWidget, tabLabel));
404
+ }
405
+ stickEditor(editor) {
406
+ this.doHandleStickyEditorChange(editor);
407
+ }
408
+ unstickEditor(editor) {
409
+ this.doHandleStickyEditorChange(editor);
410
+ }
411
+ doHandleStickyEditorChange(editor) {
412
+ this.withTab(editor, (editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar) => this.redrawTab(editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar));
413
+ this.forEachTab((editor, index, tabContainer, tabLabelWidget, tabLabel) => {
414
+ this.redrawTabBorders(index, tabContainer);
415
+ });
416
+ this.layout(this.dimensions, { forceRevealActiveTab: true });
417
+ }
418
+ setActive(isGroupActive) {
419
+ this.forEachTab((editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar) => {
420
+ this.redrawTabActiveAndDirty(isGroupActive, editor, tabContainer, tabActionBar);
421
+ });
422
+ this.updateEditorActionsToolbar();
423
+ this.layout(this.dimensions, { forceRevealActiveTab: true });
424
+ }
425
+ updateEditorLabel(editor) {
426
+ this.updateEditorLabelScheduler.schedule();
427
+ }
428
+ doUpdateEditorLabels() {
429
+ this.computeTabLabels();
430
+ this.forEachTab((editor, index, tabContainer, tabLabelWidget, tabLabel) => {
431
+ this.redrawTabLabel(editor, index, tabContainer, tabLabelWidget, tabLabel);
432
+ });
433
+ this.layout(this.dimensions);
434
+ }
435
+ updateEditorDirty(editor) {
436
+ this.withTab(editor, (editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar) => this.redrawTabActiveAndDirty(this.accessor.activeGroup === this.group, editor, tabContainer, tabActionBar));
437
+ }
438
+ updateOptions(oldOptions, newOptions) {
439
+ if (oldOptions.labelFormat !== newOptions.labelFormat) {
440
+ this.computeTabLabels();
441
+ }
442
+ if (oldOptions.titleScrollbarSizing !== newOptions.titleScrollbarSizing) {
443
+ this.updateTabsScrollbarSizing();
444
+ }
445
+ if (oldOptions.tabSizingFixedMaxWidth !== newOptions.tabSizingFixedMaxWidth ||
446
+ oldOptions.tabSizing !== newOptions.tabSizing) {
447
+ this.updateTabSizing(true);
448
+ }
449
+ if (oldOptions.labelFormat !== newOptions.labelFormat ||
450
+ oldOptions.tabCloseButton !== newOptions.tabCloseButton ||
451
+ oldOptions.tabSizing !== newOptions.tabSizing ||
452
+ oldOptions.pinnedTabSizing !== newOptions.pinnedTabSizing ||
453
+ oldOptions.showIcons !== newOptions.showIcons ||
454
+ oldOptions.hasIcons !== newOptions.hasIcons ||
455
+ oldOptions.highlightModifiedTabs !== newOptions.highlightModifiedTabs ||
456
+ oldOptions.wrapTabs !== newOptions.wrapTabs ||
457
+ !equals(oldOptions.decorations, newOptions.decorations)) {
458
+ this.redraw();
459
+ }
460
+ }
461
+ updateStyles() {
462
+ this.redraw();
463
+ }
464
+ forEachTab(fn, fromIndex, toIndex) {
465
+ this.group.editors.forEach((editor, index) => {
466
+ if (typeof fromIndex === 'number' && fromIndex > index) {
467
+ return;
468
+ }
469
+ if (typeof toIndex === 'number' && toIndex < index) {
470
+ return;
471
+ }
472
+ this.doWithTab(index, editor, fn);
473
+ });
474
+ }
475
+ withTab(editor, fn) {
476
+ this.doWithTab(this.group.getIndexOfEditor(editor), editor, fn);
477
+ }
478
+ doWithTab(index, editor, fn) {
479
+ const tabsContainer = assertIsDefined(this.tabsContainer);
480
+ const tabContainer = tabsContainer.children[index];
481
+ const tabResourceLabel = this.tabResourceLabels.get(index);
482
+ const tabLabel = this.tabLabels[index];
483
+ const tabActionBar = this.tabActionBars[index];
484
+ if (tabContainer && tabResourceLabel && tabLabel) {
485
+ fn(editor, index, tabContainer, tabResourceLabel, tabLabel, tabActionBar);
486
+ }
487
+ }
488
+ createTab(index, tabsContainer, tabsScrollbar) {
489
+ const tabContainer = document.createElement('div');
490
+ tabContainer.draggable = true;
491
+ tabContainer.setAttribute('role', 'tab');
492
+ tabContainer.classList.add('tab');
493
+ this._register(Gesture.addTarget(tabContainer));
494
+ const tabBorderTopContainer = document.createElement('div');
495
+ tabBorderTopContainer.classList.add('tab-border-top-container');
496
+ tabContainer.appendChild(tabBorderTopContainer);
497
+ const editorLabel = this.tabResourceLabels.create(tabContainer);
498
+ const tabActionsContainer = document.createElement('div');
499
+ tabActionsContainer.classList.add('tab-actions');
500
+ tabContainer.appendChild(tabActionsContainer);
501
+ const tabActionRunner = ( new EditorCommandsContextActionRunner({ groupId: this.group.id, editorIndex: index }));
502
+ const tabActionBar = ( new ActionBar(tabActionsContainer, { ariaLabel: ( localize('ariaLabelTabActions', "Tab actions")), actionRunner: tabActionRunner }));
503
+ tabActionBar.onWillRun(e => {
504
+ if (e.action.id === this.closeEditorAction.id) {
505
+ this.blockRevealActiveTabOnce();
506
+ }
507
+ });
508
+ const tabActionBarDisposable = combinedDisposable(tabActionBar, toDisposable(insert(this.tabActionBars, tabActionBar)));
509
+ const tabBorderBottomContainer = document.createElement('div');
510
+ tabBorderBottomContainer.classList.add('tab-border-bottom-container');
511
+ tabContainer.appendChild(tabBorderBottomContainer);
512
+ const eventsDisposable = this.registerTabListeners(tabContainer, index, tabsContainer, tabsScrollbar);
513
+ this.tabDisposables.push(combinedDisposable(eventsDisposable, tabActionBarDisposable, tabActionRunner, editorLabel));
514
+ return tabContainer;
515
+ }
516
+ registerTabListeners(tab, index, tabsContainer, tabsScrollbar) {
517
+ const disposables = ( new DisposableStore());
518
+ const handleClickOrTouch = (e, preserveFocus) => {
519
+ tab.blur();
520
+ if (e instanceof MouseEvent && (e.button !== 0 || ((isMacintosh && e.ctrlKey) ))) {
521
+ if (e.button === 1) {
522
+ e.preventDefault();
523
+ }
524
+ return undefined;
525
+ }
526
+ if (this.originatesFromTabActionBar(e)) {
527
+ return;
528
+ }
529
+ const input = this.group.getEditorByIndex(index);
530
+ if (input) {
531
+ this.group.openEditor(input, { preserveFocus, activation: EditorActivation.ACTIVATE });
532
+ }
533
+ return undefined;
534
+ };
535
+ const showContextMenu = (e) => {
536
+ EventHelper.stop(e);
537
+ const input = this.group.getEditorByIndex(index);
538
+ if (input) {
539
+ this.onContextMenu(input, e, tab);
540
+ }
541
+ };
542
+ disposables.add(addDisposableListener(tab, EventType.MOUSE_DOWN, e => handleClickOrTouch(e, false)));
543
+ disposables.add(addDisposableListener(tab, EventType$1.Tap, (e) => handleClickOrTouch(e, true)));
544
+ disposables.add(addDisposableListener(tab, EventType$1.Change, (e) => {
545
+ tabsScrollbar.setScrollPosition({ scrollLeft: tabsScrollbar.getScrollPosition().scrollLeft - e.translationX });
546
+ }));
547
+ disposables.add(addDisposableListener(tab, EventType.MOUSE_UP, e => {
548
+ EventHelper.stop(e);
549
+ tab.blur();
550
+ }));
551
+ disposables.add(addDisposableListener(tab, EventType.AUXCLICK, e => {
552
+ if (e.button === 1 ) {
553
+ EventHelper.stop(e, true );
554
+ this.blockRevealActiveTabOnce();
555
+ this.closeEditorAction.run({ groupId: this.group.id, editorIndex: index });
556
+ }
557
+ }));
558
+ disposables.add(addDisposableListener(tab, EventType.KEY_DOWN, e => {
559
+ const event = ( new StandardKeyboardEvent(e));
560
+ if (event.shiftKey && event.keyCode === 68 ) {
561
+ showContextMenu(e);
562
+ }
563
+ }));
564
+ disposables.add(addDisposableListener(tab, EventType$1.Contextmenu, (e) => {
565
+ showContextMenu(e);
566
+ }));
567
+ disposables.add(addDisposableListener(tab, EventType.KEY_UP, e => {
568
+ const event = ( new StandardKeyboardEvent(e));
569
+ let handled = false;
570
+ if (event.equals(3 ) || event.equals(10 )) {
571
+ handled = true;
572
+ const input = this.group.getEditorByIndex(index);
573
+ if (input) {
574
+ this.group.openEditor(input);
575
+ }
576
+ }
577
+ else if (( [15 , 17 , 16 , 18 , 14 , 13 ].some(kb => event.equals(kb)))) {
578
+ let targetIndex;
579
+ if (event.equals(15 ) || event.equals(16 )) {
580
+ targetIndex = index - 1;
581
+ }
582
+ else if (event.equals(17 ) || event.equals(18 )) {
583
+ targetIndex = index + 1;
584
+ }
585
+ else if (event.equals(14 )) {
586
+ targetIndex = 0;
587
+ }
588
+ else {
589
+ targetIndex = this.group.count - 1;
590
+ }
591
+ const target = this.group.getEditorByIndex(targetIndex);
592
+ if (target) {
593
+ handled = true;
594
+ this.group.openEditor(target, { preserveFocus: true });
595
+ tabsContainer.childNodes[targetIndex].focus();
596
+ }
597
+ }
598
+ if (handled) {
599
+ EventHelper.stop(e, true);
600
+ }
601
+ tabsScrollbar.setScrollPosition({
602
+ scrollLeft: tabsContainer.scrollLeft
603
+ });
604
+ }));
605
+ for (const eventType of [EventType$1.Tap, EventType.DBLCLICK]) {
606
+ disposables.add(addDisposableListener(tab, eventType, (e) => {
607
+ if (eventType === EventType.DBLCLICK) {
608
+ EventHelper.stop(e);
609
+ }
610
+ else if (e.tapCount !== 2) {
611
+ return;
612
+ }
613
+ const editor = this.group.getEditorByIndex(index);
614
+ if (editor && this.group.isPinned(editor)) {
615
+ this.accessor.arrangeGroups(2 , this.group);
616
+ }
617
+ else {
618
+ this.group.pinEditor(editor);
619
+ }
620
+ }));
621
+ }
622
+ disposables.add(addDisposableListener(tab, EventType.CONTEXT_MENU, e => {
623
+ EventHelper.stop(e, true);
624
+ const input = this.group.getEditorByIndex(index);
625
+ if (input) {
626
+ this.onContextMenu(input, e, tab);
627
+ }
628
+ }, true ));
629
+ disposables.add(addDisposableListener(tab, EventType.DRAG_START, e => {
630
+ const editor = this.group.getEditorByIndex(index);
631
+ if (!editor) {
632
+ return;
633
+ }
634
+ this.editorTransfer.setData([( new DraggedEditorIdentifier({ editor, groupId: this.group.id }))], DraggedEditorIdentifier.prototype);
635
+ if (e.dataTransfer) {
636
+ e.dataTransfer.effectAllowed = 'copyMove';
637
+ }
638
+ this.doFillResourceDataTransfers([editor], e);
639
+ tab.classList.add('dragged');
640
+ scheduleAtNextAnimationFrame(() => tab.classList.remove('dragged'));
641
+ }));
642
+ disposables.add(( new DragAndDropObserver(tab, {
643
+ onDragEnter: e => {
644
+ tab.classList.add('dragged-over');
645
+ if (!this.isSupportedDropTransfer(e)) {
646
+ if (e.dataTransfer) {
647
+ e.dataTransfer.dropEffect = 'none';
648
+ }
649
+ return;
650
+ }
651
+ let isLocalDragAndDrop = false;
652
+ if (this.editorTransfer.hasData(DraggedEditorIdentifier.prototype)) {
653
+ isLocalDragAndDrop = true;
654
+ const data = this.editorTransfer.getData(DraggedEditorIdentifier.prototype);
655
+ if (Array.isArray(data)) {
656
+ const localDraggedEditor = data[0].identifier;
657
+ if (localDraggedEditor.editor === this.group.getEditorByIndex(index) && localDraggedEditor.groupId === this.group.id) {
658
+ if (e.dataTransfer) {
659
+ e.dataTransfer.dropEffect = 'none';
660
+ }
661
+ return;
662
+ }
663
+ }
664
+ }
665
+ if (!isLocalDragAndDrop) {
666
+ if (e.dataTransfer) {
667
+ e.dataTransfer.dropEffect = 'copy';
668
+ }
669
+ }
670
+ this.updateDropFeedback(tab, true, index);
671
+ },
672
+ onDragOver: (_, dragDuration) => {
673
+ if (dragDuration >= TabsTitleControl.DRAG_OVER_OPEN_TAB_THRESHOLD) {
674
+ const draggedOverTab = this.group.getEditorByIndex(index);
675
+ if (draggedOverTab && this.group.activeEditor !== draggedOverTab) {
676
+ this.group.openEditor(draggedOverTab, { preserveFocus: true });
677
+ }
678
+ }
679
+ },
680
+ onDragLeave: () => {
681
+ tab.classList.remove('dragged-over');
682
+ this.updateDropFeedback(tab, false, index);
683
+ },
684
+ onDragEnd: () => {
685
+ tab.classList.remove('dragged-over');
686
+ this.updateDropFeedback(tab, false, index);
687
+ this.editorTransfer.clearData(DraggedEditorIdentifier.prototype);
688
+ },
689
+ onDrop: e => {
690
+ tab.classList.remove('dragged-over');
691
+ this.updateDropFeedback(tab, false, index);
692
+ this.onDrop(e, index, tabsContainer);
693
+ }
694
+ })));
695
+ return disposables;
696
+ }
697
+ isSupportedDropTransfer(e) {
698
+ if (this.groupTransfer.hasData(DraggedEditorGroupIdentifier.prototype)) {
699
+ const data = this.groupTransfer.getData(DraggedEditorGroupIdentifier.prototype);
700
+ if (Array.isArray(data)) {
701
+ const group = data[0];
702
+ if (group.identifier === this.group.id) {
703
+ return false;
704
+ }
705
+ }
706
+ return true;
707
+ }
708
+ if (this.editorTransfer.hasData(DraggedEditorIdentifier.prototype)) {
709
+ return true;
710
+ }
711
+ if (e.dataTransfer && e.dataTransfer.types.length > 0) {
712
+ return true;
713
+ }
714
+ return false;
715
+ }
716
+ updateDropFeedback(element, isDND, index) {
717
+ const isTab = (typeof index === 'number');
718
+ const editor = typeof index === 'number' ? this.group.getEditorByIndex(index) : undefined;
719
+ const isActiveTab = isTab && !!editor && this.group.isActive(editor);
720
+ const noDNDBackgroundColor = isTab ? this.getColor(isActiveTab ? TAB_ACTIVE_BACKGROUND : TAB_INACTIVE_BACKGROUND) : '';
721
+ element.style.backgroundColor = (isDND ? this.getColor(EDITOR_DRAG_AND_DROP_BACKGROUND) : noDNDBackgroundColor) || '';
722
+ const activeContrastBorderColor = this.getColor(activeContrastBorder);
723
+ if (activeContrastBorderColor && isDND) {
724
+ element.style.outlineWidth = '2px';
725
+ element.style.outlineStyle = 'dashed';
726
+ element.style.outlineColor = activeContrastBorderColor;
727
+ element.style.outlineOffset = isTab ? '-5px' : '-3px';
728
+ }
729
+ else {
730
+ element.style.outlineWidth = '';
731
+ element.style.outlineStyle = '';
732
+ element.style.outlineColor = activeContrastBorderColor || '';
733
+ element.style.outlineOffset = '';
734
+ }
735
+ }
736
+ computeTabLabels() {
737
+ const { labelFormat } = this.accessor.partOptions;
738
+ const { verbosity, shortenDuplicates } = this.getLabelConfigFlags(labelFormat);
739
+ const labels = [];
740
+ let activeEditorIndex = -1;
741
+ for (let i = 0; i < this.group.editors.length; i++) {
742
+ const editor = this.group.editors[i];
743
+ labels.push({
744
+ editor,
745
+ name: editor.getName(),
746
+ description: editor.getDescription(verbosity),
747
+ forceDescription: editor.hasCapability(64 ),
748
+ title: editor.getTitle(2 ),
749
+ ariaLabel: computeEditorAriaLabel(editor, i, this.group, this.editorGroupService.count)
750
+ });
751
+ if (editor === this.group.activeEditor) {
752
+ activeEditorIndex = i;
753
+ }
754
+ }
755
+ if (shortenDuplicates) {
756
+ this.shortenTabLabels(labels);
757
+ }
758
+ this.tabLabels = labels;
759
+ this.activeTabLabel = labels[activeEditorIndex];
760
+ }
761
+ shortenTabLabels(labels) {
762
+ const mapNameToDuplicates = ( new Map());
763
+ for (const label of labels) {
764
+ if (typeof label.description === 'string') {
765
+ getOrSet(mapNameToDuplicates, label.name, []).push(label);
766
+ }
767
+ else {
768
+ label.description = '';
769
+ }
770
+ }
771
+ for (const [, duplicateLabels] of mapNameToDuplicates) {
772
+ if (duplicateLabels.length === 1 && !duplicateLabels[0].forceDescription) {
773
+ duplicateLabels[0].description = '';
774
+ continue;
775
+ }
776
+ const mapDescriptionToDuplicates = ( new Map());
777
+ for (const duplicateLabel of duplicateLabels) {
778
+ getOrSet(mapDescriptionToDuplicates, duplicateLabel.description, []).push(duplicateLabel);
779
+ }
780
+ let useLongDescriptions = false;
781
+ for (const [, duplicateLabels] of mapDescriptionToDuplicates) {
782
+ if (!useLongDescriptions && duplicateLabels.length > 1) {
783
+ const [first, ...rest] = ( duplicateLabels.map(({ editor }) => editor.getDescription(2 )));
784
+ useLongDescriptions = ( rest.some(description => description !== first));
785
+ }
786
+ }
787
+ if (useLongDescriptions) {
788
+ mapDescriptionToDuplicates.clear();
789
+ for (const duplicateLabel of duplicateLabels) {
790
+ duplicateLabel.description = duplicateLabel.editor.getDescription(2 );
791
+ getOrSet(mapDescriptionToDuplicates, duplicateLabel.description, []).push(duplicateLabel);
792
+ }
793
+ }
794
+ const descriptions = [];
795
+ for (const [description] of mapDescriptionToDuplicates) {
796
+ descriptions.push(description);
797
+ }
798
+ if (descriptions.length === 1) {
799
+ for (const label of mapDescriptionToDuplicates.get(descriptions[0]) || []) {
800
+ if (!label.forceDescription) {
801
+ label.description = '';
802
+ }
803
+ }
804
+ continue;
805
+ }
806
+ const shortenedDescriptions = shorten(descriptions, this.path.sep);
807
+ descriptions.forEach((description, index) => {
808
+ for (const label of mapDescriptionToDuplicates.get(description) || []) {
809
+ label.description = shortenedDescriptions[index];
810
+ }
811
+ });
812
+ }
813
+ }
814
+ getLabelConfigFlags(value) {
815
+ switch (value) {
816
+ case 'short':
817
+ return { verbosity: 0 , shortenDuplicates: false };
818
+ case 'medium':
819
+ return { verbosity: 1 , shortenDuplicates: false };
820
+ case 'long':
821
+ return { verbosity: 2 , shortenDuplicates: false };
822
+ default:
823
+ return { verbosity: 1 , shortenDuplicates: true };
824
+ }
825
+ }
826
+ redraw(options) {
827
+ if (this.tabsAndActionsContainer) {
828
+ let tabsContainerBorderColor = this.getColor(EDITOR_GROUP_HEADER_TABS_BORDER);
829
+ if (!tabsContainerBorderColor && isHighContrast(this.theme.type)) {
830
+ tabsContainerBorderColor = this.getColor(TAB_BORDER) || this.getColor(contrastBorder);
831
+ }
832
+ if (tabsContainerBorderColor) {
833
+ this.tabsAndActionsContainer.classList.add('tabs-border-bottom');
834
+ this.tabsAndActionsContainer.style.setProperty('--tabs-border-bottom-color', ( tabsContainerBorderColor.toString()));
835
+ }
836
+ else {
837
+ this.tabsAndActionsContainer.classList.remove('tabs-border-bottom');
838
+ this.tabsAndActionsContainer.style.removeProperty('--tabs-border-bottom-color');
839
+ }
840
+ }
841
+ this.forEachTab((editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar) => {
842
+ this.redrawTab(editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar);
843
+ });
844
+ this.updateEditorActionsToolbar();
845
+ this.layout(this.dimensions, options);
846
+ }
847
+ redrawTab(editor, index, tabContainer, tabLabelWidget, tabLabel, tabActionBar) {
848
+ const isTabSticky = this.group.isSticky(index);
849
+ const options = this.accessor.partOptions;
850
+ this.redrawTabLabel(editor, index, tabContainer, tabLabelWidget, tabLabel);
851
+ const tabAction = isTabSticky ? this.unpinEditorAction : this.closeEditorAction;
852
+ if (!tabActionBar.hasAction(tabAction)) {
853
+ if (!tabActionBar.isEmpty()) {
854
+ tabActionBar.clear();
855
+ }
856
+ tabActionBar.push(tabAction, { icon: true, label: false, keybinding: this.getKeybindingLabel(tabAction) });
857
+ }
858
+ const tabActionsVisibility = isTabSticky && options.pinnedTabSizing === 'compact' ? 'off' : options.tabCloseButton;
859
+ for (const option of ['off', 'left', 'right']) {
860
+ tabContainer.classList.toggle(`tab-actions-${option}`, tabActionsVisibility === option);
861
+ }
862
+ const tabSizing = isTabSticky && options.pinnedTabSizing === 'shrink' ? 'shrink' : options.tabSizing;
863
+ for (const option of ['fit', 'shrink', 'fixed']) {
864
+ tabContainer.classList.toggle(`sizing-${option}`, tabSizing === option);
865
+ }
866
+ tabContainer.classList.toggle('has-icon', options.showIcons && options.hasIcons);
867
+ tabContainer.classList.toggle('sticky', isTabSticky);
868
+ for (const option of ['normal', 'compact', 'shrink']) {
869
+ tabContainer.classList.toggle(`sticky-${option}`, isTabSticky && options.pinnedTabSizing === option);
870
+ }
871
+ if (!options.wrapTabs && isTabSticky && options.pinnedTabSizing !== 'normal') {
872
+ let stickyTabWidth = 0;
873
+ switch (options.pinnedTabSizing) {
874
+ case 'compact':
875
+ stickyTabWidth = TabsTitleControl.TAB_WIDTH.compact;
876
+ break;
877
+ case 'shrink':
878
+ stickyTabWidth = TabsTitleControl.TAB_WIDTH.shrink;
879
+ break;
880
+ }
881
+ tabContainer.style.left = `${index * stickyTabWidth}px`;
882
+ }
883
+ else {
884
+ tabContainer.style.left = 'auto';
885
+ }
886
+ this.redrawTabBorders(index, tabContainer);
887
+ this.redrawTabActiveAndDirty(this.accessor.activeGroup === this.group, editor, tabContainer, tabActionBar);
888
+ }
889
+ redrawTabLabel(editor, index, tabContainer, tabLabelWidget, tabLabel) {
890
+ const options = this.accessor.partOptions;
891
+ let name;
892
+ let forceLabel = false;
893
+ let fileDecorationBadges = Boolean(options.decorations?.badges);
894
+ let description;
895
+ if (options.pinnedTabSizing === 'compact' && this.group.isSticky(index)) {
896
+ const isShowingIcons = options.showIcons && options.hasIcons;
897
+ name = isShowingIcons ? '' : tabLabel.name?.charAt(0).toUpperCase();
898
+ description = '';
899
+ forceLabel = true;
900
+ fileDecorationBadges = false;
901
+ }
902
+ else {
903
+ name = tabLabel.name;
904
+ description = tabLabel.description || '';
905
+ }
906
+ if (tabLabel.ariaLabel) {
907
+ tabContainer.setAttribute('aria-label', tabLabel.ariaLabel);
908
+ tabContainer.setAttribute('aria-description', '');
909
+ }
910
+ const title = tabLabel.title || '';
911
+ tabContainer.title = title;
912
+ tabLabelWidget.setResource({ name, description, resource: EditorResourceAccessor.getOriginalUri(editor, { supportSideBySide: SideBySideEditor.BOTH }) }, {
913
+ title,
914
+ extraClasses: coalesce(['tab-label', fileDecorationBadges ? 'tab-label-has-badge' : undefined].concat(editor.getLabelExtraClasses())),
915
+ italic: !this.group.isPinned(editor),
916
+ forceLabel,
917
+ fileDecorations: {
918
+ colors: Boolean(options.decorations?.colors),
919
+ badges: fileDecorationBadges
920
+ }
921
+ });
922
+ const resource = EditorResourceAccessor.getOriginalUri(editor, { supportSideBySide: SideBySideEditor.PRIMARY });
923
+ if (resource) {
924
+ tabContainer.setAttribute('data-resource-name', basenameOrAuthority(resource));
925
+ }
926
+ else {
927
+ tabContainer.removeAttribute('data-resource-name');
928
+ }
929
+ }
930
+ redrawTabActiveAndDirty(isGroupActive, editor, tabContainer, tabActionBar) {
931
+ const isTabActive = this.group.isActive(editor);
932
+ const hasModifiedBorderTop = this.doRedrawTabDirty(isGroupActive, isTabActive, editor, tabContainer);
933
+ this.doRedrawTabActive(isGroupActive, !hasModifiedBorderTop, editor, tabContainer, tabActionBar);
934
+ }
935
+ doRedrawTabActive(isGroupActive, allowBorderTop, editor, tabContainer, tabActionBar) {
936
+ if (this.group.isActive(editor)) {
937
+ tabContainer.classList.add('active');
938
+ tabContainer.setAttribute('aria-selected', 'true');
939
+ tabContainer.tabIndex = 0;
940
+ tabContainer.style.backgroundColor = this.getColor(isGroupActive ? TAB_ACTIVE_BACKGROUND : TAB_UNFOCUSED_ACTIVE_BACKGROUND) || '';
941
+ const activeTabBorderColorBottom = this.getColor(isGroupActive ? TAB_ACTIVE_BORDER : TAB_UNFOCUSED_ACTIVE_BORDER);
942
+ if (activeTabBorderColorBottom) {
943
+ tabContainer.classList.add('tab-border-bottom');
944
+ tabContainer.style.setProperty('--tab-border-bottom-color', ( activeTabBorderColorBottom.toString()));
945
+ }
946
+ else {
947
+ tabContainer.classList.remove('tab-border-bottom');
948
+ tabContainer.style.removeProperty('--tab-border-bottom-color');
949
+ }
950
+ const activeTabBorderColorTop = allowBorderTop ? this.getColor(isGroupActive ? TAB_ACTIVE_BORDER_TOP : TAB_UNFOCUSED_ACTIVE_BORDER_TOP) : undefined;
951
+ if (activeTabBorderColorTop) {
952
+ tabContainer.classList.add('tab-border-top');
953
+ tabContainer.style.setProperty('--tab-border-top-color', ( activeTabBorderColorTop.toString()));
954
+ }
955
+ else {
956
+ tabContainer.classList.remove('tab-border-top');
957
+ tabContainer.style.removeProperty('--tab-border-top-color');
958
+ }
959
+ tabContainer.style.color = this.getColor(isGroupActive ? TAB_ACTIVE_FOREGROUND : TAB_UNFOCUSED_ACTIVE_FOREGROUND) || '';
960
+ tabActionBar.setFocusable(true);
961
+ }
962
+ else {
963
+ tabContainer.classList.remove('active');
964
+ tabContainer.setAttribute('aria-selected', 'false');
965
+ tabContainer.tabIndex = -1;
966
+ tabContainer.style.backgroundColor = this.getColor(isGroupActive ? TAB_INACTIVE_BACKGROUND : TAB_UNFOCUSED_INACTIVE_BACKGROUND) || '';
967
+ tabContainer.style.boxShadow = '';
968
+ tabContainer.style.color = this.getColor(isGroupActive ? TAB_INACTIVE_FOREGROUND : TAB_UNFOCUSED_INACTIVE_FOREGROUND) || '';
969
+ tabActionBar.setFocusable(false);
970
+ }
971
+ }
972
+ doRedrawTabDirty(isGroupActive, isTabActive, editor, tabContainer) {
973
+ let hasModifiedBorderColor = false;
974
+ if (editor.isDirty() && !editor.isSaving()) {
975
+ tabContainer.classList.add('dirty');
976
+ if (this.accessor.partOptions.highlightModifiedTabs) {
977
+ let modifiedBorderColor;
978
+ if (isGroupActive && isTabActive) {
979
+ modifiedBorderColor = this.getColor(TAB_ACTIVE_MODIFIED_BORDER);
980
+ }
981
+ else if (isGroupActive && !isTabActive) {
982
+ modifiedBorderColor = this.getColor(TAB_INACTIVE_MODIFIED_BORDER);
983
+ }
984
+ else if (!isGroupActive && isTabActive) {
985
+ modifiedBorderColor = this.getColor(TAB_UNFOCUSED_ACTIVE_MODIFIED_BORDER);
986
+ }
987
+ else {
988
+ modifiedBorderColor = this.getColor(TAB_UNFOCUSED_INACTIVE_MODIFIED_BORDER);
989
+ }
990
+ if (modifiedBorderColor) {
991
+ hasModifiedBorderColor = true;
992
+ tabContainer.classList.add('dirty-border-top');
993
+ tabContainer.style.setProperty('--tab-dirty-border-top-color', modifiedBorderColor);
994
+ }
995
+ }
996
+ else {
997
+ tabContainer.classList.remove('dirty-border-top');
998
+ tabContainer.style.removeProperty('--tab-dirty-border-top-color');
999
+ }
1000
+ }
1001
+ else {
1002
+ tabContainer.classList.remove('dirty', 'dirty-border-top');
1003
+ tabContainer.style.removeProperty('--tab-dirty-border-top-color');
1004
+ }
1005
+ return hasModifiedBorderColor;
1006
+ }
1007
+ redrawTabBorders(index, tabContainer) {
1008
+ const isTabSticky = this.group.isSticky(index);
1009
+ const isTabLastSticky = isTabSticky && this.group.stickyCount === index + 1;
1010
+ const borderRightColor = ((isTabLastSticky ? this.getColor(TAB_LAST_PINNED_BORDER) : undefined) || this.getColor(TAB_BORDER) || this.getColor(contrastBorder));
1011
+ tabContainer.style.borderRight = borderRightColor ? `1px solid ${borderRightColor}` : '';
1012
+ tabContainer.style.outlineColor = this.getColor(activeContrastBorder) || '';
1013
+ }
1014
+ prepareEditorActions(editorActions) {
1015
+ const isGroupActive = this.accessor.activeGroup === this.group;
1016
+ if (isGroupActive) {
1017
+ return editorActions;
1018
+ }
1019
+ else {
1020
+ return {
1021
+ primary: editorActions.primary.filter(action => action.id === UNLOCK_GROUP_COMMAND_ID),
1022
+ secondary: editorActions.secondary
1023
+ };
1024
+ }
1025
+ }
1026
+ getHeight() {
1027
+ const showsBreadcrumbs = this.breadcrumbsControl && !this.breadcrumbsControl.isHidden();
1028
+ if (this.dimensions.used) {
1029
+ return {
1030
+ total: this.dimensions.used.height,
1031
+ offset: showsBreadcrumbs ? this.dimensions.used.height - BreadcrumbsControl.HEIGHT : this.dimensions.used.height
1032
+ };
1033
+ }
1034
+ else {
1035
+ return this.computeHeight();
1036
+ }
1037
+ }
1038
+ computeHeight() {
1039
+ let total;
1040
+ if (this.accessor.partOptions.wrapTabs && this.tabsAndActionsContainer?.classList.contains('wrapping')) {
1041
+ total = this.tabsAndActionsContainer.offsetHeight;
1042
+ }
1043
+ else {
1044
+ total = TabsTitleControl.TAB_HEIGHT;
1045
+ }
1046
+ const offset = total;
1047
+ if (this.breadcrumbsControl && !this.breadcrumbsControl.isHidden()) {
1048
+ total += BreadcrumbsControl.HEIGHT;
1049
+ }
1050
+ return { total, offset };
1051
+ }
1052
+ layout(dimensions, options) {
1053
+ Object.assign(this.dimensions, dimensions);
1054
+ if (!this.layoutScheduler.value) {
1055
+ const scheduledLayout = scheduleAtNextAnimationFrame(() => {
1056
+ this.doLayout(this.dimensions, this.layoutScheduler.value?.options );
1057
+ this.layoutScheduler.clear();
1058
+ });
1059
+ this.layoutScheduler.value = { options, dispose: () => scheduledLayout.dispose() };
1060
+ }
1061
+ if (options?.forceRevealActiveTab) {
1062
+ this.layoutScheduler.value.options = {
1063
+ ...this.layoutScheduler.value.options,
1064
+ forceRevealActiveTab: true
1065
+ };
1066
+ }
1067
+ if (!this.dimensions.used) {
1068
+ this.dimensions.used = ( new Dimension(dimensions.container.width, this.computeHeight().total));
1069
+ }
1070
+ return this.dimensions.used;
1071
+ }
1072
+ doLayout(dimensions, options) {
1073
+ const activeTabAndIndex = this.group.activeEditor ? this.getTabAndIndex(this.group.activeEditor) : undefined;
1074
+ if (activeTabAndIndex && dimensions.container !== Dimension.None && dimensions.available !== Dimension.None) {
1075
+ this.doLayoutBreadcrumbs(dimensions);
1076
+ const [activeTab, activeIndex] = activeTabAndIndex;
1077
+ this.doLayoutTabs(activeTab, activeIndex, dimensions, options);
1078
+ }
1079
+ const oldDimension = this.dimensions.used;
1080
+ const newDimension = this.dimensions.used = ( new Dimension(dimensions.container.width, this.computeHeight().total));
1081
+ if (oldDimension && oldDimension.height !== newDimension.height) {
1082
+ this.group.relayout();
1083
+ }
1084
+ }
1085
+ handleBreadcrumbsEnablementChange() {
1086
+ this.group.relayout();
1087
+ }
1088
+ doLayoutBreadcrumbs(dimensions) {
1089
+ if (this.breadcrumbsControl && !this.breadcrumbsControl.isHidden()) {
1090
+ this.breadcrumbsControl.layout(( new Dimension(dimensions.container.width, BreadcrumbsControl.HEIGHT)));
1091
+ }
1092
+ }
1093
+ doLayoutTabs(activeTab, activeIndex, dimensions, options) {
1094
+ const tabsWrapMultiLine = this.doLayoutTabsWrapping(dimensions);
1095
+ if (!tabsWrapMultiLine) {
1096
+ this.doLayoutTabsNonWrapping(activeTab, activeIndex, options);
1097
+ }
1098
+ }
1099
+ doLayoutTabsWrapping(dimensions) {
1100
+ const [tabsAndActionsContainer, tabsContainer, editorToolbarContainer, tabsScrollbar] = assertAllDefined(this.tabsAndActionsContainer, this.tabsContainer, this.editorToolbarContainer, this.tabsScrollbar);
1101
+ const didTabsWrapMultiLine = tabsAndActionsContainer.classList.contains('wrapping');
1102
+ let tabsWrapMultiLine = didTabsWrapMultiLine;
1103
+ function updateTabsWrapping(enabled) {
1104
+ tabsWrapMultiLine = enabled;
1105
+ tabsAndActionsContainer.classList.toggle('wrapping', tabsWrapMultiLine);
1106
+ tabsContainer.style.setProperty('--last-tab-margin-right', tabsWrapMultiLine ? `${editorToolbarContainer.offsetWidth}px` : '0');
1107
+ }
1108
+ if (this.accessor.partOptions.wrapTabs) {
1109
+ const visibleTabsWidth = tabsContainer.offsetWidth;
1110
+ const allTabsWidth = tabsContainer.scrollWidth;
1111
+ const lastTabFitsWrapped = () => {
1112
+ const lastTab = this.getLastTab();
1113
+ if (!lastTab) {
1114
+ return true;
1115
+ }
1116
+ const lastTabOverlapWithToolbarWidth = lastTab.offsetWidth + editorToolbarContainer.offsetWidth - dimensions.available.width;
1117
+ if (lastTabOverlapWithToolbarWidth > 1) {
1118
+ return false;
1119
+ }
1120
+ return true;
1121
+ };
1122
+ if (tabsWrapMultiLine || (allTabsWidth > visibleTabsWidth && lastTabFitsWrapped())) {
1123
+ updateTabsWrapping(true);
1124
+ }
1125
+ if (tabsWrapMultiLine) {
1126
+ if ((tabsContainer.offsetHeight > dimensions.available.height) ||
1127
+ (allTabsWidth === visibleTabsWidth && tabsContainer.offsetHeight === TabsTitleControl.TAB_HEIGHT) ||
1128
+ (!lastTabFitsWrapped())
1129
+ ) {
1130
+ updateTabsWrapping(false);
1131
+ }
1132
+ }
1133
+ }
1134
+ else if (didTabsWrapMultiLine) {
1135
+ updateTabsWrapping(false);
1136
+ }
1137
+ if (tabsWrapMultiLine && !didTabsWrapMultiLine) {
1138
+ const visibleTabsWidth = tabsContainer.offsetWidth;
1139
+ tabsScrollbar.setScrollDimensions({
1140
+ width: visibleTabsWidth,
1141
+ scrollWidth: visibleTabsWidth
1142
+ });
1143
+ }
1144
+ if (tabsWrapMultiLine) {
1145
+ const tabs = ( new Map());
1146
+ let currentTabsPosY = undefined;
1147
+ let lastTab = undefined;
1148
+ for (const child of tabsContainer.children) {
1149
+ const tab = child;
1150
+ const tabPosY = tab.offsetTop;
1151
+ if (tabPosY !== currentTabsPosY) {
1152
+ currentTabsPosY = tabPosY;
1153
+ if (lastTab) {
1154
+ tabs.set(lastTab, true);
1155
+ }
1156
+ }
1157
+ lastTab = tab;
1158
+ tabs.set(tab, false);
1159
+ }
1160
+ if (lastTab) {
1161
+ tabs.set(lastTab, true);
1162
+ }
1163
+ for (const [tab, lastInRow] of tabs) {
1164
+ tab.classList.toggle('last-in-row', lastInRow);
1165
+ }
1166
+ }
1167
+ return tabsWrapMultiLine;
1168
+ }
1169
+ doLayoutTabsNonWrapping(activeTab, activeIndex, options) {
1170
+ const [tabsContainer, tabsScrollbar] = assertAllDefined(this.tabsContainer, this.tabsScrollbar);
1171
+ const visibleTabsWidth = tabsContainer.offsetWidth;
1172
+ const allTabsWidth = tabsContainer.scrollWidth;
1173
+ let stickyTabsWidth = 0;
1174
+ if (this.group.stickyCount > 0) {
1175
+ let stickyTabWidth = 0;
1176
+ switch (this.accessor.partOptions.pinnedTabSizing) {
1177
+ case 'compact':
1178
+ stickyTabWidth = TabsTitleControl.TAB_WIDTH.compact;
1179
+ break;
1180
+ case 'shrink':
1181
+ stickyTabWidth = TabsTitleControl.TAB_WIDTH.shrink;
1182
+ break;
1183
+ }
1184
+ stickyTabsWidth = this.group.stickyCount * stickyTabWidth;
1185
+ }
1186
+ let activeTabPositionStatic = this.accessor.partOptions.pinnedTabSizing !== 'normal' && this.group.isSticky(activeIndex);
1187
+ let availableTabsContainerWidth = visibleTabsWidth - stickyTabsWidth;
1188
+ if (this.group.stickyCount > 0 && availableTabsContainerWidth < TabsTitleControl.TAB_WIDTH.fit) {
1189
+ tabsContainer.classList.add('disable-sticky-tabs');
1190
+ availableTabsContainerWidth = visibleTabsWidth;
1191
+ stickyTabsWidth = 0;
1192
+ activeTabPositionStatic = false;
1193
+ }
1194
+ else {
1195
+ tabsContainer.classList.remove('disable-sticky-tabs');
1196
+ }
1197
+ let activeTabPosX;
1198
+ let activeTabWidth;
1199
+ if (!this.blockRevealActiveTab) {
1200
+ activeTabPosX = activeTab.offsetLeft;
1201
+ activeTabWidth = activeTab.offsetWidth;
1202
+ }
1203
+ const { width: oldVisibleTabsWidth, scrollWidth: oldAllTabsWidth } = tabsScrollbar.getScrollDimensions();
1204
+ tabsScrollbar.setScrollDimensions({
1205
+ width: visibleTabsWidth,
1206
+ scrollWidth: allTabsWidth
1207
+ });
1208
+ const dimensionsChanged = oldVisibleTabsWidth !== visibleTabsWidth || oldAllTabsWidth !== allTabsWidth;
1209
+ if (this.blockRevealActiveTab ||
1210
+ typeof activeTabPosX !== 'number' ||
1211
+ typeof activeTabWidth !== 'number' ||
1212
+ activeTabPositionStatic ||
1213
+ (!dimensionsChanged && !options?.forceRevealActiveTab)
1214
+ ) {
1215
+ this.blockRevealActiveTab = false;
1216
+ return;
1217
+ }
1218
+ const tabsContainerScrollPosX = tabsScrollbar.getScrollPosition().scrollLeft;
1219
+ const activeTabFits = activeTabWidth <= availableTabsContainerWidth;
1220
+ const adjustedActiveTabPosX = activeTabPosX - stickyTabsWidth;
1221
+ if (activeTabFits && tabsContainerScrollPosX + availableTabsContainerWidth < adjustedActiveTabPosX + activeTabWidth) {
1222
+ tabsScrollbar.setScrollPosition({
1223
+ scrollLeft: tabsContainerScrollPosX + (((adjustedActiveTabPosX + activeTabWidth) - (tabsContainerScrollPosX + availableTabsContainerWidth)) )
1224
+ });
1225
+ }
1226
+ else if (tabsContainerScrollPosX > adjustedActiveTabPosX || !activeTabFits) {
1227
+ tabsScrollbar.setScrollPosition({
1228
+ scrollLeft: adjustedActiveTabPosX
1229
+ });
1230
+ }
1231
+ }
1232
+ getTabAndIndex(editor) {
1233
+ const editorIndex = this.group.getIndexOfEditor(editor);
1234
+ const tab = this.getTabAtIndex(editorIndex);
1235
+ if (tab) {
1236
+ return [tab, editorIndex];
1237
+ }
1238
+ return undefined;
1239
+ }
1240
+ getTabAtIndex(editorIndex) {
1241
+ if (editorIndex >= 0) {
1242
+ const tabsContainer = assertIsDefined(this.tabsContainer);
1243
+ return tabsContainer.children[editorIndex];
1244
+ }
1245
+ return undefined;
1246
+ }
1247
+ getLastTab() {
1248
+ return this.getTabAtIndex(this.group.count - 1);
1249
+ }
1250
+ blockRevealActiveTabOnce() {
1251
+ this.blockRevealActiveTab = true;
1252
+ }
1253
+ originatesFromTabActionBar(e) {
1254
+ let element;
1255
+ if (e instanceof MouseEvent) {
1256
+ element = (e.target || e.srcElement);
1257
+ }
1258
+ else {
1259
+ element = e.initialTarget;
1260
+ }
1261
+ return !!findParentWithClass(element, 'action-item', 'tab');
1262
+ }
1263
+ async onDrop(e, targetIndex, tabsContainer) {
1264
+ EventHelper.stop(e, true);
1265
+ this.updateDropFeedback(tabsContainer, false);
1266
+ tabsContainer.classList.remove('scroll');
1267
+ if (this.groupTransfer.hasData(DraggedEditorGroupIdentifier.prototype)) {
1268
+ const data = this.groupTransfer.getData(DraggedEditorGroupIdentifier.prototype);
1269
+ if (Array.isArray(data)) {
1270
+ const sourceGroup = this.accessor.getGroup(data[0].identifier);
1271
+ if (sourceGroup) {
1272
+ const mergeGroupOptions = { index: targetIndex };
1273
+ if (!this.isMoveOperation(e, sourceGroup.id)) {
1274
+ mergeGroupOptions.mode = 0 ;
1275
+ }
1276
+ this.accessor.mergeGroup(sourceGroup, this.group, mergeGroupOptions);
1277
+ }
1278
+ this.group.focus();
1279
+ this.groupTransfer.clearData(DraggedEditorGroupIdentifier.prototype);
1280
+ }
1281
+ }
1282
+ else if (this.editorTransfer.hasData(DraggedEditorIdentifier.prototype)) {
1283
+ const data = this.editorTransfer.getData(DraggedEditorIdentifier.prototype);
1284
+ if (Array.isArray(data)) {
1285
+ const draggedEditor = data[0].identifier;
1286
+ const sourceGroup = this.accessor.getGroup(draggedEditor.groupId);
1287
+ if (sourceGroup) {
1288
+ if (this.isMoveOperation(e, draggedEditor.groupId, draggedEditor.editor)) {
1289
+ sourceGroup.moveEditor(draggedEditor.editor, this.group, { index: targetIndex });
1290
+ }
1291
+ else {
1292
+ sourceGroup.copyEditor(draggedEditor.editor, this.group, { index: targetIndex });
1293
+ }
1294
+ }
1295
+ this.group.focus();
1296
+ this.editorTransfer.clearData(DraggedEditorIdentifier.prototype);
1297
+ }
1298
+ }
1299
+ else if (this.treeItemsTransfer.hasData(DraggedTreeItemsIdentifier.prototype)) {
1300
+ const data = this.treeItemsTransfer.getData(DraggedTreeItemsIdentifier.prototype);
1301
+ if (Array.isArray(data)) {
1302
+ const editors = [];
1303
+ for (const id of data) {
1304
+ const dataTransferItem = await this.treeViewsDragAndDropService.removeDragOperationTransfer(id.identifier);
1305
+ if (dataTransferItem) {
1306
+ const treeDropData = await extractTreeDropData(dataTransferItem);
1307
+ editors.push(...( treeDropData.map(
1308
+ editor => ({ ...editor, options: { ...editor.options, pinned: true, index: targetIndex } })
1309
+ )));
1310
+ }
1311
+ }
1312
+ this.editorService.openEditors(editors, this.group, { validateTrust: true });
1313
+ }
1314
+ this.treeItemsTransfer.clearData(DraggedTreeItemsIdentifier.prototype);
1315
+ }
1316
+ else {
1317
+ const dropHandler = this.instantiationService.createInstance(ResourcesDropHandler, { allowWorkspaceOpen: false });
1318
+ dropHandler.handleDrop(e, () => this.group, () => this.group.focus(), targetIndex);
1319
+ }
1320
+ }
1321
+ isMoveOperation(e, sourceGroup, sourceEditor) {
1322
+ if (sourceEditor?.hasCapability(8 )) {
1323
+ return true;
1324
+ }
1325
+ const isCopy = (e.ctrlKey && !isMacintosh) || (e.altKey && isMacintosh);
1326
+ return !isCopy || sourceGroup === this.group.id;
1327
+ }
1328
+ dispose() {
1329
+ super.dispose();
1330
+ this.tabDisposables = dispose(this.tabDisposables);
1331
+ }
1332
+ };
1333
+ TabsTitleControl.SCROLLBAR_SIZES = {
1334
+ default: 3,
1335
+ large: 10
1336
+ };
1337
+ TabsTitleControl.TAB_WIDTH = {
1338
+ compact: 38,
1339
+ shrink: 80,
1340
+ fit: 120
1341
+ };
1342
+ TabsTitleControl.TAB_HEIGHT = 35;
1343
+ TabsTitleControl.DRAG_OVER_OPEN_TAB_THRESHOLD = 1500;
1344
+ TabsTitleControl.MOUSE_WHEEL_EVENT_THRESHOLD = 150;
1345
+ TabsTitleControl.MOUSE_WHEEL_DISTANCE_THRESHOLD = 1.5;
1346
+ TabsTitleControl = ( __decorate([
1347
+ ( __param(3, IContextMenuService)),
1348
+ ( __param(4, IInstantiationService)),
1349
+ ( __param(5, IContextKeyService)),
1350
+ ( __param(6, IKeybindingService)),
1351
+ ( __param(7, INotificationService)),
1352
+ ( __param(8, IMenuService)),
1353
+ ( __param(9, IQuickInputService)),
1354
+ ( __param(10, IThemeService)),
1355
+ ( __param(11, IConfigurationService)),
1356
+ ( __param(12, IFileService)),
1357
+ ( __param(13, IEditorService)),
1358
+ ( __param(14, IPathService)),
1359
+ ( __param(15, IEditorGroupsService)),
1360
+ ( __param(16, ITreeViewsDnDService))
1361
+ ], TabsTitleControl));
1362
+ registerThemingParticipant((theme, collector) => {
1363
+ const borderColor = theme.getColor(TAB_BORDER);
1364
+ if (borderColor) {
1365
+ collector.addRule(`
1366
+ .monaco-workbench .part.editor > .content .editor-group-container > .title > .tabs-and-actions-container.wrapping .tabs-container > .tab {
1367
+ border-bottom: 1px solid ${borderColor};
1368
+ }
1369
+ `);
1370
+ }
1371
+ const activeContrastBorderColor = theme.getColor(activeContrastBorder);
1372
+ if (activeContrastBorderColor) {
1373
+ collector.addRule(`
1374
+ .monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab.active,
1375
+ .monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab.active:hover {
1376
+ outline: 1px solid;
1377
+ outline-offset: -5px;
1378
+ }
1379
+
1380
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.active {
1381
+ outline: 1px dotted;
1382
+ outline-offset: -5px;
1383
+ }
1384
+
1385
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab:hover {
1386
+ outline: 1px dashed;
1387
+ outline-offset: -5px;
1388
+ }
1389
+
1390
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.active > .tab-actions .action-label,
1391
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.active:hover > .tab-actions .action-label,
1392
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.dirty > .tab-actions .action-label,
1393
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sticky > .tab-actions .action-label,
1394
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab:hover > .tab-actions .action-label {
1395
+ opacity: 1 !important;
1396
+ }
1397
+ `);
1398
+ }
1399
+ const contrastBorderColor = theme.getColor(contrastBorder);
1400
+ if (contrastBorderColor) {
1401
+ collector.addRule(`
1402
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .editor-actions {
1403
+ outline: 1px solid ${contrastBorderColor}
1404
+ }
1405
+ `);
1406
+ }
1407
+ const tabHoverBackground = theme.getColor(TAB_HOVER_BACKGROUND);
1408
+ if (tabHoverBackground) {
1409
+ collector.addRule(`
1410
+ .monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab:hover {
1411
+ background-color: ${tabHoverBackground} !important;
1412
+ }
1413
+ `);
1414
+ }
1415
+ const tabUnfocusedHoverBackground = theme.getColor(TAB_UNFOCUSED_HOVER_BACKGROUND);
1416
+ if (tabUnfocusedHoverBackground) {
1417
+ collector.addRule(`
1418
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab:hover {
1419
+ background-color: ${tabUnfocusedHoverBackground} !important;
1420
+ }
1421
+ `);
1422
+ }
1423
+ const tabHoverForeground = theme.getColor(TAB_HOVER_FOREGROUND);
1424
+ if (tabHoverForeground) {
1425
+ collector.addRule(`
1426
+ .monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab:hover {
1427
+ color: ${tabHoverForeground} !important;
1428
+ }
1429
+ `);
1430
+ }
1431
+ const tabUnfocusedHoverForeground = theme.getColor(TAB_UNFOCUSED_HOVER_FOREGROUND);
1432
+ if (tabUnfocusedHoverForeground) {
1433
+ collector.addRule(`
1434
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab:hover {
1435
+ color: ${tabUnfocusedHoverForeground} !important;
1436
+ }
1437
+ `);
1438
+ }
1439
+ const tabHoverBorder = theme.getColor(TAB_HOVER_BORDER);
1440
+ if (tabHoverBorder) {
1441
+ collector.addRule(`
1442
+ .monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab:hover > .tab-border-bottom-container {
1443
+ display: block;
1444
+ position: absolute;
1445
+ left: 0;
1446
+ pointer-events: none;
1447
+ width: 100%;
1448
+ z-index: 10;
1449
+ bottom: 0;
1450
+ height: 1px;
1451
+ background-color: ${tabHoverBorder};
1452
+ }
1453
+ `);
1454
+ }
1455
+ const tabUnfocusedHoverBorder = theme.getColor(TAB_UNFOCUSED_HOVER_BORDER);
1456
+ if (tabUnfocusedHoverBorder) {
1457
+ collector.addRule(`
1458
+ .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab:hover > .tab-border-bottom-container {
1459
+ display: block;
1460
+ position: absolute;
1461
+ left: 0;
1462
+ pointer-events: none;
1463
+ width: 100%;
1464
+ z-index: 10;
1465
+ bottom: 0;
1466
+ height: 1px;
1467
+ background-color: ${tabUnfocusedHoverBorder};
1468
+ }
1469
+ `);
1470
+ }
1471
+ if (!isHighContrast(theme.type) && !isSafari && !activeContrastBorderColor) {
1472
+ const workbenchBackground = WORKBENCH_BACKGROUND(theme);
1473
+ const editorBackgroundColor = theme.getColor(editorBackground);
1474
+ const editorGroupHeaderTabsBackground = theme.getColor(EDITOR_GROUP_HEADER_TABS_BACKGROUND);
1475
+ const editorDragAndDropBackground = theme.getColor(EDITOR_DRAG_AND_DROP_BACKGROUND);
1476
+ let adjustedTabBackground;
1477
+ if (editorGroupHeaderTabsBackground && editorBackgroundColor) {
1478
+ adjustedTabBackground = editorGroupHeaderTabsBackground.flatten(editorBackgroundColor, editorBackgroundColor, workbenchBackground);
1479
+ }
1480
+ let adjustedTabDragBackground;
1481
+ if (editorGroupHeaderTabsBackground && editorBackgroundColor && editorDragAndDropBackground && editorBackgroundColor) {
1482
+ adjustedTabDragBackground = editorGroupHeaderTabsBackground.flatten(editorBackgroundColor, editorDragAndDropBackground, editorBackgroundColor, workbenchBackground);
1483
+ }
1484
+ const makeTabHoverBackgroundRule = (color, colorDrag, hasFocus = false) => `
1485
+ .monaco-workbench .part.editor > .content:not(.dragged-over) .editor-group-container${hasFocus ? '.active' : ''} > .title .tabs-container > .tab.sizing-shrink:not(.dragged):not(.sticky-compact):hover > .tab-label > .monaco-icon-label-container::after,
1486
+ .monaco-workbench .part.editor > .content:not(.dragged-over) .editor-group-container${hasFocus ? '.active' : ''} > .title .tabs-container > .tab.sizing-fixed:not(.dragged):not(.sticky-compact):hover > .tab-label > .monaco-icon-label-container::after {
1487
+ background: linear-gradient(to left, ${color}, transparent) !important;
1488
+ }
1489
+
1490
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container${hasFocus ? '.active' : ''} > .title .tabs-container > .tab.sizing-shrink:not(.dragged):not(.sticky-compact):hover > .tab-label > .monaco-icon-label-container::after,
1491
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container${hasFocus ? '.active' : ''} > .title .tabs-container > .tab.sizing-fixed:not(.dragged):not(.sticky-compact):hover > .tab-label > .monaco-icon-label-container::after {
1492
+ background: linear-gradient(to left, ${colorDrag}, transparent) !important;
1493
+ }
1494
+ `;
1495
+ if (tabHoverBackground && adjustedTabBackground && adjustedTabDragBackground) {
1496
+ const adjustedColor = tabHoverBackground.flatten(adjustedTabBackground);
1497
+ const adjustedColorDrag = tabHoverBackground.flatten(adjustedTabDragBackground);
1498
+ collector.addRule(makeTabHoverBackgroundRule(adjustedColor, adjustedColorDrag, true));
1499
+ }
1500
+ if (tabUnfocusedHoverBackground && adjustedTabBackground && adjustedTabDragBackground) {
1501
+ const adjustedColor = tabUnfocusedHoverBackground.flatten(adjustedTabBackground);
1502
+ const adjustedColorDrag = tabUnfocusedHoverBackground.flatten(adjustedTabDragBackground);
1503
+ collector.addRule(makeTabHoverBackgroundRule(adjustedColor, adjustedColorDrag));
1504
+ }
1505
+ if (editorDragAndDropBackground && adjustedTabDragBackground) {
1506
+ const adjustedColorDrag = editorDragAndDropBackground.flatten(adjustedTabDragBackground);
1507
+ collector.addRule(`
1508
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container.active > .title .tabs-container > .tab.sizing-shrink.dragged-over:not(.active):not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after,
1509
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container:not(.active) > .title .tabs-container > .tab.sizing-shrink.dragged-over:not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after,
1510
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container.active > .title .tabs-container > .tab.sizing-fixed.dragged-over:not(.active):not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after,
1511
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container:not(.active) > .title .tabs-container > .tab.sizing-fixed.dragged-over:not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after {
1512
+ background: linear-gradient(to left, ${adjustedColorDrag}, transparent) !important;
1513
+ }
1514
+ `);
1515
+ }
1516
+ const makeTabBackgroundRule = (color, colorDrag, focused, active) => `
1517
+ .monaco-workbench .part.editor > .content:not(.dragged-over) .editor-group-container${focused ? '.active' : ':not(.active)'} > .title .tabs-container > .tab.sizing-shrink${active ? '.active' : ''}:not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after,
1518
+ .monaco-workbench .part.editor > .content:not(.dragged-over) .editor-group-container${focused ? '.active' : ':not(.active)'} > .title .tabs-container > .tab.sizing-fixed${active ? '.active' : ''}:not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after {
1519
+ background: linear-gradient(to left, ${color}, transparent);
1520
+ }
1521
+
1522
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container${focused ? '.active' : ':not(.active)'} > .title .tabs-container > .tab.sizing-shrink${active ? '.active' : ''}:not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after,
1523
+ .monaco-workbench .part.editor > .content.dragged-over .editor-group-container${focused ? '.active' : ':not(.active)'} > .title .tabs-container > .tab.sizing-fixed${active ? '.active' : ''}:not(.dragged):not(.sticky-compact) > .tab-label > .monaco-icon-label-container::after {
1524
+ background: linear-gradient(to left, ${colorDrag}, transparent);
1525
+ }
1526
+ `;
1527
+ const tabActiveBackground = theme.getColor(TAB_ACTIVE_BACKGROUND);
1528
+ if (tabActiveBackground && adjustedTabBackground && adjustedTabDragBackground) {
1529
+ const adjustedColor = tabActiveBackground.flatten(adjustedTabBackground);
1530
+ const adjustedColorDrag = tabActiveBackground.flatten(adjustedTabDragBackground);
1531
+ collector.addRule(makeTabBackgroundRule(adjustedColor, adjustedColorDrag, true, true));
1532
+ }
1533
+ const tabUnfocusedActiveBackground = theme.getColor(TAB_UNFOCUSED_ACTIVE_BACKGROUND);
1534
+ if (tabUnfocusedActiveBackground && adjustedTabBackground && adjustedTabDragBackground) {
1535
+ const adjustedColor = tabUnfocusedActiveBackground.flatten(adjustedTabBackground);
1536
+ const adjustedColorDrag = tabUnfocusedActiveBackground.flatten(adjustedTabDragBackground);
1537
+ collector.addRule(makeTabBackgroundRule(adjustedColor, adjustedColorDrag, false, true));
1538
+ }
1539
+ const tabInactiveBackground = theme.getColor(TAB_INACTIVE_BACKGROUND);
1540
+ if (tabInactiveBackground && adjustedTabBackground && adjustedTabDragBackground) {
1541
+ const adjustedColor = tabInactiveBackground.flatten(adjustedTabBackground);
1542
+ const adjustedColorDrag = tabInactiveBackground.flatten(adjustedTabDragBackground);
1543
+ collector.addRule(makeTabBackgroundRule(adjustedColor, adjustedColorDrag, true, false));
1544
+ }
1545
+ const tabUnfocusedInactiveBackground = theme.getColor(TAB_UNFOCUSED_INACTIVE_BACKGROUND);
1546
+ if (tabUnfocusedInactiveBackground && adjustedTabBackground && adjustedTabDragBackground) {
1547
+ const adjustedColor = tabUnfocusedInactiveBackground.flatten(adjustedTabBackground);
1548
+ const adjustedColorDrag = tabUnfocusedInactiveBackground.flatten(adjustedTabDragBackground);
1549
+ collector.addRule(makeTabBackgroundRule(adjustedColor, adjustedColorDrag, false, false));
1550
+ }
1551
+ }
1552
+ });
1553
+ export { TabsTitleControl };