@theia/core 1.74.0-next.9 → 1.74.1
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/README.md +10 -10
- package/i18n/nls.cs.json +143 -16
- package/i18n/nls.de.json +143 -16
- package/i18n/nls.es.json +143 -16
- package/i18n/nls.fr.json +143 -16
- package/i18n/nls.hu.json +143 -16
- package/i18n/nls.it.json +143 -16
- package/i18n/nls.ja.json +143 -16
- package/i18n/nls.json +143 -16
- package/i18n/nls.ko.json +143 -16
- package/i18n/nls.pl.json +143 -16
- package/i18n/nls.pt-br.json +143 -16
- package/i18n/nls.ru.json +143 -16
- package/i18n/nls.tr.json +143 -16
- package/i18n/nls.zh-cn.json +143 -16
- package/i18n/nls.zh-tw.json +143 -16
- package/lib/browser/browser-clipboard-service.d.ts +3 -0
- package/lib/browser/browser-clipboard-service.d.ts.map +1 -1
- package/lib/browser/browser-clipboard-service.js +8 -1
- package/lib/browser/browser-clipboard-service.js.map +1 -1
- package/lib/browser/catalog.json +505 -46
- package/lib/browser/clipboard-service.d.ts +11 -0
- package/lib/browser/clipboard-service.d.ts.map +1 -1
- package/lib/browser/clipboard-service.js.map +1 -1
- package/lib/browser/common-frontend-contribution.d.ts +3 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +22 -10
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-frontend-contribution.spec.d.ts +2 -0
- package/lib/browser/common-frontend-contribution.spec.d.ts.map +1 -0
- package/lib/browser/common-frontend-contribution.spec.js +71 -0
- package/lib/browser/common-frontend-contribution.spec.js.map +1 -0
- package/lib/browser/frontend-application-contribution.d.ts +1 -1
- package/lib/browser/frontend-application-module.d.ts +2 -2
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +13 -2
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +12 -2
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +12 -7
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/perspective-service.d.ts +173 -0
- package/lib/browser/perspective-service.d.ts.map +1 -0
- package/lib/browser/perspective-service.js +484 -0
- package/lib/browser/perspective-service.js.map +1 -0
- package/lib/browser/perspective-service.spec.d.ts +2 -0
- package/lib/browser/perspective-service.spec.d.ts.map +1 -0
- package/lib/browser/perspective-service.spec.js +1806 -0
- package/lib/browser/perspective-service.spec.js.map +1 -0
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +9 -1
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +63 -0
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +7 -0
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +38 -28
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts +9 -0
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +124 -14
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.spec.d.ts +2 -0
- package/lib/browser/shell/shell-layout-restorer.spec.d.ts.map +1 -0
- package/lib/browser/shell/shell-layout-restorer.spec.js +539 -0
- package/lib/browser/shell/shell-layout-restorer.spec.js.map +1 -0
- package/lib/browser/shell/view-contribution.d.ts +2 -0
- package/lib/browser/shell/view-contribution.d.ts.map +1 -1
- package/lib/browser/shell/view-contribution.js +5 -1
- package/lib/browser/shell/view-contribution.js.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +2 -0
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +11 -3
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/tree/tree-consistency.spec.js +103 -0
- package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +7 -33
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +7 -54
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +6 -0
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/widgets/index.d.ts +1 -0
- package/lib/browser/widgets/index.d.ts.map +1 -1
- package/lib/browser/widgets/index.js +1 -0
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/select-component.d.ts +15 -2
- package/lib/browser/widgets/select-component.d.ts.map +1 -1
- package/lib/browser/widgets/select-component.js +86 -24
- package/lib/browser/widgets/select-component.js.map +1 -1
- package/lib/browser/widgets/tab-bar-tracker.d.ts +23 -0
- package/lib/browser/widgets/tab-bar-tracker.d.ts.map +1 -0
- package/lib/browser/widgets/tab-bar-tracker.js +65 -0
- package/lib/browser/widgets/tab-bar-tracker.js.map +1 -0
- package/lib/browser/widgets/tab-bar-tracker.spec.d.ts +2 -0
- package/lib/browser/widgets/tab-bar-tracker.spec.d.ts.map +1 -0
- package/lib/browser/widgets/tab-bar-tracker.spec.js +109 -0
- package/lib/browser/widgets/tab-bar-tracker.spec.js.map +1 -0
- package/lib/browser/window/default-secondary-window-service.d.ts +2 -0
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +8 -2
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +19 -0
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +34 -5
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.spec.js +22 -0
- package/lib/browser/window/default-window-service.spec.js.map +1 -1
- package/lib/browser/window/secondary-window-service.d.ts +7 -0
- package/lib/browser/window/secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/window-service.d.ts +1 -1
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +13 -2
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -1
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +31 -3
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
- package/lib/common/preferences/index.d.ts +1 -0
- package/lib/common/preferences/index.d.ts.map +1 -1
- package/lib/common/preferences/index.js +1 -0
- package/lib/common/preferences/index.js.map +1 -1
- package/lib/common/preferences/preference-provider.d.ts +15 -0
- package/lib/common/preferences/preference-provider.d.ts.map +1 -1
- package/lib/common/preferences/preference-provider.js +21 -1
- package/lib/common/preferences/preference-provider.js.map +1 -1
- package/lib/common/preferences/preference-provider.spec.js +17 -0
- package/lib/common/preferences/preference-provider.spec.js.map +1 -1
- package/lib/common/preferences/preference-scope.d.ts +6 -1
- package/lib/common/preferences/preference-scope.d.ts.map +1 -1
- package/lib/common/preferences/preference-scope.js +5 -0
- package/lib/common/preferences/preference-scope.js.map +1 -1
- package/lib/common/preferences/preference-scope.spec.js +5 -3
- package/lib/common/preferences/preference-scope.spec.js.map +1 -1
- package/lib/common/preferences/preference-service.d.ts +19 -0
- package/lib/common/preferences/preference-service.d.ts.map +1 -1
- package/lib/common/preferences/preference-service.js +34 -5
- package/lib/common/preferences/preference-service.js.map +1 -1
- package/lib/common/preferences/session-preference-provider.d.ts +17 -0
- package/lib/common/preferences/session-preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/session-preference-provider.js +77 -0
- package/lib/common/preferences/session-preference-provider.js.map +1 -0
- package/lib/common/preferences/session-preference-provider.spec.d.ts +2 -0
- package/lib/common/preferences/session-preference-provider.spec.d.ts.map +1 -0
- package/lib/common/preferences/session-preference-provider.spec.js +71 -0
- package/lib/common/preferences/session-preference-provider.spec.js.map +1 -0
- package/lib/electron-browser/electron-clipboard-service.d.ts +3 -0
- package/lib/electron-browser/electron-clipboard-service.d.ts.map +1 -1
- package/lib/electron-browser/electron-clipboard-service.js +6 -0
- package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +2 -1
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +3 -3
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +43 -0
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +3 -0
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-node/hosting/electron-backend-hosting-module.d.ts.map +1 -1
- package/lib/electron-node/hosting/electron-backend-hosting-module.js +7 -0
- package/lib/electron-node/hosting/electron-backend-hosting-module.js.map +1 -1
- package/lib/electron-node/hosting/electron-backend-hosting-module.spec.d.ts +2 -0
- package/lib/electron-node/hosting/electron-backend-hosting-module.spec.d.ts.map +1 -0
- package/lib/electron-node/hosting/electron-backend-hosting-module.spec.js +39 -0
- package/lib/electron-node/hosting/electron-backend-hosting-module.spec.js.map +1 -0
- package/lib/node/hosting/backend-hosting-module.d.ts.map +1 -1
- package/lib/node/hosting/backend-hosting-module.js +4 -1
- package/lib/node/hosting/backend-hosting-module.js.map +1 -1
- package/lib/node/hosting/browser-connection-token.d.ts +29 -1
- package/lib/node/hosting/browser-connection-token.d.ts.map +1 -1
- package/lib/node/hosting/browser-connection-token.js +25 -1
- package/lib/node/hosting/browser-connection-token.js.map +1 -1
- package/lib/node/hosting/browser-connection-token.spec.js +70 -0
- package/lib/node/hosting/browser-connection-token.spec.js.map +1 -1
- package/lib/node/index.d.ts +1 -0
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +3 -1
- package/lib/node/index.js.map +1 -1
- package/package.json +11 -11
- package/src/browser/browser-clipboard-service.ts +7 -1
- package/src/browser/clipboard-service.ts +11 -0
- package/src/browser/common-frontend-contribution.spec.ts +84 -0
- package/src/browser/common-frontend-contribution.ts +22 -10
- package/src/browser/frontend-application-contribution.ts +1 -1
- package/src/browser/frontend-application-module.ts +15 -3
- package/src/browser/frontend-application.ts +12 -4
- package/src/browser/index.ts +1 -0
- package/src/browser/keybinding.ts +12 -7
- package/src/browser/perspective-service.spec.ts +2270 -0
- package/src/browser/perspective-service.ts +625 -0
- package/src/browser/preferences/preference-contribution.ts +9 -1
- package/src/browser/preferences/preference-service.spec.ts +72 -0
- package/src/browser/shell/application-shell.ts +41 -26
- package/src/browser/shell/shell-layout-restorer.spec.ts +746 -0
- package/src/browser/shell/shell-layout-restorer.ts +134 -13
- package/src/browser/shell/view-contribution.ts +6 -1
- package/src/browser/status-bar/status-bar.tsx +13 -3
- package/src/browser/style/select-component.css +16 -0
- package/src/browser/style/sidepanel.css +5 -0
- package/src/browser/style/status-bar.css +1 -1
- package/src/browser/tree/tree-consistency.spec.ts +119 -0
- package/src/browser/tree/tree-widget.tsx +12 -78
- package/src/browser/tree/tree.ts +6 -0
- package/src/browser/widgets/index.ts +1 -0
- package/src/browser/widgets/select-component.tsx +90 -24
- package/src/browser/widgets/tab-bar-tracker.spec.ts +121 -0
- package/src/browser/widgets/tab-bar-tracker.ts +68 -0
- package/src/browser/window/default-secondary-window-service.ts +8 -2
- package/src/browser/window/default-window-service.spec.ts +22 -0
- package/src/browser/window/default-window-service.ts +37 -5
- package/src/browser/window/secondary-window-service.ts +7 -0
- package/src/browser/window/window-service.ts +1 -1
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +32 -3
- package/src/common/i18n/nls.metadata.json +4149 -888
- package/src/common/preferences/index.ts +1 -0
- package/src/common/preferences/preference-provider.spec.ts +17 -0
- package/src/common/preferences/preference-provider.ts +22 -1
- package/src/common/preferences/preference-scope.spec.ts +5 -3
- package/src/common/preferences/preference-scope.ts +6 -1
- package/src/common/preferences/preference-service.ts +39 -5
- package/src/common/preferences/session-preference-provider.spec.ts +78 -0
- package/src/common/preferences/session-preference-provider.ts +69 -0
- package/src/electron-browser/electron-clipboard-service.ts +5 -0
- package/src/electron-browser/menu/electron-menu-contribution.ts +1 -1
- package/src/electron-browser/menu/electron-menu-style.css +3 -1
- package/src/electron-browser/preload.ts +5 -2
- package/src/electron-browser/window/electron-secondary-window-service.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +3 -3
- package/src/electron-common/electron-api.ts +4 -0
- package/src/electron-main/electron-api-main.ts +56 -3
- package/src/electron-main/electron-main-application.ts +3 -0
- package/src/electron-node/hosting/electron-backend-hosting-module.spec.ts +42 -0
- package/src/electron-node/hosting/electron-backend-hosting-module.ts +8 -0
- package/src/node/hosting/backend-hosting-module.ts +5 -2
- package/src/node/hosting/browser-connection-token.spec.ts +92 -0
- package/src/node/hosting/browser-connection-token.ts +45 -1
- package/src/node/index.ts +1 -0
package/lib/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC"}
|
package/lib/node/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.BackendRequestAllowedContribution = exports.FileSystemLocking = void 0;
|
|
18
|
+
exports.HttpConnectionValidator = exports.BackendRequestAllowedContribution = exports.FileSystemLocking = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
tslib_1.__exportStar(require("./backend-application"), exports);
|
|
21
21
|
tslib_1.__exportStar(require("./backend-global"), exports);
|
|
@@ -28,4 +28,6 @@ var filesystem_locking_1 = require("./filesystem-locking");
|
|
|
28
28
|
Object.defineProperty(exports, "FileSystemLocking", { enumerable: true, get: function () { return filesystem_locking_1.FileSystemLocking; } });
|
|
29
29
|
var backend_request_facade_1 = require("./request/backend-request-facade");
|
|
30
30
|
Object.defineProperty(exports, "BackendRequestAllowedContribution", { enumerable: true, get: function () { return backend_request_facade_1.BackendRequestAllowedContribution; } });
|
|
31
|
+
var browser_connection_token_1 = require("./hosting/browser-connection-token");
|
|
32
|
+
Object.defineProperty(exports, "HttpConnectionValidator", { enumerable: true, get: function () { return browser_connection_token_1.HttpConnectionValidator; } });
|
|
31
33
|
//# sourceMappingURL=index.js.map
|
package/lib/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,gEAAsC;AACtC,2DAAiC;AACjC,kDAAwB;AACxB,6DAAmC;AACnC,sDAA4B;AAC5B,gDAAsB;AACtB,4DAAkC;AAClC,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2EAAqF;AAA5E,2IAAA,iCAAiC,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,gEAAsC;AACtC,2DAAiC;AACjC,kDAAwB;AACxB,6DAAmC;AACnC,sDAA4B;AAC5B,gDAAsB;AACtB,4DAAkC;AAClC,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2EAAqF;AAA5E,2IAAA,iCAAiC,OAAA;AAC1C,+EAA6E;AAApE,mIAAA,uBAAuB,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/core",
|
|
3
|
-
"version": "1.74.
|
|
3
|
+
"version": "1.74.1",
|
|
4
4
|
"description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
|
|
5
5
|
"main": "lib/common/index.js",
|
|
6
6
|
"typings": "lib/common/index.d.ts",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"@lumino/virtualdom": "^2.0.4",
|
|
18
18
|
"@lumino/widgets": "2.7.5",
|
|
19
19
|
"@parcel/watcher": "^2.5.6",
|
|
20
|
-
"@theia/application-package": "1.74.
|
|
21
|
-
"@theia/request": "1.74.
|
|
20
|
+
"@theia/application-package": "1.74.1",
|
|
21
|
+
"@theia/request": "1.74.1",
|
|
22
22
|
"@types/body-parser": "^1.19.6",
|
|
23
23
|
"@types/express": "^4.17.25",
|
|
24
24
|
"@types/fs-extra": "^4.0.15",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"async-mutex": "^0.4.1",
|
|
36
36
|
"body-parser": "^1.20.5",
|
|
37
37
|
"cookie": "^1.1.1",
|
|
38
|
-
"dompurify": "^3.4.
|
|
38
|
+
"dompurify": "^3.4.11",
|
|
39
39
|
"drivelist": "^12.0.2",
|
|
40
40
|
"express": "^4.22.2",
|
|
41
41
|
"fast-json-stable-stringify": "^2.1.0",
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
"keytar": "7.9.0",
|
|
52
52
|
"lodash.debounce": "^4.0.8",
|
|
53
53
|
"lodash.throttle": "^4.1.1",
|
|
54
|
-
"markdown-it": "^14.
|
|
54
|
+
"markdown-it": "^14.3.0",
|
|
55
55
|
"markdown-it-anchor": "^9.2.0",
|
|
56
56
|
"markdown-it-emoji": "^3.0.0",
|
|
57
|
-
"msgpackr": "^1.
|
|
57
|
+
"msgpackr": "^1.12.1",
|
|
58
58
|
"p-debounce": "^2.1.0",
|
|
59
59
|
"perfect-scrollbar": "1.5.5",
|
|
60
60
|
"react-tooltip": "^4.5.1",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"vscode-languageserver-protocol": "3.17.5",
|
|
70
70
|
"vscode-uri": "3.0.8",
|
|
71
71
|
"ws": "^8.21.0",
|
|
72
|
-
"yargs": "^17.7.
|
|
72
|
+
"yargs": "^17.7.3"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
75
|
"@theia/electron": "*",
|
|
@@ -218,9 +218,9 @@
|
|
|
218
218
|
"watch": "theiaext watch"
|
|
219
219
|
},
|
|
220
220
|
"devDependencies": {
|
|
221
|
-
"@theia/ext-scripts": "1.
|
|
222
|
-
"@theia/re-exports": "1.
|
|
223
|
-
"@types/react": "^18.3.
|
|
221
|
+
"@theia/ext-scripts": "1.74.1",
|
|
222
|
+
"@theia/re-exports": "1.74.1",
|
|
223
|
+
"@types/react": "^18.3.31",
|
|
224
224
|
"@types/react-dom": "^18.3.7",
|
|
225
225
|
"minimist": "^1.2.8",
|
|
226
226
|
"nodejs-file-downloader": "4.13.0",
|
|
@@ -230,5 +230,5 @@
|
|
|
230
230
|
"nyc": {
|
|
231
231
|
"extends": "../../configs/nyc.json"
|
|
232
232
|
},
|
|
233
|
-
"gitHead": "
|
|
233
|
+
"gitHead": "eb2ffacbac2d76cfb8c0d2dd682d340db746a1b2"
|
|
234
234
|
}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import { injectable, inject } from 'inversify';
|
|
18
18
|
import { isFirefox } from './browser';
|
|
19
19
|
import { ClipboardService } from './clipboard-service';
|
|
20
|
+
import { Emitter, Event } from '../common/event';
|
|
20
21
|
import { ILogger } from '../common/logger';
|
|
21
22
|
import { MessageService } from '../common/message-service';
|
|
22
23
|
import { nls } from '../common/nls';
|
|
@@ -41,6 +42,9 @@ export class BrowserClipboardService implements ClipboardService {
|
|
|
41
42
|
@inject(ILogger)
|
|
42
43
|
protected readonly logger: ILogger;
|
|
43
44
|
|
|
45
|
+
protected readonly onDidWriteTextEmitter = new Emitter<string>();
|
|
46
|
+
readonly onDidWriteText: Event<string> = this.onDidWriteTextEmitter.event;
|
|
47
|
+
|
|
44
48
|
async readText(): Promise<string> {
|
|
45
49
|
let permission;
|
|
46
50
|
try {
|
|
@@ -82,6 +86,7 @@ export class BrowserClipboardService implements ClipboardService {
|
|
|
82
86
|
// in FireFox, Clipboard API isn't gated with the permissions
|
|
83
87
|
try {
|
|
84
88
|
await this.getClipboardAPI().writeText(value);
|
|
89
|
+
this.onDidWriteTextEmitter.fire(value);
|
|
85
90
|
return;
|
|
86
91
|
} catch (e2) {
|
|
87
92
|
this.logger.error('Failed writing to the clipboard.', e2);
|
|
@@ -103,7 +108,8 @@ export class BrowserClipboardService implements ClipboardService {
|
|
|
103
108
|
));
|
|
104
109
|
return;
|
|
105
110
|
}
|
|
106
|
-
|
|
111
|
+
await this.getClipboardAPI().writeText(value);
|
|
112
|
+
this.onDidWriteTextEmitter.fire(value);
|
|
107
113
|
}
|
|
108
114
|
|
|
109
115
|
protected async queryPermission(name: string): Promise<PermissionStatus> {
|
|
@@ -14,10 +14,21 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { Event } from '../common/event';
|
|
17
18
|
import { MaybePromise } from '../common/types';
|
|
18
19
|
|
|
19
20
|
export const ClipboardService = Symbol('ClipboardService');
|
|
21
|
+
/**
|
|
22
|
+
* Access to the system clipboard. Reading may require a user permission prompt in browsers.
|
|
23
|
+
*/
|
|
20
24
|
export interface ClipboardService {
|
|
25
|
+
/** Returns the clipboard text, or an empty string if it cannot be read. */
|
|
21
26
|
readText(): MaybePromise<string>;
|
|
27
|
+
/** Writes the given text to the clipboard. */
|
|
22
28
|
writeText(value: string): MaybePromise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Emitted with the written text after {@link writeText} updated the clipboard.
|
|
31
|
+
* Such writes dispatch no DOM `copy` event, so this is the only way to observe them.
|
|
32
|
+
*/
|
|
33
|
+
readonly onDidWriteText?: Event<string>;
|
|
23
34
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 Safi Seid-Ahmad, K2view and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { enableJSDOM } from './test/jsdom';
|
|
18
|
+
let disableJSDOM = enableJSDOM();
|
|
19
|
+
|
|
20
|
+
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
21
|
+
FrontendApplicationConfigProvider.set({});
|
|
22
|
+
|
|
23
|
+
// jsdom does not implement queryCommandSupported, which common-frontend-contribution
|
|
24
|
+
// evaluates at module load to determine cut/copy/paste support.
|
|
25
|
+
document.queryCommandSupported = () => false;
|
|
26
|
+
|
|
27
|
+
import * as chai from 'chai';
|
|
28
|
+
import { Emitter } from '../common/event';
|
|
29
|
+
// Initialize the common barrel before common-frontend-contribution: its import graph contains
|
|
30
|
+
// cycles through the barrel (e.g. shell/tab-bar-toolbar) that leave injection tokens undefined
|
|
31
|
+
// when the contribution module itself is the entry point.
|
|
32
|
+
import '../common';
|
|
33
|
+
import { CLASSNAME_OS_LINUX, CLASSNAME_OS_MAC, CLASSNAME_OS_WINDOWS, CommonFrontendContribution } from './common-frontend-contribution';
|
|
34
|
+
import { SecondaryWindowService } from './window/secondary-window-service';
|
|
35
|
+
|
|
36
|
+
disableJSDOM();
|
|
37
|
+
|
|
38
|
+
const expect = chai.expect;
|
|
39
|
+
const OS_CLASSNAMES = [CLASSNAME_OS_MAC, CLASSNAME_OS_WINDOWS, CLASSNAME_OS_LINUX];
|
|
40
|
+
|
|
41
|
+
describe('CommonFrontendContribution', () => {
|
|
42
|
+
|
|
43
|
+
before(() => {
|
|
44
|
+
disableJSDOM = enableJSDOM();
|
|
45
|
+
document.queryCommandSupported = () => false;
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
after(() => {
|
|
49
|
+
disableJSDOM();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
describe('setOsClass', () => {
|
|
53
|
+
|
|
54
|
+
let onWindowLoadedEmitter: Emitter<Window>;
|
|
55
|
+
let contribution: CommonFrontendContribution;
|
|
56
|
+
|
|
57
|
+
beforeEach(() => {
|
|
58
|
+
document.body.classList.remove(...OS_CLASSNAMES);
|
|
59
|
+
onWindowLoadedEmitter = new Emitter<Window>();
|
|
60
|
+
// Bypass the constructor: setOsClass only uses the secondary window service,
|
|
61
|
+
// and this keeps the test independent of the constructor's parameter list.
|
|
62
|
+
contribution = Object.create(CommonFrontendContribution.prototype);
|
|
63
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
64
|
+
(contribution as any).secondaryWindowService = <Partial<SecondaryWindowService>>{
|
|
65
|
+
onWindowLoaded: onWindowLoadedEmitter.event
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('adds the OS class to the main window body', () => {
|
|
70
|
+
contribution['setOsClass']();
|
|
71
|
+
expect(OS_CLASSNAMES.filter(c => document.body.classList.contains(c))).to.have.lengthOf(1);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('adds the OS class to a secondary window body once its document is loaded', () => {
|
|
75
|
+
contribution['setOsClass']();
|
|
76
|
+
const osClass = OS_CLASSNAMES.find(c => document.body.classList.contains(c))!;
|
|
77
|
+
|
|
78
|
+
const body = document.createElement('body');
|
|
79
|
+
const win = <Partial<Window>>{ document: <Partial<Document>>{ body } };
|
|
80
|
+
onWindowLoadedEmitter.fire(win as Window);
|
|
81
|
+
expect(body.classList.contains(osClass), 'class must be added to the loaded window').to.be.true;
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
@@ -34,7 +34,6 @@ import { OpenerService, open } from '../browser/opener-service';
|
|
|
34
34
|
import { ApplicationShell } from './shell/application-shell';
|
|
35
35
|
import { SHELL_TABBAR_CONTEXT_CLOSE, SHELL_TABBAR_CONTEXT_COPY, SHELL_TABBAR_CONTEXT_PIN, SHELL_TABBAR_CONTEXT_SPLIT } from './shell/tab-bars';
|
|
36
36
|
import { AboutDialog } from './about-dialog';
|
|
37
|
-
import * as browser from './browser';
|
|
38
37
|
import URI from '../common/uri';
|
|
39
38
|
import { ContextKey, ContextKeyService } from './context-key-service';
|
|
40
39
|
import { OS, isOSX, isWindows, EOL } from '../common/os';
|
|
@@ -62,6 +61,7 @@ import { nls } from '../common/nls';
|
|
|
62
61
|
import { CurrentWidgetCommandAdapter } from './shell/current-widget-command-adapter';
|
|
63
62
|
import { ConfirmDialog, confirmExit, ConfirmSaveDialog, Dialog } from './dialogs';
|
|
64
63
|
import { WindowService } from './window/window-service';
|
|
64
|
+
import { SecondaryWindowService } from './window/secondary-window-service';
|
|
65
65
|
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
66
66
|
import { DecorationStyle } from './decoration-style';
|
|
67
67
|
import { codicon, isPinned, Title, togglePinned, Widget } from './widgets';
|
|
@@ -75,10 +75,12 @@ import { timeout } from '../common/promise-util';
|
|
|
75
75
|
|
|
76
76
|
export const supportCut = environment.electron.is() || document.queryCommandSupported('cut');
|
|
77
77
|
export const supportCopy = environment.electron.is() || document.queryCommandSupported('copy');
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
|
|
78
|
+
// Browsers block programmatic paste (document.execCommand('paste') is a no-op and
|
|
79
|
+
// document.queryCommandSupported('paste') returns false), so supportPaste is effectively
|
|
80
|
+
// electron-only. Keeping it false in browsers is intentional: the ctrlcmd+v keybinding stays
|
|
81
|
+
// unregistered, so native paste events reach widget-level listeners (e.g. the navigator), and
|
|
82
|
+
// menu paste is handled by dedicated handlers using the async clipboard API.
|
|
83
|
+
export const supportPaste = environment.electron.is() || document.queryCommandSupported('paste');
|
|
82
84
|
|
|
83
85
|
export const RECENT_COMMANDS_STORAGE_KEY = 'commands';
|
|
84
86
|
|
|
@@ -146,6 +148,9 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
|
|
|
146
148
|
@inject(WindowService)
|
|
147
149
|
protected readonly windowService: WindowService;
|
|
148
150
|
|
|
151
|
+
@inject(SecondaryWindowService)
|
|
152
|
+
protected readonly secondaryWindowService: SecondaryWindowService;
|
|
153
|
+
|
|
149
154
|
@inject(UserWorkingDirectoryProvider)
|
|
150
155
|
protected readonly workingDirProvider: UserWorkingDirectoryProvider;
|
|
151
156
|
|
|
@@ -217,12 +222,20 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
|
|
|
217
222
|
}
|
|
218
223
|
|
|
219
224
|
protected setOsClass(): void {
|
|
225
|
+
const osClass = this.getOsClass();
|
|
226
|
+
document.body.classList.add(osClass);
|
|
227
|
+
// The OS class selects the platform-specific font stacks in os.css. Secondary windows
|
|
228
|
+
// have their own document, so apply it there as well.
|
|
229
|
+
this.secondaryWindowService.onWindowLoaded(win => win.document.body.classList.add(osClass));
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
protected getOsClass(): string {
|
|
220
233
|
if (isOSX) {
|
|
221
|
-
|
|
234
|
+
return CLASSNAME_OS_MAC;
|
|
222
235
|
} else if (isWindows) {
|
|
223
|
-
|
|
236
|
+
return CLASSNAME_OS_WINDOWS;
|
|
224
237
|
} else {
|
|
225
|
-
|
|
238
|
+
return CLASSNAME_OS_LINUX;
|
|
226
239
|
}
|
|
227
240
|
}
|
|
228
241
|
|
|
@@ -680,7 +693,6 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
|
|
|
680
693
|
}
|
|
681
694
|
});
|
|
682
695
|
commandRegistry.registerCommand(CommonCommands.TOGGLE_BOTTOM_PANEL, {
|
|
683
|
-
isEnabled: () => this.shell.getWidgets('bottom').length > 0,
|
|
684
696
|
execute: () => {
|
|
685
697
|
if (this.shell.isExpanded('bottom')) {
|
|
686
698
|
this.shell.collapsePanel('bottom');
|
|
@@ -1393,7 +1405,7 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
|
|
|
1393
1405
|
// list.focusBackground, list.focusForeground, list.inactiveFocusBackground, list.filterMatchBorder,
|
|
1394
1406
|
// list.dropBackground, listFilterWidget.outline, listFilterWidget.noMatchesOutline
|
|
1395
1407
|
// list.invalidItemForeground => tree node needs an respective class
|
|
1396
|
-
{ id: 'list.activeSelectionBackground', defaults: { dark: '#094771', light: '#
|
|
1408
|
+
{ id: 'list.activeSelectionBackground', defaults: { dark: '#094771', light: '#E8E8E8', hcLight: Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' },
|
|
1397
1409
|
{ id: 'list.activeSelectionForeground', defaults: { dark: '#FFF', light: '#FFF' }, description: 'List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' },
|
|
1398
1410
|
{ id: 'list.inactiveSelectionBackground', defaults: { dark: '#37373D', light: '#E4E6F1', hcLight: Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.' },
|
|
1399
1411
|
{ id: 'list.inactiveSelectionForeground', description: 'List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.' },
|
|
@@ -52,7 +52,7 @@ export interface FrontendApplicationContribution {
|
|
|
52
52
|
/**
|
|
53
53
|
* Called when an application is stopped or unloaded.
|
|
54
54
|
*
|
|
55
|
-
* Note that this is implemented using `window.
|
|
55
|
+
* Note that this is implemented using `window.pagehide` which doesn't allow any asynchronous code anymore.
|
|
56
56
|
* I.e. this is the last tick.
|
|
57
57
|
*/
|
|
58
58
|
onStop?(app: FrontendApplication): void;
|
|
@@ -14,12 +14,14 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
// Import Lumino rules first because some conflict with Theia's styles.
|
|
18
|
+
// This ensures Theia rules with equal specificity take precedence (see GH-17872).
|
|
19
|
+
import '@lumino/widgets/style/index.css';
|
|
20
|
+
import 'perfect-scrollbar/css/perfect-scrollbar.css';
|
|
17
21
|
import '../../src/browser/style/index.css';
|
|
18
22
|
import '../../src/browser/style/materialcolors.css';
|
|
19
|
-
import '@lumino/widgets/style/index.css';
|
|
20
23
|
import 'font-awesome/css/font-awesome.min.css';
|
|
21
24
|
import 'file-icons-js/css/style.css';
|
|
22
|
-
import 'perfect-scrollbar/css/perfect-scrollbar.css';
|
|
23
25
|
import '@vscode/codicons/dist/codicon.css';
|
|
24
26
|
|
|
25
27
|
import { ContainerModule } from 'inversify';
|
|
@@ -51,7 +53,7 @@ import {
|
|
|
51
53
|
SidePanelHandler, SidePanelHandlerFactory,
|
|
52
54
|
SidebarMenuWidget, SidebarTopMenuWidgetFactory,
|
|
53
55
|
SplitPositionHandler, DockPanelRendererFactory, ApplicationShellLayoutMigration, ApplicationShellLayoutMigrationError, SidebarBottomMenuWidgetFactory,
|
|
54
|
-
ShellLayoutTransformer
|
|
56
|
+
ShellLayoutTransformer, WidgetAreaResolver
|
|
55
57
|
} from './shell';
|
|
56
58
|
import { LabelParser } from './label-parser';
|
|
57
59
|
import { LabelProvider, LabelProviderContribution, DefaultUriLabelProviderContribution } from './label-provider';
|
|
@@ -146,6 +148,7 @@ import { WidgetStatusBarContribution, WidgetStatusBarService } from './widget-st
|
|
|
146
148
|
import { SymbolIconColorContribution } from './symbol-icon-color-contribution';
|
|
147
149
|
import { CorePreferences, bindCorePreferences } from '../common/core-preferences';
|
|
148
150
|
import { bindBadgeDecoration } from './badges';
|
|
151
|
+
import { PerspectiveContribution, PerspectiveService, PerspectiveServiceImpl, PerspectiveServiceInternal, WidgetAreaResolverImpl } from './perspective-service';
|
|
149
152
|
|
|
150
153
|
export { bindResourceProvider, bindMessageService, bindPreferenceService };
|
|
151
154
|
|
|
@@ -483,6 +486,15 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
|
|
|
483
486
|
bind(DomInputUndoRedoHandler).toSelf().inSingletonScope();
|
|
484
487
|
bind(UndoRedoHandler).toService(DomInputUndoRedoHandler);
|
|
485
488
|
|
|
489
|
+
bind(WidgetAreaResolverImpl).toSelf().inSingletonScope();
|
|
490
|
+
bind(WidgetAreaResolver).toService(WidgetAreaResolverImpl);
|
|
491
|
+
bind(PerspectiveServiceImpl).toSelf().inSingletonScope();
|
|
492
|
+
bind(PerspectiveService).toService(PerspectiveServiceImpl);
|
|
493
|
+
bind(PerspectiveServiceInternal).toService(PerspectiveServiceImpl);
|
|
494
|
+
bind(FrontendApplicationContribution).toService(PerspectiveServiceImpl);
|
|
495
|
+
bind(CommandContribution).toService(PerspectiveServiceImpl);
|
|
496
|
+
bindRootContributionProvider(bind, PerspectiveContribution);
|
|
497
|
+
|
|
486
498
|
bind(WidgetStatusBarService).toSelf().inSingletonScope();
|
|
487
499
|
bind(FrontendApplicationContribution).toService(WidgetStatusBarService);
|
|
488
500
|
bindRootContributionProvider(bind, WidgetStatusBarContribution);
|
|
@@ -237,8 +237,12 @@ export class FrontendApplication {
|
|
|
237
237
|
protected async createDefaultLayout(): Promise<void> {
|
|
238
238
|
for (const contribution of this.contributions.getContributions()) {
|
|
239
239
|
if (contribution.initializeLayout) {
|
|
240
|
-
|
|
241
|
-
(
|
|
240
|
+
try {
|
|
241
|
+
await this.measureContribution(contribution, 'initializeLayout',
|
|
242
|
+
() => contribution.initializeLayout!(this));
|
|
243
|
+
} catch (error) {
|
|
244
|
+
this.logger.error('Could not initialize the layout of contribution', error);
|
|
245
|
+
}
|
|
242
246
|
}
|
|
243
247
|
}
|
|
244
248
|
}
|
|
@@ -246,8 +250,12 @@ export class FrontendApplication {
|
|
|
246
250
|
protected async fireOnDidInitializeLayout(): Promise<void> {
|
|
247
251
|
for (const contribution of this.contributions.getContributions()) {
|
|
248
252
|
if (contribution.onDidInitializeLayout) {
|
|
249
|
-
|
|
250
|
-
(
|
|
253
|
+
try {
|
|
254
|
+
await this.measureContribution(contribution, 'onDidInitializeLayout',
|
|
255
|
+
() => contribution.onDidInitializeLayout!(this));
|
|
256
|
+
} catch (error) {
|
|
257
|
+
this.logger.error('Could not notify contribution of layout initialization', error);
|
|
258
|
+
}
|
|
251
259
|
}
|
|
252
260
|
}
|
|
253
261
|
}
|
package/src/browser/index.ts
CHANGED
|
@@ -610,11 +610,10 @@ export class KeybindingRegistry {
|
|
|
610
610
|
}
|
|
611
611
|
|
|
612
612
|
registerEventListeners(win: Window): Disposable {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
*/
|
|
613
|
+
// IME composition tracking for the textarea-based editor input path,
|
|
614
|
+
// where compositionstart/compositionend bubble through the DOM.
|
|
615
|
+
// (For the native EditContext path, these events never reach the DOM;
|
|
616
|
+
// the keydown handler below uses additional checks for that case.)
|
|
618
617
|
let inComposition = false;
|
|
619
618
|
const compositionStart = () => {
|
|
620
619
|
inComposition = true;
|
|
@@ -627,9 +626,15 @@ export class KeybindingRegistry {
|
|
|
627
626
|
win.document.addEventListener('compositionend', compositionEnd);
|
|
628
627
|
|
|
629
628
|
const keydown = (event: KeyboardEvent) => {
|
|
630
|
-
|
|
631
|
-
|
|
629
|
+
// Skip IME-related keydowns. `inComposition` covers the textarea input path;
|
|
630
|
+
// `isComposing` and `keyCode === 229` cover the native EditContext path where
|
|
631
|
+
// composition events don't reach the DOM. The keyCode check catches keys that
|
|
632
|
+
// finalize a composition (e.g. arrow keys) where isComposing is already false.
|
|
633
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
634
|
+
if (inComposition || event.isComposing || event.keyCode === 229) {
|
|
635
|
+
return;
|
|
632
636
|
}
|
|
637
|
+
this.run(event);
|
|
633
638
|
};
|
|
634
639
|
win.document.addEventListener('keydown', keydown, true);
|
|
635
640
|
|