@theia/core 1.27.0-next.9 → 1.27.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 (436) hide show
  1. package/README.md +6 -7
  2. package/i18n/nls.cs.json +52 -6
  3. package/i18n/nls.de.json +52 -6
  4. package/i18n/nls.es.json +52 -6
  5. package/i18n/nls.fr.json +52 -6
  6. package/i18n/nls.hu.json +55 -9
  7. package/i18n/nls.it.json +52 -6
  8. package/i18n/nls.ja.json +52 -6
  9. package/i18n/nls.json +52 -6
  10. package/i18n/nls.pl.json +52 -6
  11. package/i18n/nls.pt-br.json +52 -6
  12. package/i18n/nls.pt-pt.json +52 -6
  13. package/i18n/nls.ru.json +52 -6
  14. package/i18n/nls.zh-cn.json +52 -6
  15. package/lib/browser/color-application-contribution.d.ts +2 -2
  16. package/lib/browser/color-application-contribution.d.ts.map +1 -1
  17. package/lib/browser/color-application-contribution.js +15 -16
  18. package/lib/browser/color-application-contribution.js.map +1 -1
  19. package/lib/browser/color-registry.d.ts +0 -4
  20. package/lib/browser/color-registry.d.ts.map +1 -1
  21. package/lib/browser/color-registry.js +0 -14
  22. package/lib/browser/color-registry.js.map +1 -1
  23. package/lib/browser/common-frontend-contribution.d.ts +4 -0
  24. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  25. package/lib/browser/common-frontend-contribution.js +157 -163
  26. package/lib/browser/common-frontend-contribution.js.map +1 -1
  27. package/lib/browser/common-styling-participants.d.ts +28 -0
  28. package/lib/browser/common-styling-participants.d.ts.map +1 -0
  29. package/lib/browser/common-styling-participants.js +319 -0
  30. package/lib/browser/common-styling-participants.js.map +1 -0
  31. package/lib/browser/connection-status-service.d.ts.map +1 -1
  32. package/lib/browser/connection-status-service.js +2 -2
  33. package/lib/browser/connection-status-service.js.map +1 -1
  34. package/lib/browser/connection-status-service.spec.js +1 -2
  35. package/lib/browser/connection-status-service.spec.js.map +1 -1
  36. package/lib/browser/context-menu-renderer.d.ts +1 -5
  37. package/lib/browser/context-menu-renderer.d.ts.map +1 -1
  38. package/lib/browser/context-menu-renderer.js +10 -30
  39. package/lib/browser/context-menu-renderer.js.map +1 -1
  40. package/lib/browser/core-preferences.d.ts +1 -0
  41. package/lib/browser/core-preferences.d.ts.map +1 -1
  42. package/lib/browser/core-preferences.js +5 -0
  43. package/lib/browser/core-preferences.js.map +1 -1
  44. package/lib/browser/decoration-style.d.ts +1 -0
  45. package/lib/browser/decoration-style.d.ts.map +1 -1
  46. package/lib/browser/decoration-style.js +6 -2
  47. package/lib/browser/decoration-style.js.map +1 -1
  48. package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
  49. package/lib/browser/frontend-application-bindings.js +1 -3
  50. package/lib/browser/frontend-application-bindings.js.map +1 -1
  51. package/lib/browser/frontend-application-config-provider.d.ts +1 -0
  52. package/lib/browser/frontend-application-config-provider.d.ts.map +1 -1
  53. package/lib/browser/frontend-application-config-provider.js +2 -1
  54. package/lib/browser/frontend-application-config-provider.js.map +1 -1
  55. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  56. package/lib/browser/frontend-application-module.js +9 -3
  57. package/lib/browser/frontend-application-module.js.map +1 -1
  58. package/lib/browser/i18n/i18n-frontend-module.d.ts.map +1 -1
  59. package/lib/browser/i18n/i18n-frontend-module.js +2 -0
  60. package/lib/browser/i18n/i18n-frontend-module.js.map +1 -1
  61. package/lib/browser/i18n/language-quick-pick-service.d.ts +17 -0
  62. package/lib/browser/i18n/language-quick-pick-service.d.ts.map +1 -0
  63. package/lib/browser/i18n/language-quick-pick-service.js +142 -0
  64. package/lib/browser/i18n/language-quick-pick-service.js.map +1 -0
  65. package/lib/browser/index.d.ts +1 -0
  66. package/lib/browser/index.d.ts.map +1 -1
  67. package/lib/browser/index.js +1 -0
  68. package/lib/browser/index.js.map +1 -1
  69. package/lib/browser/keybinding.d.ts.map +1 -1
  70. package/lib/browser/keybinding.js +2 -1
  71. package/lib/browser/keybinding.js.map +1 -1
  72. package/lib/browser/keybinding.spec.js +18 -21
  73. package/lib/browser/keybinding.spec.js.map +1 -1
  74. package/lib/browser/label-provider.d.ts +0 -12
  75. package/lib/browser/label-provider.d.ts.map +1 -1
  76. package/lib/browser/label-provider.js +1 -13
  77. package/lib/browser/label-provider.js.map +1 -1
  78. package/lib/browser/logger-frontend-module.d.ts.map +1 -1
  79. package/lib/browser/logger-frontend-module.js +8 -1
  80. package/lib/browser/logger-frontend-module.js.map +1 -1
  81. package/lib/browser/messaging/ws-connection-provider.d.ts +5 -4
  82. package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
  83. package/lib/browser/messaging/ws-connection-provider.js +30 -23
  84. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  85. package/lib/browser/preferences/preference-contribution.d.ts +2 -19
  86. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  87. package/lib/browser/preferences/preference-contribution.js +1 -24
  88. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  89. package/lib/browser/preferences/preference-proxy.d.ts +0 -4
  90. package/lib/browser/preferences/preference-proxy.d.ts.map +1 -1
  91. package/lib/browser/preferences/preference-proxy.js.map +1 -1
  92. package/lib/browser/preferences/preference-proxy.spec.js +3 -102
  93. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  94. package/lib/browser/preferences/preference-schema-provider.spec.js +4 -3
  95. package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
  96. package/lib/browser/preferences/preference-service.spec.js +1 -2
  97. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  98. package/lib/browser/preferences/preference-validation-service.d.ts +2 -2
  99. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  100. package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
  101. package/lib/browser/preloader.d.ts.map +1 -1
  102. package/lib/browser/preloader.js +7 -1
  103. package/lib/browser/preloader.js.map +1 -1
  104. package/lib/browser/progress-status-bar-item.d.ts +1 -1
  105. package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
  106. package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
  107. package/lib/browser/quick-input/quick-command-service.js +2 -2
  108. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  109. package/lib/browser/saveable.d.ts.map +1 -1
  110. package/lib/browser/saveable.js +5 -4
  111. package/lib/browser/saveable.js.map +1 -1
  112. package/lib/browser/shell/application-shell.d.ts +4 -0
  113. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  114. package/lib/browser/shell/application-shell.js +42 -36
  115. package/lib/browser/shell/application-shell.js.map +1 -1
  116. package/lib/browser/shell/shell-layout-restorer.d.ts +2 -0
  117. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  118. package/lib/browser/shell/shell-layout-restorer.js +5 -1
  119. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  120. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  121. package/lib/browser/shell/side-panel-handler.js +3 -2
  122. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  123. package/lib/browser/shell/tab-bars.d.ts +4 -2
  124. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  125. package/lib/browser/shell/tab-bars.js +12 -4
  126. package/lib/browser/shell/tab-bars.js.map +1 -1
  127. package/lib/browser/source-tree/source-tree-widget.js +1 -1
  128. package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
  129. package/lib/browser/source-tree/tree-source.d.ts +2 -1
  130. package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
  131. package/lib/browser/source-tree/tree-source.js.map +1 -1
  132. package/lib/browser/styling-service.d.ts +26 -0
  133. package/lib/browser/styling-service.d.ts.map +1 -0
  134. package/lib/browser/styling-service.js +76 -0
  135. package/lib/browser/styling-service.js.map +1 -0
  136. package/lib/browser/theming.d.ts +4 -8
  137. package/lib/browser/theming.d.ts.map +1 -1
  138. package/lib/browser/theming.js +38 -53
  139. package/lib/browser/theming.js.map +1 -1
  140. package/lib/browser/tree/search-box.d.ts.map +1 -1
  141. package/lib/browser/tree/search-box.js +5 -4
  142. package/lib/browser/tree/search-box.js.map +1 -1
  143. package/lib/browser/tree/test/tree-test-container.d.ts.map +1 -1
  144. package/lib/browser/tree/test/tree-test-container.js +2 -0
  145. package/lib/browser/tree/test/tree-test-container.js.map +1 -1
  146. package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +1 -1
  147. package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts.map +1 -1
  148. package/lib/browser/tree/tree-compression/compressed-tree-model.js +4 -2
  149. package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
  150. package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -1
  151. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +4 -2
  152. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  153. package/lib/browser/tree/tree-container.d.ts +2 -0
  154. package/lib/browser/tree/tree-container.d.ts.map +1 -1
  155. package/lib/browser/tree/tree-container.js +3 -0
  156. package/lib/browser/tree/tree-container.js.map +1 -1
  157. package/lib/browser/tree/tree-focus-service.d.ts +20 -0
  158. package/lib/browser/tree/tree-focus-service.d.ts.map +1 -0
  159. package/lib/browser/tree/tree-focus-service.js +62 -0
  160. package/lib/browser/tree/tree-focus-service.js.map +1 -0
  161. package/lib/browser/tree/tree-model.d.ts +11 -2
  162. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  163. package/lib/browser/tree/tree-model.js +29 -8
  164. package/lib/browser/tree/tree-model.js.map +1 -1
  165. package/lib/browser/tree/tree-selection-impl.d.ts +4 -1
  166. package/lib/browser/tree/tree-selection-impl.d.ts.map +1 -1
  167. package/lib/browser/tree/tree-selection-impl.js +13 -2
  168. package/lib/browser/tree/tree-selection-impl.js.map +1 -1
  169. package/lib/browser/tree/tree-selection-state.d.ts +1 -0
  170. package/lib/browser/tree/tree-selection-state.d.ts.map +1 -1
  171. package/lib/browser/tree/tree-selection-state.js +8 -2
  172. package/lib/browser/tree/tree-selection-state.js.map +1 -1
  173. package/lib/browser/tree/tree-selection.d.ts +9 -0
  174. package/lib/browser/tree/tree-selection.d.ts.map +1 -1
  175. package/lib/browser/tree/tree-selection.js +3 -0
  176. package/lib/browser/tree/tree-selection.js.map +1 -1
  177. package/lib/browser/tree/tree-widget-selection.d.ts.map +1 -1
  178. package/lib/browser/tree/tree-widget-selection.js +9 -1
  179. package/lib/browser/tree/tree-widget-selection.js.map +1 -1
  180. package/lib/browser/tree/tree-widget.d.ts +14 -0
  181. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  182. package/lib/browser/tree/tree-widget.js +80 -40
  183. package/lib/browser/tree/tree-widget.js.map +1 -1
  184. package/lib/browser/tree/tree.d.ts +2 -1
  185. package/lib/browser/tree/tree.d.ts.map +1 -1
  186. package/lib/browser/tree/tree.js +12 -2
  187. package/lib/browser/tree/tree.js.map +1 -1
  188. package/lib/browser/view-container.d.ts +9 -4
  189. package/lib/browser/view-container.d.ts.map +1 -1
  190. package/lib/browser/view-container.js +36 -6
  191. package/lib/browser/view-container.js.map +1 -1
  192. package/lib/common/cancellation.d.ts +1 -0
  193. package/lib/common/cancellation.d.ts.map +1 -1
  194. package/lib/common/cancellation.js +8 -0
  195. package/lib/common/cancellation.js.map +1 -1
  196. package/lib/common/command.d.ts +1 -1
  197. package/lib/common/command.d.ts.map +1 -1
  198. package/lib/common/command.js +13 -16
  199. package/lib/common/command.js.map +1 -1
  200. package/lib/common/index.d.ts +1 -0
  201. package/lib/common/index.d.ts.map +1 -1
  202. package/lib/common/index.js +1 -0
  203. package/lib/common/index.js.map +1 -1
  204. package/lib/common/message-rpc/channel.d.ts +106 -0
  205. package/lib/common/message-rpc/channel.d.ts.map +1 -0
  206. package/lib/common/message-rpc/channel.js +195 -0
  207. package/lib/common/message-rpc/channel.js.map +1 -0
  208. package/lib/common/message-rpc/channel.spec.d.ts +9 -0
  209. package/lib/common/message-rpc/channel.spec.d.ts.map +1 -0
  210. package/lib/common/message-rpc/channel.spec.js +80 -0
  211. package/lib/common/message-rpc/channel.spec.js.map +1 -0
  212. package/lib/common/message-rpc/index.d.ts +4 -0
  213. package/lib/common/message-rpc/index.d.ts.map +1 -0
  214. package/lib/{node/messaging/logger.js → common/message-rpc/index.js} +6 -19
  215. package/lib/common/message-rpc/index.js.map +1 -0
  216. package/lib/common/message-rpc/message-buffer.d.ts +50 -0
  217. package/lib/common/message-rpc/message-buffer.d.ts.map +1 -0
  218. package/lib/common/message-rpc/message-buffer.js +56 -0
  219. package/lib/common/message-rpc/message-buffer.js.map +1 -0
  220. package/lib/common/message-rpc/rpc-message-encoder.d.ts +171 -0
  221. package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -0
  222. package/lib/common/message-rpc/rpc-message-encoder.js +409 -0
  223. package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -0
  224. package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +2 -0
  225. package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts.map +1 -0
  226. package/lib/common/message-rpc/rpc-message-encoder.spec.js +49 -0
  227. package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -0
  228. package/lib/common/message-rpc/rpc-protocol.d.ts +61 -0
  229. package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -0
  230. package/lib/common/message-rpc/rpc-protocol.js +183 -0
  231. package/lib/common/message-rpc/rpc-protocol.js.map +1 -0
  232. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -0
  233. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -0
  234. package/lib/common/message-rpc/uint8-array-message-buffer.js +169 -0
  235. package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -0
  236. package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +2 -0
  237. package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts.map +1 -0
  238. package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +39 -0
  239. package/lib/common/message-rpc/uint8-array-message-buffer.spec.js.map +1 -0
  240. package/lib/common/messaging/abstract-connection-provider.d.ts +9 -8
  241. package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
  242. package/lib/common/messaging/abstract-connection-provider.js +20 -35
  243. package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
  244. package/lib/common/messaging/connection-error-handler.d.ts +1 -2
  245. package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
  246. package/lib/common/messaging/connection-error-handler.js +1 -1
  247. package/lib/common/messaging/connection-error-handler.js.map +1 -1
  248. package/lib/common/messaging/handler.d.ts +2 -2
  249. package/lib/common/messaging/handler.d.ts.map +1 -1
  250. package/lib/common/messaging/proxy-factory.d.ts +13 -7
  251. package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
  252. package/lib/common/messaging/proxy-factory.js +18 -13
  253. package/lib/common/messaging/proxy-factory.js.map +1 -1
  254. package/lib/common/messaging/proxy-factory.spec.js +4 -15
  255. package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
  256. package/lib/common/messaging/web-socket-channel.d.ts +54 -48
  257. package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
  258. package/lib/common/messaging/web-socket-channel.js +41 -105
  259. package/lib/common/messaging/web-socket-channel.js.map +1 -1
  260. package/lib/common/nls.d.ts +2 -0
  261. package/lib/common/nls.d.ts.map +1 -1
  262. package/lib/common/nls.js +11 -0
  263. package/lib/common/nls.js.map +1 -1
  264. package/lib/common/preferences/preference-schema.d.ts +1 -5
  265. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  266. package/lib/common/preferences/preference-schema.js.map +1 -1
  267. package/lib/common/promise-util.d.ts +2 -1
  268. package/lib/common/promise-util.d.ts.map +1 -1
  269. package/lib/common/promise-util.js +8 -13
  270. package/lib/common/promise-util.js.map +1 -1
  271. package/lib/common/resource.d.ts +5 -0
  272. package/lib/common/resource.d.ts.map +1 -1
  273. package/lib/common/resource.js +28 -1
  274. package/lib/common/resource.js.map +1 -1
  275. package/lib/common/theme.d.ts +3 -2
  276. package/lib/common/theme.d.ts.map +1 -1
  277. package/lib/common/theme.js +5 -0
  278. package/lib/common/theme.js.map +1 -1
  279. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +2 -2
  280. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +1 -1
  281. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +18 -7
  282. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
  283. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +2 -2
  284. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +1 -1
  285. package/lib/electron-browser/messaging/electron-ws-connection-provider.js +5 -7
  286. package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
  287. package/lib/electron-main/event-utils.d.ts +1 -1
  288. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +37 -9
  289. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
  290. package/lib/electron-main/messaging/electron-messaging-contribution.js +83 -68
  291. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  292. package/lib/electron-main/messaging/electron-messaging-service.d.ts +2 -8
  293. package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
  294. package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
  295. package/lib/node/messaging/binary-message-pipe.d.ts +45 -0
  296. package/lib/node/messaging/binary-message-pipe.d.ts.map +1 -0
  297. package/lib/node/messaging/binary-message-pipe.js +152 -0
  298. package/lib/node/messaging/binary-message-pipe.js.map +1 -0
  299. package/lib/node/messaging/ipc-bootstrap.js +2 -11
  300. package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
  301. package/lib/node/messaging/ipc-channel.d.ts +26 -0
  302. package/lib/node/messaging/ipc-channel.d.ts.map +1 -0
  303. package/lib/node/messaging/ipc-channel.js +86 -0
  304. package/lib/node/messaging/ipc-channel.js.map +1 -0
  305. package/lib/node/messaging/ipc-connection-provider.d.ts +3 -5
  306. package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
  307. package/lib/node/messaging/ipc-connection-provider.js +14 -31
  308. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  309. package/lib/node/messaging/ipc-protocol.d.ts +2 -2
  310. package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
  311. package/lib/node/messaging/messaging-contribution.d.ts +6 -9
  312. package/lib/node/messaging/messaging-contribution.d.ts.map +1 -1
  313. package/lib/node/messaging/messaging-contribution.js +23 -68
  314. package/lib/node/messaging/messaging-contribution.js.map +1 -1
  315. package/lib/node/messaging/messaging-service.d.ts +4 -23
  316. package/lib/node/messaging/messaging-service.d.ts.map +1 -1
  317. package/lib/node/messaging/messaging-service.js +1 -15
  318. package/lib/node/messaging/messaging-service.js.map +1 -1
  319. package/lib/node/messaging/test/test-web-socket-channel.d.ts +4 -2
  320. package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
  321. package/lib/node/messaging/test/test-web-socket-channel.js +25 -12
  322. package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
  323. package/lib/node/request/proxy-cli-contribution.js +1 -1
  324. package/lib/node/request/proxy-cli-contribution.js.map +1 -1
  325. package/package.json +7 -10
  326. package/src/browser/color-application-contribution.ts +10 -17
  327. package/src/browser/color-registry.ts +0 -5
  328. package/src/browser/common-frontend-contribution.ts +26 -33
  329. package/src/browser/common-styling-participants.ts +307 -0
  330. package/src/browser/connection-status-service.spec.ts +1 -4
  331. package/src/browser/connection-status-service.ts +3 -3
  332. package/src/browser/context-menu-renderer.ts +13 -29
  333. package/src/browser/core-preferences.ts +6 -0
  334. package/src/browser/decoration-style.ts +6 -2
  335. package/src/browser/frontend-application-bindings.ts +1 -3
  336. package/src/browser/frontend-application-config-provider.ts +2 -0
  337. package/src/browser/frontend-application-module.ts +11 -4
  338. package/src/browser/i18n/i18n-frontend-module.ts +2 -0
  339. package/src/browser/i18n/language-quick-pick-service.ts +128 -0
  340. package/src/browser/index.ts +1 -0
  341. package/src/browser/keybinding.spec.ts +22 -27
  342. package/src/browser/keybinding.ts +2 -1
  343. package/src/browser/label-provider.ts +0 -13
  344. package/src/browser/logger-frontend-module.ts +8 -1
  345. package/src/browser/messaging/ws-connection-provider.ts +34 -25
  346. package/src/browser/preferences/preference-contribution.ts +3 -28
  347. package/src/browser/preferences/preference-proxy.spec.ts +3 -113
  348. package/src/browser/preferences/preference-proxy.ts +0 -4
  349. package/src/browser/preferences/preference-schema-provider.spec.ts +1 -4
  350. package/src/browser/preferences/preference-service.spec.ts +1 -5
  351. package/src/browser/preferences/preference-validation-service.spec.ts +2 -2
  352. package/src/browser/preferences/preference-validation-service.ts +2 -2
  353. package/src/browser/preloader.ts +9 -2
  354. package/src/browser/progress-status-bar-item.ts +1 -1
  355. package/src/browser/quick-input/quick-command-service.ts +3 -3
  356. package/src/browser/saveable.ts +5 -4
  357. package/src/browser/shell/application-shell.ts +42 -35
  358. package/src/browser/shell/shell-layout-restorer.ts +4 -6
  359. package/src/browser/shell/side-panel-handler.ts +3 -2
  360. package/src/browser/shell/tab-bars.ts +14 -4
  361. package/src/browser/source-tree/source-tree-widget.tsx +1 -1
  362. package/src/browser/source-tree/tree-source.ts +2 -1
  363. package/src/browser/style/breadcrumbs.css +0 -1
  364. package/src/browser/style/index.css +66 -29
  365. package/src/browser/style/menus.css +4 -2
  366. package/src/browser/style/select-component.css +2 -0
  367. package/src/browser/style/sidepanel.css +11 -25
  368. package/src/browser/style/status-bar.css +8 -17
  369. package/src/browser/style/tabs.css +0 -16
  370. package/src/browser/style/tooltip.css +3 -3
  371. package/src/browser/style/tree.css +27 -11
  372. package/src/browser/style/view-container.css +4 -0
  373. package/src/browser/styling-service.ts +76 -0
  374. package/src/browser/theming.ts +18 -45
  375. package/src/browser/tree/search-box.ts +5 -4
  376. package/src/browser/tree/test/tree-test-container.ts +2 -0
  377. package/src/browser/tree/tree-compression/compressed-tree-model.ts +8 -2
  378. package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +4 -2
  379. package/src/browser/tree/tree-container.ts +4 -0
  380. package/src/browser/tree/tree-focus-service.ts +55 -0
  381. package/src/browser/tree/tree-model.ts +32 -8
  382. package/src/browser/tree/tree-selection-impl.ts +13 -4
  383. package/src/browser/tree/tree-selection-state.ts +7 -2
  384. package/src/browser/tree/tree-selection.ts +10 -0
  385. package/src/browser/tree/tree-widget-selection.ts +10 -1
  386. package/src/browser/tree/tree-widget.tsx +83 -43
  387. package/src/browser/tree/tree.ts +8 -2
  388. package/src/browser/view-container.ts +41 -4
  389. package/src/common/cancellation.ts +8 -0
  390. package/src/common/command.ts +14 -16
  391. package/src/common/index.ts +1 -0
  392. package/src/common/message-rpc/channel.spec.ts +88 -0
  393. package/src/common/message-rpc/channel.ts +260 -0
  394. package/src/{node/messaging/logger.ts → common/message-rpc/index.ts} +4 -23
  395. package/src/common/message-rpc/message-buffer.ts +99 -0
  396. package/src/common/message-rpc/rpc-message-encoder.spec.ts +55 -0
  397. package/src/common/message-rpc/rpc-message-encoder.ts +552 -0
  398. package/src/common/message-rpc/rpc-protocol.ts +217 -0
  399. package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -0
  400. package/src/common/message-rpc/uint8-array-message-buffer.ts +206 -0
  401. package/src/common/messaging/abstract-connection-provider.ts +28 -37
  402. package/src/common/messaging/connection-error-handler.ts +1 -2
  403. package/src/common/messaging/handler.ts +2 -2
  404. package/src/common/messaging/proxy-factory.spec.ts +4 -17
  405. package/src/common/messaging/proxy-factory.ts +27 -16
  406. package/src/common/messaging/web-socket-channel.ts +79 -135
  407. package/src/common/nls.ts +11 -0
  408. package/src/common/preferences/preference-schema.ts +1 -6
  409. package/src/common/promise-util.ts +13 -14
  410. package/src/common/resource.ts +29 -2
  411. package/src/common/theme.ts +6 -2
  412. package/src/electron-browser/messaging/electron-ipc-connection-provider.ts +21 -7
  413. package/src/electron-browser/messaging/electron-ws-connection-provider.ts +5 -8
  414. package/src/electron-main/messaging/electron-messaging-contribution.ts +87 -65
  415. package/src/electron-main/messaging/electron-messaging-service.ts +2 -8
  416. package/src/node/messaging/binary-message-pipe.ts +168 -0
  417. package/src/node/messaging/ipc-bootstrap.ts +3 -11
  418. package/src/node/messaging/ipc-channel.ts +97 -0
  419. package/src/node/messaging/ipc-connection-provider.ts +18 -35
  420. package/src/node/messaging/ipc-protocol.ts +2 -2
  421. package/src/node/messaging/messaging-contribution.ts +29 -74
  422. package/src/node/messaging/messaging-service.ts +4 -31
  423. package/src/node/messaging/test/test-web-socket-channel.ts +26 -17
  424. package/src/node/request/proxy-cli-contribution.ts +1 -1
  425. package/lib/browser/preferences/validated-preference-proxy.d.ts +0 -21
  426. package/lib/browser/preferences/validated-preference-proxy.d.ts.map +0 -1
  427. package/lib/browser/preferences/validated-preference-proxy.js +0 -118
  428. package/lib/browser/preferences/validated-preference-proxy.js.map +0 -1
  429. package/lib/node/messaging/logger.d.ts +0 -8
  430. package/lib/node/messaging/logger.d.ts.map +0 -1
  431. package/lib/node/messaging/logger.js.map +0 -1
  432. package/shared/vscode-ws-jsonrpc/index.d.ts +0 -1
  433. package/shared/vscode-ws-jsonrpc/index.js +0 -1
  434. package/src/browser/preferences/validated-preference-proxy.ts +0 -111
  435. package/src/browser/style/variables-bright.useable.css +0 -93
  436. package/src/browser/style/variables-dark.useable.css +0 -93
@@ -21,13 +21,14 @@ import { injectable, unmanaged } from 'inversify';
21
21
  import { Emitter, Event } from '../../common/event';
22
22
  import { MaybePromise } from '../../common/types';
23
23
  import { Disposable, DisposableCollection } from '../../common/disposable';
24
+ import { TreeWidget } from '../tree';
24
25
 
25
26
  export interface TreeElement {
26
27
  /** default: parent id + position among siblings */
27
28
  readonly id?: number | string | undefined
28
29
  /** default: true */
29
30
  readonly visible?: boolean
30
- render(): ReactNode
31
+ render(host: TreeWidget): ReactNode
31
32
  open?(): MaybePromise<any>
32
33
  }
33
34
 
@@ -28,7 +28,6 @@
28
28
  justify-content: flex-start;
29
29
  align-items: center;
30
30
  outline-style: none;
31
- margin: .5rem;
32
31
  list-style-type: none;
33
32
  overflow: hidden;
34
33
  padding: 0;
@@ -21,6 +21,56 @@
21
21
  | General
22
22
  |----------------------------------------------------------------------------*/
23
23
 
24
+ :root {
25
+
26
+ /* Borders: Width and color (dark to bright) */
27
+
28
+ --theia-border-width: 1px;
29
+ --theia-panel-border-width: 1px;
30
+
31
+
32
+ /* UI fonts: Family, size and color (bright to dark)
33
+ ---------------------------------------------------
34
+ The UI font CSS variables are used for the typography all of the Theia
35
+ user interface elements that are not directly user-generated content.
36
+ */
37
+
38
+ --theia-ui-font-scale-factor: 1.2;
39
+ --theia-ui-font-size0: calc(var(--theia-ui-font-size1) / var(--theia-ui-font-scale-factor));
40
+ --theia-ui-font-size1: 13px; /* Base font size */
41
+ --theia-ui-font-size2: calc(var(--theia-ui-font-size1) * var(--theia-ui-font-scale-factor));
42
+ --theia-ui-font-size3: calc(var(--theia-ui-font-size2) * var(--theia-ui-font-scale-factor));
43
+ --theia-ui-icon-font-size: 14px; /* Ensures px perfect FontAwesome icons */
44
+ --theia-ui-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
45
+
46
+ /* Content fonts: Family, size and color (bright to dark)
47
+ Content font variables are used for typography of user-generated content.
48
+ */
49
+
50
+ --theia-content-font-size: 13px;
51
+ --theia-content-line-height: 22px;
52
+
53
+ --theia-code-font-size: 13px;
54
+ --theia-code-line-height: 17px;
55
+ --theia-code-padding: 5px;
56
+ --theia-code-font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
57
+ --theia-monospace-font-family: monospace;
58
+ --theia-ui-padding: 6px;
59
+
60
+ /* Icons */
61
+ --theia-icon-size: 16px;
62
+
63
+ /* Scrollbars */
64
+ --theia-scrollbar-width: 10px;
65
+ --theia-scrollbar-rail-width: 10px;
66
+
67
+ /* Statusbar */
68
+ --theia-statusBar-font-size: 12px;
69
+
70
+ /* Opacity for disabled mod */
71
+ --theia-mod-disabled-opacity: 0.4;
72
+ }
73
+
24
74
  body {
25
75
  margin: 0;
26
76
  padding: 0;
@@ -48,8 +98,10 @@ code {
48
98
  }
49
99
 
50
100
  blockquote {
51
- background: var(--vscode-textBlockQuote-background);
52
- border: var(--theia-border-width) solid var(--theia-textBlockQuote-border);
101
+ margin: 0 7px 0 5px;
102
+ padding: 0px 16px 0px 10px;
103
+ background: var(--theia-textBlockQuote-background);
104
+ border-left: 5px solid var(--theia-textBlockQuote-border);
53
105
  }
54
106
 
55
107
  .theia-input {
@@ -173,12 +225,7 @@ blockquote {
173
225
  }
174
226
 
175
227
  ::selection {
176
- background: var(--theia-selection-background);
177
- }
178
-
179
- .p-Widget:focus {
180
- border: none;
181
- outline: none;
228
+ background: var(--theia-selection-background);
182
229
  }
183
230
 
184
231
  .action-label {
@@ -188,22 +235,17 @@ blockquote {
188
235
  }
189
236
 
190
237
  .action-label:hover {
191
- background-color: var(--theia-toolbar-hoverBackground);
238
+ background-color: var(--theia-toolbar-hoverBackground);
192
239
  }
193
240
 
194
- button.theia-button, .theia-button {
195
- border: none;
196
- color: var(--theia-button-foreground);
197
- background-color: var(--theia-button-background);
198
- min-width: 65px;
199
- outline: none;
200
- cursor: pointer;
201
- padding: 4px 9px;
202
- margin-left: calc(var(--theia-ui-padding)*2);
203
- }
204
-
205
- .theia-button:hover {
206
- background-color: var(--theia-button-hoverBackground);
241
+ .theia-button {
242
+ border: none;
243
+ color: var(--theia-button-foreground);
244
+ min-width: 65px;
245
+ outline: none;
246
+ cursor: pointer;
247
+ padding: 4px 9px;
248
+ margin-left: calc(var(--theia-ui-padding)*2);
207
249
  }
208
250
 
209
251
  .theia-button:focus {
@@ -211,16 +253,11 @@ button.theia-button, .theia-button {
211
253
  outline-offset: 1px;
212
254
  }
213
255
 
214
- button.secondary, .theia-button.secondary {
256
+ .theia-button.secondary {
215
257
  color: var(--theia-secondaryButton-foreground);
216
- background-color: var(--theia-secondaryButton-background);
217
- }
218
-
219
- button.secondary:hover, .theia-button.secondary:hover {
220
- background-color: var(--theia-secondaryButton-hoverBackground);
221
258
  }
222
259
 
223
- button.theia-button[disabled], .theia-button[disabled] {
260
+ .theia-button[disabled] {
224
261
  opacity: 0.6;
225
262
  color: var(--theia-button-disabledForeground);
226
263
  background-color: var(--theia-button-disabledBackground);
@@ -44,8 +44,6 @@
44
44
 
45
45
  .p-MenuBar-item {
46
46
  padding: 0px 8px;
47
- border-left: var(--theia-border-width) solid var(--theia-menu-border);
48
- border-right: var(--theia-border-width) solid var(--theia-menu-border);
49
47
  line-height: var(--theia-private-menubar-height);
50
48
  }
51
49
 
@@ -115,6 +113,10 @@
115
113
  border: 1px solid var(--theia-menu-border);
116
114
  }
117
115
 
116
+ .p-Menu:focus {
117
+ outline: none;
118
+ }
119
+
118
120
  .p-Menu-item {
119
121
  min-height: var(--theia-private-menu-item-height);
120
122
  max-height: var(--theia-private-menu-item-height);
@@ -16,6 +16,7 @@
16
16
 
17
17
  .theia-select-component {
18
18
  background-color: var(--theia-dropdown-background);
19
+ cursor: pointer;
19
20
  outline: var(--theia-dropdown-border) solid 1px;
20
21
  outline-offset: -1px;
21
22
  min-height: 23px;
@@ -83,6 +84,7 @@
83
84
 
84
85
  .theia-select-component-dropdown .theia-select-component-option.selected {
85
86
  color: var(--theia-list-activeSelectionForeground);
87
+ cursor: pointer;
86
88
  background: var(--theia-list-activeSelectionBackground);
87
89
  outline: var(--theia-focusBorder) solid 1px;
88
90
  outline-offset: -1px;
@@ -51,29 +51,13 @@
51
51
  }
52
52
 
53
53
  .p-TabBar.theia-app-sides .p-TabBar-tab {
54
- position: relative;
55
- background: var(--theia-activityBar-background);
56
- flex-direction: column;
57
- justify-content: center;
58
- align-items: center;
59
- min-height: var(--theia-private-sidebar-tab-height);
60
- cursor: pointer;
61
- }
62
-
63
- .p-TabBar.theia-app-left .p-TabBar-tab {
64
- border-left: var(--theia-panel-border-width) solid transparent;
65
- }
66
-
67
- .p-TabBar.theia-app-left.theia-app-sides {
68
- border-right: var(--theia-panel-border-width) solid var(--theia-activityBar-border);
69
- }
70
-
71
- .p-TabBar.theia-app-right .p-TabBar-tab {
72
- border-right: var(--theia-panel-border-width) solid transparent;
73
- }
74
-
75
- .p-Widget.p-TabBar.theia-app-right.theia-app-sides {
76
- border-left: var(--theia-panel-border-width) solid var(--theia-activityBar-border);
54
+ position: relative;
55
+ background: var(--theia-activityBar-background);
56
+ flex-direction: column;
57
+ justify-content: center;
58
+ align-items: center;
59
+ min-height: var(--theia-private-sidebar-tab-height);
60
+ cursor: pointer;
77
61
  }
78
62
 
79
63
  .p-TabBar.theia-app-sides .p-TabBar-tab.p-mod-current,
@@ -86,13 +70,15 @@
86
70
  }
87
71
 
88
72
  .p-TabBar.theia-app-left .p-TabBar-tab.p-mod-current {
89
- border-left: var(--theia-panel-border-width) solid var(--theia-activityBar-activeBorder);
90
73
  border-top-color: transparent;
74
+ box-shadow: 2px 0 0 var(--theia-activityBar-activeBorder) inset;
75
+
91
76
  }
92
77
 
93
78
  .p-TabBar.theia-app-right .p-TabBar-tab.p-mod-current {
94
- border-right: var(--theia-panel-border-width) solid var(--theia-activityBar-activeBorder);
95
79
  border-top-color: transparent;
80
+ box-shadow: -2px 0 0 var(--theia-activityBar-activeBorder) inset;
81
+
96
82
  }
97
83
 
98
84
  .p-TabBar.theia-app-sides .p-TabBar-tabLabel,
@@ -68,15 +68,6 @@ body.theia-no-open-workspace #theia-statusBar {
68
68
  margin-right: calc(var(--theia-ui-padding)/2);
69
69
  }
70
70
 
71
- #theia-statusBar .area .element.hasCommand:hover {
72
- background-color: var(--theia-statusBarItem-hoverBackground);
73
- cursor: pointer;
74
- }
75
-
76
- #theia-statusBar .area .element.hasCommand:active {
77
- background-color: var(--theia-statusBarItem-activeBackground);
78
- }
79
-
80
71
  .theia-mod-offline #theia-statusBar {
81
72
  background-color: var(--theia-statusBar-offlineBackground) !important;
82
73
  }
@@ -85,14 +76,6 @@ body.theia-no-open-workspace #theia-statusBar {
85
76
  color: var(--theia-statusBar-offlineForeground) !important;
86
77
  }
87
78
 
88
- .theia-mod-offline #theia-statusBar .area .element.hasCommand:hover {
89
- background-color: var(--theia-statusBarItem-offlineHoverBackground) !important;
90
- }
91
-
92
- .theia-mod-offline #theia-statusBar .area .element.hasCommand:active {
93
- background-color: var(--theia-statusBarItem-offlineActiveBackground) !important;
94
- }
95
-
96
79
  #theia-statusBar .area.left .element {
97
80
  margin-right: var(--theia-ui-padding);
98
81
  }
@@ -114,6 +97,14 @@ body.theia-no-open-workspace #theia-statusBar {
114
97
  margin-left: calc(-1 * var(--theia-ui-padding));
115
98
  }
116
99
 
100
+ #theia-statusBar .area .element.hasCommand:hover {
101
+ cursor: pointer;
102
+ }
103
+
104
+ #theia-statusBar .area .element.hasCommand:active {
105
+ cursor: pointer;
106
+ }
107
+
117
108
 
118
109
  #theia-statusBar .element {
119
110
  /* https://css-tricks.com/os-specific-fonts-css/#article-header-id-0 */
@@ -84,22 +84,6 @@
84
84
  color: var(--theia-tab-inactiveForeground);
85
85
  }
86
86
 
87
- #theia-main-content-panel .p-TabBar .p-TabBar-tab:hover {
88
- background: var(--theia-tab-hoverBackground);
89
- box-shadow: 0 1px 0 var(--theia-tab-hoverBorder) inset;
90
- }
91
-
92
- #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab:hover {
93
- background: var(--theia-tab-unfocusedHoverBackground);
94
- box-shadow: 0 1px 0 var(--theia-tab-unfocusedHoverBorder) inset;
95
- }
96
-
97
- #theia-main-content-panel .p-TabBar .p-TabBar-tab.p-mod-current {
98
- background: var(--theia-tab-activeBackground);
99
- color: var(--theia-tab-activeForeground);
100
- box-shadow: 0 1px 0 var(--theia-tab-activeBorderTop) inset, 0 -1px 0 var(--theia-tab-activeBorder) inset;
101
- }
102
-
103
87
  #theia-main-content-panel .p-TabBar:not(.theia-tabBar-active) .p-TabBar-tab {
104
88
  color: var(--theia-tab-unfocusedInactiveForeground);
105
89
  }
@@ -15,10 +15,10 @@
15
15
  ********************************************************************************/
16
16
 
17
17
  .theia-tooltip {
18
- color: var(--theia-list-hoverForeground) !important;
19
- background: var(--theia-list-hoverBackground) !important;
18
+ color: var(--theia-editorHoverWidget-foreground) !important;
19
+ background: var(--theia-editorHoverWidget-background) !important;
20
20
  border: 1px solid !important;
21
- border-color: var(--theia-list-hoverForeground) !important;
21
+ border-color: var(--theia-editorHoverWidget-border) !important;
22
22
  }
23
23
 
24
24
  /* Hide tooltip arrow */
@@ -27,7 +27,16 @@
27
27
  position: relative;
28
28
  }
29
29
 
30
- .theia-Tree:focus .theia-TreeContainer.empty {
30
+ .theia-Tree:focus .theia-TreeContainer.empty::before,
31
+ .theia-Tree:focus .theia-TreeContainer.focused::before {
32
+ position: absolute;
33
+ top: 0;
34
+ left: 0;
35
+ width: 100%;
36
+ height: 100%;
37
+ pointer-events: none;
38
+ z-index: 10;
39
+ content: "";
31
40
  outline-width: 1px;
32
41
  outline-style: solid;
33
42
  outline-offset: -1px;
@@ -88,22 +97,26 @@
88
97
  transform: rotate(-90deg);
89
98
  }
90
99
 
91
- .theia-Tree:focus .theia-TreeNode.theia-mod-selected,
92
- .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected {
100
+ .theia-Tree:focus-within .theia-TreeNode.theia-mod-selected {
93
101
  background: var(--theia-list-activeSelectionBackground);
94
102
  color: var(--theia-list-activeSelectionForeground) !important;
95
103
  }
96
104
 
97
- .theia-Tree:focus .theia-TreeNode.theia-mod-selected .theia-TreeNodeTail,
98
- .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected .theia-TreeNodeTail,
99
- .theia-Tree:focus .theia-TreeNode.theia-mod-selected .theia-caption-suffix,
100
- .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected .theia-caption-suffix,
101
- .theia-Tree:focus .theia-TreeNode.theia-mod-selected .theia-TreeNodeInfo,
102
- .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected .theia-TreeNodeInfo,
103
- .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-selected .theia-TreeNodeSegment {
105
+ .theia-Tree:focus-within .theia-TreeNode.theia-mod-selected .theia-TreeNodeTail,
106
+ .theia-Tree:focus-within .theia-TreeNode.theia-mod-selected .theia-caption-suffix,
107
+ .theia-Tree:focus-within .theia-TreeNode.theia-mod-selected .theia-TreeNodeInfo,
108
+ .theia-Tree:focus-within .theia-TreeNode.theia-mod-selected .theia-TreeNodeSegment {
104
109
  color: var(--theia-list-activeSelectionForeground) !important;
105
110
  }
106
111
 
112
+ .theia-Tree:focus .theia-TreeNode.theia-mod-focus,
113
+ .theia-Tree .ReactVirtualized__List:focus .theia-TreeNode.theia-mod-focus {
114
+ outline-width: 1px;
115
+ outline-style: solid;
116
+ outline-offset: -1px;
117
+ outline-color: var(--theia-focusBorder);
118
+ }
119
+
107
120
  .theia-TreeNodeInfo {
108
121
  color: var(--theia-foreground);
109
122
  opacity: 0.7;
@@ -124,13 +137,16 @@
124
137
  }
125
138
 
126
139
  .theia-TreeNodeSegment {
127
- display: flex;
128
140
  align-items: center;
129
141
  flex-grow: 0;
130
142
  user-select: none;
131
143
  white-space: nowrap;
132
144
  }
133
145
 
146
+ .theia-TreeNodeSegment.flex {
147
+ display: flex;
148
+ }
149
+
134
150
  .theia-TreeNodeSegmentGrow {
135
151
  flex-grow: 1 !important;
136
152
  overflow: hidden;
@@ -111,6 +111,10 @@
111
111
  opacity: 0.6;
112
112
  }
113
113
 
114
+ .theia-view-container-part-header .notification-count-container {
115
+ margin-right: 12px;
116
+ }
117
+
114
118
  .theia-view-container .part > .body {
115
119
  height: var(--theia-view-container-content-height);
116
120
  min-width: 50px;
@@ -0,0 +1,76 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2022 TypeFox 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 WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { inject, injectable, named } from 'inversify';
18
+ import { ContributionProvider } from '../common/contribution-provider';
19
+ import { Theme, ThemeType } from '../common/theme';
20
+ import { ColorRegistry } from './color-registry';
21
+ import { DecorationStyle } from './decoration-style';
22
+ import { FrontendApplicationContribution } from './frontend-application';
23
+ import { ThemeService } from './theming';
24
+
25
+ export const StylingParticipant = Symbol('StylingParticipant');
26
+
27
+ export interface StylingParticipant {
28
+ registerThemeStyle(theme: ColorTheme, collector: CssStyleCollector): void
29
+ }
30
+
31
+ export interface ColorTheme {
32
+ type: ThemeType
33
+ label: string
34
+ getColor(color: string): string | undefined;
35
+ }
36
+
37
+ export interface CssStyleCollector {
38
+ addRule(rule: string): void;
39
+ }
40
+
41
+ @injectable()
42
+ export class StylingService implements FrontendApplicationContribution {
43
+
44
+ protected cssElement = DecorationStyle.createStyleElement('contributedColorTheme');
45
+
46
+ @inject(ThemeService)
47
+ protected readonly themeService: ThemeService;
48
+
49
+ @inject(ColorRegistry)
50
+ protected readonly colorRegistry: ColorRegistry;
51
+
52
+ @inject(ContributionProvider) @named(StylingParticipant)
53
+ protected readonly themingParticipants: ContributionProvider<StylingParticipant>;
54
+
55
+ onStart(): void {
56
+ this.applyStyling(this.themeService.getCurrentTheme());
57
+ this.themeService.onDidColorThemeChange(e => this.applyStyling(e.newTheme));
58
+ }
59
+
60
+ protected applyStyling(theme: Theme): void {
61
+ const rules: string[] = [];
62
+ const colorTheme: ColorTheme = {
63
+ type: theme.type,
64
+ label: theme.label,
65
+ getColor: color => this.colorRegistry.getCurrentColor(color)
66
+ };
67
+ const styleCollector: CssStyleCollector = {
68
+ addRule: rule => rules.push(rule)
69
+ };
70
+ for (const themingParticipant of this.themingParticipants.getContributions()) {
71
+ themingParticipant.registerThemeStyle(colorTheme, styleCollector);
72
+ }
73
+ const fullCss = rules.join('\n');
74
+ this.cssElement.innerText = fullCss;
75
+ }
76
+ }
@@ -19,31 +19,26 @@ import { Disposable } from '../common/disposable';
19
19
  import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
20
20
  import { ApplicationProps } from '@theia/application-package/lib/application-props';
21
21
  import { Theme, ThemeChangeEvent } from '../common/theme';
22
+ import { injectable, postConstruct } from 'inversify';
23
+ import { Deferred } from '../common/promise-util';
22
24
 
23
- /**
24
- * @deprecated since 1.20.0. Import from `@theia/core/lib/common/theme` instead.
25
- */
26
- export * from '../common/theme';
27
-
28
- export const ThemeServiceSymbol = Symbol('ThemeService');
29
-
25
+ @injectable()
30
26
  export class ThemeService {
31
27
 
32
28
  protected themes: { [id: string]: Theme } = {};
33
29
  protected activeTheme: Theme | undefined;
34
30
  protected readonly themeChange = new Emitter<ThemeChangeEvent>();
31
+ protected readonly deferredInitializer = new Deferred();
32
+ get initialized(): Promise<void> {
33
+ return this.deferredInitializer.promise;
34
+ }
35
35
 
36
36
  readonly onDidColorThemeChange: Event<ThemeChangeEvent> = this.themeChange.event;
37
37
 
38
- static get(): ThemeService {
39
- const global = window as any; // eslint-disable-line @typescript-eslint/no-explicit-any
40
- if (!global[ThemeServiceSymbol]) {
41
- const themeService = new ThemeService();
42
- themeService.register(...BuiltinThemeProvider.themes);
43
- themeService.startupTheme();
44
- global[ThemeServiceSymbol] = themeService;
45
- }
46
- return global[ThemeServiceSymbol];
38
+ @postConstruct()
39
+ protected init(): void {
40
+ this.register(...BuiltinThemeProvider.themes);
41
+ this.loadUserTheme();
47
42
  }
48
43
 
49
44
  register(...themes: Theme[]): Disposable {
@@ -88,12 +83,13 @@ export class ThemeService {
88
83
 
89
84
  startupTheme(): void {
90
85
  const theme = this.getCurrentTheme();
91
- theme.activate();
86
+ theme.activate?.();
92
87
  }
93
88
 
94
89
  loadUserTheme(): void {
95
90
  const theme = this.getCurrentTheme();
96
91
  this.setCurrentTheme(theme.id);
92
+ this.deferredInitializer.resolve();
97
93
  }
98
94
 
99
95
  setCurrentTheme(themeId: string): void {
@@ -103,9 +99,9 @@ export class ThemeService {
103
99
  if (oldTheme.id === newTheme.id) {
104
100
  return;
105
101
  }
106
- oldTheme.deactivate();
102
+ oldTheme.deactivate?.();
107
103
  }
108
- newTheme.activate();
104
+ newTheme.activate?.();
109
105
  this.activeTheme = newTheme;
110
106
  window.localStorage.setItem('theme', themeId);
111
107
  this.themeChange.fire({
@@ -131,52 +127,29 @@ export class ThemeService {
131
127
  reset(): void {
132
128
  this.setCurrentTheme(this.defaultTheme.id);
133
129
  }
134
-
135
130
  }
136
131
 
137
132
  export class BuiltinThemeProvider {
138
133
 
139
- // Webpack converts these `require` in some Javascript object that wraps the `.css` files
140
- static readonly darkCss = require('../../src/browser/style/variables-dark.useable.css');
141
- static readonly lightCss = require('../../src/browser/style/variables-bright.useable.css');
142
-
143
134
  static readonly darkTheme: Theme = {
144
135
  id: 'dark',
145
136
  type: 'dark',
146
137
  label: 'Dark (Theia)',
147
- editorTheme: 'dark-theia', // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
148
- activate(): void {
149
- BuiltinThemeProvider.darkCss.use();
150
- },
151
- deactivate(): void {
152
- BuiltinThemeProvider.darkCss.unuse();
153
- }
138
+ editorTheme: 'dark-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
154
139
  };
155
140
 
156
141
  static readonly lightTheme: Theme = {
157
142
  id: 'light',
158
143
  type: 'light',
159
144
  label: 'Light (Theia)',
160
- editorTheme: 'light-theia', // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
161
- activate(): void {
162
- BuiltinThemeProvider.lightCss.use();
163
- },
164
- deactivate(): void {
165
- BuiltinThemeProvider.lightCss.unuse();
166
- }
145
+ editorTheme: 'light-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
167
146
  };
168
147
 
169
148
  static readonly hcTheme: Theme = {
170
149
  id: 'hc-theia',
171
150
  type: 'hc',
172
151
  label: 'High Contrast (Theia)',
173
- editorTheme: 'hc-theia', // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
174
- activate(): void {
175
- BuiltinThemeProvider.darkCss.use();
176
- },
177
- deactivate(): void {
178
- BuiltinThemeProvider.darkCss.unuse();
179
- }
152
+ editorTheme: 'hc-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
180
153
  };
181
154
 
182
155
  static readonly themes = [
@@ -18,6 +18,7 @@ import { SearchBoxDebounce, SearchBoxDebounceOptions } from '../tree/search-box-
18
18
  import { BaseWidget, Message } from '../widgets/widget';
19
19
  import { Emitter, Event } from '../../common/event';
20
20
  import { KeyCode, Key } from '../keyboard/keys';
21
+ import { nls } from '../../common/nls';
21
22
 
22
23
  /**
23
24
  * Initializer properties for the search box widget.
@@ -253,7 +254,7 @@ export class SearchBox extends BaseWidget {
253
254
  SearchBox.Styles.BUTTON,
254
255
  ...SearchBox.Styles.FILTER,
255
256
  );
256
- filter.title = 'Enable Filter on Type';
257
+ filter.title = nls.localizeByDefault('Enable Filter on Type');
257
258
  buttons.appendChild(filter);
258
259
  filter.onclick = this.fireFilterToggle.bind(this);
259
260
  }
@@ -268,7 +269,7 @@ export class SearchBox extends BaseWidget {
268
269
  SearchBox.Styles.BUTTON,
269
270
  SearchBox.Styles.BUTTON_PREVIOUS
270
271
  );
271
- previous.title = 'Previous (Up)';
272
+ previous.title = nls.localize('theia/core/searchbox/previous', 'Previous (Up)');
272
273
  buttons.appendChild(previous);
273
274
  previous.onclick = () => this.firePrevious.bind(this)();
274
275
 
@@ -277,7 +278,7 @@ export class SearchBox extends BaseWidget {
277
278
  SearchBox.Styles.BUTTON,
278
279
  SearchBox.Styles.BUTTON_NEXT
279
280
  );
280
- next.title = 'Next (Down)';
281
+ next.title = nls.localize('theia/core/searchbox/next', 'Next (Down)');
281
282
  buttons.appendChild(next);
282
283
  next.onclick = () => this.fireNext.bind(this)();
283
284
  }
@@ -288,7 +289,7 @@ export class SearchBox extends BaseWidget {
288
289
  SearchBox.Styles.BUTTON,
289
290
  SearchBox.Styles.BUTTON_CLOSE
290
291
  );
291
- close.title = 'Close (Escape)';
292
+ close.title = nls.localize('theia/core/searchbox/close', 'Close (Escape)');
292
293
  buttons.appendChild(close);
293
294
  close.onclick = () => this.hide.bind(this)();
294
295
  }
@@ -26,6 +26,7 @@ import { FuzzySearch } from '../fuzzy-search';
26
26
  import { MockLogger } from '../../../common/test/mock-logger';
27
27
  import { ILogger, bindContributionProvider } from '../../../common';
28
28
  import { LabelProviderContribution, LabelProvider } from '../../label-provider';
29
+ import { TreeFocusService, TreeFocusServiceImpl } from '../tree-focus-service';
29
30
 
30
31
  export function createTreeTestContainer(): Container {
31
32
  const container = new Container({ defaultScope: 'Singleton' });
@@ -41,6 +42,7 @@ export function createTreeTestContainer(): Container {
41
42
  container.bind(TreeSearch).toSelf();
42
43
  container.bind(FuzzySearch).toSelf();
43
44
  container.bind(MockLogger).toSelf();
45
+ container.bind(TreeFocusService).to(TreeFocusServiceImpl);
44
46
  container.bind(ILogger).to(MockLogger);
45
47
  bindContributionProvider(container, LabelProviderContribution);
46
48
  container.bind(LabelProvider).toSelf().inSingletonScope();