@theia/core 1.18.0-next.de7b81be → 1.20.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 (291) hide show
  1. package/LICENSE +642 -0
  2. package/README.md +3 -2
  3. package/lib/browser/about-dialog.d.ts.map +1 -1
  4. package/lib/browser/about-dialog.js +1 -1
  5. package/lib/browser/about-dialog.js.map +1 -1
  6. package/lib/browser/authentication-service.d.ts.map +1 -1
  7. package/lib/browser/authentication-service.js +1 -1
  8. package/lib/browser/authentication-service.js.map +1 -1
  9. package/lib/browser/color-registry.d.ts +3 -69
  10. package/lib/browser/color-registry.d.ts.map +1 -1
  11. package/lib/browser/color-registry.js +13 -27
  12. package/lib/browser/color-registry.js.map +1 -1
  13. package/lib/browser/common-frontend-contribution.d.ts +7 -0
  14. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  15. package/lib/browser/common-frontend-contribution.js +138 -121
  16. package/lib/browser/common-frontend-contribution.js.map +1 -1
  17. package/lib/browser/core-preferences.d.ts +2 -0
  18. package/lib/browser/core-preferences.d.ts.map +1 -1
  19. package/lib/browser/core-preferences.js +33 -18
  20. package/lib/browser/core-preferences.js.map +1 -1
  21. package/lib/browser/dialogs.d.ts +6 -0
  22. package/lib/browser/dialogs.d.ts.map +1 -1
  23. package/lib/browser/dialogs.js +10 -3
  24. package/lib/browser/dialogs.js.map +1 -1
  25. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  26. package/lib/browser/frontend-application-module.js +3 -0
  27. package/lib/browser/frontend-application-module.js.map +1 -1
  28. package/lib/browser/frontend-application.d.ts +6 -0
  29. package/lib/browser/frontend-application.d.ts.map +1 -1
  30. package/lib/browser/frontend-application.js +13 -0
  31. package/lib/browser/frontend-application.js.map +1 -1
  32. package/lib/browser/index.d.ts +1 -0
  33. package/lib/browser/index.d.ts.map +1 -1
  34. package/lib/browser/index.js +1 -0
  35. package/lib/browser/index.js.map +1 -1
  36. package/lib/browser/keybinding.spec.js +5 -0
  37. package/lib/browser/keybinding.spec.js.map +1 -1
  38. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.d.ts.map +1 -1
  39. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +16 -11
  40. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
  41. package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts +1 -1
  42. package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts.map +1 -1
  43. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +6 -4
  44. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
  45. package/lib/browser/keyboard/keys.d.ts +2 -251
  46. package/lib/browser/keyboard/keys.d.ts.map +1 -1
  47. package/lib/browser/keyboard/keys.js +12 -614
  48. package/lib/browser/keyboard/keys.js.map +1 -1
  49. package/lib/browser/menu/browser-context-menu-renderer.d.ts +1 -1
  50. package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
  51. package/lib/browser/menu/browser-menu-plugin.d.ts +3 -0
  52. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  53. package/lib/browser/menu/browser-menu-plugin.js +24 -4
  54. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  55. package/lib/browser/messaging/ws-connection-provider.d.ts +3 -3
  56. package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
  57. package/lib/browser/messaging/ws-connection-provider.js +14 -4
  58. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  59. package/lib/browser/{nls.d.ts → nls-loader.d.ts} +1 -6
  60. package/lib/browser/nls-loader.d.ts.map +1 -0
  61. package/lib/browser/nls-loader.js +29 -0
  62. package/lib/browser/nls-loader.js.map +1 -0
  63. package/lib/browser/progress-status-bar-item.d.ts +1 -2
  64. package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
  65. package/lib/browser/progress-status-bar-item.js.map +1 -1
  66. package/lib/browser/quick-input/quick-command-frontend-contribution.d.ts.map +1 -1
  67. package/lib/browser/quick-input/quick-command-frontend-contribution.js +2 -1
  68. package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
  69. package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
  70. package/lib/browser/quick-input/quick-command-service.js +2 -2
  71. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  72. package/lib/browser/quick-input/quick-input-service.d.ts +1 -201
  73. package/lib/browser/quick-input/quick-input-service.d.ts.map +1 -1
  74. package/lib/browser/quick-input/quick-input-service.js +11 -93
  75. package/lib/browser/quick-input/quick-input-service.js.map +1 -1
  76. package/lib/browser/quick-input/quick-view-service.d.ts +1 -2
  77. package/lib/browser/quick-input/quick-view-service.d.ts.map +1 -1
  78. package/lib/browser/quick-input/quick-view-service.js.map +1 -1
  79. package/lib/browser/shell/application-shell.d.ts +3 -1
  80. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  81. package/lib/browser/shell/application-shell.js +1 -2
  82. package/lib/browser/shell/application-shell.js.map +1 -1
  83. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  84. package/lib/browser/shell/shell-layout-restorer.js +5 -3
  85. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  86. package/lib/browser/shell/tab-bar-decorator.d.ts +1 -1
  87. package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
  88. package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
  89. package/lib/browser/shell/tab-bar-toolbar.d.ts.map +1 -1
  90. package/lib/browser/shell/tab-bar-toolbar.js +2 -1
  91. package/lib/browser/shell/tab-bar-toolbar.js.map +1 -1
  92. package/lib/browser/shell/tab-bars.d.ts +14 -1
  93. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  94. package/lib/browser/shell/tab-bars.js +99 -7
  95. package/lib/browser/shell/tab-bars.js.map +1 -1
  96. package/lib/browser/status-bar/status-bar.d.ts +3 -1
  97. package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
  98. package/lib/browser/status-bar/status-bar.js +16 -2
  99. package/lib/browser/status-bar/status-bar.js.map +1 -1
  100. package/lib/browser/storage-service.spec.js +1 -1
  101. package/lib/browser/storage-service.spec.js.map +1 -1
  102. package/lib/browser/theming.d.ts +5 -14
  103. package/lib/browser/theming.d.ts.map +1 -1
  104. package/lib/browser/theming.js +14 -0
  105. package/lib/browser/theming.js.map +1 -1
  106. package/lib/browser/tooltip-service.d.ts +52 -0
  107. package/lib/browser/tooltip-service.d.ts.map +1 -0
  108. package/lib/browser/tooltip-service.js +89 -0
  109. package/lib/browser/tooltip-service.js.map +1 -0
  110. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  111. package/lib/browser/tree/tree-widget.js +1 -1
  112. package/lib/browser/view-container.d.ts +55 -14
  113. package/lib/browser/view-container.d.ts.map +1 -1
  114. package/lib/browser/view-container.js +284 -66
  115. package/lib/browser/view-container.js.map +1 -1
  116. package/lib/browser/window/default-window-service.js +2 -2
  117. package/lib/browser/window/default-window-service.js.map +1 -1
  118. package/lib/browser/window/window-service.d.ts +1 -7
  119. package/lib/browser/window/window-service.d.ts.map +1 -1
  120. package/lib/browser/window/window-service.js +1 -5
  121. package/lib/browser/window/window-service.js.map +1 -1
  122. package/lib/browser/window-contribution.d.ts.map +1 -1
  123. package/lib/browser/window-contribution.js +2 -2
  124. package/lib/browser/window-contribution.js.map +1 -1
  125. package/lib/common/cancellation.d.ts +3 -0
  126. package/lib/common/cancellation.d.ts.map +1 -1
  127. package/lib/common/cancellation.js +8 -1
  128. package/lib/common/cancellation.js.map +1 -1
  129. package/lib/common/color.d.ts +84 -0
  130. package/lib/common/color.d.ts.map +1 -0
  131. package/lib/common/color.js +44 -0
  132. package/lib/common/color.js.map +1 -0
  133. package/lib/common/command.d.ts +1 -0
  134. package/lib/common/command.d.ts.map +1 -1
  135. package/lib/common/command.js +5 -1
  136. package/lib/common/command.js.map +1 -1
  137. package/lib/common/i18n/localization.d.ts +14 -0
  138. package/lib/common/i18n/localization.d.ts.map +1 -1
  139. package/lib/common/i18n/localization.js +54 -1
  140. package/lib/common/i18n/localization.js.map +1 -1
  141. package/lib/common/index.d.ts +1 -0
  142. package/lib/common/index.d.ts.map +1 -1
  143. package/lib/common/index.js +1 -0
  144. package/lib/common/index.js.map +1 -1
  145. package/lib/common/keys.d.ts +269 -0
  146. package/lib/common/keys.d.ts.map +1 -0
  147. package/lib/common/keys.js +634 -0
  148. package/lib/common/keys.js.map +1 -0
  149. package/lib/common/messaging/abstract-connection-provider.d.ts +1 -1
  150. package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
  151. package/lib/common/messaging/abstract-connection-provider.js +3 -1
  152. package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
  153. package/lib/common/messaging/proxy-factory.js +1 -1
  154. package/lib/common/messaging/proxy-factory.js.map +1 -1
  155. package/lib/common/nls.d.ts +28 -0
  156. package/lib/common/nls.d.ts.map +1 -0
  157. package/lib/common/nls.js +91 -0
  158. package/lib/common/nls.js.map +1 -0
  159. package/lib/common/path.d.ts +6 -0
  160. package/lib/common/path.d.ts.map +1 -1
  161. package/lib/common/path.js +16 -4
  162. package/lib/common/path.js.map +1 -1
  163. package/lib/common/path.spec.js +12 -0
  164. package/lib/common/path.spec.js.map +1 -1
  165. package/lib/common/promise-util.d.ts +2 -2
  166. package/lib/common/promise-util.d.ts.map +1 -1
  167. package/lib/common/promise-util.js.map +1 -1
  168. package/lib/common/quick-pick-service.d.ts +219 -1
  169. package/lib/common/quick-pick-service.d.ts.map +1 -1
  170. package/lib/common/quick-pick-service.js +108 -1
  171. package/lib/common/quick-pick-service.js.map +1 -1
  172. package/lib/common/theme.d.ts +30 -0
  173. package/lib/common/theme.d.ts.map +1 -0
  174. package/lib/common/theme.js +18 -0
  175. package/lib/common/theme.js.map +1 -0
  176. package/lib/common/window.d.ts +29 -0
  177. package/lib/common/window.d.ts.map +1 -0
  178. package/lib/common/window.js +23 -0
  179. package/lib/common/window.js.map +1 -0
  180. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +9 -5
  181. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
  182. package/lib/electron-browser/menu/electron-context-menu-renderer.js +40 -15
  183. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  184. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +5 -8
  185. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  186. package/lib/electron-browser/menu/electron-main-menu-factory.js +10 -17
  187. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  188. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +15 -7
  189. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  190. package/lib/electron-browser/menu/electron-menu-contribution.js +112 -42
  191. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  192. package/lib/electron-browser/window/electron-window-preferences.d.ts +1 -0
  193. package/lib/electron-browser/window/electron-window-preferences.d.ts.map +1 -1
  194. package/lib/electron-browser/window/electron-window-preferences.js +12 -1
  195. package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
  196. package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
  197. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  198. package/lib/electron-common/electron-main-window-service.d.ts +1 -1
  199. package/lib/electron-common/electron-main-window-service.d.ts.map +1 -1
  200. package/lib/electron-common/messaging/electron-messages.d.ts +20 -0
  201. package/lib/electron-common/messaging/electron-messages.d.ts.map +1 -0
  202. package/lib/electron-common/messaging/electron-messages.js +23 -0
  203. package/lib/electron-common/messaging/electron-messages.js.map +1 -0
  204. package/lib/electron-main/electron-main-application.d.ts +6 -0
  205. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  206. package/lib/electron-main/electron-main-application.js +80 -23
  207. package/lib/electron-main/electron-main-application.js.map +1 -1
  208. package/lib/electron-main/electron-main-window-service-impl.d.ts +1 -1
  209. package/lib/electron-main/electron-main-window-service-impl.d.ts.map +1 -1
  210. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +1 -1
  211. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
  212. package/lib/electron-main/messaging/electron-messaging-contribution.js +1 -2
  213. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  214. package/package.json +13 -9
  215. package/shared/@theia/application-package/lib/api.d.ts +1 -0
  216. package/shared/@theia/application-package/lib/api.js +1 -0
  217. package/src/browser/about-dialog.tsx +2 -2
  218. package/src/browser/authentication-service.ts +1 -2
  219. package/src/browser/color-registry.ts +3 -85
  220. package/src/browser/common-frontend-contribution.ts +116 -99
  221. package/src/browser/core-preferences.ts +37 -18
  222. package/src/browser/dialogs.ts +10 -3
  223. package/src/browser/frontend-application-module.ts +4 -0
  224. package/src/browser/frontend-application.ts +13 -0
  225. package/src/browser/index.ts +1 -0
  226. package/src/browser/keybinding.spec.ts +8 -1
  227. package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +16 -11
  228. package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +10 -4
  229. package/src/browser/keyboard/keys.ts +2 -675
  230. package/src/browser/menu/browser-context-menu-renderer.ts +1 -1
  231. package/src/browser/menu/browser-menu-plugin.ts +25 -5
  232. package/src/browser/messaging/ws-connection-provider.ts +13 -4
  233. package/src/browser/nls-loader.ts +26 -0
  234. package/src/browser/progress-status-bar-item.ts +1 -2
  235. package/src/browser/quick-input/quick-command-frontend-contribution.ts +2 -2
  236. package/src/browser/quick-input/quick-command-service.ts +2 -2
  237. package/src/browser/quick-input/quick-input-service.ts +1 -278
  238. package/src/browser/quick-input/quick-view-service.ts +1 -2
  239. package/src/browser/shell/application-shell.ts +4 -3
  240. package/src/browser/shell/shell-layout-restorer.ts +4 -3
  241. package/src/browser/shell/tab-bar-decorator.ts +1 -1
  242. package/src/browser/shell/tab-bar-toolbar.tsx +3 -1
  243. package/src/browser/shell/tab-bars.ts +103 -8
  244. package/src/browser/status-bar/status-bar.tsx +16 -1
  245. package/src/browser/storage-service.spec.ts +1 -1
  246. package/src/browser/style/alert-messages.css +1 -0
  247. package/src/browser/style/index.css +5 -0
  248. package/src/browser/style/menus.css +10 -1
  249. package/src/browser/style/sidepanel.css +9 -3
  250. package/src/browser/style/tabs.css +30 -0
  251. package/src/browser/style/tooltip.css +28 -0
  252. package/src/browser/style/view-container.css +9 -9
  253. package/src/browser/theming.ts +6 -17
  254. package/src/browser/tooltip-service.tsx +98 -0
  255. package/src/browser/tree/tree-model.ts +1 -1
  256. package/src/browser/tree/tree-widget.tsx +1 -1
  257. package/src/browser/view-container.ts +312 -80
  258. package/src/browser/window/default-window-service.ts +2 -2
  259. package/src/browser/window/window-service.ts +1 -9
  260. package/src/browser/window-contribution.ts +2 -2
  261. package/src/common/cancellation.ts +7 -0
  262. package/src/common/color.ts +100 -0
  263. package/src/common/command.ts +11 -1
  264. package/src/common/i18n/localization.ts +54 -0
  265. package/src/common/i18n/nls.metadata.json +20421 -0
  266. package/src/common/index.ts +1 -0
  267. package/src/common/keys.ts +693 -0
  268. package/src/common/messaging/abstract-connection-provider.ts +3 -1
  269. package/src/common/messaging/proxy-factory.ts +1 -1
  270. package/src/common/nls.ts +104 -0
  271. package/src/common/path.spec.ts +15 -0
  272. package/src/common/path.ts +16 -4
  273. package/src/common/promise-util.ts +3 -3
  274. package/src/common/quick-pick-service.ts +299 -3
  275. package/src/common/theme.ts +32 -0
  276. package/src/common/window.ts +30 -0
  277. package/src/electron-browser/menu/electron-context-menu-renderer.ts +38 -16
  278. package/src/electron-browser/menu/electron-main-menu-factory.ts +10 -15
  279. package/src/electron-browser/menu/electron-menu-contribution.ts +129 -39
  280. package/src/electron-browser/menu/electron-menu-style.css +84 -0
  281. package/src/electron-browser/window/electron-window-preferences.ts +13 -1
  282. package/src/electron-browser/window/electron-window-service.ts +1 -1
  283. package/src/electron-common/electron-main-window-service.ts +1 -1
  284. package/src/electron-common/messaging/electron-messages.ts +20 -0
  285. package/src/electron-main/electron-main-application.ts +86 -20
  286. package/src/electron-main/electron-main-window-service-impl.ts +1 -1
  287. package/src/electron-main/messaging/electron-messaging-contribution.ts +1 -2
  288. package/lib/browser/nls.d.ts.map +0 -1
  289. package/lib/browser/nls.js +0 -64
  290. package/lib/browser/nls.js.map +0 -1
  291. package/src/browser/nls.ts +0 -65
@@ -23,10 +23,10 @@ import { CommonMenus } from '../browser/common-frontend-contribution';
23
23
 
24
24
  export namespace WindowCommands {
25
25
 
26
- export const NEW_WINDOW: Command = {
26
+ export const NEW_WINDOW = Command.toDefaultLocalizedCommand({
27
27
  id: 'workbench.action.newWindow',
28
28
  label: 'New Window'
29
- };
29
+ });
30
30
  }
31
31
 
32
32
  @injectable()
@@ -48,6 +48,13 @@ export namespace CancellationToken {
48
48
  });
49
49
  }
50
50
 
51
+ export class CancellationError extends Error {
52
+ constructor() {
53
+ super('Canceled');
54
+ this.name = this.message;
55
+ }
56
+ }
57
+
51
58
  class MutableToken implements CancellationToken {
52
59
 
53
60
  private _isCancelled: boolean = false;
@@ -0,0 +1,100 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2019 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
+ /**
18
+ * Either be a reference to an existing color or a color value as a hex string, rgba, or hsla.
19
+ */
20
+ export type Color = string | RGBA | HSLA | ColorTransformation;
21
+ export namespace Color {
22
+ export function rgba(r: number, g: number, b: number, a: number = 1): Color {
23
+ return { r, g, b, a };
24
+ }
25
+ export function hsla(h: number, s: number, l: number, a: number = 1): Color {
26
+ return { h, s, l, a };
27
+ }
28
+ export const white = rgba(255, 255, 255, 1);
29
+ export const black = rgba(0, 0, 0, 1);
30
+ export function transparent(v: string, f: number): ColorTransformation {
31
+ return { v, f, kind: 'transparent' };
32
+ }
33
+ export function lighten(v: string, f: number): ColorTransformation {
34
+ return { v, f, kind: 'lighten' };
35
+ }
36
+ export function darken(v: string, f: number): ColorTransformation {
37
+ return { v, f, kind: 'darken' };
38
+ }
39
+ }
40
+ export interface ColorTransformation {
41
+ kind: 'transparent' | 'lighten' | 'darken'
42
+ v: string
43
+ f: number
44
+ }
45
+ export interface RGBA {
46
+ /**
47
+ * Red: integer in [0-255]
48
+ */
49
+ readonly r: number;
50
+
51
+ /**
52
+ * Green: integer in [0-255]
53
+ */
54
+ readonly g: number;
55
+
56
+ /**
57
+ * Blue: integer in [0-255]
58
+ */
59
+ readonly b: number;
60
+
61
+ /**
62
+ * Alpha: float in [0-1]
63
+ */
64
+ readonly a: number;
65
+ }
66
+ export interface HSLA {
67
+ /**
68
+ * Hue: integer in [0, 360]
69
+ */
70
+ readonly h: number;
71
+ /**
72
+ * Saturation: float in [0, 1]
73
+ */
74
+ readonly s: number;
75
+ /**
76
+ * Luminosity: float in [0, 1]
77
+ */
78
+ readonly l: number;
79
+ /**
80
+ * Alpha: float in [0, 1]
81
+ */
82
+ readonly a: number;
83
+ }
84
+
85
+ export interface ColorDefaults {
86
+ light?: Color
87
+ dark?: Color
88
+ hc?: Color
89
+ }
90
+
91
+ export interface ColorDefinition {
92
+ id: string
93
+ defaults?: ColorDefaults
94
+ description: string
95
+ }
96
+
97
+ export interface ColorCssVariable {
98
+ name: string
99
+ value: string
100
+ }
@@ -18,7 +18,7 @@ import { injectable, inject, named } from 'inversify';
18
18
  import { Event, Emitter, WaitUntilEvent } from './event';
19
19
  import { Disposable, DisposableCollection } from './disposable';
20
20
  import { ContributionProvider } from './contribution-provider';
21
- import { nls } from '../browser/nls';
21
+ import { nls } from './nls';
22
22
 
23
23
  /**
24
24
  * A command is a unique identifier of a function
@@ -64,6 +64,16 @@ export namespace Command {
64
64
  };
65
65
  }
66
66
 
67
+ export function toDefaultLocalizedCommand(command: Command): Command {
68
+ return {
69
+ ...command,
70
+ label: command.label && nls.localizeByDefault(command.label),
71
+ originalLabel: command.label,
72
+ category: command.category && nls.localizeByDefault(command.category),
73
+ originalCategory: command.category,
74
+ };
75
+ }
76
+
67
77
  /** Comparator function for when sorting commands */
68
78
  export function compareCommands(a: Command, b: Command): number {
69
79
  if (a.label && b.label) {
@@ -31,3 +31,57 @@ export interface Localization {
31
31
  localizedLanguageName?: string;
32
32
  translations: { [key: string]: string };
33
33
  }
34
+
35
+ export type FormatType = string | number | boolean | undefined;
36
+
37
+ export namespace Localization {
38
+
39
+ export function format(message: string, args: FormatType[]): string {
40
+ let result = message;
41
+ if (args.length > 0) {
42
+ result = message.replace(/\{(\d+)\}/g, (match, rest) => {
43
+ const index = rest[0];
44
+ const arg = args[index];
45
+ let replacement = match;
46
+ if (typeof arg === 'string') {
47
+ replacement = arg;
48
+ } else if (typeof arg === 'number' || typeof arg === 'boolean' || !arg) {
49
+ replacement = String(arg);
50
+ }
51
+ return replacement;
52
+ });
53
+ }
54
+ return result;
55
+ }
56
+
57
+ export function localize(localization: Localization | undefined, key: string, defaultValue: string, ...args: FormatType[]): string {
58
+ let value = defaultValue;
59
+ if (localization) {
60
+ const translation = localization.translations[key];
61
+ if (translation) {
62
+ value = normalize(translation);
63
+ }
64
+ }
65
+ return format(value, args);
66
+ }
67
+
68
+ /**
69
+ * This function normalizes values from VSCode's localizations, which often contain additional mnemonics (`&&`).
70
+ * The normalization removes the mnemonics from the input string.
71
+ *
72
+ * @param value Localization value coming from VSCode
73
+ * @returns A normalized localized value
74
+ */
75
+ export function normalize(value: string): string {
76
+ return value.replace(/&&/g, '');
77
+ }
78
+
79
+ export function transformKey(key: string): string {
80
+ let nlsKey = key;
81
+ const keySlashIndex = key.lastIndexOf('/');
82
+ if (keySlashIndex >= 0) {
83
+ nlsKey = key.substring(keySlashIndex + 1);
84
+ }
85
+ return nlsKey;
86
+ }
87
+ }