@theia/plugin-ext 1.45.1 → 1.46.0-next.106

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 (594) 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 +50 -24
  6. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  7. package/lib/common/plugin-api-rpc.js +4 -2
  8. package/lib/common/plugin-api-rpc.js.map +1 -1
  9. package/lib/common/plugin-ext-api-contribution.d.ts +35 -5
  10. package/lib/common/plugin-ext-api-contribution.d.ts.map +1 -1
  11. package/lib/common/plugin-ext-api-contribution.js.map +1 -1
  12. package/lib/common/plugin-protocol.d.ts +15 -2
  13. package/lib/common/plugin-protocol.d.ts.map +1 -1
  14. package/lib/common/plugin-protocol.js +1 -0
  15. package/lib/common/plugin-protocol.js.map +1 -1
  16. package/lib/common/proxy-handler.d.ts +7 -0
  17. package/lib/common/proxy-handler.d.ts.map +1 -1
  18. package/lib/common/proxy-handler.js +5 -1
  19. package/lib/common/proxy-handler.js.map +1 -1
  20. package/lib/common/rpc-protocol.d.ts +10 -0
  21. package/lib/common/rpc-protocol.d.ts.map +1 -1
  22. package/lib/common/rpc-protocol.js +32 -3
  23. package/lib/common/rpc-protocol.js.map +1 -1
  24. package/lib/common/uri-components.d.ts +1 -2
  25. package/lib/common/uri-components.d.ts.map +1 -1
  26. package/lib/common/uri-components.js +1 -5
  27. package/lib/common/uri-components.js.map +1 -1
  28. package/lib/hosted/browser/hosted-plugin-watcher.js +2 -7
  29. package/lib/hosted/browser/hosted-plugin-watcher.js.map +1 -1
  30. package/lib/hosted/browser/hosted-plugin.d.ts +16 -74
  31. package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
  32. package/lib/hosted/browser/hosted-plugin.js +98 -378
  33. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  34. package/lib/hosted/browser/plugin-worker.js +3 -11
  35. package/lib/hosted/browser/plugin-worker.js.map +1 -1
  36. package/lib/hosted/browser/worker/debug-stub.d.ts +2 -2
  37. package/lib/hosted/browser/worker/debug-stub.d.ts.map +1 -1
  38. package/lib/hosted/browser/worker/debug-stub.js +3 -3
  39. package/lib/hosted/browser/worker/debug-stub.js.map +1 -1
  40. package/lib/hosted/browser/worker/worker-env-ext.d.ts +1 -2
  41. package/lib/hosted/browser/worker/worker-env-ext.d.ts.map +1 -1
  42. package/lib/hosted/browser/worker/worker-env-ext.js +10 -4
  43. package/lib/hosted/browser/worker/worker-env-ext.js.map +1 -1
  44. package/lib/hosted/browser/worker/worker-main.js +20 -32
  45. package/lib/hosted/browser/worker/worker-main.js.map +1 -1
  46. package/lib/hosted/browser/worker/worker-plugin-module.d.ts +5 -0
  47. package/lib/hosted/browser/worker/worker-plugin-module.d.ts.map +1 -0
  48. package/lib/hosted/browser/worker/worker-plugin-module.js +78 -0
  49. package/lib/hosted/browser/worker/worker-plugin-module.js.map +1 -0
  50. package/lib/hosted/common/hosted-plugin.d.ts +97 -0
  51. package/lib/hosted/common/hosted-plugin.d.ts.map +1 -0
  52. package/lib/hosted/common/hosted-plugin.js +400 -0
  53. package/lib/hosted/common/hosted-plugin.js.map +1 -0
  54. package/lib/hosted/node/hosted-plugin-cli-contribution.js +2 -7
  55. package/lib/hosted/node/hosted-plugin-cli-contribution.js.map +1 -1
  56. package/lib/hosted/node/hosted-plugin-deployer-handler.js +14 -22
  57. package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
  58. package/lib/hosted/node/hosted-plugin-localization-service.js +8 -16
  59. package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
  60. package/lib/hosted/node/hosted-plugin-process.d.ts +1 -1
  61. package/lib/hosted/node/hosted-plugin-process.d.ts.map +1 -1
  62. package/lib/hosted/node/hosted-plugin-process.js +16 -24
  63. package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
  64. package/lib/hosted/node/hosted-plugin.js +12 -20
  65. package/lib/hosted/node/hosted-plugin.js.map +1 -1
  66. package/lib/hosted/node/metadata-scanner.js +6 -17
  67. package/lib/hosted/node/metadata-scanner.js.map +1 -1
  68. package/lib/hosted/node/plugin-ext-hosted-backend-module.d.ts.map +1 -1
  69. package/lib/hosted/node/plugin-ext-hosted-backend-module.js +2 -0
  70. package/lib/hosted/node/plugin-ext-hosted-backend-module.js.map +1 -1
  71. package/lib/hosted/node/plugin-host-module.d.ts +5 -0
  72. package/lib/hosted/node/plugin-host-module.d.ts.map +1 -0
  73. package/lib/hosted/node/plugin-host-module.js +68 -0
  74. package/lib/hosted/node/plugin-host-module.js.map +1 -0
  75. package/lib/hosted/node/plugin-host-rpc.d.ts +93 -7
  76. package/lib/hosted/node/plugin-host-rpc.d.ts.map +1 -1
  77. package/lib/hosted/node/plugin-host-rpc.js +191 -53
  78. package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
  79. package/lib/hosted/node/plugin-host.js +6 -5
  80. package/lib/hosted/node/plugin-host.js.map +1 -1
  81. package/lib/hosted/node/plugin-language-pack-service.js +2 -7
  82. package/lib/hosted/node/plugin-language-pack-service.js.map +1 -1
  83. package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
  84. package/lib/hosted/node/plugin-reader.js +11 -16
  85. package/lib/hosted/node/plugin-reader.js.map +1 -1
  86. package/lib/hosted/node/plugin-service.d.ts +8 -0
  87. package/lib/hosted/node/plugin-service.d.ts.map +1 -1
  88. package/lib/hosted/node/plugin-service.js +34 -35
  89. package/lib/hosted/node/plugin-service.js.map +1 -1
  90. package/lib/hosted/node/scanners/file-plugin-uri-factory.js +3 -8
  91. package/lib/hosted/node/scanners/file-plugin-uri-factory.js.map +1 -1
  92. package/lib/hosted/node/scanners/grammars-reader.js +2 -7
  93. package/lib/hosted/node/scanners/grammars-reader.js.map +1 -1
  94. package/lib/hosted/node/scanners/scanner-theia.d.ts +17 -3
  95. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  96. package/lib/hosted/node/scanners/scanner-theia.js +58 -31
  97. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  98. package/lib/hosted/node-electron/scanner-theia-electron.js +2 -7
  99. package/lib/hosted/node-electron/scanner-theia-electron.js.map +1 -1
  100. package/lib/main/browser/authentication-main.d.ts.map +1 -1
  101. package/lib/main/browser/authentication-main.js +3 -1
  102. package/lib/main/browser/authentication-main.js.map +1 -1
  103. package/lib/main/browser/command-registry-main.d.ts +1 -0
  104. package/lib/main/browser/command-registry-main.d.ts.map +1 -1
  105. package/lib/main/browser/command-registry-main.js +6 -1
  106. package/lib/main/browser/command-registry-main.js.map +1 -1
  107. package/lib/main/browser/commands.js +5 -16
  108. package/lib/main/browser/commands.js.map +1 -1
  109. package/lib/main/browser/comments/comments-context-key-service.js +8 -16
  110. package/lib/main/browser/comments/comments-context-key-service.js.map +1 -1
  111. package/lib/main/browser/comments/comments-contribution.d.ts.map +1 -1
  112. package/lib/main/browser/comments/comments-contribution.js +17 -25
  113. package/lib/main/browser/comments/comments-contribution.js.map +1 -1
  114. package/lib/main/browser/comments/comments-decorator.js +3 -11
  115. package/lib/main/browser/comments/comments-decorator.js.map +1 -1
  116. package/lib/main/browser/comments/comments-main.js +2 -2
  117. package/lib/main/browser/comments/comments-main.js.map +1 -1
  118. package/lib/main/browser/comments/comments-service.js +2 -7
  119. package/lib/main/browser/comments/comments-service.js.map +1 -1
  120. package/lib/main/browser/custom-editors/custom-editor-contribution.js +4 -12
  121. package/lib/main/browser/custom-editors/custom-editor-contribution.js.map +1 -1
  122. package/lib/main/browser/custom-editors/custom-editor-opener.js +7 -18
  123. package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
  124. package/lib/main/browser/custom-editors/custom-editor-service.js +2 -7
  125. package/lib/main/browser/custom-editors/custom-editor-service.js.map +1 -1
  126. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
  127. package/lib/main/browser/custom-editors/custom-editor-widget.js +15 -21
  128. package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
  129. package/lib/main/browser/custom-editors/custom-editors-main.js +1 -1
  130. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  131. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +18 -26
  132. package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
  133. package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts +2 -2
  134. package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts.map +1 -1
  135. package/lib/main/browser/data-transfer/data-transfer-type-converters.js +2 -4
  136. package/lib/main/browser/data-transfer/data-transfer-type-converters.js.map +1 -1
  137. package/lib/main/browser/debug/plugin-debug-service.js +10 -18
  138. package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
  139. package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js +8 -16
  140. package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js.map +1 -1
  141. package/lib/main/browser/dialogs/modal-notification.js +3 -11
  142. package/lib/main/browser/dialogs/modal-notification.js.map +1 -1
  143. package/lib/main/browser/editors-and-documents-main.d.ts +5 -1
  144. package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
  145. package/lib/main/browser/editors-and-documents-main.js +22 -3
  146. package/lib/main/browser/editors-and-documents-main.js.map +1 -1
  147. package/lib/main/browser/env-main.d.ts +1 -10
  148. package/lib/main/browser/env-main.d.ts.map +1 -1
  149. package/lib/main/browser/env-main.js +2 -21
  150. package/lib/main/browser/env-main.js.map +1 -1
  151. package/lib/main/browser/file-system-main-impl.d.ts +2 -1
  152. package/lib/main/browser/file-system-main-impl.d.ts.map +1 -1
  153. package/lib/main/browser/file-system-main-impl.js +5 -3
  154. package/lib/main/browser/file-system-main-impl.js.map +1 -1
  155. package/lib/main/browser/keybindings/keybindings-contribution-handler.js +4 -12
  156. package/lib/main/browser/keybindings/keybindings-contribution-handler.js.map +1 -1
  157. package/lib/main/browser/languages-main.d.ts +2 -2
  158. package/lib/main/browser/languages-main.d.ts.map +1 -1
  159. package/lib/main/browser/languages-main.js +19 -27
  160. package/lib/main/browser/languages-main.js.map +1 -1
  161. package/lib/main/browser/main-context.d.ts.map +1 -1
  162. package/lib/main/browser/main-context.js +2 -8
  163. package/lib/main/browser/main-context.js.map +1 -1
  164. package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
  165. package/lib/main/browser/menus/menus-contribution-handler.js +29 -34
  166. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  167. package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts.map +1 -1
  168. package/lib/main/browser/menus/plugin-menu-command-adapter.js +20 -25
  169. package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -1
  170. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +2 -2
  171. package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -1
  172. package/lib/main/browser/menus/vscode-theia-menu-mappings.js +11 -9
  173. package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -1
  174. package/lib/main/browser/message-registry-main.d.ts +6 -4
  175. package/lib/main/browser/message-registry-main.d.ts.map +1 -1
  176. package/lib/main/browser/message-registry-main.js +7 -19
  177. package/lib/main/browser/message-registry-main.js.map +1 -1
  178. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts +0 -1
  179. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts.map +1 -1
  180. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js +5 -7
  181. package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js.map +1 -1
  182. package/lib/main/browser/notebooks/notebook-kernels-main.d.ts +1 -0
  183. package/lib/main/browser/notebooks/notebook-kernels-main.d.ts.map +1 -1
  184. package/lib/main/browser/notebooks/notebook-kernels-main.js +41 -4
  185. package/lib/main/browser/notebooks/notebook-kernels-main.js.map +1 -1
  186. package/lib/main/browser/notebooks/notebooks-main.d.ts +10 -9
  187. package/lib/main/browser/notebooks/notebooks-main.d.ts.map +1 -1
  188. package/lib/main/browser/notebooks/notebooks-main.js +16 -4
  189. package/lib/main/browser/notebooks/notebooks-main.js.map +1 -1
  190. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +8 -2
  191. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
  192. package/lib/main/browser/notebooks/renderers/cell-output-webview.js +102 -67
  193. package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
  194. package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts +1 -0
  195. package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts.map +1 -1
  196. package/lib/main/browser/notebooks/renderers/output-webview-internal.js +96 -15
  197. package/lib/main/browser/notebooks/renderers/output-webview-internal.js.map +1 -1
  198. package/lib/main/browser/notebooks/renderers/webview-communication.d.ts +12 -3
  199. package/lib/main/browser/notebooks/renderers/webview-communication.d.ts.map +1 -1
  200. package/lib/main/browser/notification-main.d.ts +2 -14
  201. package/lib/main/browser/notification-main.d.ts.map +1 -1
  202. package/lib/main/browser/notification-main.js +3 -52
  203. package/lib/main/browser/notification-main.js.map +1 -1
  204. package/lib/main/browser/output-channel-registry-main.js +4 -12
  205. package/lib/main/browser/output-channel-registry-main.js.map +1 -1
  206. package/lib/main/browser/plugin-authentication-service.js +3 -11
  207. package/lib/main/browser/plugin-authentication-service.js.map +1 -1
  208. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  209. package/lib/main/browser/plugin-contribution-handler.js +66 -69
  210. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  211. package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
  212. package/lib/main/browser/plugin-ext-frontend-module.js +3 -1
  213. package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
  214. package/lib/main/browser/plugin-ext-widget.js +11 -19
  215. package/lib/main/browser/plugin-ext-widget.js.map +1 -1
  216. package/lib/main/browser/plugin-frontend-contribution.js +4 -12
  217. package/lib/main/browser/plugin-frontend-contribution.js.map +1 -1
  218. package/lib/main/browser/plugin-frontend-view-contribution.js +3 -11
  219. package/lib/main/browser/plugin-frontend-view-contribution.js.map +1 -1
  220. package/lib/main/browser/plugin-icon-service.d.ts +2 -5
  221. package/lib/main/browser/plugin-icon-service.d.ts.map +1 -1
  222. package/lib/main/browser/plugin-icon-service.js +10 -77
  223. package/lib/main/browser/plugin-icon-service.js.map +1 -1
  224. package/lib/main/browser/plugin-icon-theme-service.js +22 -30
  225. package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
  226. package/lib/main/browser/plugin-shared-style.js +8 -16
  227. package/lib/main/browser/plugin-shared-style.js.map +1 -1
  228. package/lib/main/browser/plugin-terminal-registry.js +2 -7
  229. package/lib/main/browser/plugin-terminal-registry.js.map +1 -1
  230. package/lib/main/browser/quick-open-main.d.ts +8 -7
  231. package/lib/main/browser/quick-open-main.d.ts.map +1 -1
  232. package/lib/main/browser/quick-open-main.js +57 -17
  233. package/lib/main/browser/quick-open-main.js.map +1 -1
  234. package/lib/main/browser/scm-main.js +3 -3
  235. package/lib/main/browser/scm-main.js.map +1 -1
  236. package/lib/main/browser/selection-provider-command.d.ts.map +1 -1
  237. package/lib/main/browser/selection-provider-command.js +5 -14
  238. package/lib/main/browser/selection-provider-command.js.map +1 -1
  239. package/lib/main/browser/terminal-main.d.ts +1 -1
  240. package/lib/main/browser/terminal-main.d.ts.map +1 -1
  241. package/lib/main/browser/terminal-main.js +2 -2
  242. package/lib/main/browser/terminal-main.js.map +1 -1
  243. package/lib/main/browser/test-main.d.ts +3 -1
  244. package/lib/main/browser/test-main.d.ts.map +1 -1
  245. package/lib/main/browser/test-main.js +29 -30
  246. package/lib/main/browser/test-main.js.map +1 -1
  247. package/lib/main/browser/text-editor-main.d.ts.map +1 -1
  248. package/lib/main/browser/text-editor-main.js +6 -0
  249. package/lib/main/browser/text-editor-main.js.map +1 -1
  250. package/lib/main/browser/text-editor-model-service.js +5 -16
  251. package/lib/main/browser/text-editor-model-service.js.map +1 -1
  252. package/lib/main/browser/text-editors-main.d.ts +4 -5
  253. package/lib/main/browser/text-editors-main.d.ts.map +1 -1
  254. package/lib/main/browser/text-editors-main.js +15 -9
  255. package/lib/main/browser/text-editors-main.js.map +1 -1
  256. package/lib/main/browser/theme-icon-override.js +13 -19
  257. package/lib/main/browser/theme-icon-override.js.map +1 -1
  258. package/lib/main/browser/view/dnd-file-content-store.js +2 -7
  259. package/lib/main/browser/view/dnd-file-content-store.js.map +1 -1
  260. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +8 -16
  261. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
  262. package/lib/main/browser/view/plugin-view-registry.d.ts +2 -0
  263. package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
  264. package/lib/main/browser/view/plugin-view-registry.js +53 -45
  265. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  266. package/lib/main/browser/view/plugin-view-widget.d.ts.map +1 -1
  267. package/lib/main/browser/view/plugin-view-widget.js +16 -25
  268. package/lib/main/browser/view/plugin-view-widget.js.map +1 -1
  269. package/lib/main/browser/view/tree-view-decorator-service.js +6 -17
  270. package/lib/main/browser/view/tree-view-decorator-service.js.map +1 -1
  271. package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
  272. package/lib/main/browser/view/tree-view-widget.js +41 -50
  273. package/lib/main/browser/view/tree-view-widget.js.map +1 -1
  274. package/lib/main/browser/view/view-context-key-service.js +8 -16
  275. package/lib/main/browser/view/view-context-key-service.js.map +1 -1
  276. package/lib/main/browser/view-column-service.js +4 -15
  277. package/lib/main/browser/view-column-service.js.map +1 -1
  278. package/lib/main/browser/webview/webview-context-keys.d.ts +5 -1
  279. package/lib/main/browser/webview/webview-context-keys.d.ts.map +1 -1
  280. package/lib/main/browser/webview/webview-context-keys.js +23 -22
  281. package/lib/main/browser/webview/webview-context-keys.js.map +1 -1
  282. package/lib/main/browser/webview/webview-environment.js +8 -16
  283. package/lib/main/browser/webview/webview-environment.js.map +1 -1
  284. package/lib/main/browser/webview/webview-frontend-security-warnings.js +8 -16
  285. package/lib/main/browser/webview/webview-frontend-security-warnings.js.map +1 -1
  286. package/lib/main/browser/webview/webview-resource-cache.js +3 -11
  287. package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
  288. package/lib/main/browser/webview/webview-theme-data-provider.js +14 -22
  289. package/lib/main/browser/webview/webview-theme-data-provider.js.map +1 -1
  290. package/lib/main/browser/webview/webview-widget-factory.d.ts.map +1 -1
  291. package/lib/main/browser/webview/webview-widget-factory.js +2 -1
  292. package/lib/main/browser/webview/webview-widget-factory.js.map +1 -1
  293. package/lib/main/browser/webview/webview.d.ts +1 -0
  294. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  295. package/lib/main/browser/webview/webview.js +38 -45
  296. package/lib/main/browser/webview/webview.js.map +1 -1
  297. package/lib/main/browser/webview-views/webview-views-main.js +3 -11
  298. package/lib/main/browser/webview-views/webview-views-main.js.map +1 -1
  299. package/lib/main/browser/webviews-main.d.ts.map +1 -1
  300. package/lib/main/browser/webviews-main.js +7 -2
  301. package/lib/main/browser/webviews-main.js.map +1 -1
  302. package/lib/main/browser/workspace-main.js +2 -7
  303. package/lib/main/browser/workspace-main.js.map +1 -1
  304. package/lib/main/common/basic-message-registry-main.d.ts +14 -0
  305. package/lib/main/common/basic-message-registry-main.d.ts.map +1 -0
  306. package/lib/main/common/basic-message-registry-main.js +50 -0
  307. package/lib/main/common/basic-message-registry-main.js.map +1 -0
  308. package/lib/main/common/basic-notification-main.d.ts +19 -0
  309. package/lib/main/common/basic-notification-main.d.ts.map +1 -0
  310. package/lib/main/common/basic-notification-main.js +75 -0
  311. package/lib/main/common/basic-notification-main.js.map +1 -0
  312. package/lib/main/common/env-main.d.ts +11 -0
  313. package/lib/main/common/env-main.d.ts.map +1 -0
  314. package/lib/main/common/env-main.js +40 -0
  315. package/lib/main/common/env-main.js.map +1 -0
  316. package/lib/main/common/plugin-theia-environment.js +4 -12
  317. package/lib/main/common/plugin-theia-environment.js.map +1 -1
  318. package/lib/main/node/errors.spec.js +2 -2
  319. package/lib/main/node/errors.spec.js.map +1 -1
  320. package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts +8 -3
  321. package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts.map +1 -1
  322. package/lib/main/node/handlers/plugin-theia-directory-handler.js +42 -32
  323. package/lib/main/node/handlers/plugin-theia-directory-handler.js.map +1 -1
  324. package/lib/main/node/handlers/plugin-theia-file-handler.js +6 -14
  325. package/lib/main/node/handlers/plugin-theia-file-handler.js.map +1 -1
  326. package/lib/main/node/paths/plugin-paths-service.js +10 -18
  327. package/lib/main/node/paths/plugin-paths-service.js.map +1 -1
  328. package/lib/main/node/plugin-cli-contribution.js +2 -7
  329. package/lib/main/node/plugin-cli-contribution.js.map +1 -1
  330. package/lib/main/node/plugin-deployer-contribution.js +6 -14
  331. package/lib/main/node/plugin-deployer-contribution.js.map +1 -1
  332. package/lib/main/node/plugin-deployer-impl.d.ts.map +1 -1
  333. package/lib/main/node/plugin-deployer-impl.js +23 -27
  334. package/lib/main/node/plugin-deployer-impl.js.map +1 -1
  335. package/lib/main/node/plugin-deployer-proxy-entry-impl.js +3 -11
  336. package/lib/main/node/plugin-deployer-proxy-entry-impl.js.map +1 -1
  337. package/lib/main/node/plugin-github-resolver.js +5 -13
  338. package/lib/main/node/plugin-github-resolver.js.map +1 -1
  339. package/lib/main/node/plugin-http-resolver.js +5 -13
  340. package/lib/main/node/plugin-http-resolver.js.map +1 -1
  341. package/lib/main/node/plugin-localization-server.js +4 -12
  342. package/lib/main/node/plugin-localization-server.js.map +1 -1
  343. package/lib/main/node/plugin-mgmt-cli-contribution.js +4 -12
  344. package/lib/main/node/plugin-mgmt-cli-contribution.js.map +1 -1
  345. package/lib/main/node/plugin-server-handler.js +6 -14
  346. package/lib/main/node/plugin-server-handler.js.map +1 -1
  347. package/lib/main/node/plugin-service.js +10 -18
  348. package/lib/main/node/plugin-service.js.map +1 -1
  349. package/lib/main/node/plugin-theia-deployer-participant.js +4 -12
  350. package/lib/main/node/plugin-theia-deployer-participant.js.map +1 -1
  351. package/lib/main/node/plugin-uninstallation-manager.js +2 -7
  352. package/lib/main/node/plugin-uninstallation-manager.js.map +1 -1
  353. package/lib/main/node/plugins-key-value-storage.js +13 -21
  354. package/lib/main/node/plugins-key-value-storage.js.map +1 -1
  355. package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js +2 -7
  356. package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js.map +1 -1
  357. package/lib/main/node/resolvers/local-plugin-deployer-resolver.js +2 -7
  358. package/lib/main/node/resolvers/local-plugin-deployer-resolver.js.map +1 -1
  359. package/lib/main/node/webview-backend-security-warnings.js +2 -7
  360. package/lib/main/node/webview-backend-security-warnings.js.map +1 -1
  361. package/lib/plugin/clipboard-ext.d.ts +3 -2
  362. package/lib/plugin/clipboard-ext.d.ts.map +1 -1
  363. package/lib/plugin/clipboard-ext.js +20 -4
  364. package/lib/plugin/clipboard-ext.js.map +1 -1
  365. package/lib/plugin/custom-editors.js +1 -1
  366. package/lib/plugin/custom-editors.js.map +1 -1
  367. package/lib/plugin/debug/debug-ext.d.ts +3 -1
  368. package/lib/plugin/debug/debug-ext.d.ts.map +1 -1
  369. package/lib/plugin/debug/debug-ext.js +25 -6
  370. package/lib/plugin/debug/debug-ext.js.map +1 -1
  371. package/lib/plugin/dialogs.js +1 -1
  372. package/lib/plugin/dialogs.js.map +1 -1
  373. package/lib/plugin/documents.js +2 -2
  374. package/lib/plugin/documents.js.map +1 -1
  375. package/lib/plugin/editors-and-documents.d.ts +1 -2
  376. package/lib/plugin/editors-and-documents.d.ts.map +1 -1
  377. package/lib/plugin/editors-and-documents.js +13 -4
  378. package/lib/plugin/editors-and-documents.js.map +1 -1
  379. package/lib/plugin/env.d.ts +6 -2
  380. package/lib/plugin/env.d.ts.map +1 -1
  381. package/lib/plugin/env.js +32 -7
  382. package/lib/plugin/env.js.map +1 -1
  383. package/lib/plugin/file-system-ext-impl.d.ts +2 -1
  384. package/lib/plugin/file-system-ext-impl.d.ts.map +1 -1
  385. package/lib/plugin/file-system-ext-impl.js +13 -1
  386. package/lib/plugin/file-system-ext-impl.js.map +1 -1
  387. package/lib/plugin/known-commands.d.ts.map +1 -1
  388. package/lib/plugin/known-commands.js +1 -0
  389. package/lib/plugin/known-commands.js.map +1 -1
  390. package/lib/plugin/languages/diagnostics.js +2 -2
  391. package/lib/plugin/languages/diagnostics.js.map +1 -1
  392. package/lib/plugin/languages/link-provider.d.ts.map +1 -1
  393. package/lib/plugin/languages/link-provider.js +3 -1
  394. package/lib/plugin/languages/link-provider.js.map +1 -1
  395. package/lib/plugin/localization-ext.d.ts +3 -2
  396. package/lib/plugin/localization-ext.d.ts.map +1 -1
  397. package/lib/plugin/localization-ext.js +22 -4
  398. package/lib/plugin/localization-ext.js.map +1 -1
  399. package/lib/plugin/markdown-string.d.ts +3 -3
  400. package/lib/plugin/markdown-string.d.ts.map +1 -1
  401. package/lib/plugin/markdown-string.js +17 -36
  402. package/lib/plugin/markdown-string.js.map +1 -1
  403. package/lib/plugin/message-registry.d.ts +2 -1
  404. package/lib/plugin/message-registry.d.ts.map +1 -1
  405. package/lib/plugin/message-registry.js +20 -4
  406. package/lib/plugin/message-registry.js.map +1 -1
  407. package/lib/plugin/node/debug/debug.spec.js +21 -1
  408. package/lib/plugin/node/debug/debug.spec.js.map +1 -1
  409. package/lib/plugin/node/env-node-ext.d.ts +1 -6
  410. package/lib/plugin/node/env-node-ext.d.ts.map +1 -1
  411. package/lib/plugin/node/env-node-ext.js +12 -12
  412. package/lib/plugin/node/env-node-ext.js.map +1 -1
  413. package/lib/plugin/node/plugin-container-module.d.ts +75 -0
  414. package/lib/plugin/node/plugin-container-module.d.ts.map +1 -0
  415. package/lib/plugin/node/plugin-container-module.js +115 -0
  416. package/lib/plugin/node/plugin-container-module.js.map +1 -0
  417. package/lib/plugin/notebook/notebook-kernels.d.ts +5 -6
  418. package/lib/plugin/notebook/notebook-kernels.d.ts.map +1 -1
  419. package/lib/plugin/notebook/notebook-kernels.js +24 -24
  420. package/lib/plugin/notebook/notebook-kernels.js.map +1 -1
  421. package/lib/plugin/notebook/notebook-renderers.d.ts.map +1 -1
  422. package/lib/plugin/notebook/notebook-renderers.js.map +1 -1
  423. package/lib/plugin/notebook/notebooks.d.ts +1 -0
  424. package/lib/plugin/notebook/notebooks.d.ts.map +1 -1
  425. package/lib/plugin/notebook/notebooks.js +19 -0
  426. package/lib/plugin/notebook/notebooks.js.map +1 -1
  427. package/lib/plugin/plugin-context.d.ts.map +1 -1
  428. package/lib/plugin/plugin-context.js +27 -22
  429. package/lib/plugin/plugin-context.js.map +1 -1
  430. package/lib/plugin/plugin-manager.d.ts +26 -17
  431. package/lib/plugin/plugin-manager.d.ts.map +1 -1
  432. package/lib/plugin/plugin-manager.js +99 -37
  433. package/lib/plugin/plugin-manager.js.map +1 -1
  434. package/lib/plugin/plugin-storage.d.ts +11 -3
  435. package/lib/plugin/plugin-storage.d.ts.map +1 -1
  436. package/lib/plugin/plugin-storage.js +14 -5
  437. package/lib/plugin/plugin-storage.js.map +1 -1
  438. package/lib/plugin/preference-registry.d.ts +3 -2
  439. package/lib/plugin/preference-registry.d.ts.map +1 -1
  440. package/lib/plugin/preference-registry.js +29 -7
  441. package/lib/plugin/preference-registry.js.map +1 -1
  442. package/lib/plugin/preference-registry.spec.js +8 -1
  443. package/lib/plugin/preference-registry.spec.js.map +1 -1
  444. package/lib/plugin/quick-open.d.ts +2 -9
  445. package/lib/plugin/quick-open.d.ts.map +1 -1
  446. package/lib/plugin/quick-open.js +9 -25
  447. package/lib/plugin/quick-open.js.map +1 -1
  448. package/lib/plugin/secrets-ext.d.ts +16 -7
  449. package/lib/plugin/secrets-ext.d.ts.map +1 -1
  450. package/lib/plugin/secrets-ext.js +12 -3
  451. package/lib/plugin/secrets-ext.js.map +1 -1
  452. package/lib/plugin/terminal-ext.d.ts +1 -1
  453. package/lib/plugin/terminal-ext.d.ts.map +1 -1
  454. package/lib/plugin/terminal-ext.js +17 -8
  455. package/lib/plugin/terminal-ext.js.map +1 -1
  456. package/lib/plugin/test-item.js +17 -25
  457. package/lib/plugin/test-item.js.map +1 -1
  458. package/lib/plugin/tests.d.ts +8 -1
  459. package/lib/plugin/tests.d.ts.map +1 -1
  460. package/lib/plugin/tests.js +35 -21
  461. package/lib/plugin/tests.js.map +1 -1
  462. package/lib/plugin/text-editors.d.ts +2 -0
  463. package/lib/plugin/text-editors.d.ts.map +1 -1
  464. package/lib/plugin/text-editors.js +6 -0
  465. package/lib/plugin/text-editors.js.map +1 -1
  466. package/lib/plugin/type-converters.d.ts +10 -1
  467. package/lib/plugin/type-converters.d.ts.map +1 -1
  468. package/lib/plugin/type-converters.js +49 -10
  469. package/lib/plugin/type-converters.js.map +1 -1
  470. package/lib/plugin/types-impl.d.ts +26 -5
  471. package/lib/plugin/types-impl.d.ts.map +1 -1
  472. package/lib/plugin/types-impl.js +188 -184
  473. package/lib/plugin/types-impl.js.map +1 -1
  474. package/lib/plugin/webview-views.d.ts.map +1 -1
  475. package/lib/plugin/webview-views.js +2 -1
  476. package/lib/plugin/webview-views.js.map +1 -1
  477. package/lib/plugin/webviews.d.ts +21 -6
  478. package/lib/plugin/webviews.d.ts.map +1 -1
  479. package/lib/plugin/webviews.js +57 -15
  480. package/lib/plugin/webviews.js.map +1 -1
  481. package/lib/plugin/workspace.d.ts +4 -3
  482. package/lib/plugin/workspace.d.ts.map +1 -1
  483. package/lib/plugin/workspace.js +32 -6
  484. package/lib/plugin/workspace.js.map +1 -1
  485. package/package.json +31 -31
  486. package/src/common/plugin-api-rpc-model.ts +1 -1
  487. package/src/common/plugin-api-rpc.ts +46 -26
  488. package/src/common/plugin-ext-api-contribution.ts +38 -5
  489. package/src/common/plugin-protocol.ts +19 -3
  490. package/src/common/proxy-handler.ts +14 -1
  491. package/src/common/rpc-protocol.ts +41 -3
  492. package/src/common/uri-components.ts +1 -5
  493. package/src/hosted/browser/hosted-plugin.ts +49 -338
  494. package/src/hosted/browser/worker/debug-stub.ts +4 -3
  495. package/src/hosted/browser/worker/worker-env-ext.ts +5 -4
  496. package/src/hosted/browser/worker/worker-main.ts +103 -115
  497. package/src/hosted/browser/worker/worker-plugin-module.ts +80 -0
  498. package/src/hosted/common/hosted-plugin.ts +456 -0
  499. package/src/hosted/node/hosted-plugin-deployer-handler.ts +2 -2
  500. package/src/hosted/node/hosted-plugin-process.ts +4 -4
  501. package/src/hosted/node/plugin-ext-hosted-backend-module.ts +3 -1
  502. package/src/hosted/node/plugin-host-module.ts +69 -0
  503. package/src/hosted/node/plugin-host-rpc.ts +232 -73
  504. package/src/hosted/node/plugin-host.ts +9 -7
  505. package/src/hosted/node/plugin-reader.ts +3 -0
  506. package/src/hosted/node/plugin-service.ts +21 -4
  507. package/src/hosted/node/scanners/file-plugin-uri-factory.ts +1 -1
  508. package/src/hosted/node/scanners/scanner-theia.ts +54 -14
  509. package/src/main/browser/authentication-main.ts +3 -1
  510. package/src/main/browser/command-registry-main.ts +7 -0
  511. package/src/main/browser/comments/comments-contribution.ts +7 -3
  512. package/src/main/browser/comments/comments-main.ts +2 -2
  513. package/src/main/browser/custom-editors/custom-editor-opener.tsx +2 -2
  514. package/src/main/browser/custom-editors/custom-editor-widget.ts +3 -1
  515. package/src/main/browser/custom-editors/custom-editors-main.ts +1 -1
  516. package/src/main/browser/data-transfer/data-transfer-type-converters.ts +4 -6
  517. package/src/main/browser/editors-and-documents-main.ts +27 -5
  518. package/src/main/browser/env-main.ts +1 -28
  519. package/src/main/browser/file-system-main-impl.ts +9 -5
  520. package/src/main/browser/languages-main.ts +9 -5
  521. package/src/main/browser/main-context.ts +2 -8
  522. package/src/main/browser/menus/menus-contribution-handler.ts +9 -4
  523. package/src/main/browser/menus/plugin-menu-command-adapter.ts +4 -1
  524. package/src/main/browser/menus/vscode-theia-menu-mappings.ts +10 -2
  525. package/src/main/browser/message-registry-main.ts +10 -23
  526. package/src/main/browser/notebooks/notebook-documents-and-editors-main.ts +5 -8
  527. package/src/main/browser/notebooks/notebook-kernels-main.ts +46 -5
  528. package/src/main/browser/notebooks/notebooks-main.ts +24 -9
  529. package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +99 -46
  530. package/src/main/browser/notebooks/renderers/output-webview-internal.ts +115 -15
  531. package/src/main/browser/notebooks/renderers/webview-communication.ts +14 -3
  532. package/src/main/browser/notification-main.ts +4 -64
  533. package/src/main/browser/plugin-contribution-handler.ts +9 -1
  534. package/src/main/browser/plugin-ext-frontend-module.ts +6 -2
  535. package/src/main/browser/plugin-icon-service.ts +8 -72
  536. package/src/main/browser/quick-open-main.ts +82 -30
  537. package/src/main/browser/scm-main.ts +1 -1
  538. package/src/main/browser/selection-provider-command.ts +1 -2
  539. package/src/main/browser/terminal-main.ts +2 -2
  540. package/src/main/browser/test-main.ts +11 -2
  541. package/src/main/browser/text-editor-main.ts +7 -1
  542. package/src/main/browser/text-editors-main.ts +18 -10
  543. package/src/main/browser/theme-icon-override.ts +13 -19
  544. package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +1 -1
  545. package/src/main/browser/view/plugin-view-registry.ts +26 -8
  546. package/src/main/browser/view/plugin-view-widget.ts +0 -1
  547. package/src/main/browser/view/tree-view-widget.tsx +2 -3
  548. package/src/main/browser/webview/webview-context-keys.ts +17 -4
  549. package/src/main/browser/webview/webview-widget-factory.ts +2 -1
  550. package/src/main/browser/webview/webview.ts +2 -0
  551. package/src/main/browser/webviews-main.ts +7 -2
  552. package/src/main/common/basic-message-registry-main.ts +53 -0
  553. package/src/main/common/basic-notification-main.ts +86 -0
  554. package/src/main/common/env-main.ts +44 -0
  555. package/src/main/node/errors.spec.ts +2 -2
  556. package/src/main/node/handlers/plugin-theia-directory-handler.ts +38 -16
  557. package/src/main/node/handlers/plugin-theia-file-handler.ts +1 -1
  558. package/src/main/node/plugin-deployer-impl.ts +5 -1
  559. package/src/main/node/plugins-key-value-storage.ts +1 -1
  560. package/src/plugin/clipboard-ext.ts +9 -3
  561. package/src/plugin/custom-editors.ts +1 -1
  562. package/src/plugin/debug/debug-ext.ts +13 -4
  563. package/src/plugin/dialogs.ts +1 -1
  564. package/src/plugin/documents.ts +2 -2
  565. package/src/plugin/editors-and-documents.ts +5 -3
  566. package/src/plugin/env.ts +22 -6
  567. package/src/plugin/file-system-ext-impl.ts +15 -2
  568. package/src/plugin/known-commands.ts +1 -0
  569. package/src/plugin/languages/diagnostics.ts +2 -2
  570. package/src/plugin/languages/link-provider.ts +3 -1
  571. package/src/plugin/localization-ext.ts +8 -3
  572. package/src/plugin/markdown-string.ts +3 -3
  573. package/src/plugin/message-registry.ts +7 -2
  574. package/src/plugin/node/debug/debug.spec.ts +5 -1
  575. package/src/plugin/node/env-node-ext.ts +7 -12
  576. package/src/plugin/node/plugin-container-module.ts +165 -0
  577. package/src/plugin/notebook/notebook-kernels.ts +29 -30
  578. package/src/plugin/notebook/notebook-renderers.ts +0 -1
  579. package/src/plugin/notebook/notebooks.ts +20 -0
  580. package/src/plugin/plugin-context.ts +23 -5
  581. package/src/plugin/plugin-manager.ts +99 -45
  582. package/src/plugin/plugin-storage.ts +22 -4
  583. package/src/plugin/preference-registry.spec.ts +6 -1
  584. package/src/plugin/preference-registry.ts +13 -7
  585. package/src/plugin/quick-open.ts +13 -27
  586. package/src/plugin/secrets-ext.ts +25 -5
  587. package/src/plugin/terminal-ext.ts +6 -4
  588. package/src/plugin/tests.ts +33 -4
  589. package/src/plugin/text-editors.ts +9 -2
  590. package/src/plugin/type-converters.ts +45 -9
  591. package/src/plugin/types-impl.ts +36 -7
  592. package/src/plugin/webview-views.ts +2 -1
  593. package/src/plugin/webviews.ts +42 -16
  594. package/src/plugin/workspace.ts +14 -4
@@ -23,7 +23,10 @@ import { UriComponents } from '@theia/core/lib/common/uri';
23
23
  import { LanguageService } from '@theia/core/lib/browser/language-service';
24
24
  import { CellExecuteUpdateDto, CellExecutionCompleteDto, MAIN_RPC_CONTEXT, NotebookKernelDto, NotebookKernelsExt, NotebookKernelsMain } from '../../../common';
25
25
  import { RPCProtocol } from '../../../common/rpc-protocol';
26
- import { CellExecution, NotebookExecutionStateService, NotebookKernelChangeEvent, NotebookKernelService, NotebookService } from '@theia/notebook/lib/browser';
26
+ import {
27
+ CellExecution, NotebookEditorWidgetService, NotebookExecutionStateService,
28
+ NotebookKernelChangeEvent, NotebookKernelService, NotebookService
29
+ } from '@theia/notebook/lib/browser';
27
30
  import { combinedDisposable } from '@theia/monaco-editor-core/esm/vs/base/common/lifecycle';
28
31
  import { interfaces } from '@theia/core/shared/inversify';
29
32
  import { NotebookKernelSourceAction } from '@theia/notebook/lib/common';
@@ -54,7 +57,7 @@ abstract class NotebookKernel {
54
57
  return this.preloads.map(p => p.provides).flat();
55
58
  }
56
59
 
57
- constructor(data: NotebookKernelDto, private languageService: LanguageService) {
60
+ constructor(public readonly handle: number, data: NotebookKernelDto, private languageService: LanguageService) {
58
61
  this.id = data.id;
59
62
  this.viewType = data.notebookType;
60
63
  this.extensionId = data.extensionId;
@@ -65,6 +68,7 @@ abstract class NotebookKernel {
65
68
  this.detail = data.detail;
66
69
  this.supportedLanguages = (data.supportedLanguages && data.supportedLanguages.length > 0) ? data.supportedLanguages : languageService.languages.map(lang => lang.id);
67
70
  this.implementsExecutionOrder = data.supportsExecutionOrder ?? false;
71
+ this.localResourceRoot = URI.fromComponents(data.extensionLocation);
68
72
  this.preloads = data.preloads?.map(u => ({ uri: URI.fromComponents(u.uri), provides: u.provides })) ?? [];
69
73
  }
70
74
 
@@ -125,6 +129,7 @@ export class NotebookKernelsMainImpl implements NotebookKernelsMain {
125
129
  private notebookService: NotebookService;
126
130
  private languageService: LanguageService;
127
131
  private notebookExecutionStateService: NotebookExecutionStateService;
132
+ private notebookEditorWidgetService: NotebookEditorWidgetService;
128
133
 
129
134
  private readonly executions = new Map<number, CellExecution>();
130
135
 
@@ -138,10 +143,46 @@ export class NotebookKernelsMainImpl implements NotebookKernelsMain {
138
143
  this.notebookExecutionStateService = container.get(NotebookExecutionStateService);
139
144
  this.notebookService = container.get(NotebookService);
140
145
  this.languageService = container.get(LanguageService);
146
+ this.notebookEditorWidgetService = container.get(NotebookEditorWidgetService);
147
+
148
+ this.notebookEditorWidgetService.onDidAddNotebookEditor(editor => {
149
+ editor.onDidRecieveKernelMessage(async message => {
150
+ const kernel = this.notebookKernelService.getSelectedOrSuggestedKernel(editor.model!);
151
+ if (kernel) {
152
+ this.proxy.$acceptKernelMessageFromRenderer(kernel.handle, editor.id, message);
153
+ }
154
+ });
155
+ });
141
156
  }
142
157
 
143
- $postMessage(handle: number, editorId: string | undefined, message: unknown): Promise<boolean> {
144
- throw new Error('Method not implemented.');
158
+ async $postMessage(handle: number, editorId: string | undefined, message: unknown): Promise<boolean> {
159
+ const tuple = this.kernels.get(handle);
160
+ if (!tuple) {
161
+ throw new Error('kernel already disposed');
162
+ }
163
+ const [kernel] = tuple;
164
+ let didSend = false;
165
+ for (const editor of this.notebookEditorWidgetService.getNotebookEditors()) {
166
+ if (!editor.model) {
167
+ continue;
168
+ }
169
+ if (this.notebookKernelService.getMatchingKernel(editor.model).selected !== kernel) {
170
+ // different kernel
171
+ continue;
172
+ }
173
+ if (editorId === undefined) {
174
+ // all editors
175
+ editor.postKernelMessage(message);
176
+ didSend = true;
177
+ } else if (editor.id === editorId) {
178
+ // selected editors
179
+ editor.postKernelMessage(message);
180
+ didSend = true;
181
+ break;
182
+ }
183
+ }
184
+ return didSend;
185
+
145
186
  }
146
187
 
147
188
  async $addKernel(handle: number, data: NotebookKernelDto): Promise<void> {
@@ -153,7 +194,7 @@ export class NotebookKernelsMainImpl implements NotebookKernelsMain {
153
194
  async cancelNotebookCellExecution(uri: URI, handles: number[]): Promise<void> {
154
195
  await that.proxy.$cancelCells(handle, uri.toComponents(), handles);
155
196
  }
156
- }(data, this.languageService);
197
+ }(handle, data, this.languageService);
157
198
 
158
199
  const listener = this.notebookKernelService.onDidChangeSelectedKernel(e => {
159
200
  if (e.oldKernel === kernel.id) {
@@ -19,11 +19,13 @@ import { BinaryBuffer } from '@theia/core/lib/common/buffer';
19
19
  import { NotebookCellStatusBarItem, NotebookData, TransientOptions } from '@theia/notebook/lib/common';
20
20
  import { NotebookService } from '@theia/notebook/lib/browser';
21
21
  import { Disposable } from '@theia/plugin';
22
- import { MAIN_RPC_CONTEXT, NotebooksExt, NotebooksMain } from '../../../common';
22
+ import { CommandRegistryMain, MAIN_RPC_CONTEXT, NotebooksExt, NotebooksMain } from '../../../common';
23
23
  import { RPCProtocol } from '../../../common/rpc-protocol';
24
24
  import { NotebookDto } from './notebook-dto';
25
25
  import { UriComponents } from '@theia/core/lib/common/uri';
26
26
  import { HostedPluginSupport } from '../../../hosted/browser/hosted-plugin';
27
+ import { NotebookModel } from '@theia/notebook/lib/browser/view-model/notebook-model';
28
+ import { interfaces } from '@theia/core/shared/inversify';
27
29
 
28
30
  export interface NotebookCellStatusBarItemList {
29
31
  items: NotebookCellStatusBarItem[];
@@ -38,20 +40,33 @@ export interface NotebookCellStatusBarItemProvider {
38
40
 
39
41
  export class NotebooksMainImpl implements NotebooksMain {
40
42
 
41
- private readonly disposables = new DisposableCollection();
43
+ protected readonly disposables = new DisposableCollection();
42
44
 
43
- private readonly proxy: NotebooksExt;
44
- private readonly notebookSerializer = new Map<number, Disposable>();
45
- private readonly notebookCellStatusBarRegistrations = new Map<number, Disposable>();
45
+ protected notebookService: NotebookService;
46
+
47
+ protected readonly proxy: NotebooksExt;
48
+ protected readonly notebookSerializer = new Map<number, Disposable>();
49
+ protected readonly notebookCellStatusBarRegistrations = new Map<number, Disposable>();
46
50
 
47
51
  constructor(
48
52
  rpc: RPCProtocol,
49
- private notebookService: NotebookService,
50
- plugins: HostedPluginSupport
53
+ container: interfaces.Container,
54
+ commands: CommandRegistryMain
51
55
  ) {
56
+ this.notebookService = container.get(NotebookService);
57
+ const plugins = container.get(HostedPluginSupport);
58
+
52
59
  this.proxy = rpc.getProxy(MAIN_RPC_CONTEXT.NOTEBOOKS_EXT);
53
- notebookService.onWillUseNotebookSerializer(async event => plugins.activateByNotebookSerializer(event));
54
- notebookService.markReady();
60
+ this.notebookService.onWillUseNotebookSerializer(async event => plugins.activateByNotebookSerializer(event));
61
+ this.notebookService.markReady();
62
+ commands.registerArgumentProcessor({
63
+ processArgument: arg => {
64
+ if (arg instanceof NotebookModel) {
65
+ return arg.uri;
66
+ }
67
+ return arg;
68
+ }
69
+ });
55
70
  }
56
71
 
57
72
  dispose(): void {
@@ -20,8 +20,11 @@
20
20
 
21
21
  import * as React from '@theia/core/shared/react';
22
22
  import { inject, injectable, interfaces, postConstruct } from '@theia/core/shared/inversify';
23
- import { NotebookRendererMessagingService, CellOutputWebview, NotebookRendererRegistry, NotebookEditorWidgetService, NotebookCellOutputsSplice } from '@theia/notebook/lib/browser';
24
- import { v4 } from 'uuid';
23
+ import { generateUuid } from '@theia/core/lib/common/uuid';
24
+ import {
25
+ NotebookRendererMessagingService, CellOutputWebview, NotebookRendererRegistry,
26
+ NotebookEditorWidgetService, NotebookCellOutputsSplice, NOTEBOOK_EDITOR_ID_PREFIX, NotebookKernelService, NotebookEditorWidget
27
+ } from '@theia/notebook/lib/browser';
25
28
  import { NotebookCellModel } from '@theia/notebook/lib/browser/view-model/notebook-cell-model';
26
29
  import { WebviewWidget } from '../../webview/webview';
27
30
  import { Message, WidgetManager } from '@theia/core/lib/browser';
@@ -31,12 +34,15 @@ import { ChangePreferredMimetypeMessage, FromWebviewMessage, OutputChangedMessag
31
34
  import { CellUri } from '@theia/notebook/lib/common';
32
35
  import { Disposable, DisposableCollection, nls, QuickPickService } from '@theia/core';
33
36
  import { NotebookCellOutputModel } from '@theia/notebook/lib/browser/view-model/notebook-cell-output-model';
37
+ import { NotebookModel } from '@theia/notebook/lib/browser/view-model/notebook-model';
34
38
 
35
39
  const CellModel = Symbol('CellModel');
40
+ const Notebook = Symbol('NotebookModel');
36
41
 
37
- export function createCellOutputWebviewContainer(ctx: interfaces.Container, cell: NotebookCellModel): interfaces.Container {
42
+ export function createCellOutputWebviewContainer(ctx: interfaces.Container, cell: NotebookCellModel, notebook: NotebookModel): interfaces.Container {
38
43
  const child = ctx.createChild();
39
44
  child.bind(CellModel).toConstantValue(cell);
45
+ child.bind(Notebook).toConstantValue(notebook);
40
46
  child.bind(CellOutputWebviewImpl).toSelf().inSingletonScope();
41
47
  return child;
42
48
  }
@@ -50,6 +56,9 @@ export class CellOutputWebviewImpl implements CellOutputWebview, Disposable {
50
56
  @inject(CellModel)
51
57
  protected readonly cell: NotebookCellModel;
52
58
 
59
+ @inject(Notebook)
60
+ protected readonly notebook: NotebookModel;
61
+
53
62
  @inject(WidgetManager)
54
63
  protected readonly widgetManager: WidgetManager;
55
64
 
@@ -62,22 +71,48 @@ export class CellOutputWebviewImpl implements CellOutputWebview, Disposable {
62
71
  @inject(NotebookEditorWidgetService)
63
72
  protected readonly notebookEditorWidgetService: NotebookEditorWidgetService;
64
73
 
74
+ @inject(NotebookKernelService)
75
+ protected readonly notebookKernelService: NotebookKernelService;
76
+
65
77
  @inject(QuickPickService)
66
78
  protected readonly quickPickService: QuickPickService;
67
79
 
68
- readonly id = v4();
80
+ readonly id = generateUuid();
81
+
82
+ protected editor: NotebookEditorWidget | undefined;
69
83
 
70
84
  protected readonly elementRef = React.createRef<HTMLDivElement>();
71
85
  protected outputPresentationListeners: DisposableCollection = new DisposableCollection();
72
86
 
73
87
  protected webviewWidget: WebviewWidget;
74
88
 
89
+ protected toDispose = new DisposableCollection();
90
+
75
91
  @postConstruct()
76
92
  protected async init(): Promise<void> {
77
- this.cell.onDidChangeOutputs(outputChange => this.updateOutput(outputChange));
78
- this.cell.onDidChangeOutputItems(output => {
79
- this.updateOutput({start: this.cell.outputs.findIndex(o => o.outputId === output.outputId), deleteCount: 1, newOutputs: [output]});
80
- });
93
+ this.editor = this.notebookEditorWidgetService.getNotebookEditor(NOTEBOOK_EDITOR_ID_PREFIX + CellUri.parse(this.cell.uri)?.notebook);
94
+
95
+ this.toDispose.push(this.cell.onDidChangeOutputs(outputChange => this.updateOutput(outputChange)));
96
+ this.toDispose.push(this.cell.onDidChangeOutputItems(output => {
97
+ this.updateOutput({ start: this.cell.outputs.findIndex(o => o.outputId === output.outputId), deleteCount: 1, newOutputs: [output] });
98
+ }));
99
+
100
+ if (this.editor) {
101
+ this.toDispose.push(this.editor.onDidPostKernelMessage(message => {
102
+ this.webviewWidget.sendMessage({
103
+ type: 'customKernelMessage',
104
+ message
105
+ });
106
+ }));
107
+
108
+ this.toDispose.push(this.editor.onPostRendererMessage(messageObj => {
109
+ this.webviewWidget.sendMessage({
110
+ type: 'customRendererMessage',
111
+ ...messageObj
112
+ });
113
+ }));
114
+
115
+ }
81
116
 
82
117
  this.webviewWidget = await this.widgetManager.getOrCreateWidget(WebviewWidget.FACTORY_ID, { id: this.id });
83
118
  this.webviewWidget.setContentOptions({ allowScripts: true });
@@ -106,35 +141,34 @@ export class CellOutputWebviewImpl implements CellOutputWebview, Disposable {
106
141
  }
107
142
 
108
143
  updateOutput(update: NotebookCellOutputsSplice): void {
109
- if (this.cell.outputs.length > 0) {
110
- if (this.webviewWidget.isHidden) {
111
- this.webviewWidget.show();
112
- }
113
-
114
- this.outputPresentationListeners.dispose();
115
- this.outputPresentationListeners = new DisposableCollection();
116
- for (const output of this.cell.outputs) {
117
- this.outputPresentationListeners.push(output.onRequestOutputPresentationChange(() => this.requestOutputPresentationUpdate(output)));
118
- }
119
-
120
- const updateOutputMessage: OutputChangedMessage = {
121
- type: 'outputChanged',
122
- newOutputs: update.newOutputs.map(output => ({
123
- id: output.outputId,
124
- items: output.outputs.map(item => ({ mime: item.mime, data: item.data.buffer })),
125
- metadata: output.metadata
126
- })),
127
- deletedOutputIds: this.cell.outputs.slice(update.start, update.start + update.deleteCount).map(output => output.outputId)
128
- };
129
-
130
- this.webviewWidget.sendMessage(updateOutputMessage);
144
+ if (this.webviewWidget.isHidden) {
145
+ this.webviewWidget.show();
146
+ }
147
+
148
+ this.outputPresentationListeners.dispose();
149
+ this.outputPresentationListeners = new DisposableCollection();
150
+ for (const output of this.cell.outputs) {
151
+ this.outputPresentationListeners.push(output.onRequestOutputPresentationChange(() => this.requestOutputPresentationUpdate(output)));
131
152
  }
153
+
154
+ const updateOutputMessage: OutputChangedMessage = {
155
+ type: 'outputChanged',
156
+ newOutputs: update.newOutputs.map(output => ({
157
+ id: output.outputId,
158
+ items: output.outputs.map(item => ({ mime: item.mime, data: item.data.buffer })),
159
+ metadata: output.metadata
160
+ })),
161
+ deleteStart: update.start,
162
+ deleteCount: update.deleteCount
163
+ };
164
+
165
+ this.webviewWidget.sendMessage(updateOutputMessage);
132
166
  }
133
167
 
134
168
  private async requestOutputPresentationUpdate(output: NotebookCellOutputModel): Promise<void> {
135
169
  const selectedMime = await this.quickPickService.show(
136
- output.outputs.map(item => ({label: item.mime})),
137
- {description: nls.localizeByDefault('Select mimetype to render for current output' )});
170
+ output.outputs.map(item => ({ label: item.mime })),
171
+ { description: nls.localizeByDefault('Select mimetype to render for current output') });
138
172
  if (selectedMime) {
139
173
  this.webviewWidget.sendMessage({
140
174
  type: 'changePreferredMimetype',
@@ -145,35 +179,52 @@ export class CellOutputWebviewImpl implements CellOutputWebview, Disposable {
145
179
  }
146
180
 
147
181
  private handleWebviewMessage(message: FromWebviewMessage): void {
182
+ if (!this.editor) {
183
+ throw new Error('No editor found for cell output webview');
184
+ }
185
+
148
186
  switch (message.type) {
149
187
  case 'initialized':
150
- this.updateOutput({newOutputs: this.cell.outputs, start: 0, deleteCount: 0});
188
+ this.updateOutput({ newOutputs: this.cell.outputs, start: 0, deleteCount: 0 });
151
189
  break;
152
190
  case 'customRendererMessage':
153
- this.messagingService.getScoped('').postMessage(message.rendererId, message.message);
191
+ this.messagingService.getScoped(this.editor.id).postMessage(message.rendererId, message.message);
154
192
  break;
155
193
  case 'didRenderOutput':
156
194
  this.webviewWidget.setIframeHeight(message.contentHeight + 5);
157
195
  break;
158
196
  case 'did-scroll-wheel':
159
- this.notebookEditorWidgetService.getNotebookEditor(`notebook:${CellUri.parse(this.cell.uri)?.notebook}`)?.node.scrollBy(message.deltaX, message.deltaY);
197
+ this.editor.node.getElementsByClassName('theia-notebook-viewport')[0].children[0].scrollBy(message.deltaX, message.deltaY);
198
+ break;
199
+ case 'customKernelMessage':
200
+ this.editor.recieveKernelMessage(message.message);
160
201
  break;
161
202
  }
162
203
  }
163
204
 
205
+ getPreloads(): string[] {
206
+ const kernel = this.notebookKernelService.getSelectedOrSuggestedKernel(this.notebook);
207
+ const kernelPreloads = kernel?.preloadUris.map(uri => uri.toString()) ?? [];
208
+
209
+ const staticPreloads = this.notebookRendererRegistry.staticNotebookPreloads
210
+ .filter(preload => preload.type === this.notebook.viewType)
211
+ .map(preload => preload.entrypoint);
212
+ return kernelPreloads.concat(staticPreloads);
213
+ }
214
+
164
215
  private async createWebviewContent(): Promise<string> {
165
216
  const isWorkspaceTrusted = await this.workspaceTrustService.getWorkspaceTrust();
166
217
  const preloads = this.preloadsScriptString(isWorkspaceTrusted);
167
218
  const content = `
168
- <html>
169
- <head>
170
- <meta charset="UTF-8">
171
- </head>
172
- <body>
173
- <script type="module">${preloads}</script>
174
- </body>
175
- </html>
176
- `;
219
+ <html>
220
+ <head>
221
+ <meta charset="UTF-8">
222
+ </head>
223
+ <body>
224
+ <script type="module">${preloads}</script>
225
+ </body>
226
+ </html>
227
+ `;
177
228
  return content;
178
229
  }
179
230
 
@@ -185,16 +236,18 @@ export class CellOutputWebviewImpl implements CellOutputWebview, Disposable {
185
236
  lineLimit: 30,
186
237
  outputScrolling: false,
187
238
  outputWordWrap: false,
188
- }
239
+ },
240
+ staticPreloadsData: this.getPreloads()
189
241
  };
190
242
  // TS will try compiling `import()` in webviewPreloads, so use a helper function instead
191
243
  // of using `import(...)` directly
192
244
  return `
193
245
  const __import = (x) => import(x);
194
- (${outputWebviewPreload})(JSON.parse(decodeURIComponent("${encodeURIComponent(JSON.stringify(ctx))}")))`;
246
+ (${outputWebviewPreload})(JSON.parse(decodeURIComponent("${encodeURIComponent(JSON.stringify(ctx))}")))`;
195
247
  }
196
248
 
197
249
  dispose(): void {
250
+ this.toDispose.dispose();
198
251
  this.outputPresentationListeners.dispose();
199
252
  this.webviewWidget.dispose();
200
253
  }
@@ -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;
@@ -114,7 +154,7 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
114
154
  this.element.style.paddingRight = '10px';
115
155
  this.element.id = output.id;
116
156
  document.body.appendChild(this.element);
117
-
157
+ this.outputId = output.id;
118
158
  this.allItems = items;
119
159
  }
120
160
 
@@ -134,7 +174,7 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
134
174
  }
135
175
  }
136
176
 
137
- const outputs = new Map</* outputId */string, Output>();
177
+ const outputs: Output[] = [];
138
178
 
139
179
  class Renderer {
140
180
 
@@ -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);
@@ -314,10 +360,17 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
314
360
  // we need to check for all images are loaded. Otherwise we can't determine the correct height of the output
315
361
  const images = Array.from(document.images);
316
362
  if (images.length > 0) {
317
- Promise.all(images.filter(img => !img.complete).map(img => new Promise(resolve => { img.onload = img.onerror = resolve; }))).then(() =>
318
- theia.postMessage(<webviewCommunication.OnDidRenderOutput>{ type: 'didRenderOutput', contentHeight: document.body.clientHeight }));
363
+ Promise.all(images.filter(img => !img.complete).map(img => new Promise(resolve => { img.onload = img.onerror = resolve; }))).then(() => {
364
+ theia.postMessage(<webviewCommunication.OnDidRenderOutput>{ type: 'didRenderOutput', contentHeight: document.body.clientHeight });
365
+ new ResizeObserver(() =>
366
+ theia.postMessage(<webviewCommunication.OnDidRenderOutput>{ type: 'didRenderOutput', contentHeight: document.body.clientHeight }))
367
+ .observe(document.body);
368
+ });
319
369
  } else {
320
370
  theia.postMessage(<webviewCommunication.OnDidRenderOutput>{ type: 'didRenderOutput', contentHeight: document.body.clientHeight });
371
+ new ResizeObserver(() =>
372
+ theia.postMessage(<webviewCommunication.OnDidRenderOutput>{ type: 'didRenderOutput', contentHeight: document.body.clientHeight }))
373
+ .observe(document.body);
321
374
  }
322
375
 
323
376
  }
@@ -378,15 +431,50 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
378
431
  }
379
432
  }();
380
433
 
381
- function clearOutput(outputId: string): void {
382
- outputs.get(outputId)?.clear();
383
- outputs.delete(outputId);
384
- document.getElementById(outputId)?.remove();
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
+
470
+ function clearOutput(output: Output): void {
471
+ output.clear();
472
+ output.element.remove();
385
473
  }
386
474
 
387
475
  function outputsChanged(changedEvent: webviewCommunication.OutputChangedMessage): void {
388
- for (const outputId of changedEvent.deletedOutputIds ?? []) {
389
- clearOutput(outputId);
476
+ for (const output of outputs.splice(changedEvent.deleteStart ?? 0, changedEvent.deleteCount ?? 0)) {
477
+ clearOutput(output);
390
478
  }
391
479
 
392
480
  for (const outputData of changedEvent.newOutputs ?? []) {
@@ -410,7 +498,7 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
410
498
  }));
411
499
 
412
500
  const output = new Output(outputData, apiItems);
413
- outputs.set(outputData.id, output);
501
+ outputs.push(output);
414
502
 
415
503
  renderers.render(output, undefined, undefined, new AbortController().signal);
416
504
  }
@@ -454,7 +542,6 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
454
542
 
455
543
  window.addEventListener('message', async rawEvent => {
456
544
  const event = rawEvent as ({ data: webviewCommunication.ToWebviewMessage });
457
-
458
545
  switch (event.data.type) {
459
546
  case 'updateRenderers':
460
547
  renderers.updateRendererData(event.data.rendererData);
@@ -466,9 +553,22 @@ export async function outputWebviewPreload(ctx: PreloadContext): Promise<void> {
466
553
  renderers.getRenderer(event.data.rendererId)?.receiveMessage(event.data.message);
467
554
  break;
468
555
  case 'changePreferredMimetype':
469
- clearOutput(event.data.outputId);
470
- renderers.render(outputs.get(event.data.outputId)!, event.data.mimeType, undefined, new AbortController().signal);
556
+ const outputId = event.data.outputId;
557
+ const index = outputs.findIndex(output => output.outputId === outputId);
558
+ outputs.splice(index, 1);
559
+ clearOutput(outputs.splice(index, 1)[0]);
560
+ renderers.render(outputs[index], event.data.mimeType, undefined, new AbortController().signal);
471
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
+ }
472
572
  }
473
573
  });
474
574
  window.addEventListener('wheel', handleWheel);
@@ -39,7 +39,8 @@ export interface UpdateRenderersMessage {
39
39
  export interface OutputChangedMessage {
40
40
  readonly type: 'outputChanged';
41
41
  readonly newOutputs?: Output[];
42
- readonly deletedOutputIds?: string[];
42
+ readonly deleteStart?: number;
43
+ readonly deleteCount?: number;
43
44
  }
44
45
 
45
46
  export interface ChangePreferredMimetypeMessage {
@@ -48,7 +49,17 @@ export interface ChangePreferredMimetypeMessage {
48
49
  readonly mimeType: string;
49
50
  }
50
51
 
51
- 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;
52
63
 
53
64
  export interface WebviewInitialized {
54
65
  readonly type: 'initialized';
@@ -65,7 +76,7 @@ export interface WheelMessage {
65
76
  readonly deltaX: number;
66
77
  }
67
78
 
68
- export type FromWebviewMessage = WebviewInitialized | OnDidRenderOutput | WheelMessage | CustomRendererMessage;
79
+ export type FromWebviewMessage = WebviewInitialized | OnDidRenderOutput | WheelMessage | CustomRendererMessage | KernelMessage;
69
80
 
70
81
  export interface Output {
71
82
  id: string