@theia/plugin-ext 1.46.1 → 1.47.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 (408) hide show
  1. package/lib/common/index.js +4 -13
  2. package/lib/common/index.js.map +1 -1
  3. package/lib/common/plugin-api-rpc-model.d.ts +1 -1
  4. package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
  5. package/lib/common/plugin-api-rpc.d.ts +41 -20
  6. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  7. package/lib/common/plugin-api-rpc.js +1 -1
  8. package/lib/common/plugin-api-rpc.js.map +1 -1
  9. package/lib/common/plugin-protocol.d.ts +10 -0
  10. package/lib/common/plugin-protocol.d.ts.map +1 -1
  11. package/lib/common/plugin-protocol.js.map +1 -1
  12. package/lib/common/uri-components.d.ts +1 -2
  13. package/lib/common/uri-components.d.ts.map +1 -1
  14. package/lib/common/uri-components.js +1 -5
  15. package/lib/common/uri-components.js.map +1 -1
  16. package/lib/hosted/browser/hosted-plugin-watcher.js +2 -7
  17. package/lib/hosted/browser/hosted-plugin-watcher.js.map +1 -1
  18. package/lib/hosted/browser/hosted-plugin.js +59 -67
  19. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  20. package/lib/hosted/browser/plugin-worker.js +3 -11
  21. package/lib/hosted/browser/plugin-worker.js.map +1 -1
  22. package/lib/hosted/browser/worker/worker-env-ext.js +3 -11
  23. package/lib/hosted/browser/worker/worker-env-ext.js.map +1 -1
  24. package/lib/hosted/common/hosted-plugin.js +21 -29
  25. package/lib/hosted/common/hosted-plugin.js.map +1 -1
  26. package/lib/hosted/node/hosted-plugin-cli-contribution.js +2 -7
  27. package/lib/hosted/node/hosted-plugin-cli-contribution.js.map +1 -1
  28. package/lib/hosted/node/hosted-plugin-deployer-handler.js +14 -22
  29. package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
  30. package/lib/hosted/node/hosted-plugin-localization-service.js +8 -16
  31. package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
  32. package/lib/hosted/node/hosted-plugin-process.js +14 -22
  33. package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
  34. package/lib/hosted/node/hosted-plugin.js +12 -20
  35. package/lib/hosted/node/hosted-plugin.js.map +1 -1
  36. package/lib/hosted/node/metadata-scanner.js +6 -17
  37. package/lib/hosted/node/metadata-scanner.js.map +1 -1
  38. package/lib/hosted/node/plugin-host-rpc.js +42 -53
  39. package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
  40. package/lib/hosted/node/plugin-language-pack-service.js +2 -7
  41. package/lib/hosted/node/plugin-language-pack-service.js.map +1 -1
  42. package/lib/hosted/node/plugin-reader.js +8 -16
  43. package/lib/hosted/node/plugin-reader.js.map +1 -1
  44. package/lib/hosted/node/plugin-service.js +22 -33
  45. package/lib/hosted/node/plugin-service.js.map +1 -1
  46. package/lib/hosted/node/scanners/file-plugin-uri-factory.js +2 -7
  47. package/lib/hosted/node/scanners/file-plugin-uri-factory.js.map +1 -1
  48. package/lib/hosted/node/scanners/grammars-reader.js +2 -7
  49. package/lib/hosted/node/scanners/grammars-reader.js.map +1 -1
  50. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  51. package/lib/hosted/node/scanners/scanner-theia.js +17 -19
  52. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  53. package/lib/hosted/node-electron/scanner-theia-electron.js +2 -7
  54. package/lib/hosted/node-electron/scanner-theia-electron.js.map +1 -1
  55. package/lib/main/browser/command-registry-main.d.ts +1 -0
  56. package/lib/main/browser/command-registry-main.d.ts.map +1 -1
  57. package/lib/main/browser/command-registry-main.js +6 -1
  58. package/lib/main/browser/command-registry-main.js.map +1 -1
  59. package/lib/main/browser/commands.js +5 -16
  60. package/lib/main/browser/commands.js.map +1 -1
  61. package/lib/main/browser/comments/comments-context-key-service.js +8 -16
  62. package/lib/main/browser/comments/comments-context-key-service.js.map +1 -1
  63. package/lib/main/browser/comments/comments-contribution.d.ts.map +1 -1
  64. package/lib/main/browser/comments/comments-contribution.js +17 -25
  65. package/lib/main/browser/comments/comments-contribution.js.map +1 -1
  66. package/lib/main/browser/comments/comments-decorator.js +3 -11
  67. package/lib/main/browser/comments/comments-decorator.js.map +1 -1
  68. package/lib/main/browser/comments/comments-main.js +2 -2
  69. package/lib/main/browser/comments/comments-main.js.map +1 -1
  70. package/lib/main/browser/comments/comments-service.js +2 -7
  71. package/lib/main/browser/comments/comments-service.js.map +1 -1
  72. package/lib/main/browser/custom-editors/custom-editor-contribution.js +4 -12
  73. package/lib/main/browser/custom-editors/custom-editor-contribution.js.map +1 -1
  74. package/lib/main/browser/custom-editors/custom-editor-opener.js +7 -18
  75. package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
  76. package/lib/main/browser/custom-editors/custom-editor-service.js +2 -7
  77. package/lib/main/browser/custom-editors/custom-editor-service.js.map +1 -1
  78. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
  79. package/lib/main/browser/custom-editors/custom-editor-widget.js +15 -21
  80. package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
  81. package/lib/main/browser/custom-editors/custom-editors-main.js +1 -1
  82. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  83. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +18 -26
  84. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
  85. package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts +2 -2
  86. package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts.map +1 -1
  87. package/lib/main/browser/data-transfer/data-transfer-type-converters.js +2 -4
  88. package/lib/main/browser/data-transfer/data-transfer-type-converters.js.map +1 -1
  89. package/lib/main/browser/debug/plugin-debug-service.js +10 -18
  90. package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
  91. package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js +8 -16
  92. package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js.map +1 -1
  93. package/lib/main/browser/dialogs/modal-notification.js +3 -11
  94. package/lib/main/browser/dialogs/modal-notification.js.map +1 -1
  95. package/lib/main/browser/editors-and-documents-main.d.ts +5 -1
  96. package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
  97. package/lib/main/browser/editors-and-documents-main.js +22 -3
  98. package/lib/main/browser/editors-and-documents-main.js.map +1 -1
  99. package/lib/main/browser/file-system-main-impl.d.ts +2 -1
  100. package/lib/main/browser/file-system-main-impl.d.ts.map +1 -1
  101. package/lib/main/browser/file-system-main-impl.js +5 -3
  102. package/lib/main/browser/file-system-main-impl.js.map +1 -1
  103. package/lib/main/browser/keybindings/keybindings-contribution-handler.js +4 -12
  104. package/lib/main/browser/keybindings/keybindings-contribution-handler.js.map +1 -1
  105. package/lib/main/browser/languages-main.d.ts +2 -2
  106. package/lib/main/browser/languages-main.d.ts.map +1 -1
  107. package/lib/main/browser/languages-main.js +19 -27
  108. package/lib/main/browser/languages-main.js.map +1 -1
  109. package/lib/main/browser/main-context.d.ts.map +1 -1
  110. package/lib/main/browser/main-context.js +1 -3
  111. package/lib/main/browser/main-context.js.map +1 -1
  112. package/lib/main/browser/menus/menus-contribution-handler.js +23 -31
  113. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  114. package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts.map +1 -1
  115. package/lib/main/browser/menus/plugin-menu-command-adapter.js +20 -25
  116. package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -1
  117. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +2 -2
  118. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -1
  119. package/lib/main/browser/menus/vscode-theia-menu-mappings.js +11 -9
  120. package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -1
  121. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts +0 -1
  122. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts.map +1 -1
  123. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js +5 -7
  124. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js.map +1 -1
  125. package/lib/main/browser/notebooks/notebook-kernels-main.d.ts +1 -0
  126. package/lib/main/browser/notebooks/notebook-kernels-main.d.ts.map +1 -1
  127. package/lib/main/browser/notebooks/notebook-kernels-main.js +41 -4
  128. package/lib/main/browser/notebooks/notebook-kernels-main.js.map +1 -1
  129. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +7 -2
  130. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
  131. package/lib/main/browser/notebooks/renderers/cell-output-webview.js +79 -45
  132. package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
  133. package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts +1 -0
  134. package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts.map +1 -1
  135. package/lib/main/browser/notebooks/renderers/output-webview-internal.js +74 -1
  136. package/lib/main/browser/notebooks/renderers/output-webview-internal.js.map +1 -1
  137. package/lib/main/browser/notebooks/renderers/webview-communication.d.ts +10 -2
  138. package/lib/main/browser/notebooks/renderers/webview-communication.d.ts.map +1 -1
  139. package/lib/main/browser/output-channel-registry-main.js +4 -12
  140. package/lib/main/browser/output-channel-registry-main.js.map +1 -1
  141. package/lib/main/browser/plugin-authentication-service.js +3 -11
  142. package/lib/main/browser/plugin-authentication-service.js.map +1 -1
  143. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  144. package/lib/main/browser/plugin-contribution-handler.js +66 -69
  145. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  146. package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
  147. package/lib/main/browser/plugin-ext-frontend-module.js +3 -1
  148. package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
  149. package/lib/main/browser/plugin-ext-widget.js +11 -19
  150. package/lib/main/browser/plugin-ext-widget.js.map +1 -1
  151. package/lib/main/browser/plugin-frontend-contribution.js +4 -12
  152. package/lib/main/browser/plugin-frontend-contribution.js.map +1 -1
  153. package/lib/main/browser/plugin-frontend-view-contribution.js +3 -11
  154. package/lib/main/browser/plugin-frontend-view-contribution.js.map +1 -1
  155. package/lib/main/browser/plugin-icon-service.d.ts +2 -5
  156. package/lib/main/browser/plugin-icon-service.d.ts.map +1 -1
  157. package/lib/main/browser/plugin-icon-service.js +10 -77
  158. package/lib/main/browser/plugin-icon-service.js.map +1 -1
  159. package/lib/main/browser/plugin-icon-theme-service.js +22 -30
  160. package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
  161. package/lib/main/browser/plugin-shared-style.js +8 -16
  162. package/lib/main/browser/plugin-shared-style.js.map +1 -1
  163. package/lib/main/browser/plugin-terminal-registry.js +2 -7
  164. package/lib/main/browser/plugin-terminal-registry.js.map +1 -1
  165. package/lib/main/browser/quick-open-main.d.ts +8 -7
  166. package/lib/main/browser/quick-open-main.d.ts.map +1 -1
  167. package/lib/main/browser/quick-open-main.js +51 -14
  168. package/lib/main/browser/quick-open-main.js.map +1 -1
  169. package/lib/main/browser/scm-main.js +3 -3
  170. package/lib/main/browser/scm-main.js.map +1 -1
  171. package/lib/main/browser/selection-provider-command.d.ts.map +1 -1
  172. package/lib/main/browser/selection-provider-command.js +5 -14
  173. package/lib/main/browser/selection-provider-command.js.map +1 -1
  174. package/lib/main/browser/test-main.d.ts +3 -1
  175. package/lib/main/browser/test-main.d.ts.map +1 -1
  176. package/lib/main/browser/test-main.js +29 -30
  177. package/lib/main/browser/test-main.js.map +1 -1
  178. package/lib/main/browser/text-editor-model-service.js +5 -16
  179. package/lib/main/browser/text-editor-model-service.js.map +1 -1
  180. package/lib/main/browser/text-editors-main.d.ts +4 -5
  181. package/lib/main/browser/text-editors-main.d.ts.map +1 -1
  182. package/lib/main/browser/text-editors-main.js +15 -9
  183. package/lib/main/browser/text-editors-main.js.map +1 -1
  184. package/lib/main/browser/theme-icon-override.js +13 -19
  185. package/lib/main/browser/theme-icon-override.js.map +1 -1
  186. package/lib/main/browser/view/dnd-file-content-store.js +2 -7
  187. package/lib/main/browser/view/dnd-file-content-store.js.map +1 -1
  188. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +8 -16
  189. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
  190. package/lib/main/browser/view/plugin-view-registry.d.ts +2 -0
  191. package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
  192. package/lib/main/browser/view/plugin-view-registry.js +49 -44
  193. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  194. package/lib/main/browser/view/plugin-view-widget.d.ts.map +1 -1
  195. package/lib/main/browser/view/plugin-view-widget.js +16 -25
  196. package/lib/main/browser/view/plugin-view-widget.js.map +1 -1
  197. package/lib/main/browser/view/tree-view-decorator-service.js +6 -17
  198. package/lib/main/browser/view/tree-view-decorator-service.js.map +1 -1
  199. package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
  200. package/lib/main/browser/view/tree-view-widget.js +41 -50
  201. package/lib/main/browser/view/tree-view-widget.js.map +1 -1
  202. package/lib/main/browser/view/view-context-key-service.js +8 -16
  203. package/lib/main/browser/view/view-context-key-service.js.map +1 -1
  204. package/lib/main/browser/view-column-service.js +4 -15
  205. package/lib/main/browser/view-column-service.js.map +1 -1
  206. package/lib/main/browser/webview/webview-context-keys.js +10 -18
  207. package/lib/main/browser/webview/webview-context-keys.js.map +1 -1
  208. package/lib/main/browser/webview/webview-environment.js +8 -16
  209. package/lib/main/browser/webview/webview-environment.js.map +1 -1
  210. package/lib/main/browser/webview/webview-frontend-security-warnings.js +8 -16
  211. package/lib/main/browser/webview/webview-frontend-security-warnings.js.map +1 -1
  212. package/lib/main/browser/webview/webview-resource-cache.js +3 -11
  213. package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
  214. package/lib/main/browser/webview/webview-theme-data-provider.js +14 -22
  215. package/lib/main/browser/webview/webview-theme-data-provider.js.map +1 -1
  216. package/lib/main/browser/webview/webview.js +37 -45
  217. package/lib/main/browser/webview/webview.js.map +1 -1
  218. package/lib/main/browser/webview-views/webview-views-main.js +3 -11
  219. package/lib/main/browser/webview-views/webview-views-main.js.map +1 -1
  220. package/lib/main/browser/workspace-main.js +2 -7
  221. package/lib/main/browser/workspace-main.js.map +1 -1
  222. package/lib/main/common/plugin-theia-environment.js +4 -12
  223. package/lib/main/common/plugin-theia-environment.js.map +1 -1
  224. package/lib/main/node/errors.spec.js +2 -2
  225. package/lib/main/node/errors.spec.js.map +1 -1
  226. package/lib/main/node/handlers/plugin-theia-directory-handler.js +6 -14
  227. package/lib/main/node/handlers/plugin-theia-directory-handler.js.map +1 -1
  228. package/lib/main/node/handlers/plugin-theia-file-handler.js +5 -13
  229. package/lib/main/node/handlers/plugin-theia-file-handler.js.map +1 -1
  230. package/lib/main/node/paths/plugin-paths-service.js +10 -18
  231. package/lib/main/node/paths/plugin-paths-service.js.map +1 -1
  232. package/lib/main/node/plugin-cli-contribution.js +2 -7
  233. package/lib/main/node/plugin-cli-contribution.js.map +1 -1
  234. package/lib/main/node/plugin-deployer-contribution.js +6 -14
  235. package/lib/main/node/plugin-deployer-contribution.js.map +1 -1
  236. package/lib/main/node/plugin-deployer-impl.js +18 -26
  237. package/lib/main/node/plugin-deployer-impl.js.map +1 -1
  238. package/lib/main/node/plugin-deployer-proxy-entry-impl.js +3 -11
  239. package/lib/main/node/plugin-deployer-proxy-entry-impl.js.map +1 -1
  240. package/lib/main/node/plugin-github-resolver.js +5 -13
  241. package/lib/main/node/plugin-github-resolver.js.map +1 -1
  242. package/lib/main/node/plugin-http-resolver.js +5 -13
  243. package/lib/main/node/plugin-http-resolver.js.map +1 -1
  244. package/lib/main/node/plugin-localization-server.js +4 -12
  245. package/lib/main/node/plugin-localization-server.js.map +1 -1
  246. package/lib/main/node/plugin-mgmt-cli-contribution.js +4 -12
  247. package/lib/main/node/plugin-mgmt-cli-contribution.js.map +1 -1
  248. package/lib/main/node/plugin-server-handler.js +6 -14
  249. package/lib/main/node/plugin-server-handler.js.map +1 -1
  250. package/lib/main/node/plugin-service.js +10 -18
  251. package/lib/main/node/plugin-service.js.map +1 -1
  252. package/lib/main/node/plugin-theia-deployer-participant.js +4 -12
  253. package/lib/main/node/plugin-theia-deployer-participant.js.map +1 -1
  254. package/lib/main/node/plugin-uninstallation-manager.js +2 -7
  255. package/lib/main/node/plugin-uninstallation-manager.js.map +1 -1
  256. package/lib/main/node/plugins-key-value-storage.js +12 -20
  257. package/lib/main/node/plugins-key-value-storage.js.map +1 -1
  258. package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js +2 -7
  259. package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js.map +1 -1
  260. package/lib/main/node/resolvers/local-plugin-deployer-resolver.js +2 -7
  261. package/lib/main/node/resolvers/local-plugin-deployer-resolver.js.map +1 -1
  262. package/lib/main/node/webview-backend-security-warnings.js +2 -7
  263. package/lib/main/node/webview-backend-security-warnings.js.map +1 -1
  264. package/lib/plugin/clipboard-ext.js +8 -16
  265. package/lib/plugin/clipboard-ext.js.map +1 -1
  266. package/lib/plugin/custom-editors.js +1 -1
  267. package/lib/plugin/custom-editors.js.map +1 -1
  268. package/lib/plugin/debug/debug-ext.js +11 -19
  269. package/lib/plugin/debug/debug-ext.js.map +1 -1
  270. package/lib/plugin/editors-and-documents.js +4 -12
  271. package/lib/plugin/editors-and-documents.js.map +1 -1
  272. package/lib/plugin/env.js +12 -20
  273. package/lib/plugin/env.js.map +1 -1
  274. package/lib/plugin/file-system-ext-impl.d.ts +2 -1
  275. package/lib/plugin/file-system-ext-impl.d.ts.map +1 -1
  276. package/lib/plugin/file-system-ext-impl.js +13 -1
  277. package/lib/plugin/file-system-ext-impl.js.map +1 -1
  278. package/lib/plugin/known-commands.d.ts.map +1 -1
  279. package/lib/plugin/known-commands.js +1 -0
  280. package/lib/plugin/known-commands.js.map +1 -1
  281. package/lib/plugin/languages/diagnostics.js +2 -2
  282. package/lib/plugin/languages/diagnostics.js.map +1 -1
  283. package/lib/plugin/languages/link-provider.d.ts.map +1 -1
  284. package/lib/plugin/languages/link-provider.js +3 -1
  285. package/lib/plugin/languages/link-provider.js.map +1 -1
  286. package/lib/plugin/localization-ext.js +8 -16
  287. package/lib/plugin/localization-ext.js.map +1 -1
  288. package/lib/plugin/markdown-string.d.ts +3 -3
  289. package/lib/plugin/markdown-string.d.ts.map +1 -1
  290. package/lib/plugin/markdown-string.js +17 -36
  291. package/lib/plugin/markdown-string.js.map +1 -1
  292. package/lib/plugin/message-registry.js +8 -16
  293. package/lib/plugin/message-registry.js.map +1 -1
  294. package/lib/plugin/node/env-node-ext.js +5 -13
  295. package/lib/plugin/node/env-node-ext.js.map +1 -1
  296. package/lib/plugin/notebook/notebook-kernels.d.ts +5 -6
  297. package/lib/plugin/notebook/notebook-kernels.d.ts.map +1 -1
  298. package/lib/plugin/notebook/notebook-kernels.js +24 -23
  299. package/lib/plugin/notebook/notebook-kernels.js.map +1 -1
  300. package/lib/plugin/notebook/notebook-renderers.d.ts.map +1 -1
  301. package/lib/plugin/notebook/notebook-renderers.js.map +1 -1
  302. package/lib/plugin/notebook/notebooks.d.ts +1 -0
  303. package/lib/plugin/notebook/notebooks.d.ts.map +1 -1
  304. package/lib/plugin/notebook/notebooks.js +19 -0
  305. package/lib/plugin/notebook/notebooks.js.map +1 -1
  306. package/lib/plugin/plugin-context.d.ts.map +1 -1
  307. package/lib/plugin/plugin-context.js +18 -21
  308. package/lib/plugin/plugin-context.js.map +1 -1
  309. package/lib/plugin/plugin-manager.js +23 -31
  310. package/lib/plugin/plugin-manager.js.map +1 -1
  311. package/lib/plugin/plugin-storage.js +4 -15
  312. package/lib/plugin/plugin-storage.js.map +1 -1
  313. package/lib/plugin/preference-registry.js +12 -20
  314. package/lib/plugin/preference-registry.js.map +1 -1
  315. package/lib/plugin/quick-open.d.ts +2 -9
  316. package/lib/plugin/quick-open.d.ts.map +1 -1
  317. package/lib/plugin/quick-open.js +6 -22
  318. package/lib/plugin/quick-open.js.map +1 -1
  319. package/lib/plugin/secrets-ext.js +4 -15
  320. package/lib/plugin/secrets-ext.js.map +1 -1
  321. package/lib/plugin/terminal-ext.js +6 -17
  322. package/lib/plugin/terminal-ext.js.map +1 -1
  323. package/lib/plugin/test-item.js +17 -25
  324. package/lib/plugin/test-item.js.map +1 -1
  325. package/lib/plugin/tests.d.ts +8 -1
  326. package/lib/plugin/tests.d.ts.map +1 -1
  327. package/lib/plugin/tests.js +35 -21
  328. package/lib/plugin/tests.js.map +1 -1
  329. package/lib/plugin/text-editors.d.ts +2 -0
  330. package/lib/plugin/text-editors.d.ts.map +1 -1
  331. package/lib/plugin/text-editors.js +6 -0
  332. package/lib/plugin/text-editors.js.map +1 -1
  333. package/lib/plugin/type-converters.d.ts +10 -1
  334. package/lib/plugin/type-converters.d.ts.map +1 -1
  335. package/lib/plugin/type-converters.js +49 -10
  336. package/lib/plugin/type-converters.js.map +1 -1
  337. package/lib/plugin/types-impl.d.ts +2 -2
  338. package/lib/plugin/types-impl.d.ts.map +1 -1
  339. package/lib/plugin/types-impl.js +167 -180
  340. package/lib/plugin/types-impl.js.map +1 -1
  341. package/lib/plugin/webviews.d.ts +14 -1
  342. package/lib/plugin/webviews.d.ts.map +1 -1
  343. package/lib/plugin/webviews.js +32 -24
  344. package/lib/plugin/webviews.js.map +1 -1
  345. package/lib/plugin/workspace.js +12 -20
  346. package/lib/plugin/workspace.js.map +1 -1
  347. package/package.json +31 -31
  348. package/src/common/plugin-api-rpc-model.ts +1 -1
  349. package/src/common/plugin-api-rpc.ts +36 -20
  350. package/src/common/plugin-protocol.ts +12 -1
  351. package/src/common/uri-components.ts +1 -5
  352. package/src/hosted/browser/hosted-plugin.ts +2 -2
  353. package/src/hosted/node/hosted-plugin-deployer-handler.ts +2 -2
  354. package/src/hosted/node/scanners/scanner-theia.ts +8 -2
  355. package/src/main/browser/command-registry-main.ts +7 -0
  356. package/src/main/browser/comments/comments-contribution.ts +7 -3
  357. package/src/main/browser/comments/comments-main.ts +2 -2
  358. package/src/main/browser/custom-editors/custom-editor-opener.tsx +2 -2
  359. package/src/main/browser/custom-editors/custom-editor-widget.ts +3 -1
  360. package/src/main/browser/custom-editors/custom-editors-main.ts +1 -1
  361. package/src/main/browser/data-transfer/data-transfer-type-converters.ts +4 -6
  362. package/src/main/browser/editors-and-documents-main.ts +27 -5
  363. package/src/main/browser/file-system-main-impl.ts +9 -5
  364. package/src/main/browser/languages-main.ts +9 -5
  365. package/src/main/browser/main-context.ts +1 -3
  366. package/src/main/browser/menus/menus-contribution-handler.ts +1 -1
  367. package/src/main/browser/menus/plugin-menu-command-adapter.ts +4 -1
  368. package/src/main/browser/menus/vscode-theia-menu-mappings.ts +10 -2
  369. package/src/main/browser/notebooks/notebook-documents-and-editors-main.ts +5 -8
  370. package/src/main/browser/notebooks/notebook-kernels-main.ts +46 -5
  371. package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +72 -21
  372. package/src/main/browser/notebooks/renderers/output-webview-internal.ts +93 -2
  373. package/src/main/browser/notebooks/renderers/webview-communication.ts +12 -2
  374. package/src/main/browser/plugin-contribution-handler.ts +9 -1
  375. package/src/main/browser/plugin-ext-frontend-module.ts +6 -2
  376. package/src/main/browser/plugin-icon-service.ts +8 -72
  377. package/src/main/browser/quick-open-main.ts +77 -28
  378. package/src/main/browser/scm-main.ts +1 -1
  379. package/src/main/browser/selection-provider-command.ts +1 -2
  380. package/src/main/browser/test-main.ts +11 -2
  381. package/src/main/browser/text-editors-main.ts +18 -10
  382. package/src/main/browser/theme-icon-override.ts +13 -19
  383. package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +1 -1
  384. package/src/main/browser/view/plugin-view-registry.ts +21 -6
  385. package/src/main/browser/view/plugin-view-widget.ts +0 -1
  386. package/src/main/browser/view/tree-view-widget.tsx +2 -3
  387. package/src/main/node/errors.spec.ts +2 -2
  388. package/src/plugin/custom-editors.ts +1 -1
  389. package/src/plugin/debug/debug-ext.ts +2 -2
  390. package/src/plugin/env.ts +3 -3
  391. package/src/plugin/file-system-ext-impl.ts +15 -2
  392. package/src/plugin/known-commands.ts +1 -0
  393. package/src/plugin/languages/diagnostics.ts +2 -2
  394. package/src/plugin/languages/link-provider.ts +3 -1
  395. package/src/plugin/markdown-string.ts +3 -3
  396. package/src/plugin/node/env-node-ext.ts +2 -2
  397. package/src/plugin/notebook/notebook-kernels.ts +29 -29
  398. package/src/plugin/notebook/notebook-renderers.ts +0 -1
  399. package/src/plugin/notebook/notebooks.ts +20 -0
  400. package/src/plugin/plugin-context.ts +12 -3
  401. package/src/plugin/preference-registry.ts +2 -2
  402. package/src/plugin/quick-open.ts +10 -24
  403. package/src/plugin/terminal-ext.ts +1 -1
  404. package/src/plugin/tests.ts +33 -4
  405. package/src/plugin/text-editors.ts +9 -2
  406. package/src/plugin/type-converters.ts +45 -9
  407. package/src/plugin/types-impl.ts +4 -4
  408. package/src/plugin/webviews.ts +22 -5
@@ -58,6 +58,16 @@ export interface PreloadContext {
58
58
  readonly isWorkspaceTrusted: boolean;
59
59
  readonly rendererData: readonly webviewCommunication.RendererMetadata[];
60
60
  readonly renderOptions: RenderOptions;
61
+ readonly staticPreloadsData: readonly string[];
62
+ }
63
+
64
+ interface KernelPreloadContext {
65
+ readonly onDidReceiveKernelMessage: Event<unknown>;
66
+ postKernelMessage(data: unknown): void;
67
+ }
68
+
69
+ interface KernelPreloadModule {
70
+ activate(ctx: KernelPreloadContext): Promise<void> | void;
61
71
  }
62
72
 
63
73
  export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
@@ -98,6 +108,36 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
98
108
 
99
109
  const settingChange: EmitterLike<RenderOptions> = createEmitter<RenderOptions>();
100
110
 
111
+ const onDidReceiveKernelMessage = createEmitter<unknown>();
112
+
113
+ function createKernelContext(): KernelPreloadContext {
114
+ return Object.freeze({
115
+ onDidReceiveKernelMessage: onDidReceiveKernelMessage.event,
116
+ postKernelMessage: (data: unknown) => {
117
+ theia.postMessage({ type: 'customKernelMessage', message: data });
118
+ }
119
+ });
120
+ }
121
+
122
+ async function runKernelPreload(url: string): Promise<void> {
123
+ try {
124
+ return activateModuleKernelPreload(url);
125
+ } catch (e) {
126
+ console.error(e);
127
+ throw e;
128
+ }
129
+ }
130
+
131
+ async function activateModuleKernelPreload(url: string): Promise<void> {
132
+ const baseUri = window.location.href.replace(/\/webview\/index\.html.*/, '');
133
+ const module: KernelPreloadModule = (await __import(`${baseUri}/${url}`)) as KernelPreloadModule;
134
+ if (!module.activate) {
135
+ console.error(`Notebook preload '${url}' was expected to be a module but it does not export an 'activate' function`);
136
+ return;
137
+ }
138
+ return module.activate(createKernelContext());
139
+ }
140
+
101
141
  class Output {
102
142
  readonly outputId: string;
103
143
  renderedItem?: rendererApi.OutputItem;
@@ -160,6 +200,10 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
160
200
  if (this.rendererApi) {
161
201
  return this.rendererApi;
162
202
  }
203
+
204
+ // Preloads need to be loaded before loading renderers.
205
+ await kernelPreloads.waitForAllCurrent();
206
+
163
207
  const baseUri = window.location.href.replace(/\/webview\/index\.html.*/, '');
164
208
  const rendererModule = await __import(`${baseUri}/${this.data.entrypoint.uri}`) as { activate: rendererApi.ActivationFunction };
165
209
  this.rendererApi = await rendererModule.activate(this.createRendererContext());
@@ -196,7 +240,9 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
196
240
 
197
241
  if (this.data.requiresMessaging) {
198
242
  context.onDidReceiveMessage = this.onMessageEvent.event;
199
- context.postMessage = message => theia.postMessage({ type: 'customRendererMessage', rendererId: this.data.id, message });
243
+ context.postMessage = message => {
244
+ theia.postMessage({ type: 'customRendererMessage', rendererId: this.data.id, message });
245
+ };
200
246
  }
201
247
 
202
248
  return Object.freeze(context);
@@ -385,6 +431,42 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
385
431
  }
386
432
  }();
387
433
 
434
+ const kernelPreloads = new class {
435
+ private readonly preloads = new Map<string /* uri */, Promise<unknown>>();
436
+
437
+ /**
438
+ * Returns a promise that resolves when the given preload is activated.
439
+ */
440
+ public waitFor(uri: string): Promise<unknown> {
441
+ return this.preloads.get(uri) || Promise.resolve(new Error(`Preload not ready: ${uri}`));
442
+ }
443
+
444
+ /**
445
+ * Loads a preload.
446
+ * @param uri URI to load from
447
+ * @param originalUri URI to show in an error message if the preload is invalid.
448
+ */
449
+ public load(uri: string): Promise<unknown> {
450
+ const promise = Promise.all([
451
+ runKernelPreload(uri),
452
+ this.waitForAllCurrent(),
453
+ ]);
454
+
455
+ this.preloads.set(uri, promise);
456
+ return promise;
457
+ }
458
+
459
+ /**
460
+ * Returns a promise that waits for all currently-registered preloads to
461
+ * activate before resolving.
462
+ */
463
+ public waitForAllCurrent(): Promise<unknown[]> {
464
+ return Promise.all([...this.preloads.values()].map(p => p.catch(err => err)));
465
+ }
466
+ };
467
+
468
+ await Promise.all(ctx.staticPreloadsData.map(preload => kernelPreloads.load(preload)));
469
+
388
470
  function clearOutput(output: Output): void {
389
471
  output.clear();
390
472
  output.element.remove();
@@ -460,7 +542,6 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
460
542
 
461
543
  window.addEventListener('message', async rawEvent => {
462
544
  const event = rawEvent as ({ data: webviewCommunication.ToWebviewMessage });
463
-
464
545
  switch (event.data.type) {
465
546
  case 'updateRenderers':
466
547
  renderers.updateRendererData(event.data.rendererData);
@@ -478,6 +559,16 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
478
559
  clearOutput(outputs.splice(index, 1)[0]);
479
560
  renderers.render(outputs[index], event.data.mimeType, undefined, new AbortController().signal);
480
561
  break;
562
+ case 'customKernelMessage':
563
+ onDidReceiveKernelMessage.fire(event.data.message);
564
+ break;
565
+ case 'preload': {
566
+ const resources = event.data.resources;
567
+ for (const uri of resources) {
568
+ kernelPreloads.load(uri);
569
+ }
570
+ break;
571
+ }
481
572
  }
482
573
  });
483
574
  window.addEventListener('wheel', handleWheel);
@@ -49,7 +49,17 @@ export interface ChangePreferredMimetypeMessage {
49
49
  readonly mimeType: string;
50
50
  }
51
51
 
52
- export type ToWebviewMessage = UpdateRenderersMessage | OutputChangedMessage | ChangePreferredMimetypeMessage | CustomRendererMessage;
52
+ export interface KernelMessage {
53
+ readonly type: 'customKernelMessage';
54
+ readonly message: unknown;
55
+ }
56
+
57
+ export interface PreloadMessage {
58
+ readonly type: 'preload';
59
+ readonly resources: string[];
60
+ }
61
+
62
+ export type ToWebviewMessage = UpdateRenderersMessage | OutputChangedMessage | ChangePreferredMimetypeMessage | CustomRendererMessage | KernelMessage | PreloadMessage;
53
63
 
54
64
  export interface WebviewInitialized {
55
65
  readonly type: 'initialized';
@@ -66,7 +76,7 @@ export interface WheelMessage {
66
76
  readonly deltaX: number;
67
77
  }
68
78
 
69
- export type FromWebviewMessage = WebviewInitialized | OnDidRenderOutput | WheelMessage | CustomRendererMessage;
79
+ export type FromWebviewMessage = WebviewInitialized | OnDidRenderOutput | WheelMessage | CustomRendererMessage | KernelMessage;
70
80
 
71
81
  export interface Output {
72
82
  id: string
@@ -47,13 +47,13 @@ import { PluginIconService } from './plugin-icon-service';
47
47
  import { PluginIconThemeService } from './plugin-icon-theme-service';
48
48
  import { ContributionProvider } from '@theia/core/lib/common';
49
49
  import * as monaco from '@theia/monaco-editor-core';
50
- import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
51
50
  import { ContributedTerminalProfileStore, TerminalProfileStore } from '@theia/terminal/lib/browser/terminal-profile-service';
52
51
  import { TerminalWidget } from '@theia/terminal/lib/browser/base/terminal-widget';
53
52
  import { TerminalService } from '@theia/terminal/lib/browser/base/terminal-service';
54
53
  import { PluginTerminalRegistry } from './plugin-terminal-registry';
55
54
  import { ContextKeyService } from '@theia/core/lib/browser/context-key-service';
56
55
  import { LanguageService } from '@theia/core/lib/browser/language-service';
56
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/base/common/themables';
57
57
 
58
58
  @injectable()
59
59
  export class PluginContributionHandler {
@@ -447,6 +447,14 @@ export class PluginContributionHandler {
447
447
  }
448
448
  }
449
449
 
450
+ if (contributions.notebookPreload) {
451
+ for (const preload of contributions.notebookPreload) {
452
+ pushContribution(`notebookPreloads.${preload.type}:${preload.entrypoint}`,
453
+ () => this.notebookRendererRegistry.registerStaticNotebookPreload(preload.type, preload.entrypoint, PluginPackage.toPluginUrl(plugin.metadata.model, ''))
454
+ );
455
+ }
456
+ }
457
+
450
458
  return toDispose;
451
459
  }
452
460
 
@@ -88,6 +88,8 @@ import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar
88
88
  import { CellOutputWebviewFactory } from '@theia/notebook/lib/browser';
89
89
  import { CellOutputWebviewImpl, createCellOutputWebviewContainer } from './notebooks/renderers/cell-output-webview';
90
90
  import { NotebookCellModel } from '@theia/notebook/lib/browser/view-model/notebook-cell-model';
91
+ import { NotebookModel } from '@theia/notebook/lib/browser/view-model/notebook-model';
92
+ import { ArgumentProcessorContribution } from './command-registry-main';
91
93
 
92
94
  export default new ContainerModule((bind, unbind, isBound, rebind) => {
93
95
 
@@ -262,7 +264,9 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
262
264
  return provider.createProxy<LanguagePackService>(languagePackServicePath);
263
265
  }).inSingletonScope();
264
266
 
265
- bind(CellOutputWebviewFactory).toFactory(ctx => async (cell: NotebookCellModel) =>
266
- createCellOutputWebviewContainer(ctx.container, cell).getAsync(CellOutputWebviewImpl)
267
+ bind(CellOutputWebviewFactory).toFactory(ctx => async (cell: NotebookCellModel, notebook: NotebookModel) =>
268
+ createCellOutputWebviewContainer(ctx.container, cell, notebook).getAsync(CellOutputWebviewImpl)
267
269
  );
270
+
271
+ bindContributionProvider(bind, ArgumentProcessorContribution);
268
272
  });
@@ -14,18 +14,13 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
- import { asCSSPropertyValue } from '@theia/monaco-editor-core/esm/vs/base/browser/dom';
18
17
  import { Endpoint } from '@theia/core/lib/browser';
19
18
  import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
20
- import { getIconRegistry } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/iconRegistry';
21
19
  import { inject, injectable } from '@theia/core/shared/inversify';
22
20
  import { URI } from '@theia/core/shared/vscode-uri';
23
- import { IconFontDefinition, IconContribution as Icon } from '@theia/core/lib/browser/icon-registry';
24
21
  import { MonacoIconRegistry } from '@theia/monaco/lib/browser/monaco-icon-registry';
25
22
  import * as path from 'path';
26
23
  import { IconContribution, DeployedPlugin, IconDefinition } from '../../common/plugin-protocol';
27
- import { IThemeService } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
28
- import { UnthemedProductIconTheme } from '@theia/monaco-editor-core/esm/vs/platform/theme/browser/iconsStyleSheet';
29
24
 
30
25
  @injectable()
31
26
  export class PluginIconService implements Disposable {
@@ -45,29 +40,19 @@ export class PluginIconService implements Disposable {
45
40
  } else {
46
41
  this.registerRegularIcon(contribution, defaultIcon.id);
47
42
  }
48
- this.updateStyle(contribution);
49
43
  return Disposable.NULL;
50
44
  }
51
45
 
52
- updateStyle(contribution: IconContribution): void {
53
- this.updateStyleElement();
54
- const css = this.getCSS(contribution);
55
- if (css) {
56
- this.styleElement.innerText = css;
57
- }
58
- const toRemoveStyleElement = Disposable.create(() => this.styleElement.remove());
59
- this.toDispose.push(toRemoveStyleElement);
60
- }
61
-
62
46
  dispose(): void {
63
47
  this.toDispose.dispose();
64
48
  }
65
49
 
66
50
  protected registerFontIcon(contribution: IconContribution, defaultIcon: IconDefinition): void {
67
- const location = defaultIcon.location;
68
- const format = getFileExtension(location);
69
- const fontId = getFontId(contribution.extensionId, location);
70
- const definition = this.iconRegistry.registerIconFont(fontId, { src: [{ location: URI.file(location), format }] });
51
+ const location = this.toPluginUrl(contribution.extensionId, getIconRelativePath(URI.parse(defaultIcon.location).path));
52
+ const format = getFileExtension(location.path);
53
+ const fontId = getFontId(contribution.extensionId, location.path);
54
+
55
+ const definition = this.iconRegistry.registerIconFont(fontId, { src: [{ location: location, format }] });
71
56
  this.iconRegistry.registerIcon(contribution.id, {
72
57
  fontCharacter: defaultIcon.fontCharacter,
73
58
  font: {
@@ -81,59 +66,10 @@ export class PluginIconService implements Disposable {
81
66
  this.iconRegistry.registerIcon(contribution.id, { id: defaultIconId }, contribution.description);
82
67
  }
83
68
 
84
- protected updateStyleElement(): void {
85
- if (!this.styleElement) {
86
- const styleElement = document.createElement('style');
87
- styleElement.type = 'text/css';
88
- styleElement.media = 'screen';
89
- styleElement.id = 'contributedIconsStyles';
90
- document.head.appendChild(styleElement);
91
- this.styleElement = styleElement;
92
- }
93
- }
94
- protected getCSS(iconContribution: IconContribution, themeService?: IThemeService): string | undefined {
95
- const iconRegistry = getIconRegistry();
96
- const productIconTheme = themeService ? themeService.getProductIconTheme() : new UnthemedProductIconTheme();
97
- const usedFontIds: { [id: string]: IconFontDefinition } = {};
98
- const formatIconRule = (contribution: Icon): string | undefined => {
99
- const definition = productIconTheme.getIcon(contribution);
100
- if (!definition) {
101
- return undefined;
102
- }
103
- const fontContribution = definition.font;
104
- if (fontContribution) {
105
- usedFontIds[fontContribution.id] = fontContribution.definition;
106
- return `.codicon-${contribution.id}:before { content: '${definition.fontCharacter}'; font-family: ${asCSSPropertyValue(iconContribution.extensionId)}; }`;
107
- }
108
- // default font (codicon)
109
- return `.codicon-${contribution.id}:before { content: '${definition.fontCharacter}'; }`;
110
- };
111
-
112
- const rules = [];
113
- for (const contribution of iconRegistry.getIcons()) {
114
- const rule = formatIconRule(contribution);
115
- if (rule) {
116
- rules.push(rule);
117
- }
118
- }
119
- for (const id in usedFontIds) {
120
- if (id) {
121
- const definition = usedFontIds[id];
122
- const fontWeight = definition.weight ? `font-weight: ${definition.weight};` : '';
123
- const fontStyle = definition.style ? `font-style: ${definition.style};` : '';
124
- const src = definition.src.map(icon =>
125
- `${this.toPluginUrl(iconContribution.extensionId, getIconRelativePath(icon.location.path))} format('${icon.format}')`)
126
- .join(', ');
127
- rules.push(`@font-face { src: ${src}; font-family: ${asCSSPropertyValue(iconContribution.extensionId)};${fontWeight}${fontStyle} font-display: block; }`);
128
- }
129
- }
130
- return rules.join('\n');
131
- }
132
-
133
- protected toPluginUrl(id: string, relativePath: string): string {
134
- return `url('${new Endpoint({
69
+ protected toPluginUrl(id: string, relativePath: string): URI {
70
+ return URI.from(new Endpoint({
135
71
  path: `hostedPlugin/${this.formatExtensionId(id)}/${encodeURIComponent(relativePath)}`
136
- }).getRestUrl().toString()}')`;
72
+ }).getRestUrl().toComponents());
137
73
  }
138
74
 
139
75
  protected formatExtensionId(id: string): string {
@@ -23,39 +23,47 @@ import {
23
23
  QuickOpenMain,
24
24
  MAIN_RPC_CONTEXT,
25
25
  TransferInputBox,
26
- TransferQuickPickItems,
26
+ TransferQuickPickItem,
27
27
  TransferQuickInput,
28
28
  TransferQuickInputButton,
29
- TransferQuickPickItemValue
29
+ TransferQuickPickOptions
30
30
  } from '../../common/plugin-api-rpc';
31
31
  import {
32
32
  InputOptions,
33
- PickOptions,
33
+ QuickInput,
34
34
  QuickInputButton,
35
35
  QuickInputButtonHandle,
36
- QuickInputService
36
+ QuickInputService,
37
+ QuickPickItem,
38
+ codiconArray
37
39
  } from '@theia/core/lib/browser';
38
40
  import { DisposableCollection, Disposable } from '@theia/core/lib/common/disposable';
39
41
  import { CancellationToken } from '@theia/core/lib/common/cancellation';
40
42
  import { MonacoQuickInputService } from '@theia/monaco/lib/browser/monaco-quick-input-service';
41
43
  import { QuickInputButtons } from '../../plugin/types-impl';
42
- import { getIconPathOrClass } from '../../plugin/quick-open';
43
44
  import * as monaco from '@theia/monaco-editor-core';
44
- import { IQuickPickItem, IQuickInput } from '@theia/monaco-editor-core/esm/vs/base/parts/quickinput/common/quickInput';
45
- import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
45
+ import { UriComponents } from '../../common/uri-components';
46
+ import { URI } from '@theia/core/shared/vscode-uri';
47
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/base/common/themables';
48
+ import { isUriComponents } from '@theia/monaco-editor-core/esm/vs/base/common/uri';
46
49
 
47
50
  export interface QuickInputSession {
48
- input: IQuickInput;
49
- handlesToItems: Map<number, TransferQuickPickItems>;
51
+ input: QuickInput;
52
+ handlesToItems: Map<number, TransferQuickPickItem>;
50
53
  }
51
54
 
55
+ interface IconPath {
56
+ dark: URI,
57
+ light?: URI
58
+ };
59
+
52
60
  export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
53
61
 
54
62
  private quickInputService: QuickInputService;
55
63
  private proxy: QuickOpenExt;
56
64
  private delegate: MonacoQuickInputService;
57
65
  private readonly items: Record<number, {
58
- resolve(items: TransferQuickPickItems[]): void;
66
+ resolve(items: QuickPickItem[]): void;
59
67
  reject(error: Error): void;
60
68
  }> = {};
61
69
 
@@ -71,33 +79,74 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
71
79
  this.toDispose.dispose();
72
80
  }
73
81
 
74
- async $show(instance: number, options: PickOptions<TransferQuickPickItemValue>, token: CancellationToken): Promise<number | number[] | undefined> {
75
- const contents = new Promise<TransferQuickPickItems[]>((resolve, reject) => {
82
+ async $show(instance: number, options: TransferQuickPickOptions<TransferQuickPickItem>, token: CancellationToken): Promise<number | number[] | undefined> {
83
+ const contents = new Promise<QuickPickItem[]>((resolve, reject) => {
76
84
  this.items[instance] = { resolve, reject };
77
85
  });
78
86
 
79
- options = {
87
+ const activeItem = await options.activeItem;
88
+ const transformedOptions = {
80
89
  ...options,
81
90
  onDidFocus: (el: any) => {
82
91
  if (el) {
83
- this.proxy.$onItemSelected((<TransferQuickPickItems>el).handle);
92
+ this.proxy.$onItemSelected(Number.parseInt((<QuickPickItem>el).id!));
84
93
  }
85
- }
94
+ },
95
+ activeItem: activeItem ? this.toQuickPickItem(activeItem) : undefined
86
96
  };
87
97
 
88
- const result = await this.delegate.pick<TransferQuickPickItemValue>(contents, options, token);
98
+ const result = await this.delegate.pick(contents, transformedOptions, token);
89
99
 
90
100
  if (Array.isArray(result)) {
91
- return result.map(({ handle }) => handle);
101
+ return result.map(({ id }) => Number.parseInt(id!));
92
102
  } else if (result) {
93
- return result.handle;
103
+ return Number.parseInt(result.id!);
94
104
  }
95
105
  return undefined;
96
106
  }
97
107
 
98
- $setItems(instance: number, items: TransferQuickPickItems[]): Promise<any> {
108
+ private normalizeIconPath(path: UriComponents | { light: UriComponents; dark: UriComponents } | ThemeIcon | undefined): {
109
+ iconPath?: IconPath
110
+ iconClasses?: string[]
111
+ } {
112
+ let iconClasses;
113
+ if (ThemeIcon.isThemeIcon(path)) {
114
+ const codicon = codiconArray(path.id);
115
+ iconClasses = codicon;
116
+ }
117
+ let iconPath;
118
+ if (isUriComponents(path)) {
119
+ iconPath = { dark: URI.from(path) };
120
+ } else if (path && 'dark' in path) {
121
+ iconPath = { dark: URI.from(path.dark), light: URI.from(path.light) };
122
+ }
123
+ return {
124
+ iconPath,
125
+ iconClasses
126
+ };
127
+ }
128
+
129
+ private toQuickPickItem(item: undefined): undefined;
130
+ private toQuickPickItem(item: TransferQuickPickItem): QuickPickItem
131
+ private toQuickPickItem(item: TransferQuickPickItem | undefined): QuickPickItem | undefined {
132
+ if (!item) {
133
+ return undefined;
134
+ }
135
+ return {
136
+ ...this.normalizeIconPath(item.iconPath),
137
+ type: 'item',
138
+ id: item.handle.toString(),
139
+ label: item.label,
140
+ description: item.description,
141
+ detail: item.detail,
142
+ alwaysShow: item.alwaysShow,
143
+ buttons: item.buttons ? this.convertToQuickInputButtons(item.buttons) : undefined
144
+ };
145
+ }
146
+
147
+ $setItems(instance: number, items: TransferQuickPickItem[]): Promise<any> {
99
148
  if (this.items[instance]) {
100
- this.items[instance].resolve(items);
149
+ this.items[instance].resolve(items.map(item => this.toQuickPickItem(item)));
101
150
  delete this.items[instance];
102
151
  }
103
152
  return Promise.resolve();
@@ -201,17 +250,17 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
201
250
  quickPick.onDidAccept(() => {
202
251
  this.proxy.$acceptOnDidAccept(sessionId);
203
252
  });
204
- quickPick.onDidChangeActive((items: Array<IQuickPickItem>) => {
205
- this.proxy.$onDidChangeActive(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
253
+ quickPick.onDidChangeActive((items: QuickPickItem[]) => {
254
+ this.proxy.$onDidChangeActive(sessionId, items.map(item => Number.parseInt(item.id!)));
206
255
  });
207
- quickPick.onDidChangeSelection((items: Array<IQuickPickItem>) => {
208
- this.proxy.$onDidChangeSelection(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
256
+ quickPick.onDidChangeSelection((items: QuickPickItem[]) => {
257
+ this.proxy.$onDidChangeSelection(sessionId, items.map(item => Number.parseInt(item.id!)));
209
258
  });
210
259
  quickPick.onDidTriggerButton((button: QuickInputButtonHandle) => {
211
260
  this.proxy.$acceptOnDidTriggerButton(sessionId, button);
212
261
  });
213
262
  quickPick.onDidTriggerItemButton(e => {
214
- this.proxy.$onDidTriggerItemButton(sessionId, (e.item as TransferQuickPickItems).handle, (e.button as TransferQuickPickItems).handle);
263
+ this.proxy.$onDidTriggerItemButton(sessionId, Number.parseInt(e.item.id!), (e.button as TransferQuickPickItem).handle);
215
264
  });
216
265
  quickPick.onDidChangeValue((value: string) => {
217
266
  this.proxy.$acceptDidChangeValue(sessionId, value);
@@ -260,7 +309,7 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
260
309
  }
261
310
  } else if (param === 'items') {
262
311
  handlesToItems.clear();
263
- params[param].forEach((item: TransferQuickPickItems) => {
312
+ params[param].forEach((item: TransferQuickPickItem) => {
264
313
  handlesToItems.set(item.handle, item);
265
314
  });
266
315
  (input as any)[param] = params[param];
@@ -314,9 +363,9 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
314
363
  return Promise.resolve(undefined);
315
364
  }
316
365
 
317
- private convertToQuickInputButtons(buttons: Array<TransferQuickInputButton>): Array<QuickInputButton> {
366
+ private convertToQuickInputButtons(buttons: readonly TransferQuickInputButton[]): QuickInputButton[] {
318
367
  return buttons.map((button, i) => ({
319
- ...getIconPathOrClass(button),
368
+ ...this.normalizeIconPath(button.iconPath),
320
369
  tooltip: button.tooltip,
321
370
  handle: button === QuickInputButtons.Back ? -1 : i,
322
371
  } as QuickInputButton));
@@ -41,8 +41,8 @@ import { Splice } from '../../common/arrays';
41
41
  import { UriComponents } from '../../common/uri-components';
42
42
  import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
43
43
  import { PluginSharedStyle } from './plugin-shared-style';
44
- import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
45
44
  import { IconUrl } from '../../common';
45
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/base/common/themables';
46
46
 
47
47
  export class PluginScmResourceGroup implements ScmResourceGroup {
48
48
 
@@ -19,7 +19,6 @@ import { inject, injectable } from '@theia/core/shared/inversify';
19
19
  import { UriAwareCommandHandler, UriCommandHandler } from '@theia/core/lib/common/uri-command-handler';
20
20
  import URI from '@theia/core/lib/common/uri';
21
21
  import { SelectionService } from '@theia/core';
22
- import { theiaUritoUriComponents } from '../../common/uri-components';
23
22
 
24
23
  export namespace SelectionProviderCommands {
25
24
  export const GET_SELECTED_CONTEXT: Command = {
@@ -36,7 +35,7 @@ export class SelectionProviderCommandContribution implements CommandContribution
36
35
  commands.registerCommand(SelectionProviderCommands.GET_SELECTED_CONTEXT, this.newMultiUriAwareCommandHandler({
37
36
  isEnabled: () => true,
38
37
  isVisible: () => false,
39
- execute: (selectedUris: URI[]) => selectedUris.map(uri => theiaUritoUriComponents(uri))
38
+ execute: (selectedUris: URI[]) => selectedUris.map(uri => uri.toComponents())
40
39
  }));
41
40
  }
42
41
 
@@ -195,7 +195,16 @@ function itemToPath(item: TestItem): string[] {
195
195
  class TestRunProfileImpl implements TestRunProfile {
196
196
 
197
197
  label: string;
198
- isDefault: boolean;
198
+
199
+ private _isDefault: boolean;
200
+ set isDefault(isDefault: boolean) {
201
+ this._isDefault = isDefault;
202
+ this.proxy.$onDidChangeDefault(this.controllerId, this.id, isDefault);
203
+ }
204
+ get isDefault(): boolean {
205
+ return this._isDefault;
206
+ }
207
+
199
208
  tag: string;
200
209
  canConfigure: boolean;
201
210
 
@@ -205,7 +214,7 @@ class TestRunProfileImpl implements TestRunProfile {
205
214
  }
206
215
 
207
216
  if ('isDefault' in update) {
208
- this.isDefault = update.isDefault!;
217
+ this._isDefault = update.isDefault!;
209
218
  }
210
219
 
211
220
  if ('tag' in update) {