@theia/core 1.46.0-next.200 → 1.46.0-next.230

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 (875) hide show
  1. package/README.md +6 -6
  2. package/i18n/nls.cs.json +12 -1
  3. package/i18n/nls.de.json +12 -1
  4. package/i18n/nls.es.json +12 -1
  5. package/i18n/nls.fr.json +12 -1
  6. package/i18n/nls.hu.json +12 -1
  7. package/i18n/nls.it.json +12 -1
  8. package/i18n/nls.ja.json +12 -1
  9. package/i18n/nls.json +12 -1
  10. package/i18n/nls.pl.json +12 -1
  11. package/i18n/nls.pt-br.json +12 -1
  12. package/i18n/nls.pt-pt.json +12 -1
  13. package/i18n/nls.ru.json +12 -1
  14. package/i18n/nls.zh-cn.json +12 -1
  15. package/lib/browser/about-dialog.js +14 -14
  16. package/lib/browser/about-dialog.js.map +1 -1
  17. package/lib/browser/authentication-service.js +12 -12
  18. package/lib/browser/authentication-service.js.map +1 -1
  19. package/lib/browser/breadcrumbs/breadcrumb-popup-container.d.ts +1 -1
  20. package/lib/browser/breadcrumbs/breadcrumb-popup-container.d.ts.map +1 -1
  21. package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +12 -12
  22. package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -1
  23. package/lib/browser/breadcrumbs/breadcrumb-renderer.js +2 -2
  24. package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
  25. package/lib/browser/breadcrumbs/breadcrumbs-constants.js +1 -1
  26. package/lib/browser/breadcrumbs/breadcrumbs-constants.js.map +1 -1
  27. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +14 -14
  28. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
  29. package/lib/browser/breadcrumbs/breadcrumbs-service.js +10 -10
  30. package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -1
  31. package/lib/browser/breadcrumbs/index.js +5 -5
  32. package/lib/browser/breadcrumbs/index.js.map +1 -1
  33. package/lib/browser/browser-clipboard-service.js +6 -6
  34. package/lib/browser/browser-clipboard-service.js.map +1 -1
  35. package/lib/browser/browser.d.ts +1 -1
  36. package/lib/browser/browser.d.ts.map +1 -1
  37. package/lib/browser/browser.js.map +1 -1
  38. package/lib/browser/color-application-contribution.js +10 -10
  39. package/lib/browser/color-application-contribution.js.map +1 -1
  40. package/lib/browser/color-registry.js +2 -2
  41. package/lib/browser/color-registry.js.map +1 -1
  42. package/lib/browser/command-open-handler.js +4 -4
  43. package/lib/browser/command-open-handler.js.map +1 -1
  44. package/lib/browser/common-frontend-contribution.d.ts +3 -3
  45. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  46. package/lib/browser/common-frontend-contribution.js +54 -54
  47. package/lib/browser/common-frontend-contribution.js.map +1 -1
  48. package/lib/browser/common-styling-participants.js +16 -16
  49. package/lib/browser/common-styling-participants.js.map +1 -1
  50. package/lib/browser/connection-status-service.js +26 -26
  51. package/lib/browser/connection-status-service.js.map +1 -1
  52. package/lib/browser/connection-status-service.spec.js.map +1 -1
  53. package/lib/browser/context-key-service.d.ts +2 -2
  54. package/lib/browser/context-key-service.d.ts.map +1 -1
  55. package/lib/browser/context-key-service.js +3 -3
  56. package/lib/browser/context-key-service.js.map +1 -1
  57. package/lib/browser/context-menu-renderer.d.ts +1 -1
  58. package/lib/browser/context-menu-renderer.d.ts.map +1 -1
  59. package/lib/browser/context-menu-renderer.js +2 -2
  60. package/lib/browser/context-menu-renderer.js.map +1 -1
  61. package/lib/browser/core-preferences.d.ts +1 -1
  62. package/lib/browser/core-preferences.d.ts.map +1 -1
  63. package/lib/browser/core-preferences.js +1 -1
  64. package/lib/browser/core-preferences.js.map +1 -1
  65. package/lib/browser/credentials-service.js +4 -4
  66. package/lib/browser/credentials-service.js.map +1 -1
  67. package/lib/browser/decoration-style.js +1 -1
  68. package/lib/browser/decoration-style.js.map +1 -1
  69. package/lib/browser/decorations-service.js +2 -2
  70. package/lib/browser/decorations-service.js.map +1 -1
  71. package/lib/browser/dialogs/react-dialog.js +4 -4
  72. package/lib/browser/dialogs/react-dialog.js.map +1 -1
  73. package/lib/browser/dialogs.d.ts +2 -2
  74. package/lib/browser/dialogs.d.ts.map +1 -1
  75. package/lib/browser/dialogs.js +31 -31
  76. package/lib/browser/dialogs.js.map +1 -1
  77. package/lib/browser/diff-uris.js +5 -5
  78. package/lib/browser/diff-uris.js.map +1 -1
  79. package/lib/browser/encoding-registry.js +6 -6
  80. package/lib/browser/encoding-registry.js.map +1 -1
  81. package/lib/browser/endpoint.js +1 -1
  82. package/lib/browser/endpoint.js.map +1 -1
  83. package/lib/browser/external-uri-service.js +2 -2
  84. package/lib/browser/external-uri-service.js.map +1 -1
  85. package/lib/browser/frontend-application-bindings.js.map +1 -1
  86. package/lib/browser/frontend-application-config-provider.js.map +1 -1
  87. package/lib/browser/frontend-application-contribution.js +3 -3
  88. package/lib/browser/frontend-application-contribution.js.map +1 -1
  89. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  90. package/lib/browser/frontend-application-module.js +8 -5
  91. package/lib/browser/frontend-application-module.js.map +1 -1
  92. package/lib/browser/frontend-application-state.js +4 -4
  93. package/lib/browser/frontend-application-state.js.map +1 -1
  94. package/lib/browser/frontend-application.js +21 -21
  95. package/lib/browser/frontend-application.js.map +1 -1
  96. package/lib/browser/hover-service.d.ts +1 -1
  97. package/lib/browser/hover-service.d.ts.map +1 -1
  98. package/lib/browser/hover-service.js +7 -7
  99. package/lib/browser/hover-service.js.map +1 -1
  100. package/lib/browser/http-open-handler.js +6 -6
  101. package/lib/browser/http-open-handler.js.map +1 -1
  102. package/lib/browser/i18n/language-quick-pick-service.js +8 -8
  103. package/lib/browser/i18n/language-quick-pick-service.js.map +1 -1
  104. package/lib/browser/icon-theme-contribution.js +8 -8
  105. package/lib/browser/icon-theme-contribution.js.map +1 -1
  106. package/lib/browser/icon-theme-service.js +14 -14
  107. package/lib/browser/icon-theme-service.js.map +1 -1
  108. package/lib/browser/index.d.ts +1 -0
  109. package/lib/browser/index.d.ts.map +1 -1
  110. package/lib/browser/index.js +33 -32
  111. package/lib/browser/index.js.map +1 -1
  112. package/lib/browser/json-schema-store.js +8 -8
  113. package/lib/browser/json-schema-store.js.map +1 -1
  114. package/lib/browser/keybinding.d.ts +1 -1
  115. package/lib/browser/keybinding.d.ts.map +1 -1
  116. package/lib/browser/keybinding.js +22 -23
  117. package/lib/browser/keybinding.js.map +1 -1
  118. package/lib/browser/keybinding.spec.js +4 -4
  119. package/lib/browser/keybinding.spec.js.map +1 -1
  120. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +7 -7
  121. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
  122. package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts +2 -2
  123. package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts.map +1 -1
  124. package/lib/browser/keyboard/browser-keyboard-layout-provider.js +13 -13
  125. package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
  126. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +1 -1
  127. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
  128. package/lib/browser/keyboard/index.js +4 -4
  129. package/lib/browser/keyboard/index.js.map +1 -1
  130. package/lib/browser/keyboard/keyboard-layout-service.js +8 -8
  131. package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
  132. package/lib/browser/keyboard/keyboard-layout-service.spec.js +1 -1
  133. package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
  134. package/lib/browser/keyboard/keys.js +1 -1
  135. package/lib/browser/keyboard/keys.js.map +1 -1
  136. package/lib/browser/label-parser.d.ts +1 -1
  137. package/lib/browser/label-parser.d.ts.map +1 -1
  138. package/lib/browser/label-parser.js +3 -3
  139. package/lib/browser/label-parser.js.map +1 -1
  140. package/lib/browser/label-provider.js +13 -13
  141. package/lib/browser/label-provider.js.map +1 -1
  142. package/lib/browser/label-provider.spec.js.map +1 -1
  143. package/lib/browser/language-icon-provider.js +10 -10
  144. package/lib/browser/language-icon-provider.js.map +1 -1
  145. package/lib/browser/language-service.js +2 -2
  146. package/lib/browser/language-service.js.map +1 -1
  147. package/lib/browser/logger-frontend-module.js.map +1 -1
  148. package/lib/browser/markdown-rendering/markdown-renderer.js +8 -8
  149. package/lib/browser/markdown-rendering/markdown-renderer.js.map +1 -1
  150. package/lib/browser/menu/browser-context-menu-renderer.js +4 -4
  151. package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
  152. package/lib/browser/menu/browser-menu-plugin.js +27 -27
  153. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  154. package/lib/browser/menu/context-menu-context.js +8 -8
  155. package/lib/browser/menu/context-menu-context.js.map +1 -1
  156. package/lib/browser/messaging/frontend-id-provider.js +2 -2
  157. package/lib/browser/messaging/frontend-id-provider.js.map +1 -1
  158. package/lib/browser/messaging/index.js +2 -2
  159. package/lib/browser/messaging/index.js.map +1 -1
  160. package/lib/browser/messaging/service-connection-provider.js +8 -8
  161. package/lib/browser/messaging/service-connection-provider.js.map +1 -1
  162. package/lib/browser/messaging/ws-connection-provider.js +4 -4
  163. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  164. package/lib/browser/messaging/ws-connection-source.js +16 -16
  165. package/lib/browser/messaging/ws-connection-source.js.map +1 -1
  166. package/lib/browser/mime-service.js +2 -2
  167. package/lib/browser/mime-service.js.map +1 -1
  168. package/lib/browser/navigatable-types.d.ts +1 -1
  169. package/lib/browser/navigatable-types.d.ts.map +1 -1
  170. package/lib/browser/navigatable-types.js +3 -3
  171. package/lib/browser/navigatable-types.js.map +1 -1
  172. package/lib/browser/navigatable.js +1 -1
  173. package/lib/browser/navigatable.js.map +1 -1
  174. package/lib/browser/open-with-service.js +4 -4
  175. package/lib/browser/open-with-service.js.map +1 -1
  176. package/lib/browser/opener-service.js +5 -5
  177. package/lib/browser/opener-service.js.map +1 -1
  178. package/lib/browser/performance/frontend-stopwatch.js +3 -3
  179. package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
  180. package/lib/browser/performance/index.js +2 -2
  181. package/lib/browser/performance/index.js.map +1 -1
  182. package/lib/browser/preferences/index.js +7 -7
  183. package/lib/browser/preferences/index.js.map +1 -1
  184. package/lib/browser/preferences/injectable-preference-proxy.js +14 -14
  185. package/lib/browser/preferences/injectable-preference-proxy.js.map +1 -1
  186. package/lib/browser/preferences/preference-configurations.js +4 -4
  187. package/lib/browser/preferences/preference-configurations.js.map +1 -1
  188. package/lib/browser/preferences/preference-contribution.js +11 -11
  189. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  190. package/lib/browser/preferences/preference-language-override-service.js +3 -3
  191. package/lib/browser/preferences/preference-language-override-service.js.map +1 -1
  192. package/lib/browser/preferences/preference-provider.js +6 -6
  193. package/lib/browser/preferences/preference-provider.js.map +1 -1
  194. package/lib/browser/preferences/preference-proxy.d.ts +2 -2
  195. package/lib/browser/preferences/preference-proxy.d.ts.map +1 -1
  196. package/lib/browser/preferences/preference-proxy.js.map +1 -1
  197. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  198. package/lib/browser/preferences/preference-service.d.ts +2 -2
  199. package/lib/browser/preferences/preference-service.d.ts.map +1 -1
  200. package/lib/browser/preferences/preference-service.js +14 -14
  201. package/lib/browser/preferences/preference-service.js.map +1 -1
  202. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  203. package/lib/browser/preferences/preference-validation-service.d.ts +2 -2
  204. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  205. package/lib/browser/preferences/preference-validation-service.js +6 -6
  206. package/lib/browser/preferences/preference-validation-service.js.map +1 -1
  207. package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
  208. package/lib/browser/preferences/test/index.js +3 -3
  209. package/lib/browser/preferences/test/index.js.map +1 -1
  210. package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
  211. package/lib/browser/preferences/test/mock-preference-service.js +3 -3
  212. package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
  213. package/lib/browser/preload/i18n-preload-contribution.js +4 -4
  214. package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
  215. package/lib/browser/preload/os-preload-contribution.js +4 -4
  216. package/lib/browser/preload/os-preload-contribution.js.map +1 -1
  217. package/lib/browser/preload/preloader.js +4 -4
  218. package/lib/browser/preload/preloader.js.map +1 -1
  219. package/lib/browser/preload/theme-preload-contribution.js +2 -2
  220. package/lib/browser/preload/theme-preload-contribution.js.map +1 -1
  221. package/lib/browser/progress-bar.js +14 -14
  222. package/lib/browser/progress-bar.js.map +1 -1
  223. package/lib/browser/progress-client.js +6 -6
  224. package/lib/browser/progress-client.js.map +1 -1
  225. package/lib/browser/progress-location-service.js +2 -2
  226. package/lib/browser/progress-location-service.js.map +1 -1
  227. package/lib/browser/progress-status-bar-item.js +4 -4
  228. package/lib/browser/progress-status-bar-item.js.map +1 -1
  229. package/lib/browser/quick-input/index.js +8 -8
  230. package/lib/browser/quick-input/index.js.map +1 -1
  231. package/lib/browser/quick-input/quick-command-frontend-contribution.js +6 -6
  232. package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
  233. package/lib/browser/quick-input/quick-command-service.js +12 -12
  234. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  235. package/lib/browser/quick-input/quick-help-service.js +6 -6
  236. package/lib/browser/quick-input/quick-help-service.js.map +1 -1
  237. package/lib/browser/quick-input/quick-input-frontend-contribution.js +4 -4
  238. package/lib/browser/quick-input/quick-input-frontend-contribution.js.map +1 -1
  239. package/lib/browser/quick-input/quick-input-service.js +1 -1
  240. package/lib/browser/quick-input/quick-input-service.js.map +1 -1
  241. package/lib/browser/quick-input/quick-pick-service-impl.js +4 -4
  242. package/lib/browser/quick-input/quick-pick-service-impl.js.map +1 -1
  243. package/lib/browser/quick-input/quick-view-service.js +6 -6
  244. package/lib/browser/quick-input/quick-view-service.js.map +1 -1
  245. package/lib/browser/request/browser-request-service.js +14 -14
  246. package/lib/browser/request/browser-request-service.js.map +1 -1
  247. package/lib/browser/resource-context-key.js +10 -10
  248. package/lib/browser/resource-context-key.js.map +1 -1
  249. package/lib/browser/saveable-service.d.ts +72 -0
  250. package/lib/browser/saveable-service.d.ts.map +1 -0
  251. package/lib/browser/saveable-service.js +294 -0
  252. package/lib/browser/saveable-service.js.map +1 -0
  253. package/lib/browser/saveable.d.ts +27 -6
  254. package/lib/browser/saveable.d.ts.map +1 -1
  255. package/lib/browser/saveable.js +33 -98
  256. package/lib/browser/saveable.js.map +1 -1
  257. package/lib/browser/secondary-window-handler.js +8 -8
  258. package/lib/browser/secondary-window-handler.js.map +1 -1
  259. package/lib/browser/shell/additional-views-menu-widget.d.ts +3 -3
  260. package/lib/browser/shell/additional-views-menu-widget.d.ts.map +1 -1
  261. package/lib/browser/shell/additional-views-menu-widget.js +14 -10
  262. package/lib/browser/shell/additional-views-menu-widget.js.map +1 -1
  263. package/lib/browser/shell/application-shell-mouse-tracker.js +5 -6
  264. package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
  265. package/lib/browser/shell/application-shell.d.ts +4 -4
  266. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  267. package/lib/browser/shell/application-shell.js +53 -57
  268. package/lib/browser/shell/application-shell.js.map +1 -1
  269. package/lib/browser/shell/current-widget-command-adapter.d.ts +2 -2
  270. package/lib/browser/shell/current-widget-command-adapter.d.ts.map +1 -1
  271. package/lib/browser/shell/current-widget-command-adapter.js.map +1 -1
  272. package/lib/browser/shell/index.js +7 -7
  273. package/lib/browser/shell/index.js.map +1 -1
  274. package/lib/browser/shell/shell-layout-restorer.js +15 -16
  275. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  276. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  277. package/lib/browser/shell/side-panel-handler.js +25 -24
  278. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  279. package/lib/browser/shell/side-panel-toolbar.js.map +1 -1
  280. package/lib/browser/shell/sidebar-bottom-menu-widget.js +2 -2
  281. package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
  282. package/lib/browser/shell/sidebar-menu-widget.js +7 -7
  283. package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
  284. package/lib/browser/shell/sidebar-top-menu-widget.js +2 -2
  285. package/lib/browser/shell/sidebar-top-menu-widget.js.map +1 -1
  286. package/lib/browser/shell/split-panels.js +2 -2
  287. package/lib/browser/shell/split-panels.js.map +1 -1
  288. package/lib/browser/shell/tab-bar-decorator.js +8 -8
  289. package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
  290. package/lib/browser/shell/tab-bar-toolbar/index.js +3 -3
  291. package/lib/browser/shell/tab-bar-toolbar/index.js.map +1 -1
  292. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +10 -10
  293. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  294. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +4 -4
  295. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -1
  296. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +24 -25
  297. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  298. package/lib/browser/shell/tab-bars.d.ts +6 -5
  299. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  300. package/lib/browser/shell/tab-bars.js +41 -52
  301. package/lib/browser/shell/tab-bars.js.map +1 -1
  302. package/lib/browser/shell/theia-dock-panel.js +4 -4
  303. package/lib/browser/shell/theia-dock-panel.js.map +1 -1
  304. package/lib/browser/shell/view-column-service.d.ts +24 -0
  305. package/lib/browser/shell/view-column-service.d.ts.map +1 -0
  306. package/lib/browser/shell/view-column-service.js +119 -0
  307. package/lib/browser/shell/view-column-service.js.map +1 -0
  308. package/lib/browser/shell/view-contribution.js +9 -9
  309. package/lib/browser/shell/view-contribution.js.map +1 -1
  310. package/lib/browser/source-tree/index.js +3 -3
  311. package/lib/browser/source-tree/index.js.map +1 -1
  312. package/lib/browser/source-tree/source-tree-widget.js +6 -6
  313. package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
  314. package/lib/browser/source-tree/source-tree.d.ts +1 -1
  315. package/lib/browser/source-tree/source-tree.d.ts.map +1 -1
  316. package/lib/browser/source-tree/source-tree.js +5 -5
  317. package/lib/browser/source-tree/source-tree.js.map +1 -1
  318. package/lib/browser/source-tree/tree-source.js +8 -8
  319. package/lib/browser/source-tree/tree-source.js.map +1 -1
  320. package/lib/browser/status-bar/index.js +3 -3
  321. package/lib/browser/status-bar/index.js.map +1 -1
  322. package/lib/browser/status-bar/status-bar-types.js +1 -1
  323. package/lib/browser/status-bar/status-bar-types.js.map +1 -1
  324. package/lib/browser/status-bar/status-bar-view-model.js +2 -2
  325. package/lib/browser/status-bar/status-bar-view-model.js.map +1 -1
  326. package/lib/browser/status-bar/status-bar.js +9 -9
  327. package/lib/browser/status-bar/status-bar.js.map +1 -1
  328. package/lib/browser/storage-service.js +12 -12
  329. package/lib/browser/storage-service.js.map +1 -1
  330. package/lib/browser/styling-service.js +10 -10
  331. package/lib/browser/styling-service.js.map +1 -1
  332. package/lib/browser/test/jsdom.js.map +1 -1
  333. package/lib/browser/test/mock-opener-service.js +2 -2
  334. package/lib/browser/test/mock-opener-service.js.map +1 -1
  335. package/lib/browser/test/mock-storage-service.d.ts +1 -1
  336. package/lib/browser/test/mock-storage-service.d.ts.map +1 -1
  337. package/lib/browser/test/mock-storage-service.js +2 -2
  338. package/lib/browser/test/mock-storage-service.js.map +1 -1
  339. package/lib/browser/theming.js +10 -10
  340. package/lib/browser/theming.js.map +1 -1
  341. package/lib/browser/tooltip-service.js +11 -11
  342. package/lib/browser/tooltip-service.js.map +1 -1
  343. package/lib/browser/tree/fuzzy-search.js +2 -2
  344. package/lib/browser/tree/fuzzy-search.js.map +1 -1
  345. package/lib/browser/tree/index.js +13 -13
  346. package/lib/browser/tree/index.js.map +1 -1
  347. package/lib/browser/tree/search-box-debounce.js +1 -1
  348. package/lib/browser/tree/search-box-debounce.js.map +1 -1
  349. package/lib/browser/tree/search-box.js +2 -2
  350. package/lib/browser/tree/search-box.js.map +1 -1
  351. package/lib/browser/tree/test/mock-selectable-tree-model.js +1 -1
  352. package/lib/browser/tree/test/mock-selectable-tree-model.js.map +1 -1
  353. package/lib/browser/tree/test/mock-tree-model.js +1 -1
  354. package/lib/browser/tree/test/mock-tree-model.js.map +1 -1
  355. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +6 -6
  356. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js.map +1 -1
  357. package/lib/browser/tree/tree-compression/compressed-tree-model.js +6 -6
  358. package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
  359. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +10 -10
  360. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  361. package/lib/browser/tree/tree-compression/index.js +4 -4
  362. package/lib/browser/tree/tree-compression/index.js.map +1 -1
  363. package/lib/browser/tree/tree-compression/tree-compression-service.d.ts +1 -1
  364. package/lib/browser/tree/tree-compression/tree-compression-service.d.ts.map +1 -1
  365. package/lib/browser/tree/tree-compression/tree-compression-service.js +2 -2
  366. package/lib/browser/tree/tree-compression/tree-compression-service.js.map +1 -1
  367. package/lib/browser/tree/tree-consistency.spec.js +1 -1
  368. package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
  369. package/lib/browser/tree/tree-container.d.ts +2 -2
  370. package/lib/browser/tree/tree-container.d.ts.map +1 -1
  371. package/lib/browser/tree/tree-container.js.map +1 -1
  372. package/lib/browser/tree/tree-decorator.js +6 -6
  373. package/lib/browser/tree/tree-decorator.js.map +1 -1
  374. package/lib/browser/tree/tree-expansion.js +9 -9
  375. package/lib/browser/tree/tree-expansion.js.map +1 -1
  376. package/lib/browser/tree/tree-focus-service.js +4 -4
  377. package/lib/browser/tree/tree-focus-service.js.map +1 -1
  378. package/lib/browser/tree/tree-iterator.js +2 -2
  379. package/lib/browser/tree/tree-iterator.js.map +1 -1
  380. package/lib/browser/tree/tree-iterator.spec.js.map +1 -1
  381. package/lib/browser/tree/tree-label-provider.js +2 -2
  382. package/lib/browser/tree/tree-label-provider.js.map +1 -1
  383. package/lib/browser/tree/tree-model.js +20 -20
  384. package/lib/browser/tree/tree-model.js.map +1 -1
  385. package/lib/browser/tree/tree-navigation.js +2 -2
  386. package/lib/browser/tree/tree-navigation.js.map +1 -1
  387. package/lib/browser/tree/tree-preference.d.ts +1 -1
  388. package/lib/browser/tree/tree-preference.d.ts.map +1 -1
  389. package/lib/browser/tree/tree-search.js +12 -12
  390. package/lib/browser/tree/tree-search.js.map +1 -1
  391. package/lib/browser/tree/tree-selectable.spec.js.map +1 -1
  392. package/lib/browser/tree/tree-selection-impl.js +10 -10
  393. package/lib/browser/tree/tree-selection-impl.js.map +1 -1
  394. package/lib/browser/tree/tree-selection-state.js +1 -1
  395. package/lib/browser/tree/tree-selection-state.js.map +1 -1
  396. package/lib/browser/tree/tree-selection-state.spec.js +2 -2
  397. package/lib/browser/tree/tree-selection-state.spec.js.map +1 -1
  398. package/lib/browser/tree/tree-selection.js +2 -2
  399. package/lib/browser/tree/tree-selection.js.map +1 -1
  400. package/lib/browser/tree/tree-view-welcome-widget.d.ts +1 -1
  401. package/lib/browser/tree/tree-view-welcome-widget.d.ts.map +1 -1
  402. package/lib/browser/tree/tree-view-welcome-widget.js +8 -8
  403. package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
  404. package/lib/browser/tree/tree-widget-selection.d.ts +1 -1
  405. package/lib/browser/tree/tree-widget-selection.d.ts.map +1 -1
  406. package/lib/browser/tree/tree-widget-selection.js +1 -1
  407. package/lib/browser/tree/tree-widget-selection.js.map +1 -1
  408. package/lib/browser/tree/tree-widget.js +27 -28
  409. package/lib/browser/tree/tree-widget.js.map +1 -1
  410. package/lib/browser/tree/tree.js +5 -5
  411. package/lib/browser/tree/tree.js.map +1 -1
  412. package/lib/browser/tree/tree.spec.js.map +1 -1
  413. package/lib/browser/user-working-directory-provider.js +6 -6
  414. package/lib/browser/user-working-directory-provider.js.map +1 -1
  415. package/lib/browser/view-container.js +37 -38
  416. package/lib/browser/view-container.js.map +1 -1
  417. package/lib/browser/widget-decoration.js +1 -1
  418. package/lib/browser/widget-decoration.js.map +1 -1
  419. package/lib/browser/widget-manager.js +6 -6
  420. package/lib/browser/widget-manager.js.map +1 -1
  421. package/lib/browser/widget-open-handler.d.ts +1 -1
  422. package/lib/browser/widget-open-handler.d.ts.map +1 -1
  423. package/lib/browser/widget-open-handler.js +10 -10
  424. package/lib/browser/widget-open-handler.js.map +1 -1
  425. package/lib/browser/widgets/alert-message.d.ts +1 -1
  426. package/lib/browser/widgets/alert-message.d.ts.map +1 -1
  427. package/lib/browser/widgets/enhanced-preview-widget.js +1 -1
  428. package/lib/browser/widgets/enhanced-preview-widget.js.map +1 -1
  429. package/lib/browser/widgets/extractable-widget.js +1 -1
  430. package/lib/browser/widgets/extractable-widget.js.map +1 -1
  431. package/lib/browser/widgets/index.js +4 -4
  432. package/lib/browser/widgets/index.js.map +1 -1
  433. package/lib/browser/widgets/previewable-widget.js +1 -1
  434. package/lib/browser/widgets/previewable-widget.js.map +1 -1
  435. package/lib/browser/widgets/react-renderer.d.ts +1 -1
  436. package/lib/browser/widgets/react-renderer.d.ts.map +1 -1
  437. package/lib/browser/widgets/react-renderer.js +5 -5
  438. package/lib/browser/widgets/react-renderer.js.map +1 -1
  439. package/lib/browser/widgets/react-widget.js +4 -4
  440. package/lib/browser/widgets/react-widget.js.map +1 -1
  441. package/lib/browser/widgets/select-component.js.map +1 -1
  442. package/lib/browser/widgets/widget.d.ts +2 -2
  443. package/lib/browser/widgets/widget.d.ts.map +1 -1
  444. package/lib/browser/widgets/widget.js +7 -7
  445. package/lib/browser/widgets/widget.js.map +1 -1
  446. package/lib/browser/window/default-secondary-window-service.d.ts +2 -0
  447. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  448. package/lib/browser/window/default-secondary-window-service.js +17 -12
  449. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  450. package/lib/browser/window/default-window-service.js +6 -6
  451. package/lib/browser/window/default-window-service.js.map +1 -1
  452. package/lib/browser/window/test/mock-window-service.js +2 -2
  453. package/lib/browser/window/test/mock-window-service.js.map +1 -1
  454. package/lib/browser/window/window-title-service.js +8 -8
  455. package/lib/browser/window/window-title-service.js.map +1 -1
  456. package/lib/browser/window/window-title-updater.js +6 -6
  457. package/lib/browser/window/window-title-updater.js.map +1 -1
  458. package/lib/browser/window-contribution.js +5 -5
  459. package/lib/browser/window-contribution.js.map +1 -1
  460. package/lib/browser-only/frontend-only-application-module.js.map +1 -1
  461. package/lib/browser-only/logger-frontend-only-module.js.map +1 -1
  462. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +4 -4
  463. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
  464. package/lib/browser-only/messaging/messaging-frontend-only-module.js.map +1 -1
  465. package/lib/browser-only/preload/frontend-only-preload-module.js.map +1 -1
  466. package/lib/common/application-error.js +1 -1
  467. package/lib/common/application-error.js.map +1 -1
  468. package/lib/common/array-utils.d.ts +2 -2
  469. package/lib/common/array-utils.d.ts.map +1 -1
  470. package/lib/common/array-utils.js +1 -1
  471. package/lib/common/array-utils.js.map +1 -1
  472. package/lib/common/buffer.js +8 -8
  473. package/lib/common/buffer.js.map +1 -1
  474. package/lib/common/cancellation.js +1 -1
  475. package/lib/common/cancellation.js.map +1 -1
  476. package/lib/common/char-code.d.ts +180 -180
  477. package/lib/common/char-code.d.ts.map +1 -1
  478. package/lib/common/collections.js.map +1 -1
  479. package/lib/common/color.d.ts +1 -1
  480. package/lib/common/color.d.ts.map +1 -1
  481. package/lib/common/color.js +1 -1
  482. package/lib/common/color.js.map +1 -1
  483. package/lib/common/command.js +6 -6
  484. package/lib/common/command.js.map +1 -1
  485. package/lib/common/contribution-filter/contribution-filter-registry.js +5 -5
  486. package/lib/common/contribution-filter/contribution-filter-registry.js.map +1 -1
  487. package/lib/common/contribution-filter/contribution-filter.d.ts +1 -1
  488. package/lib/common/contribution-filter/contribution-filter.d.ts.map +1 -1
  489. package/lib/common/contribution-filter/filter.d.ts +1 -1
  490. package/lib/common/contribution-filter/filter.d.ts.map +1 -1
  491. package/lib/common/contribution-filter/index.js +3 -3
  492. package/lib/common/contribution-filter/index.js.map +1 -1
  493. package/lib/common/contribution-provider.d.ts +1 -1
  494. package/lib/common/contribution-provider.d.ts.map +1 -1
  495. package/lib/common/contribution-provider.js +1 -1
  496. package/lib/common/contribution-provider.js.map +1 -1
  497. package/lib/common/disposable.d.ts +1 -1
  498. package/lib/common/disposable.d.ts.map +1 -1
  499. package/lib/common/disposable.js +2 -2
  500. package/lib/common/disposable.js.map +1 -1
  501. package/lib/common/encoding-service.js +2 -2
  502. package/lib/common/encoding-service.js.map +1 -1
  503. package/lib/common/env-variables/index.js +1 -1
  504. package/lib/common/env-variables/index.js.map +1 -1
  505. package/lib/common/event.d.ts +2 -2
  506. package/lib/common/event.d.ts.map +1 -1
  507. package/lib/common/event.js +2 -2
  508. package/lib/common/event.js.map +1 -1
  509. package/lib/common/file-uri.js +1 -1
  510. package/lib/common/file-uri.js.map +1 -1
  511. package/lib/common/frontend-application-state.d.ts +1 -1
  512. package/lib/common/frontend-application-state.d.ts.map +1 -1
  513. package/lib/common/frontend-application-state.js +1 -1
  514. package/lib/common/frontend-application-state.js.map +1 -1
  515. package/lib/common/glob.d.ts +2 -2
  516. package/lib/common/glob.d.ts.map +1 -1
  517. package/lib/common/glob.js +1 -1
  518. package/lib/common/glob.js.map +1 -1
  519. package/lib/common/hash.js.map +1 -1
  520. package/lib/common/i18n/localization.d.ts +1 -1
  521. package/lib/common/i18n/localization.d.ts.map +1 -1
  522. package/lib/common/i18n/localization.js +1 -1
  523. package/lib/common/i18n/localization.js.map +1 -1
  524. package/lib/common/index.js +33 -33
  525. package/lib/common/index.js.map +1 -1
  526. package/lib/common/json-schema.d.ts +1 -1
  527. package/lib/common/json-schema.d.ts.map +1 -1
  528. package/lib/common/keybinding.js +2 -2
  529. package/lib/common/keybinding.js.map +1 -1
  530. package/lib/common/keyboard/keyboard-layout-provider.d.ts +1 -0
  531. package/lib/common/keyboard/keyboard-layout-provider.d.ts.map +1 -1
  532. package/lib/common/keys.d.ts +2 -2
  533. package/lib/common/keys.d.ts.map +1 -1
  534. package/lib/common/keys.js +7 -7
  535. package/lib/common/keys.js.map +1 -1
  536. package/lib/common/logger-protocol.js +5 -5
  537. package/lib/common/logger-protocol.js.map +1 -1
  538. package/lib/common/logger-watcher.js +2 -2
  539. package/lib/common/logger-watcher.js.map +1 -1
  540. package/lib/common/logger.d.ts +3 -3
  541. package/lib/common/logger.d.ts.map +1 -1
  542. package/lib/common/logger.js +14 -14
  543. package/lib/common/logger.js.map +1 -1
  544. package/lib/common/logger.spec.js.map +1 -1
  545. package/lib/common/lsp-types.js +1 -1
  546. package/lib/common/lsp-types.js.map +1 -1
  547. package/lib/common/markdown-rendering/icon-utilities.js +1 -1
  548. package/lib/common/markdown-rendering/icon-utilities.js.map +1 -1
  549. package/lib/common/markdown-rendering/index.js +2 -2
  550. package/lib/common/markdown-rendering/index.js.map +1 -1
  551. package/lib/common/markdown-rendering/markdown-string.js +2 -2
  552. package/lib/common/markdown-rendering/markdown-string.js.map +1 -1
  553. package/lib/common/menu/action-menu-node.js.map +1 -1
  554. package/lib/common/menu/composite-menu-node.js +1 -1
  555. package/lib/common/menu/composite-menu-node.js.map +1 -1
  556. package/lib/common/menu/composite-menu-node.spec.js +5 -5
  557. package/lib/common/menu/composite-menu-node.spec.js.map +1 -1
  558. package/lib/common/menu/index.js +5 -5
  559. package/lib/common/menu/index.js.map +1 -1
  560. package/lib/common/menu/menu-adapter.d.ts +1 -1
  561. package/lib/common/menu/menu-adapter.d.ts.map +1 -1
  562. package/lib/common/menu/menu-adapter.js +8 -8
  563. package/lib/common/menu/menu-adapter.js.map +1 -1
  564. package/lib/common/menu/menu-model-registry.js +6 -6
  565. package/lib/common/menu/menu-model-registry.js.map +1 -1
  566. package/lib/common/menu/menu-types.d.ts +2 -2
  567. package/lib/common/menu/menu-types.d.ts.map +1 -1
  568. package/lib/common/menu/menu-types.js +5 -5
  569. package/lib/common/menu/menu-types.js.map +1 -1
  570. package/lib/common/menu/menu.spec.js.map +1 -1
  571. package/lib/common/message-rpc/channel.d.ts +1 -1
  572. package/lib/common/message-rpc/channel.d.ts.map +1 -1
  573. package/lib/common/message-rpc/channel.js +11 -11
  574. package/lib/common/message-rpc/channel.js.map +1 -1
  575. package/lib/common/message-rpc/msg-pack-extension-manager.d.ts +1 -1
  576. package/lib/common/message-rpc/msg-pack-extension-manager.d.ts.map +1 -1
  577. package/lib/common/message-rpc/msg-pack-extension-manager.js +3 -3
  578. package/lib/common/message-rpc/msg-pack-extension-manager.js.map +1 -1
  579. package/lib/common/message-rpc/rpc-message-encoder.d.ts +1 -1
  580. package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -1
  581. package/lib/common/message-rpc/rpc-message-encoder.js +5 -5
  582. package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -1
  583. package/lib/common/message-rpc/rpc-protocol.d.ts +1 -1
  584. package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
  585. package/lib/common/message-rpc/rpc-protocol.js +8 -8
  586. package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
  587. package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -1
  588. package/lib/common/message-service-protocol.js +4 -4
  589. package/lib/common/message-service-protocol.js.map +1 -1
  590. package/lib/common/message-service.js +4 -4
  591. package/lib/common/message-service.js.map +1 -1
  592. package/lib/common/messaging/connection-error-handler.d.ts +1 -1
  593. package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
  594. package/lib/common/messaging/connection-error-handler.js.map +1 -1
  595. package/lib/common/messaging/connection-management.js +1 -1
  596. package/lib/common/messaging/connection-management.js.map +1 -1
  597. package/lib/common/messaging/index.js +3 -3
  598. package/lib/common/messaging/index.js.map +1 -1
  599. package/lib/common/messaging/proxy-factory.d.ts +6 -6
  600. package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
  601. package/lib/common/messaging/proxy-factory.js.map +1 -1
  602. package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
  603. package/lib/common/messaging/socket-write-buffer.js.map +1 -1
  604. package/lib/common/messaging/web-socket-channel.d.ts +1 -1
  605. package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
  606. package/lib/common/messaging/web-socket-channel.js.map +1 -1
  607. package/lib/common/nls.js +1 -1
  608. package/lib/common/nls.js.map +1 -1
  609. package/lib/common/objects.js.map +1 -1
  610. package/lib/common/os.d.ts +1 -1
  611. package/lib/common/os.d.ts.map +1 -1
  612. package/lib/common/os.js +1 -1
  613. package/lib/common/os.js.map +1 -1
  614. package/lib/common/path.js +17 -17
  615. package/lib/common/path.js.map +1 -1
  616. package/lib/common/paths.js +11 -11
  617. package/lib/common/paths.js.map +1 -1
  618. package/lib/common/performance/index.js +3 -3
  619. package/lib/common/performance/index.js.map +1 -1
  620. package/lib/common/performance/measurement-protocol.d.ts +1 -1
  621. package/lib/common/performance/measurement-protocol.d.ts.map +1 -1
  622. package/lib/common/performance/measurement-protocol.js +6 -6
  623. package/lib/common/performance/measurement-protocol.js.map +1 -1
  624. package/lib/common/performance/stopwatch.js +8 -8
  625. package/lib/common/performance/stopwatch.js.map +1 -1
  626. package/lib/common/preferences/preference-schema.d.ts +1 -0
  627. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  628. package/lib/common/preferences/preference-schema.js +3 -3
  629. package/lib/common/preferences/preference-schema.js.map +1 -1
  630. package/lib/common/preferences/preference-scope.js +2 -2
  631. package/lib/common/preferences/preference-scope.js.map +1 -1
  632. package/lib/common/prioritizeable.js +1 -1
  633. package/lib/common/prioritizeable.js.map +1 -1
  634. package/lib/common/progress-service.js +6 -6
  635. package/lib/common/progress-service.js.map +1 -1
  636. package/lib/common/promise-util.js.map +1 -1
  637. package/lib/common/promise-util.spec.js.map +1 -1
  638. package/lib/common/quick-pick-service.d.ts +3 -3
  639. package/lib/common/quick-pick-service.d.ts.map +1 -1
  640. package/lib/common/quick-pick-service.js +3 -3
  641. package/lib/common/quick-pick-service.js.map +1 -1
  642. package/lib/common/reference.js.map +1 -1
  643. package/lib/common/resource.d.ts +1 -1
  644. package/lib/common/resource.d.ts.map +1 -1
  645. package/lib/common/resource.js +16 -16
  646. package/lib/common/resource.js.map +1 -1
  647. package/lib/common/selection-command-handler.d.ts +1 -1
  648. package/lib/common/selection-command-handler.d.ts.map +1 -1
  649. package/lib/common/selection-command-handler.js.map +1 -1
  650. package/lib/common/selection-service.js +2 -2
  651. package/lib/common/selection-service.js.map +1 -1
  652. package/lib/common/selection.js +1 -1
  653. package/lib/common/selection.js.map +1 -1
  654. package/lib/common/severity.js +2 -2
  655. package/lib/common/severity.js.map +1 -1
  656. package/lib/common/stream.js +1 -1
  657. package/lib/common/stream.js.map +1 -1
  658. package/lib/common/strings.js +2 -2
  659. package/lib/common/strings.js.map +1 -1
  660. package/lib/common/ternary-search-tree.js +21 -21
  661. package/lib/common/ternary-search-tree.js.map +1 -1
  662. package/lib/common/test/expect.js.map +1 -1
  663. package/lib/common/test/mock-logger.js +2 -2
  664. package/lib/common/test/mock-logger.js.map +1 -1
  665. package/lib/common/test/mock-resource-provider.js +3 -3
  666. package/lib/common/test/mock-resource-provider.js.map +1 -1
  667. package/lib/common/theme.d.ts +1 -1
  668. package/lib/common/theme.d.ts.map +1 -1
  669. package/lib/common/types.d.ts +8 -8
  670. package/lib/common/types.d.ts.map +1 -1
  671. package/lib/common/types.js.map +1 -1
  672. package/lib/common/types.spec.js.map +1 -1
  673. package/lib/common/uri-command-handler.js +1 -1
  674. package/lib/common/uri-command-handler.js.map +1 -1
  675. package/lib/common/uri.js +6 -6
  676. package/lib/common/uri.js.map +1 -1
  677. package/lib/common/view-column.js +1 -1
  678. package/lib/common/view-column.js.map +1 -1
  679. package/lib/electron-browser/electron-clipboard-service.js +2 -2
  680. package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
  681. package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +6 -6
  682. package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js.map +1 -1
  683. package/lib/electron-browser/menu/electron-context-menu-renderer.js +17 -17
  684. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  685. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -1
  686. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  687. package/lib/electron-browser/menu/electron-main-menu-factory.js +12 -12
  688. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  689. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +1 -1
  690. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  691. package/lib/electron-browser/menu/electron-menu-contribution.js +31 -31
  692. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  693. package/lib/electron-browser/menu/electron-menu-module.js.map +1 -1
  694. package/lib/electron-browser/messaging/electron-frontend-id-provider.js +2 -2
  695. package/lib/electron-browser/messaging/electron-frontend-id-provider.js.map +1 -1
  696. package/lib/electron-browser/messaging/electron-ipc-connection-source.js +3 -3
  697. package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
  698. package/lib/electron-browser/messaging/electron-local-ws-connection-source.js +2 -2
  699. package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -1
  700. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
  701. package/lib/electron-browser/messaging/electron-ws-connection-source.js +3 -3
  702. package/lib/electron-browser/messaging/electron-ws-connection-source.js.map +1 -1
  703. package/lib/electron-browser/preload.js.map +1 -1
  704. package/lib/electron-browser/window/electron-frontend-application-state.js +2 -2
  705. package/lib/electron-browser/window/electron-frontend-application-state.js.map +1 -1
  706. package/lib/electron-browser/window/electron-secondary-window-service.js +2 -2
  707. package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
  708. package/lib/electron-browser/window/electron-window-preferences.d.ts +1 -1
  709. package/lib/electron-browser/window/electron-window-preferences.d.ts.map +1 -1
  710. package/lib/electron-browser/window/electron-window-preferences.js +2 -2
  711. package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
  712. package/lib/electron-browser/window/electron-window-service.js +14 -14
  713. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  714. package/lib/electron-common/electron-api.d.ts +3 -3
  715. package/lib/electron-common/electron-api.d.ts.map +1 -1
  716. package/lib/electron-main/electron-api-main.js +5 -5
  717. package/lib/electron-main/electron-api-main.js.map +1 -1
  718. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  719. package/lib/electron-main/electron-main-application.js +17 -16
  720. package/lib/electron-main/electron-main-application.js.map +1 -1
  721. package/lib/electron-main/electron-main-window-service-impl.js +4 -4
  722. package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
  723. package/lib/electron-main/electron-security-token-service.js +4 -4
  724. package/lib/electron-main/electron-security-token-service.js.map +1 -1
  725. package/lib/electron-main/event-utils.js.map +1 -1
  726. package/lib/electron-main/messaging/electron-messaging-contribution.js +10 -10
  727. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  728. package/lib/electron-main/messaging/electron-messaging-service.js +1 -1
  729. package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
  730. package/lib/electron-main/theia-electron-window.d.ts +1 -1
  731. package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
  732. package/lib/electron-main/theia-electron-window.js +12 -12
  733. package/lib/electron-main/theia-electron-window.js.map +1 -1
  734. package/lib/electron-node/cli/electron-backend-cli-module.d.ts +4 -0
  735. package/lib/electron-node/cli/electron-backend-cli-module.d.ts.map +1 -0
  736. package/lib/electron-node/cli/electron-backend-cli-module.js +25 -0
  737. package/lib/electron-node/cli/electron-backend-cli-module.js.map +1 -0
  738. package/lib/electron-node/cli/electron-cli-contribution.d.ts +23 -0
  739. package/lib/electron-node/cli/electron-cli-contribution.d.ts.map +1 -0
  740. package/lib/electron-node/cli/electron-cli-contribution.js +35 -0
  741. package/lib/electron-node/cli/electron-cli-contribution.js.map +1 -0
  742. package/lib/electron-node/hosting/electron-ws-origin-validator.js +4 -4
  743. package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
  744. package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +2 -2
  745. package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js.map +1 -1
  746. package/lib/electron-node/request/electron-backend-request-service.js +2 -2
  747. package/lib/electron-node/request/electron-backend-request-service.js.map +1 -1
  748. package/lib/electron-node/token/electron-token-backend-contribution.js +4 -4
  749. package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
  750. package/lib/electron-node/token/electron-token-validator.js +6 -6
  751. package/lib/electron-node/token/electron-token-validator.js.map +1 -1
  752. package/lib/node/application-server.js +4 -4
  753. package/lib/node/application-server.js.map +1 -1
  754. package/lib/node/backend-application-config-provider.js.map +1 -1
  755. package/lib/node/backend-application-module.js.map +1 -1
  756. package/lib/node/backend-application.d.ts +3 -1
  757. package/lib/node/backend-application.d.ts.map +1 -1
  758. package/lib/node/backend-application.js +16 -16
  759. package/lib/node/backend-application.js.map +1 -1
  760. package/lib/node/cli.js +7 -7
  761. package/lib/node/cli.js.map +1 -1
  762. package/lib/node/cli.spec.js.map +1 -1
  763. package/lib/node/console-logger-server.js +10 -10
  764. package/lib/node/console-logger-server.js.map +1 -1
  765. package/lib/node/console-logger-server.spec.js +5 -5
  766. package/lib/node/debug.js.map +1 -1
  767. package/lib/node/dynamic-require.js.map +1 -1
  768. package/lib/node/env-variables/env-variables-server.js +3 -3
  769. package/lib/node/env-variables/env-variables-server.js.map +1 -1
  770. package/lib/node/env-variables/index.js +1 -1
  771. package/lib/node/env-variables/index.js.map +1 -1
  772. package/lib/node/environment-utils.js +2 -2
  773. package/lib/node/environment-utils.js.map +1 -1
  774. package/lib/node/environment-utils.spec.js.map +1 -1
  775. package/lib/node/file-uri.spec.js.map +1 -1
  776. package/lib/node/filesystem-locking.js +2 -2
  777. package/lib/node/filesystem-locking.js.map +1 -1
  778. package/lib/node/hosting/backend-application-hosts.js +6 -6
  779. package/lib/node/hosting/backend-application-hosts.js.map +1 -1
  780. package/lib/node/hosting/ws-origin-validator.js +4 -4
  781. package/lib/node/hosting/ws-origin-validator.js.map +1 -1
  782. package/lib/node/i18n/localization-contribution.js +6 -6
  783. package/lib/node/i18n/localization-contribution.js.map +1 -1
  784. package/lib/node/i18n/localization-provider.js +3 -3
  785. package/lib/node/i18n/localization-provider.js.map +1 -1
  786. package/lib/node/i18n/localization-server.js +6 -6
  787. package/lib/node/i18n/localization-server.js.map +1 -1
  788. package/lib/node/i18n/theia-localization-contribution.js +2 -2
  789. package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
  790. package/lib/node/index.js +5 -5
  791. package/lib/node/index.js.map +1 -1
  792. package/lib/node/key-store-server.js +2 -2
  793. package/lib/node/key-store-server.js.map +1 -1
  794. package/lib/node/logger-backend-module.js.map +1 -1
  795. package/lib/node/logger-cli-contribution.js +4 -4
  796. package/lib/node/logger-cli-contribution.js.map +1 -1
  797. package/lib/node/logger-cli-contribution.spec.js.map +1 -1
  798. package/lib/node/main.d.ts +2 -0
  799. package/lib/node/main.d.ts.map +1 -1
  800. package/lib/node/messaging/binary-message-pipe.js +3 -3
  801. package/lib/node/messaging/binary-message-pipe.js.map +1 -1
  802. package/lib/node/messaging/connection-container-module.d.ts +3 -3
  803. package/lib/node/messaging/connection-container-module.d.ts.map +1 -1
  804. package/lib/node/messaging/default-messaging-service.js +10 -10
  805. package/lib/node/messaging/default-messaging-service.js.map +1 -1
  806. package/lib/node/messaging/index.js +3 -3
  807. package/lib/node/messaging/index.js.map +1 -1
  808. package/lib/node/messaging/ipc-channel.js.map +1 -1
  809. package/lib/node/messaging/ipc-connection-provider.d.ts +2 -1
  810. package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
  811. package/lib/node/messaging/ipc-connection-provider.js +4 -4
  812. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  813. package/lib/node/messaging/ipc-protocol.d.ts +1 -1
  814. package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
  815. package/lib/node/messaging/ipc-protocol.js +1 -1
  816. package/lib/node/messaging/ipc-protocol.js.map +1 -1
  817. package/lib/node/messaging/messaging-listeners.js +4 -4
  818. package/lib/node/messaging/messaging-listeners.js.map +1 -1
  819. package/lib/node/messaging/messaging-service.js +1 -1
  820. package/lib/node/messaging/messaging-service.js.map +1 -1
  821. package/lib/node/messaging/test/test-web-socket-channel.d.ts +1 -0
  822. package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
  823. package/lib/node/messaging/test/test-web-socket-channel.js +2 -2
  824. package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
  825. package/lib/node/messaging/websocket-endpoint.d.ts +1 -0
  826. package/lib/node/messaging/websocket-endpoint.d.ts.map +1 -1
  827. package/lib/node/messaging/websocket-endpoint.js +6 -6
  828. package/lib/node/messaging/websocket-endpoint.js.map +1 -1
  829. package/lib/node/messaging/websocket-frontend-connection-service.js +4 -4
  830. package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
  831. package/lib/node/os-backend-provider.js +2 -2
  832. package/lib/node/os-backend-provider.js.map +1 -1
  833. package/lib/node/performance/index.js +2 -2
  834. package/lib/node/performance/index.js.map +1 -1
  835. package/lib/node/performance/node-stopwatch.js +3 -3
  836. package/lib/node/performance/node-stopwatch.js.map +1 -1
  837. package/lib/node/process-utils.js +2 -2
  838. package/lib/node/process-utils.js.map +1 -1
  839. package/lib/node/remote/backend-remote-service.js +2 -2
  840. package/lib/node/remote/backend-remote-service.js.map +1 -1
  841. package/lib/node/request/backend-request-facade.js +4 -4
  842. package/lib/node/request/backend-request-facade.js.map +1 -1
  843. package/lib/node/request/proxy-cli-contribution.js +4 -4
  844. package/lib/node/request/proxy-cli-contribution.js.map +1 -1
  845. package/lib/node/ws-request-validators.js +4 -4
  846. package/lib/node/ws-request-validators.js.map +1 -1
  847. package/package.json +10 -7
  848. package/src/browser/common-frontend-contribution.ts +3 -3
  849. package/src/browser/core-preferences.ts +1 -1
  850. package/src/browser/frontend-application-module.ts +13 -7
  851. package/src/browser/index.ts +1 -0
  852. package/src/browser/keybinding.spec.ts +2 -1
  853. package/src/browser/saveable-service.ts +328 -0
  854. package/src/browser/saveable.ts +43 -97
  855. package/src/browser/shell/additional-views-menu-widget.tsx +5 -5
  856. package/src/browser/shell/application-shell.ts +8 -15
  857. package/src/browser/shell/side-panel-handler.ts +2 -1
  858. package/src/browser/shell/tab-bars.ts +39 -56
  859. package/src/browser/shell/view-column-service.ts +125 -0
  860. package/src/browser/test/mock-storage-service.ts +1 -1
  861. package/src/browser/window/default-secondary-window-service.ts +6 -2
  862. package/src/common/encoding-service.ts +1 -1
  863. package/src/common/i18n/nls.metadata.json +11381 -8583
  864. package/src/common/preferences/preference-schema.ts +1 -0
  865. package/src/common/selection-command-handler.ts +1 -1
  866. package/src/electron-browser/window/electron-window-preferences.ts +1 -1
  867. package/src/electron-main/electron-main-application.ts +1 -0
  868. package/src/electron-node/cli/electron-backend-cli-module.ts +24 -0
  869. package/src/electron-node/cli/electron-cli-contribution.ts +35 -0
  870. package/src/node/cli.ts +2 -2
  871. package/lib/browser/save-resource-service.d.ts +0 -36
  872. package/lib/browser/save-resource-service.d.ts.map +0 -1
  873. package/lib/browser/save-resource-service.js +0 -65
  874. package/lib/browser/save-resource-service.js.map +0 -1
  875. package/src/browser/save-resource-service.ts +0 -60
@@ -0,0 +1,328 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2022 Arm and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ import type { ApplicationShell } from './shell';
18
+ import { injectable } from 'inversify';
19
+ import { UNTITLED_SCHEME, URI, Disposable, DisposableCollection, Emitter, Event } from '../common';
20
+ import { Navigatable, NavigatableWidget } from './navigatable-types';
21
+ import { AutoSaveMode, Saveable, SaveableSource, SaveableWidget, SaveOptions, SaveReason, setDirty, close, PostCreationSaveableWidget, ShouldSaveDialog } from './saveable';
22
+ import { waitForClosed, Widget } from './widgets';
23
+ import { FrontendApplicationContribution } from './frontend-application-contribution';
24
+ import { FrontendApplication } from './frontend-application';
25
+ import throttle = require('lodash.throttle');
26
+
27
+ @injectable()
28
+ export class SaveableService implements FrontendApplicationContribution {
29
+
30
+ protected saveThrottles = new Map<Widget, AutoSaveThrottle>();
31
+ protected saveMode: AutoSaveMode = 'off';
32
+ protected saveDelay = 1000;
33
+ protected shell: ApplicationShell;
34
+
35
+ protected readonly onDidAutoSaveChangeEmitter = new Emitter<AutoSaveMode>();
36
+ protected readonly onDidAutoSaveDelayChangeEmitter = new Emitter<number>();
37
+
38
+ get onDidAutoSaveChange(): Event<AutoSaveMode> {
39
+ return this.onDidAutoSaveChangeEmitter.event;
40
+ }
41
+
42
+ get onDidAutoSaveDelayChange(): Event<number> {
43
+ return this.onDidAutoSaveDelayChangeEmitter.event;
44
+ }
45
+
46
+ get autoSave(): AutoSaveMode {
47
+ return this.saveMode;
48
+ }
49
+
50
+ set autoSave(value: AutoSaveMode) {
51
+ this.updateAutoSaveMode(value);
52
+ }
53
+
54
+ get autoSaveDelay(): number {
55
+ return this.saveDelay;
56
+ }
57
+
58
+ set autoSaveDelay(value: number) {
59
+ this.updateAutoSaveDelay(value);
60
+ }
61
+
62
+ onDidInitializeLayout(app: FrontendApplication): void {
63
+ this.shell = app.shell;
64
+ // Register restored editors first
65
+ for (const widget of this.shell.widgets) {
66
+ const saveable = Saveable.get(widget);
67
+ if (saveable) {
68
+ this.registerSaveable(widget, saveable);
69
+ }
70
+ }
71
+ this.shell.onDidAddWidget(e => {
72
+ const saveable = Saveable.get(e);
73
+ if (saveable) {
74
+ this.registerSaveable(e, saveable);
75
+ }
76
+ });
77
+ this.shell.onDidChangeCurrentWidget(e => {
78
+ if (this.saveMode === 'onFocusChange') {
79
+ const widget = e.oldValue;
80
+ const saveable = Saveable.get(widget);
81
+ if (saveable && widget && this.shouldAutoSave(widget, saveable)) {
82
+ saveable.save({
83
+ saveReason: SaveReason.FocusChange
84
+ });
85
+ }
86
+ }
87
+ });
88
+ this.shell.onDidRemoveWidget(e => {
89
+ this.saveThrottles.get(e)?.dispose();
90
+ this.saveThrottles.delete(e);
91
+ });
92
+ }
93
+
94
+ protected updateAutoSaveMode(mode: AutoSaveMode): void {
95
+ this.saveMode = mode;
96
+ this.onDidAutoSaveChangeEmitter.fire(mode);
97
+ if (mode === 'onFocusChange') {
98
+ // If the new mode is onFocusChange, we need to save all dirty documents that are not focused
99
+ const widgets = this.shell.widgets;
100
+ for (const widget of widgets) {
101
+ const saveable = Saveable.get(widget);
102
+ if (saveable && widget !== this.shell.currentWidget && this.shouldAutoSave(widget, saveable)) {
103
+ saveable.save({
104
+ saveReason: SaveReason.FocusChange
105
+ });
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ protected updateAutoSaveDelay(delay: number): void {
112
+ this.saveDelay = delay;
113
+ this.onDidAutoSaveDelayChangeEmitter.fire(delay);
114
+ }
115
+
116
+ registerSaveable(widget: Widget, saveable: Saveable): Disposable {
117
+ const saveThrottle = new AutoSaveThrottle(
118
+ saveable,
119
+ this,
120
+ () => {
121
+ if (this.saveMode === 'afterDelay' && this.shouldAutoSave(widget, saveable)) {
122
+ saveable.save({
123
+ saveReason: SaveReason.AfterDelay
124
+ });
125
+ }
126
+ },
127
+ this.addBlurListener(widget, saveable)
128
+ );
129
+ this.saveThrottles.set(widget, saveThrottle);
130
+ this.applySaveableWidget(widget, saveable);
131
+ return saveThrottle;
132
+ }
133
+
134
+ protected addBlurListener(widget: Widget, saveable: Saveable): Disposable {
135
+ const document = widget.node.ownerDocument;
136
+ const listener = (() => {
137
+ if (this.saveMode === 'onWindowChange' && !this.windowHasFocus(document) && this.shouldAutoSave(widget, saveable)) {
138
+ saveable.save({
139
+ saveReason: SaveReason.FocusChange
140
+ });
141
+ }
142
+ }).bind(this);
143
+ document.addEventListener('blur', listener);
144
+ return Disposable.create(() => {
145
+ document.removeEventListener('blur', listener);
146
+ });
147
+ }
148
+
149
+ protected windowHasFocus(document: Document): boolean {
150
+ if (document.visibilityState === 'hidden') {
151
+ return false;
152
+ } else if (document.hasFocus()) {
153
+ return true;
154
+ }
155
+ // TODO: Add support for iframes
156
+ return false;
157
+ }
158
+
159
+ protected shouldAutoSave(widget: Widget, saveable: Saveable): boolean {
160
+ const uri = NavigatableWidget.getUri(widget);
161
+ if (uri?.scheme === UNTITLED_SCHEME) {
162
+ // Never auto-save untitled documents
163
+ return false;
164
+ } else {
165
+ return saveable.dirty;
166
+ }
167
+ }
168
+
169
+ protected applySaveableWidget(widget: Widget, saveable: Saveable): void {
170
+ if (SaveableWidget.is(widget)) {
171
+ return;
172
+ }
173
+ const saveableWidget = widget as PostCreationSaveableWidget;
174
+ setDirty(saveableWidget, saveable.dirty);
175
+ saveable.onDirtyChanged(() => setDirty(saveableWidget, saveable.dirty));
176
+ const closeWithSaving = this.createCloseWithSaving();
177
+ const closeWithoutSaving = () => this.closeWithoutSaving(saveableWidget, false);
178
+ Object.assign(saveableWidget, {
179
+ closeWithoutSaving,
180
+ closeWithSaving,
181
+ close: closeWithSaving,
182
+ [close]: saveableWidget.close,
183
+ });
184
+ }
185
+
186
+ protected createCloseWithSaving(): (this: SaveableWidget, options?: SaveableWidget.CloseOptions) => Promise<void> {
187
+ let closing = false;
188
+ const doSave = this.closeWithSaving.bind(this);
189
+ return async function (this: SaveableWidget, options?: SaveableWidget.CloseOptions): Promise<void> {
190
+ if (closing) {
191
+ return;
192
+ }
193
+ closing = true;
194
+ try {
195
+ await doSave(this, options);
196
+ } finally {
197
+ closing = false;
198
+ }
199
+ };
200
+ }
201
+
202
+ protected async closeWithSaving(widget: PostCreationSaveableWidget, options?: SaveableWidget.CloseOptions): Promise<void> {
203
+ const result = await this.shouldSaveWidget(widget, options);
204
+ if (typeof result === 'boolean') {
205
+ if (result) {
206
+ await this.save(widget, {
207
+ saveReason: SaveReason.AfterDelay
208
+ });
209
+ if (!Saveable.isDirty(widget)) {
210
+ await widget.closeWithoutSaving();
211
+ }
212
+ } else {
213
+ await widget.closeWithoutSaving();
214
+ }
215
+ }
216
+ }
217
+
218
+ protected async shouldSaveWidget(widget: PostCreationSaveableWidget, options?: SaveableWidget.CloseOptions): Promise<boolean | undefined> {
219
+ if (!Saveable.isDirty(widget)) {
220
+ return false;
221
+ }
222
+ if (this.autoSave !== 'off') {
223
+ return true;
224
+ }
225
+ const notLastWithDocument = !Saveable.closingWidgetWouldLoseSaveable(widget, Array.from(this.saveThrottles.keys()));
226
+ if (notLastWithDocument) {
227
+ return widget.closeWithoutSaving(false).then(() => undefined);
228
+ }
229
+ if (options && options.shouldSave) {
230
+ return options.shouldSave();
231
+ }
232
+ return new ShouldSaveDialog(widget).open();
233
+ }
234
+
235
+ protected async closeWithoutSaving(widget: PostCreationSaveableWidget, doRevert: boolean = true): Promise<void> {
236
+ const saveable = Saveable.get(widget);
237
+ if (saveable && doRevert && saveable.dirty && saveable.revert) {
238
+ await saveable.revert();
239
+ }
240
+ widget[close]();
241
+ return waitForClosed(widget);
242
+ }
243
+
244
+ /**
245
+ * Indicate if the document can be saved ('Save' command should be disable if not).
246
+ */
247
+ canSave(widget?: Widget): widget is Widget & (Saveable | SaveableSource) {
248
+ return Saveable.isDirty(widget) && (this.canSaveNotSaveAs(widget) || this.canSaveAs(widget));
249
+ }
250
+
251
+ canSaveNotSaveAs(widget?: Widget): widget is Widget & (Saveable | SaveableSource) {
252
+ // By default, we never allow a document to be saved if it is untitled.
253
+ return Boolean(widget && NavigatableWidget.getUri(widget)?.scheme !== UNTITLED_SCHEME);
254
+ }
255
+
256
+ /**
257
+ * Saves the document
258
+ *
259
+ * No op if the widget is not saveable.
260
+ */
261
+ async save(widget: Widget | undefined, options?: SaveOptions): Promise<URI | undefined> {
262
+ if (this.canSaveNotSaveAs(widget)) {
263
+ await Saveable.save(widget, options);
264
+ return NavigatableWidget.getUri(widget);
265
+ } else if (this.canSaveAs(widget)) {
266
+ return this.saveAs(widget, options);
267
+ }
268
+ }
269
+
270
+ canSaveAs(saveable?: Widget): saveable is Widget & SaveableSource & Navigatable {
271
+ return false;
272
+ }
273
+
274
+ saveAs(sourceWidget: Widget & SaveableSource & Navigatable, options?: SaveOptions): Promise<URI | undefined> {
275
+ return Promise.reject('Unsupported: The base SaveResourceService does not support saveAs action.');
276
+ }
277
+ }
278
+
279
+ export class AutoSaveThrottle implements Disposable {
280
+
281
+ private _saveable: Saveable;
282
+ private _callback: () => void;
283
+ private _saveService: SaveableService;
284
+ private _disposable: DisposableCollection;
285
+ private _throttle?: ReturnType<typeof throttle>;
286
+
287
+ constructor(saveable: Saveable, saveService: SaveableService, callback: () => void, ...disposables: Disposable[]) {
288
+ this._callback = callback;
289
+ this._saveable = saveable;
290
+ this._saveService = saveService;
291
+ this._disposable = new DisposableCollection(
292
+ ...disposables,
293
+ saveable.onContentChanged(() => {
294
+ this.throttledSave();
295
+ }),
296
+ saveable.onDirtyChanged(() => {
297
+ this.throttledSave();
298
+ }),
299
+ saveService.onDidAutoSaveChange(() => {
300
+ this.throttledSave();
301
+ }),
302
+ saveService.onDidAutoSaveDelayChange(() => {
303
+ this.throttledSave(true);
304
+ })
305
+ );
306
+ }
307
+
308
+ protected throttledSave(reset = false): void {
309
+ this._throttle?.cancel();
310
+ if (reset) {
311
+ this._throttle = undefined;
312
+ }
313
+ if (this._saveService.autoSave === 'afterDelay' && this._saveable.dirty) {
314
+ if (!this._throttle) {
315
+ this._throttle = throttle(() => this._callback(), this._saveService.autoSaveDelay, {
316
+ leading: false,
317
+ trailing: true
318
+ });
319
+ }
320
+ this._throttle();
321
+ }
322
+ }
323
+
324
+ dispose(): void {
325
+ this._disposable.dispose();
326
+ }
327
+
328
+ }
@@ -20,14 +20,23 @@ import { Emitter, Event } from '../common/event';
20
20
  import { MaybePromise } from '../common/types';
21
21
  import { Key } from './keyboard/keys';
22
22
  import { AbstractDialog } from './dialogs';
23
- import { waitForClosed } from './widgets';
24
23
  import { nls } from '../common/nls';
25
- import { Disposable, isObject } from '../common';
24
+ import { DisposableCollection, isObject } from '../common';
25
+
26
+ export type AutoSaveMode = 'off' | 'afterDelay' | 'onFocusChange' | 'onWindowChange';
26
27
 
27
28
  export interface Saveable {
28
29
  readonly dirty: boolean;
30
+ /**
31
+ * This event is fired when the content of the `dirty` variable changes.
32
+ */
29
33
  readonly onDirtyChanged: Event<void>;
30
- readonly autoSave: 'off' | 'afterDelay' | 'onFocusChange' | 'onWindowChange';
34
+ /**
35
+ * This event is fired when the content of the saveable changes.
36
+ * While `onDirtyChanged` is fired to notify the UI that the widget is dirty,
37
+ * `onContentChanged` is used for the auto save throttling.
38
+ */
39
+ readonly onContentChanged: Event<void>;
31
40
  /**
32
41
  * Saves dirty changes.
33
42
  */
@@ -53,11 +62,15 @@ export interface SaveableSource {
53
62
  export class DelegatingSaveable implements Saveable {
54
63
  dirty = false;
55
64
  protected readonly onDirtyChangedEmitter = new Emitter<void>();
65
+ protected readonly onContentChangedEmitter = new Emitter<void>();
56
66
 
57
67
  get onDirtyChanged(): Event<void> {
58
68
  return this.onDirtyChangedEmitter.event;
59
69
  }
60
- autoSave: 'off' | 'afterDelay' | 'onFocusChange' | 'onWindowChange' = 'off';
70
+
71
+ get onContentChanged(): Event<void> {
72
+ return this.onContentChangedEmitter.event;
73
+ }
61
74
 
62
75
  async save(options?: SaveOptions): Promise<void> {
63
76
  await this._delegate?.save(options);
@@ -68,16 +81,19 @@ export class DelegatingSaveable implements Saveable {
68
81
  applySnapshot?(snapshot: object): void;
69
82
 
70
83
  protected _delegate?: Saveable;
71
- protected toDispose?: Disposable;
84
+ protected toDispose = new DisposableCollection();
72
85
 
73
86
  set delegate(delegate: Saveable) {
74
- this.toDispose?.dispose();
87
+ this.toDispose.dispose();
88
+ this.toDispose = new DisposableCollection();
75
89
  this._delegate = delegate;
76
- this.toDispose = delegate.onDirtyChanged(() => {
90
+ this.toDispose.push(delegate.onDirtyChanged(() => {
77
91
  this.dirty = delegate.dirty;
78
92
  this.onDirtyChangedEmitter.fire();
79
- });
80
- this.autoSave = delegate.autoSave;
93
+ }));
94
+ this.toDispose.push(delegate.onContentChanged(() => {
95
+ this.onContentChangedEmitter.fire();
96
+ }));
81
97
  if (this.dirty !== delegate.dirty) {
82
98
  this.dirty = delegate.dirty;
83
99
  this.onDirtyChangedEmitter.fire();
@@ -131,52 +147,6 @@ export namespace Saveable {
131
147
  }
132
148
  }
133
149
 
134
- async function closeWithoutSaving(this: PostCreationSaveableWidget, doRevert: boolean = true): Promise<void> {
135
- const saveable = get(this);
136
- if (saveable && doRevert && saveable.dirty && saveable.revert) {
137
- await saveable.revert();
138
- }
139
- this[close]();
140
- return waitForClosed(this);
141
- }
142
-
143
- function createCloseWithSaving(
144
- getOtherSaveables?: () => Array<Widget | SaveableWidget>,
145
- doSave?: (widget: Widget, options?: SaveOptions) => Promise<void>
146
- ): (this: SaveableWidget, options?: SaveableWidget.CloseOptions) => Promise<void> {
147
- let closing = false;
148
- return async function (this: SaveableWidget, options: SaveableWidget.CloseOptions): Promise<void> {
149
- if (closing) { return; }
150
- const saveable = get(this);
151
- if (!saveable) { return; }
152
- closing = true;
153
- try {
154
- const result = await shouldSave(saveable, () => {
155
- const notLastWithDocument = !closingWidgetWouldLoseSaveable(this, getOtherSaveables?.() ?? []);
156
- if (notLastWithDocument) {
157
- return this.closeWithoutSaving(false).then(() => undefined);
158
- }
159
- if (options && options.shouldSave) {
160
- return options.shouldSave();
161
- }
162
- return new ShouldSaveDialog(this).open();
163
- });
164
- if (typeof result === 'boolean') {
165
- if (result) {
166
- await (doSave?.(this) ?? Saveable.save(this));
167
- if (!isDirty(this)) {
168
- await this.closeWithoutSaving();
169
- }
170
- } else {
171
- await this.closeWithoutSaving();
172
- }
173
- }
174
- } finally {
175
- closing = false;
176
- }
177
- };
178
- }
179
-
180
150
  export async function confirmSaveBeforeClose(toClose: Iterable<Widget>, others: Widget[]): Promise<boolean | undefined> {
181
151
  for (const widget of toClose) {
182
152
  const saveable = Saveable.get(widget);
@@ -197,49 +167,9 @@ export namespace Saveable {
197
167
  return true;
198
168
  }
199
169
 
200
- /**
201
- * @param widget the widget that may be closed
202
- * @param others widgets that will not be closed.
203
- * @returns `true` if widget is saveable and no widget among the `others` refers to the same saveable. `false` otherwise.
204
- */
205
- function closingWidgetWouldLoseSaveable(widget: Widget, others: Widget[]): boolean {
206
- const saveable = get(widget);
207
- return !!saveable && !others.some(otherWidget => otherWidget !== widget && get(otherWidget) === saveable);
208
- }
209
-
210
- export function apply(
211
- widget: Widget,
212
- getOtherSaveables?: () => Array<Widget | SaveableWidget>,
213
- doSave?: (widget: Widget, options?: SaveOptions) => Promise<void>,
214
- ): SaveableWidget | undefined {
215
- if (SaveableWidget.is(widget)) {
216
- return widget;
217
- }
170
+ export function closingWidgetWouldLoseSaveable(widget: Widget, others: Widget[]): boolean {
218
171
  const saveable = Saveable.get(widget);
219
- if (!saveable) {
220
- return undefined;
221
- }
222
- const saveableWidget = widget as SaveableWidget;
223
- setDirty(saveableWidget, saveable.dirty);
224
- saveable.onDirtyChanged(() => setDirty(saveableWidget, saveable.dirty));
225
- const closeWithSaving = createCloseWithSaving(getOtherSaveables, doSave);
226
- return Object.assign(saveableWidget, {
227
- closeWithoutSaving,
228
- closeWithSaving,
229
- close: closeWithSaving,
230
- [close]: saveableWidget.close,
231
- });
232
- }
233
- export async function shouldSave(saveable: Saveable, cb: () => MaybePromise<boolean | undefined>): Promise<boolean | undefined> {
234
- if (!saveable.dirty) {
235
- return false;
236
- }
237
-
238
- if (saveable.autoSave !== 'off') {
239
- return true;
240
- }
241
-
242
- return cb();
172
+ return !!saveable && !others.some(otherWidget => otherWidget !== widget && Saveable.get(otherWidget) === saveable);
243
173
  }
244
174
  }
245
175
 
@@ -302,11 +232,27 @@ export const enum FormatType {
302
232
  DIRTY
303
233
  };
304
234
 
235
+ export enum SaveReason {
236
+ Manual = 1,
237
+ AfterDelay = 2,
238
+ FocusChange = 3
239
+ }
240
+
241
+ export namespace SaveReason {
242
+ export function isManual(reason?: number): reason is typeof SaveReason.Manual {
243
+ return reason === SaveReason.Manual;
244
+ }
245
+ }
246
+
305
247
  export interface SaveOptions {
306
248
  /**
307
249
  * Formatting type to apply when saving.
308
250
  */
309
251
  readonly formatType?: FormatType;
252
+ /**
253
+ * The reason for saving the resource.
254
+ */
255
+ readonly saveReason?: SaveReason;
310
256
  }
311
257
 
312
258
  /**
@@ -23,13 +23,13 @@ import { SideTabBar } from './tab-bars';
23
23
  export const AdditionalViewsMenuWidgetFactory = Symbol('AdditionalViewsMenuWidgetFactory');
24
24
  export type AdditionalViewsMenuWidgetFactory = (side: 'left' | 'right') => AdditionalViewsMenuWidget;
25
25
 
26
- export const ADDITIONAL_VIEWS_MENU_PATH: MenuPath = ['additional_views_menu'];
27
-
26
+ export const AdditionalViewsMenuPath = Symbol('AdditionalViewsMenuPath');
28
27
  @injectable()
29
28
  export class AdditionalViewsMenuWidget extends SidebarMenuWidget {
30
29
  static readonly ID = 'sidebar.additional.views';
31
30
 
32
- side: 'left' | 'right';
31
+ @inject(AdditionalViewsMenuPath)
32
+ protected menuPath: MenuPath;
33
33
 
34
34
  @inject(CommandRegistry)
35
35
  protected readonly commandRegistry: CommandRegistry;
@@ -47,7 +47,7 @@ export class AdditionalViewsMenuWidget extends SidebarMenuWidget {
47
47
  title: nls.localizeByDefault('Additional Views'),
48
48
  iconClass: codicon('ellipsis'),
49
49
  id: AdditionalViewsMenuWidget.ID,
50
- menuPath: ADDITIONAL_VIEWS_MENU_PATH,
50
+ menuPath: this.menuPath,
51
51
  order: 0
52
52
  });
53
53
  }
@@ -66,6 +66,6 @@ export class AdditionalViewsMenuWidget extends SidebarMenuWidget {
66
66
  });
67
67
  }
68
68
  }));
69
- this.menuDisposables.push(this.menuModelRegistry.registerMenuAction(ADDITIONAL_VIEWS_MENU_PATH, { commandId: command.id, order: index.toString() }));
69
+ this.menuDisposables.push(this.menuModelRegistry.registerMenuAction(this.menuPath, { commandId: command.id, order: index.toString() }));
70
70
  }
71
71
  }
@@ -24,7 +24,7 @@ import { Message } from '@phosphor/messaging';
24
24
  import { IDragEvent } from '@phosphor/dragdrop';
25
25
  import { RecursivePartial, Event as CommonEvent, DisposableCollection, Disposable, environment, isObject } from '../../common';
26
26
  import { animationFrame } from '../browser';
27
- import { Saveable, SaveableWidget, SaveOptions, SaveableSource } from '../saveable';
27
+ import { Saveable, SaveableWidget, SaveOptions } from '../saveable';
28
28
  import { StatusBarImpl, StatusBarEntry, StatusBarAlignment } from '../status-bar/status-bar';
29
29
  import { TheiaDockPanel, BOTTOM_AREA_ID, MAIN_AREA_ID } from './theia-dock-panel';
30
30
  import { SidePanelHandler, SidePanel, SidePanelHandlerFactory } from './side-panel-handler';
@@ -38,7 +38,7 @@ import { waitForRevealed, waitForClosed, PINNED_CLASS } from '../widgets';
38
38
  import { CorePreferences } from '../core-preferences';
39
39
  import { BreadcrumbsRendererFactory } from '../breadcrumbs/breadcrumbs-renderer';
40
40
  import { Deferred } from '../../common/promise-util';
41
- import { SaveResourceService } from '../save-resource-service';
41
+ import { SaveableService } from '../saveable-service';
42
42
  import { nls } from '../../common/nls';
43
43
  import { SecondaryWindowHandler } from '../secondary-window-handler';
44
44
  import URI from '../../common/uri';
@@ -272,7 +272,7 @@ export class ApplicationShell extends Widget {
272
272
  @inject(FrontendApplicationStateService) protected readonly applicationStateService: FrontendApplicationStateService,
273
273
  @inject(ApplicationShellOptions) @optional() options: RecursivePartial<ApplicationShell.Options> = {},
274
274
  @inject(CorePreferences) protected readonly corePreferences: CorePreferences,
275
- @inject(SaveResourceService) protected readonly saveResourceService: SaveResourceService,
275
+ @inject(SaveableService) protected readonly saveableService: SaveableService,
276
276
  @inject(SecondaryWindowHandler) protected readonly secondaryWindowHandler: SecondaryWindowHandler,
277
277
  @inject(WindowService) protected readonly windowService: WindowService
278
278
  ) {
@@ -1231,13 +1231,6 @@ export class ApplicationShell extends Widget {
1231
1231
  }
1232
1232
  this.tracker.add(widget);
1233
1233
  this.checkActivation(widget);
1234
- Saveable.apply(
1235
- widget,
1236
- () => this.widgets.filter((maybeSaveable): maybeSaveable is Widget & SaveableSource => !!Saveable.get(maybeSaveable)),
1237
- async (toSave, options) => {
1238
- await this.saveResourceService.save(toSave, options);
1239
- },
1240
- );
1241
1234
  if (ApplicationShell.TrackableWidgetProvider.is(widget)) {
1242
1235
  for (const toTrack of widget.getTrackableWidgets()) {
1243
1236
  this.track(toTrack);
@@ -2043,21 +2036,21 @@ export class ApplicationShell extends Widget {
2043
2036
  * Test whether the current widget is dirty.
2044
2037
  */
2045
2038
  canSave(): boolean {
2046
- return this.saveResourceService.canSave(this.currentWidget);
2039
+ return this.saveableService.canSave(this.currentWidget);
2047
2040
  }
2048
2041
 
2049
2042
  /**
2050
2043
  * Save the current widget if it is dirty.
2051
2044
  */
2052
2045
  async save(options?: SaveOptions): Promise<void> {
2053
- await this.saveResourceService.save(this.currentWidget, options);
2046
+ await this.saveableService.save(this.currentWidget, options);
2054
2047
  }
2055
2048
 
2056
2049
  /**
2057
2050
  * Test whether there is a dirty widget.
2058
2051
  */
2059
2052
  canSaveAll(): boolean {
2060
- return this.tracker.widgets.some(widget => this.saveResourceService.canSave(widget));
2053
+ return this.tracker.widgets.some(widget => this.saveableService.canSave(widget));
2061
2054
  }
2062
2055
 
2063
2056
  /**
@@ -2065,8 +2058,8 @@ export class ApplicationShell extends Widget {
2065
2058
  */
2066
2059
  async saveAll(options?: SaveOptions): Promise<void> {
2067
2060
  for (const widget of this.widgets) {
2068
- if (this.saveResourceService.canSaveNotSaveAs(widget)) {
2069
- await this.saveResourceService.save(widget, options);
2061
+ if (this.saveableService.canSaveNotSaveAs(widget)) {
2062
+ await this.saveableService.save(widget, options);
2070
2063
  }
2071
2064
  }
2072
2065
  }
@@ -211,6 +211,7 @@ export class SidePanelHandler {
211
211
  protected createAdditionalViewsWidget(): AdditionalViewsMenuWidget {
212
212
  const widget = this.additionalViewsMenuFactory(this.side);
213
213
  widget.addClass('theia-sidebar-menu');
214
+ widget.addClass('theia-additional-views-menu');
214
215
  return widget;
215
216
  }
216
217
 
@@ -653,7 +654,7 @@ export class SidePanelHandler {
653
654
  }
654
655
 
655
656
  protected onTabsOverflowChanged(sender: SideTabBar, event: { titles: Title<Widget>[], startIndex: number }): void {
656
- if (event.startIndex >= 0 && event.startIndex <= sender.currentIndex) {
657
+ if (event.startIndex > 0 && event.startIndex <= sender.currentIndex) {
657
658
  sender.revealTab(sender.currentIndex);
658
659
  } else {
659
660
  this.additionalViewsMenu.updateAdditionalViews(sender, event);