@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.
- package/lib/common/index.js +4 -13
- package/lib/common/index.js.map +1 -1
- package/lib/common/plugin-api-rpc-model.d.ts +1 -1
- package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.d.ts +50 -24
- package/lib/common/plugin-api-rpc.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.js +4 -2
- package/lib/common/plugin-api-rpc.js.map +1 -1
- package/lib/common/plugin-ext-api-contribution.d.ts +35 -5
- package/lib/common/plugin-ext-api-contribution.d.ts.map +1 -1
- package/lib/common/plugin-ext-api-contribution.js.map +1 -1
- package/lib/common/plugin-protocol.d.ts +15 -2
- package/lib/common/plugin-protocol.d.ts.map +1 -1
- package/lib/common/plugin-protocol.js +1 -0
- package/lib/common/plugin-protocol.js.map +1 -1
- package/lib/common/proxy-handler.d.ts +7 -0
- package/lib/common/proxy-handler.d.ts.map +1 -1
- package/lib/common/proxy-handler.js +5 -1
- package/lib/common/proxy-handler.js.map +1 -1
- package/lib/common/rpc-protocol.d.ts +10 -0
- package/lib/common/rpc-protocol.d.ts.map +1 -1
- package/lib/common/rpc-protocol.js +32 -3
- package/lib/common/rpc-protocol.js.map +1 -1
- package/lib/common/uri-components.d.ts +1 -2
- package/lib/common/uri-components.d.ts.map +1 -1
- package/lib/common/uri-components.js +1 -5
- package/lib/common/uri-components.js.map +1 -1
- package/lib/hosted/browser/hosted-plugin-watcher.js +2 -7
- package/lib/hosted/browser/hosted-plugin-watcher.js.map +1 -1
- package/lib/hosted/browser/hosted-plugin.d.ts +16 -74
- package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
- package/lib/hosted/browser/hosted-plugin.js +98 -378
- package/lib/hosted/browser/hosted-plugin.js.map +1 -1
- package/lib/hosted/browser/plugin-worker.js +3 -11
- package/lib/hosted/browser/plugin-worker.js.map +1 -1
- package/lib/hosted/browser/worker/debug-stub.d.ts +2 -2
- package/lib/hosted/browser/worker/debug-stub.d.ts.map +1 -1
- package/lib/hosted/browser/worker/debug-stub.js +3 -3
- package/lib/hosted/browser/worker/debug-stub.js.map +1 -1
- package/lib/hosted/browser/worker/worker-env-ext.d.ts +1 -2
- package/lib/hosted/browser/worker/worker-env-ext.d.ts.map +1 -1
- package/lib/hosted/browser/worker/worker-env-ext.js +10 -4
- package/lib/hosted/browser/worker/worker-env-ext.js.map +1 -1
- package/lib/hosted/browser/worker/worker-main.js +20 -32
- package/lib/hosted/browser/worker/worker-main.js.map +1 -1
- package/lib/hosted/browser/worker/worker-plugin-module.d.ts +5 -0
- package/lib/hosted/browser/worker/worker-plugin-module.d.ts.map +1 -0
- package/lib/hosted/browser/worker/worker-plugin-module.js +78 -0
- package/lib/hosted/browser/worker/worker-plugin-module.js.map +1 -0
- package/lib/hosted/common/hosted-plugin.d.ts +97 -0
- package/lib/hosted/common/hosted-plugin.d.ts.map +1 -0
- package/lib/hosted/common/hosted-plugin.js +400 -0
- package/lib/hosted/common/hosted-plugin.js.map +1 -0
- package/lib/hosted/node/hosted-plugin-cli-contribution.js +2 -7
- package/lib/hosted/node/hosted-plugin-cli-contribution.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-deployer-handler.js +14 -22
- package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-localization-service.js +8 -16
- package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-process.d.ts +1 -1
- package/lib/hosted/node/hosted-plugin-process.d.ts.map +1 -1
- package/lib/hosted/node/hosted-plugin-process.js +16 -24
- package/lib/hosted/node/hosted-plugin-process.js.map +1 -1
- package/lib/hosted/node/hosted-plugin.js +12 -20
- package/lib/hosted/node/hosted-plugin.js.map +1 -1
- package/lib/hosted/node/metadata-scanner.js +6 -17
- package/lib/hosted/node/metadata-scanner.js.map +1 -1
- package/lib/hosted/node/plugin-ext-hosted-backend-module.d.ts.map +1 -1
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js +2 -0
- package/lib/hosted/node/plugin-ext-hosted-backend-module.js.map +1 -1
- package/lib/hosted/node/plugin-host-module.d.ts +5 -0
- package/lib/hosted/node/plugin-host-module.d.ts.map +1 -0
- package/lib/hosted/node/plugin-host-module.js +68 -0
- package/lib/hosted/node/plugin-host-module.js.map +1 -0
- package/lib/hosted/node/plugin-host-rpc.d.ts +93 -7
- package/lib/hosted/node/plugin-host-rpc.d.ts.map +1 -1
- package/lib/hosted/node/plugin-host-rpc.js +191 -53
- package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
- package/lib/hosted/node/plugin-host.js +6 -5
- package/lib/hosted/node/plugin-host.js.map +1 -1
- package/lib/hosted/node/plugin-language-pack-service.js +2 -7
- package/lib/hosted/node/plugin-language-pack-service.js.map +1 -1
- package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
- package/lib/hosted/node/plugin-reader.js +11 -16
- package/lib/hosted/node/plugin-reader.js.map +1 -1
- package/lib/hosted/node/plugin-service.d.ts +8 -0
- package/lib/hosted/node/plugin-service.d.ts.map +1 -1
- package/lib/hosted/node/plugin-service.js +34 -35
- package/lib/hosted/node/plugin-service.js.map +1 -1
- package/lib/hosted/node/scanners/file-plugin-uri-factory.js +3 -8
- package/lib/hosted/node/scanners/file-plugin-uri-factory.js.map +1 -1
- package/lib/hosted/node/scanners/grammars-reader.js +2 -7
- package/lib/hosted/node/scanners/grammars-reader.js.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.d.ts +17 -3
- package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.js +58 -31
- package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
- package/lib/hosted/node-electron/scanner-theia-electron.js +2 -7
- package/lib/hosted/node-electron/scanner-theia-electron.js.map +1 -1
- package/lib/main/browser/authentication-main.d.ts.map +1 -1
- package/lib/main/browser/authentication-main.js +3 -1
- package/lib/main/browser/authentication-main.js.map +1 -1
- package/lib/main/browser/command-registry-main.d.ts +1 -0
- package/lib/main/browser/command-registry-main.d.ts.map +1 -1
- package/lib/main/browser/command-registry-main.js +6 -1
- package/lib/main/browser/command-registry-main.js.map +1 -1
- package/lib/main/browser/commands.js +5 -16
- package/lib/main/browser/commands.js.map +1 -1
- package/lib/main/browser/comments/comments-context-key-service.js +8 -16
- package/lib/main/browser/comments/comments-context-key-service.js.map +1 -1
- package/lib/main/browser/comments/comments-contribution.d.ts.map +1 -1
- package/lib/main/browser/comments/comments-contribution.js +17 -25
- package/lib/main/browser/comments/comments-contribution.js.map +1 -1
- package/lib/main/browser/comments/comments-decorator.js +3 -11
- package/lib/main/browser/comments/comments-decorator.js.map +1 -1
- package/lib/main/browser/comments/comments-main.js +2 -2
- package/lib/main/browser/comments/comments-main.js.map +1 -1
- package/lib/main/browser/comments/comments-service.js +2 -7
- package/lib/main/browser/comments/comments-service.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-contribution.js +4 -12
- package/lib/main/browser/custom-editors/custom-editor-contribution.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js +7 -18
- package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-service.js +2 -7
- package/lib/main/browser/custom-editors/custom-editor-service.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.js +15 -21
- package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.js +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
- package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js +18 -26
- package/lib/main/browser/custom-editors/plugin-custom-editor-registry.js.map +1 -1
- package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts +2 -2
- package/lib/main/browser/data-transfer/data-transfer-type-converters.d.ts.map +1 -1
- package/lib/main/browser/data-transfer/data-transfer-type-converters.js +2 -4
- package/lib/main/browser/data-transfer/data-transfer-type-converters.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-service.js +10 -18
- package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js +8 -16
- package/lib/main/browser/debug/plugin-debug-session-contribution-registry.js.map +1 -1
- package/lib/main/browser/dialogs/modal-notification.js +3 -11
- package/lib/main/browser/dialogs/modal-notification.js.map +1 -1
- package/lib/main/browser/editors-and-documents-main.d.ts +5 -1
- package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
- package/lib/main/browser/editors-and-documents-main.js +22 -3
- package/lib/main/browser/editors-and-documents-main.js.map +1 -1
- package/lib/main/browser/env-main.d.ts +1 -10
- package/lib/main/browser/env-main.d.ts.map +1 -1
- package/lib/main/browser/env-main.js +2 -21
- package/lib/main/browser/env-main.js.map +1 -1
- package/lib/main/browser/file-system-main-impl.d.ts +2 -1
- package/lib/main/browser/file-system-main-impl.d.ts.map +1 -1
- package/lib/main/browser/file-system-main-impl.js +5 -3
- package/lib/main/browser/file-system-main-impl.js.map +1 -1
- package/lib/main/browser/keybindings/keybindings-contribution-handler.js +4 -12
- package/lib/main/browser/keybindings/keybindings-contribution-handler.js.map +1 -1
- package/lib/main/browser/languages-main.d.ts +2 -2
- package/lib/main/browser/languages-main.d.ts.map +1 -1
- package/lib/main/browser/languages-main.js +19 -27
- package/lib/main/browser/languages-main.js.map +1 -1
- package/lib/main/browser/main-context.d.ts.map +1 -1
- package/lib/main/browser/main-context.js +2 -8
- package/lib/main/browser/main-context.js.map +1 -1
- package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
- package/lib/main/browser/menus/menus-contribution-handler.js +29 -34
- package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
- package/lib/main/browser/menus/plugin-menu-command-adapter.d.ts.map +1 -1
- package/lib/main/browser/menus/plugin-menu-command-adapter.js +20 -25
- package/lib/main/browser/menus/plugin-menu-command-adapter.js.map +1 -1
- package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts +2 -2
- package/lib/main/browser/menus/vscode-theia-menu-mappings.d.ts.map +1 -1
- package/lib/main/browser/menus/vscode-theia-menu-mappings.js +11 -9
- package/lib/main/browser/menus/vscode-theia-menu-mappings.js.map +1 -1
- package/lib/main/browser/message-registry-main.d.ts +6 -4
- package/lib/main/browser/message-registry-main.d.ts.map +1 -1
- package/lib/main/browser/message-registry-main.js +7 -19
- package/lib/main/browser/message-registry-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts +0 -1
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js +5 -7
- package/lib/main/browser/notebooks/notebook-documents-and-editors-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebook-kernels-main.d.ts +1 -0
- package/lib/main/browser/notebooks/notebook-kernels-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebook-kernels-main.js +41 -4
- package/lib/main/browser/notebooks/notebook-kernels-main.js.map +1 -1
- package/lib/main/browser/notebooks/notebooks-main.d.ts +10 -9
- package/lib/main/browser/notebooks/notebooks-main.d.ts.map +1 -1
- package/lib/main/browser/notebooks/notebooks-main.js +16 -4
- package/lib/main/browser/notebooks/notebooks-main.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +8 -2
- package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.js +102 -67
- package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts +1 -0
- package/lib/main/browser/notebooks/renderers/output-webview-internal.d.ts.map +1 -1
- package/lib/main/browser/notebooks/renderers/output-webview-internal.js +96 -15
- package/lib/main/browser/notebooks/renderers/output-webview-internal.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/webview-communication.d.ts +12 -3
- package/lib/main/browser/notebooks/renderers/webview-communication.d.ts.map +1 -1
- package/lib/main/browser/notification-main.d.ts +2 -14
- package/lib/main/browser/notification-main.d.ts.map +1 -1
- package/lib/main/browser/notification-main.js +3 -52
- package/lib/main/browser/notification-main.js.map +1 -1
- package/lib/main/browser/output-channel-registry-main.js +4 -12
- package/lib/main/browser/output-channel-registry-main.js.map +1 -1
- package/lib/main/browser/plugin-authentication-service.js +3 -11
- package/lib/main/browser/plugin-authentication-service.js.map +1 -1
- package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
- package/lib/main/browser/plugin-contribution-handler.js +66 -69
- package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
- package/lib/main/browser/plugin-ext-frontend-module.d.ts.map +1 -1
- package/lib/main/browser/plugin-ext-frontend-module.js +3 -1
- package/lib/main/browser/plugin-ext-frontend-module.js.map +1 -1
- package/lib/main/browser/plugin-ext-widget.js +11 -19
- package/lib/main/browser/plugin-ext-widget.js.map +1 -1
- package/lib/main/browser/plugin-frontend-contribution.js +4 -12
- package/lib/main/browser/plugin-frontend-contribution.js.map +1 -1
- package/lib/main/browser/plugin-frontend-view-contribution.js +3 -11
- package/lib/main/browser/plugin-frontend-view-contribution.js.map +1 -1
- package/lib/main/browser/plugin-icon-service.d.ts +2 -5
- package/lib/main/browser/plugin-icon-service.d.ts.map +1 -1
- package/lib/main/browser/plugin-icon-service.js +10 -77
- package/lib/main/browser/plugin-icon-service.js.map +1 -1
- package/lib/main/browser/plugin-icon-theme-service.js +22 -30
- package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
- package/lib/main/browser/plugin-shared-style.js +8 -16
- package/lib/main/browser/plugin-shared-style.js.map +1 -1
- package/lib/main/browser/plugin-terminal-registry.js +2 -7
- package/lib/main/browser/plugin-terminal-registry.js.map +1 -1
- package/lib/main/browser/quick-open-main.d.ts +8 -7
- package/lib/main/browser/quick-open-main.d.ts.map +1 -1
- package/lib/main/browser/quick-open-main.js +57 -17
- package/lib/main/browser/quick-open-main.js.map +1 -1
- package/lib/main/browser/scm-main.js +3 -3
- package/lib/main/browser/scm-main.js.map +1 -1
- package/lib/main/browser/selection-provider-command.d.ts.map +1 -1
- package/lib/main/browser/selection-provider-command.js +5 -14
- package/lib/main/browser/selection-provider-command.js.map +1 -1
- package/lib/main/browser/terminal-main.d.ts +1 -1
- package/lib/main/browser/terminal-main.d.ts.map +1 -1
- package/lib/main/browser/terminal-main.js +2 -2
- package/lib/main/browser/terminal-main.js.map +1 -1
- package/lib/main/browser/test-main.d.ts +3 -1
- package/lib/main/browser/test-main.d.ts.map +1 -1
- package/lib/main/browser/test-main.js +29 -30
- package/lib/main/browser/test-main.js.map +1 -1
- package/lib/main/browser/text-editor-main.d.ts.map +1 -1
- package/lib/main/browser/text-editor-main.js +6 -0
- package/lib/main/browser/text-editor-main.js.map +1 -1
- package/lib/main/browser/text-editor-model-service.js +5 -16
- package/lib/main/browser/text-editor-model-service.js.map +1 -1
- package/lib/main/browser/text-editors-main.d.ts +4 -5
- package/lib/main/browser/text-editors-main.d.ts.map +1 -1
- package/lib/main/browser/text-editors-main.js +15 -9
- package/lib/main/browser/text-editors-main.js.map +1 -1
- package/lib/main/browser/theme-icon-override.js +13 -19
- package/lib/main/browser/theme-icon-override.js.map +1 -1
- package/lib/main/browser/view/dnd-file-content-store.js +2 -7
- package/lib/main/browser/view/dnd-file-content-store.js.map +1 -1
- package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +8 -16
- package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.d.ts +2 -0
- package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.js +53 -45
- package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
- package/lib/main/browser/view/plugin-view-widget.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-widget.js +16 -25
- package/lib/main/browser/view/plugin-view-widget.js.map +1 -1
- package/lib/main/browser/view/tree-view-decorator-service.js +6 -17
- package/lib/main/browser/view/tree-view-decorator-service.js.map +1 -1
- package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
- package/lib/main/browser/view/tree-view-widget.js +41 -50
- package/lib/main/browser/view/tree-view-widget.js.map +1 -1
- package/lib/main/browser/view/view-context-key-service.js +8 -16
- package/lib/main/browser/view/view-context-key-service.js.map +1 -1
- package/lib/main/browser/view-column-service.js +4 -15
- package/lib/main/browser/view-column-service.js.map +1 -1
- package/lib/main/browser/webview/webview-context-keys.d.ts +5 -1
- package/lib/main/browser/webview/webview-context-keys.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-context-keys.js +23 -22
- package/lib/main/browser/webview/webview-context-keys.js.map +1 -1
- package/lib/main/browser/webview/webview-environment.js +8 -16
- package/lib/main/browser/webview/webview-environment.js.map +1 -1
- package/lib/main/browser/webview/webview-frontend-security-warnings.js +8 -16
- package/lib/main/browser/webview/webview-frontend-security-warnings.js.map +1 -1
- package/lib/main/browser/webview/webview-resource-cache.js +3 -11
- package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
- package/lib/main/browser/webview/webview-theme-data-provider.js +14 -22
- package/lib/main/browser/webview/webview-theme-data-provider.js.map +1 -1
- package/lib/main/browser/webview/webview-widget-factory.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-widget-factory.js +2 -1
- package/lib/main/browser/webview/webview-widget-factory.js.map +1 -1
- package/lib/main/browser/webview/webview.d.ts +1 -0
- package/lib/main/browser/webview/webview.d.ts.map +1 -1
- package/lib/main/browser/webview/webview.js +38 -45
- package/lib/main/browser/webview/webview.js.map +1 -1
- package/lib/main/browser/webview-views/webview-views-main.js +3 -11
- package/lib/main/browser/webview-views/webview-views-main.js.map +1 -1
- package/lib/main/browser/webviews-main.d.ts.map +1 -1
- package/lib/main/browser/webviews-main.js +7 -2
- package/lib/main/browser/webviews-main.js.map +1 -1
- package/lib/main/browser/workspace-main.js +2 -7
- package/lib/main/browser/workspace-main.js.map +1 -1
- package/lib/main/common/basic-message-registry-main.d.ts +14 -0
- package/lib/main/common/basic-message-registry-main.d.ts.map +1 -0
- package/lib/main/common/basic-message-registry-main.js +50 -0
- package/lib/main/common/basic-message-registry-main.js.map +1 -0
- package/lib/main/common/basic-notification-main.d.ts +19 -0
- package/lib/main/common/basic-notification-main.d.ts.map +1 -0
- package/lib/main/common/basic-notification-main.js +75 -0
- package/lib/main/common/basic-notification-main.js.map +1 -0
- package/lib/main/common/env-main.d.ts +11 -0
- package/lib/main/common/env-main.d.ts.map +1 -0
- package/lib/main/common/env-main.js +40 -0
- package/lib/main/common/env-main.js.map +1 -0
- package/lib/main/common/plugin-theia-environment.js +4 -12
- package/lib/main/common/plugin-theia-environment.js.map +1 -1
- package/lib/main/node/errors.spec.js +2 -2
- package/lib/main/node/errors.spec.js.map +1 -1
- package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts +8 -3
- package/lib/main/node/handlers/plugin-theia-directory-handler.d.ts.map +1 -1
- package/lib/main/node/handlers/plugin-theia-directory-handler.js +42 -32
- package/lib/main/node/handlers/plugin-theia-directory-handler.js.map +1 -1
- package/lib/main/node/handlers/plugin-theia-file-handler.js +6 -14
- package/lib/main/node/handlers/plugin-theia-file-handler.js.map +1 -1
- package/lib/main/node/paths/plugin-paths-service.js +10 -18
- package/lib/main/node/paths/plugin-paths-service.js.map +1 -1
- package/lib/main/node/plugin-cli-contribution.js +2 -7
- package/lib/main/node/plugin-cli-contribution.js.map +1 -1
- package/lib/main/node/plugin-deployer-contribution.js +6 -14
- package/lib/main/node/plugin-deployer-contribution.js.map +1 -1
- package/lib/main/node/plugin-deployer-impl.d.ts.map +1 -1
- package/lib/main/node/plugin-deployer-impl.js +23 -27
- package/lib/main/node/plugin-deployer-impl.js.map +1 -1
- package/lib/main/node/plugin-deployer-proxy-entry-impl.js +3 -11
- package/lib/main/node/plugin-deployer-proxy-entry-impl.js.map +1 -1
- package/lib/main/node/plugin-github-resolver.js +5 -13
- package/lib/main/node/plugin-github-resolver.js.map +1 -1
- package/lib/main/node/plugin-http-resolver.js +5 -13
- package/lib/main/node/plugin-http-resolver.js.map +1 -1
- package/lib/main/node/plugin-localization-server.js +4 -12
- package/lib/main/node/plugin-localization-server.js.map +1 -1
- package/lib/main/node/plugin-mgmt-cli-contribution.js +4 -12
- package/lib/main/node/plugin-mgmt-cli-contribution.js.map +1 -1
- package/lib/main/node/plugin-server-handler.js +6 -14
- package/lib/main/node/plugin-server-handler.js.map +1 -1
- package/lib/main/node/plugin-service.js +10 -18
- package/lib/main/node/plugin-service.js.map +1 -1
- package/lib/main/node/plugin-theia-deployer-participant.js +4 -12
- package/lib/main/node/plugin-theia-deployer-participant.js.map +1 -1
- package/lib/main/node/plugin-uninstallation-manager.js +2 -7
- package/lib/main/node/plugin-uninstallation-manager.js.map +1 -1
- package/lib/main/node/plugins-key-value-storage.js +13 -21
- package/lib/main/node/plugins-key-value-storage.js.map +1 -1
- package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js +2 -7
- package/lib/main/node/resolvers/local-directory-plugin-deployer-resolver.js.map +1 -1
- package/lib/main/node/resolvers/local-plugin-deployer-resolver.js +2 -7
- package/lib/main/node/resolvers/local-plugin-deployer-resolver.js.map +1 -1
- package/lib/main/node/webview-backend-security-warnings.js +2 -7
- package/lib/main/node/webview-backend-security-warnings.js.map +1 -1
- package/lib/plugin/clipboard-ext.d.ts +3 -2
- package/lib/plugin/clipboard-ext.d.ts.map +1 -1
- package/lib/plugin/clipboard-ext.js +20 -4
- package/lib/plugin/clipboard-ext.js.map +1 -1
- package/lib/plugin/custom-editors.js +1 -1
- package/lib/plugin/custom-editors.js.map +1 -1
- package/lib/plugin/debug/debug-ext.d.ts +3 -1
- package/lib/plugin/debug/debug-ext.d.ts.map +1 -1
- package/lib/plugin/debug/debug-ext.js +25 -6
- package/lib/plugin/debug/debug-ext.js.map +1 -1
- package/lib/plugin/dialogs.js +1 -1
- package/lib/plugin/dialogs.js.map +1 -1
- package/lib/plugin/documents.js +2 -2
- package/lib/plugin/documents.js.map +1 -1
- package/lib/plugin/editors-and-documents.d.ts +1 -2
- package/lib/plugin/editors-and-documents.d.ts.map +1 -1
- package/lib/plugin/editors-and-documents.js +13 -4
- package/lib/plugin/editors-and-documents.js.map +1 -1
- package/lib/plugin/env.d.ts +6 -2
- package/lib/plugin/env.d.ts.map +1 -1
- package/lib/plugin/env.js +32 -7
- package/lib/plugin/env.js.map +1 -1
- package/lib/plugin/file-system-ext-impl.d.ts +2 -1
- package/lib/plugin/file-system-ext-impl.d.ts.map +1 -1
- package/lib/plugin/file-system-ext-impl.js +13 -1
- package/lib/plugin/file-system-ext-impl.js.map +1 -1
- package/lib/plugin/known-commands.d.ts.map +1 -1
- package/lib/plugin/known-commands.js +1 -0
- package/lib/plugin/known-commands.js.map +1 -1
- package/lib/plugin/languages/diagnostics.js +2 -2
- package/lib/plugin/languages/diagnostics.js.map +1 -1
- package/lib/plugin/languages/link-provider.d.ts.map +1 -1
- package/lib/plugin/languages/link-provider.js +3 -1
- package/lib/plugin/languages/link-provider.js.map +1 -1
- package/lib/plugin/localization-ext.d.ts +3 -2
- package/lib/plugin/localization-ext.d.ts.map +1 -1
- package/lib/plugin/localization-ext.js +22 -4
- package/lib/plugin/localization-ext.js.map +1 -1
- package/lib/plugin/markdown-string.d.ts +3 -3
- package/lib/plugin/markdown-string.d.ts.map +1 -1
- package/lib/plugin/markdown-string.js +17 -36
- package/lib/plugin/markdown-string.js.map +1 -1
- package/lib/plugin/message-registry.d.ts +2 -1
- package/lib/plugin/message-registry.d.ts.map +1 -1
- package/lib/plugin/message-registry.js +20 -4
- package/lib/plugin/message-registry.js.map +1 -1
- package/lib/plugin/node/debug/debug.spec.js +21 -1
- package/lib/plugin/node/debug/debug.spec.js.map +1 -1
- package/lib/plugin/node/env-node-ext.d.ts +1 -6
- package/lib/plugin/node/env-node-ext.d.ts.map +1 -1
- package/lib/plugin/node/env-node-ext.js +12 -12
- package/lib/plugin/node/env-node-ext.js.map +1 -1
- package/lib/plugin/node/plugin-container-module.d.ts +75 -0
- package/lib/plugin/node/plugin-container-module.d.ts.map +1 -0
- package/lib/plugin/node/plugin-container-module.js +115 -0
- package/lib/plugin/node/plugin-container-module.js.map +1 -0
- package/lib/plugin/notebook/notebook-kernels.d.ts +5 -6
- package/lib/plugin/notebook/notebook-kernels.d.ts.map +1 -1
- package/lib/plugin/notebook/notebook-kernels.js +24 -24
- package/lib/plugin/notebook/notebook-kernels.js.map +1 -1
- package/lib/plugin/notebook/notebook-renderers.d.ts.map +1 -1
- package/lib/plugin/notebook/notebook-renderers.js.map +1 -1
- package/lib/plugin/notebook/notebooks.d.ts +1 -0
- package/lib/plugin/notebook/notebooks.d.ts.map +1 -1
- package/lib/plugin/notebook/notebooks.js +19 -0
- package/lib/plugin/notebook/notebooks.js.map +1 -1
- package/lib/plugin/plugin-context.d.ts.map +1 -1
- package/lib/plugin/plugin-context.js +27 -22
- package/lib/plugin/plugin-context.js.map +1 -1
- package/lib/plugin/plugin-manager.d.ts +26 -17
- package/lib/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/plugin/plugin-manager.js +99 -37
- package/lib/plugin/plugin-manager.js.map +1 -1
- package/lib/plugin/plugin-storage.d.ts +11 -3
- package/lib/plugin/plugin-storage.d.ts.map +1 -1
- package/lib/plugin/plugin-storage.js +14 -5
- package/lib/plugin/plugin-storage.js.map +1 -1
- package/lib/plugin/preference-registry.d.ts +3 -2
- package/lib/plugin/preference-registry.d.ts.map +1 -1
- package/lib/plugin/preference-registry.js +29 -7
- package/lib/plugin/preference-registry.js.map +1 -1
- package/lib/plugin/preference-registry.spec.js +8 -1
- package/lib/plugin/preference-registry.spec.js.map +1 -1
- package/lib/plugin/quick-open.d.ts +2 -9
- package/lib/plugin/quick-open.d.ts.map +1 -1
- package/lib/plugin/quick-open.js +9 -25
- package/lib/plugin/quick-open.js.map +1 -1
- package/lib/plugin/secrets-ext.d.ts +16 -7
- package/lib/plugin/secrets-ext.d.ts.map +1 -1
- package/lib/plugin/secrets-ext.js +12 -3
- package/lib/plugin/secrets-ext.js.map +1 -1
- package/lib/plugin/terminal-ext.d.ts +1 -1
- package/lib/plugin/terminal-ext.d.ts.map +1 -1
- package/lib/plugin/terminal-ext.js +17 -8
- package/lib/plugin/terminal-ext.js.map +1 -1
- package/lib/plugin/test-item.js +17 -25
- package/lib/plugin/test-item.js.map +1 -1
- package/lib/plugin/tests.d.ts +8 -1
- package/lib/plugin/tests.d.ts.map +1 -1
- package/lib/plugin/tests.js +35 -21
- package/lib/plugin/tests.js.map +1 -1
- package/lib/plugin/text-editors.d.ts +2 -0
- package/lib/plugin/text-editors.d.ts.map +1 -1
- package/lib/plugin/text-editors.js +6 -0
- package/lib/plugin/text-editors.js.map +1 -1
- package/lib/plugin/type-converters.d.ts +10 -1
- package/lib/plugin/type-converters.d.ts.map +1 -1
- package/lib/plugin/type-converters.js +49 -10
- package/lib/plugin/type-converters.js.map +1 -1
- package/lib/plugin/types-impl.d.ts +26 -5
- package/lib/plugin/types-impl.d.ts.map +1 -1
- package/lib/plugin/types-impl.js +188 -184
- package/lib/plugin/types-impl.js.map +1 -1
- package/lib/plugin/webview-views.d.ts.map +1 -1
- package/lib/plugin/webview-views.js +2 -1
- package/lib/plugin/webview-views.js.map +1 -1
- package/lib/plugin/webviews.d.ts +21 -6
- package/lib/plugin/webviews.d.ts.map +1 -1
- package/lib/plugin/webviews.js +57 -15
- package/lib/plugin/webviews.js.map +1 -1
- package/lib/plugin/workspace.d.ts +4 -3
- package/lib/plugin/workspace.d.ts.map +1 -1
- package/lib/plugin/workspace.js +32 -6
- package/lib/plugin/workspace.js.map +1 -1
- package/package.json +31 -31
- package/src/common/plugin-api-rpc-model.ts +1 -1
- package/src/common/plugin-api-rpc.ts +46 -26
- package/src/common/plugin-ext-api-contribution.ts +38 -5
- package/src/common/plugin-protocol.ts +19 -3
- package/src/common/proxy-handler.ts +14 -1
- package/src/common/rpc-protocol.ts +41 -3
- package/src/common/uri-components.ts +1 -5
- package/src/hosted/browser/hosted-plugin.ts +49 -338
- package/src/hosted/browser/worker/debug-stub.ts +4 -3
- package/src/hosted/browser/worker/worker-env-ext.ts +5 -4
- package/src/hosted/browser/worker/worker-main.ts +103 -115
- package/src/hosted/browser/worker/worker-plugin-module.ts +80 -0
- package/src/hosted/common/hosted-plugin.ts +456 -0
- package/src/hosted/node/hosted-plugin-deployer-handler.ts +2 -2
- package/src/hosted/node/hosted-plugin-process.ts +4 -4
- package/src/hosted/node/plugin-ext-hosted-backend-module.ts +3 -1
- package/src/hosted/node/plugin-host-module.ts +69 -0
- package/src/hosted/node/plugin-host-rpc.ts +232 -73
- package/src/hosted/node/plugin-host.ts +9 -7
- package/src/hosted/node/plugin-reader.ts +3 -0
- package/src/hosted/node/plugin-service.ts +21 -4
- package/src/hosted/node/scanners/file-plugin-uri-factory.ts +1 -1
- package/src/hosted/node/scanners/scanner-theia.ts +54 -14
- package/src/main/browser/authentication-main.ts +3 -1
- package/src/main/browser/command-registry-main.ts +7 -0
- package/src/main/browser/comments/comments-contribution.ts +7 -3
- package/src/main/browser/comments/comments-main.ts +2 -2
- package/src/main/browser/custom-editors/custom-editor-opener.tsx +2 -2
- package/src/main/browser/custom-editors/custom-editor-widget.ts +3 -1
- package/src/main/browser/custom-editors/custom-editors-main.ts +1 -1
- package/src/main/browser/data-transfer/data-transfer-type-converters.ts +4 -6
- package/src/main/browser/editors-and-documents-main.ts +27 -5
- package/src/main/browser/env-main.ts +1 -28
- package/src/main/browser/file-system-main-impl.ts +9 -5
- package/src/main/browser/languages-main.ts +9 -5
- package/src/main/browser/main-context.ts +2 -8
- package/src/main/browser/menus/menus-contribution-handler.ts +9 -4
- package/src/main/browser/menus/plugin-menu-command-adapter.ts +4 -1
- package/src/main/browser/menus/vscode-theia-menu-mappings.ts +10 -2
- package/src/main/browser/message-registry-main.ts +10 -23
- package/src/main/browser/notebooks/notebook-documents-and-editors-main.ts +5 -8
- package/src/main/browser/notebooks/notebook-kernels-main.ts +46 -5
- package/src/main/browser/notebooks/notebooks-main.ts +24 -9
- package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +99 -46
- package/src/main/browser/notebooks/renderers/output-webview-internal.ts +115 -15
- package/src/main/browser/notebooks/renderers/webview-communication.ts +14 -3
- package/src/main/browser/notification-main.ts +4 -64
- package/src/main/browser/plugin-contribution-handler.ts +9 -1
- package/src/main/browser/plugin-ext-frontend-module.ts +6 -2
- package/src/main/browser/plugin-icon-service.ts +8 -72
- package/src/main/browser/quick-open-main.ts +82 -30
- package/src/main/browser/scm-main.ts +1 -1
- package/src/main/browser/selection-provider-command.ts +1 -2
- package/src/main/browser/terminal-main.ts +2 -2
- package/src/main/browser/test-main.ts +11 -2
- package/src/main/browser/text-editor-main.ts +7 -1
- package/src/main/browser/text-editors-main.ts +18 -10
- package/src/main/browser/theme-icon-override.ts +13 -19
- package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +1 -1
- package/src/main/browser/view/plugin-view-registry.ts +26 -8
- package/src/main/browser/view/plugin-view-widget.ts +0 -1
- package/src/main/browser/view/tree-view-widget.tsx +2 -3
- package/src/main/browser/webview/webview-context-keys.ts +17 -4
- package/src/main/browser/webview/webview-widget-factory.ts +2 -1
- package/src/main/browser/webview/webview.ts +2 -0
- package/src/main/browser/webviews-main.ts +7 -2
- package/src/main/common/basic-message-registry-main.ts +53 -0
- package/src/main/common/basic-notification-main.ts +86 -0
- package/src/main/common/env-main.ts +44 -0
- package/src/main/node/errors.spec.ts +2 -2
- package/src/main/node/handlers/plugin-theia-directory-handler.ts +38 -16
- package/src/main/node/handlers/plugin-theia-file-handler.ts +1 -1
- package/src/main/node/plugin-deployer-impl.ts +5 -1
- package/src/main/node/plugins-key-value-storage.ts +1 -1
- package/src/plugin/clipboard-ext.ts +9 -3
- package/src/plugin/custom-editors.ts +1 -1
- package/src/plugin/debug/debug-ext.ts +13 -4
- package/src/plugin/dialogs.ts +1 -1
- package/src/plugin/documents.ts +2 -2
- package/src/plugin/editors-and-documents.ts +5 -3
- package/src/plugin/env.ts +22 -6
- package/src/plugin/file-system-ext-impl.ts +15 -2
- package/src/plugin/known-commands.ts +1 -0
- package/src/plugin/languages/diagnostics.ts +2 -2
- package/src/plugin/languages/link-provider.ts +3 -1
- package/src/plugin/localization-ext.ts +8 -3
- package/src/plugin/markdown-string.ts +3 -3
- package/src/plugin/message-registry.ts +7 -2
- package/src/plugin/node/debug/debug.spec.ts +5 -1
- package/src/plugin/node/env-node-ext.ts +7 -12
- package/src/plugin/node/plugin-container-module.ts +165 -0
- package/src/plugin/notebook/notebook-kernels.ts +29 -30
- package/src/plugin/notebook/notebook-renderers.ts +0 -1
- package/src/plugin/notebook/notebooks.ts +20 -0
- package/src/plugin/plugin-context.ts +23 -5
- package/src/plugin/plugin-manager.ts +99 -45
- package/src/plugin/plugin-storage.ts +22 -4
- package/src/plugin/preference-registry.spec.ts +6 -1
- package/src/plugin/preference-registry.ts +13 -7
- package/src/plugin/quick-open.ts +13 -27
- package/src/plugin/secrets-ext.ts +25 -5
- package/src/plugin/terminal-ext.ts +6 -4
- package/src/plugin/tests.ts +33 -4
- package/src/plugin/text-editors.ts +9 -2
- package/src/plugin/type-converters.ts +45 -9
- package/src/plugin/types-impl.ts +36 -7
- package/src/plugin/webview-views.ts +2 -1
- package/src/plugin/webviews.ts +42 -16
- 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 {
|
|
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
|
-
|
|
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
|
-
|
|
43
|
+
protected readonly disposables = new DisposableCollection();
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
50
|
-
|
|
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 {
|
|
24
|
-
import {
|
|
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 =
|
|
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.
|
|
78
|
-
|
|
79
|
-
|
|
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.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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(
|
|
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.
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =>
|
|
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
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
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
|
|
389
|
-
clearOutput(
|
|
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.
|
|
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
|
-
|
|
470
|
-
|
|
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
|
|
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
|
|
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
|