@theia/core 1.76.0-next.6 → 1.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/i18n/nls.cs.json +187 -49
- package/i18n/nls.de.json +187 -49
- package/i18n/nls.es.json +187 -49
- package/i18n/nls.fr.json +187 -49
- package/i18n/nls.hu.json +187 -49
- package/i18n/nls.it.json +187 -49
- package/i18n/nls.ja.json +187 -49
- package/i18n/nls.json +187 -49
- package/i18n/nls.ko.json +187 -49
- package/i18n/nls.pl.json +187 -49
- package/i18n/nls.pt-br.json +187 -49
- package/i18n/nls.ru.json +187 -49
- package/i18n/nls.tr.json +187 -49
- package/i18n/nls.zh-cn.json +187 -49
- package/i18n/nls.zh-tw.json +187 -49
- package/lib/browser/catalog.json +175 -95
- package/lib/browser/dialogs.d.ts +2 -0
- package/lib/browser/dialogs.d.ts.map +1 -1
- package/lib/browser/dialogs.js +9 -5
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +3 -0
- package/lib/browser/frontend-application-module.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/resource-context-key.d.ts +25 -0
- package/lib/browser/resource-context-key.d.ts.map +1 -1
- package/lib/browser/resource-context-key.js +41 -16
- package/lib/browser/resource-context-key.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +7 -5
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +13 -12
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +11 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +38 -3
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +2 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +4 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js +123 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +12 -4
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js +2 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +20 -2
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +31 -13
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree-widget.spec.d.ts +2 -0
- package/lib/browser/tree/tree-widget.spec.d.ts.map +1 -0
- package/lib/browser/tree/tree-widget.spec.js +192 -0
- package/lib/browser/tree/tree-widget.spec.js.map +1 -0
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +2 -2
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-context-key-contribution.d.ts +17 -0
- package/lib/browser/widget-context-key-contribution.d.ts.map +1 -0
- package/lib/browser/widget-context-key-contribution.js +20 -0
- package/lib/browser/widget-context-key-contribution.js.map +1 -0
- package/lib/browser/window/browser-window-module.d.ts.map +1 -1
- package/lib/browser/window/browser-window-module.js +3 -0
- package/lib/browser/window/browser-window-module.js.map +1 -1
- package/lib/browser/window/window-launch-args.d.ts +29 -0
- package/lib/browser/window/window-launch-args.d.ts.map +1 -0
- package/lib/browser/window/window-launch-args.js +39 -0
- package/lib/browser/window/window-launch-args.js.map +1 -0
- package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -1
- package/lib/browser-only/frontend-only-application-module.js +5 -2
- package/lib/browser-only/frontend-only-application-module.js.map +1 -1
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +3 -1
- 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 +8 -7
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +2 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/launch-arguments.d.ts +32 -0
- package/lib/common/launch-arguments.d.ts.map +1 -0
- package/lib/common/launch-arguments.js +44 -0
- package/lib/common/launch-arguments.js.map +1 -0
- package/lib/common/remote-cli-args-contribution.d.ts +22 -0
- package/lib/common/remote-cli-args-contribution.d.ts.map +1 -0
- package/lib/common/remote-cli-args-contribution.js +20 -0
- package/lib/common/remote-cli-args-contribution.js.map +1 -0
- package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts +6 -3
- package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js +4 -3
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +3 -1
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-window-launch-args.d.ts +14 -0
- package/lib/electron-browser/window/electron-window-launch-args.d.ts.map +1 -0
- package/lib/electron-browser/window/electron-window-launch-args.js +41 -0
- package/lib/electron-browser/window/electron-window-launch-args.js.map +1 -0
- package/lib/electron-browser/window/electron-window-launch-args.spec.d.ts +2 -0
- package/lib/electron-browser/window/electron-window-launch-args.spec.d.ts.map +1 -0
- package/lib/electron-browser/window/electron-window-launch-args.spec.js +43 -0
- package/lib/electron-browser/window/electron-window-launch-args.spec.js.map +1 -0
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +7 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +10 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -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 +7 -1
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application-module.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application-module.js +2 -0
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +57 -2
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +68 -8
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/launch-args-store.d.ts +45 -0
- package/lib/electron-main/launch-args-store.d.ts.map +1 -0
- package/lib/electron-main/launch-args-store.js +76 -0
- package/lib/electron-main/launch-args-store.js.map +1 -0
- package/lib/electron-main/launch-args-store.spec.d.ts +2 -0
- package/lib/electron-main/launch-args-store.spec.d.ts.map +1 -0
- package/lib/electron-main/launch-args-store.spec.js +53 -0
- package/lib/electron-main/launch-args-store.spec.js.map +1 -0
- package/lib/electron-main/launch-argv-parser.d.ts +19 -0
- package/lib/electron-main/launch-argv-parser.d.ts.map +1 -0
- package/lib/electron-main/launch-argv-parser.js +71 -0
- package/lib/electron-main/launch-argv-parser.js.map +1 -0
- package/lib/electron-main/launch-argv-parser.spec.d.ts +2 -0
- package/lib/electron-main/launch-argv-parser.spec.d.ts.map +1 -0
- package/lib/electron-main/launch-argv-parser.spec.js +62 -0
- package/lib/electron-main/launch-argv-parser.spec.js.map +1 -0
- package/lib/electron-main/theia-electron-window.d.ts +2 -0
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +12 -0
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/package.json +11 -11
- package/src/browser/dialogs.ts +10 -5
- package/src/browser/frontend-application-module.ts +5 -1
- package/src/browser/index.ts +1 -0
- package/src/browser/resource-context-key.ts +61 -16
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +13 -12
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +36 -4
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +150 -3
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +6 -3
- package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +13 -5
- package/src/browser/style/tree.css +7 -0
- package/src/browser/tree/tree-widget.spec.tsx +245 -0
- package/src/browser/tree/tree-widget.tsx +36 -12
- package/src/browser/view-container.ts +3 -3
- package/src/browser/widget-context-key-contribution.ts +34 -0
- package/src/browser/window/browser-window-module.ts +3 -0
- package/src/browser/window/window-launch-args.ts +53 -0
- package/src/browser-only/frontend-only-application-module.ts +5 -2
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +3 -1
- package/src/common/i18n/nls.metadata.json +5246 -1106
- package/src/common/index.ts +2 -0
- package/src/common/launch-arguments.ts +61 -0
- package/src/common/remote-cli-args-contribution.ts +39 -0
- package/src/electron-browser/messaging/electron-ipc-connection-source.ts +6 -3
- package/src/electron-browser/preload.ts +3 -1
- package/src/electron-browser/window/electron-window-launch-args.spec.ts +45 -0
- package/src/electron-browser/window/electron-window-launch-args.ts +38 -0
- package/src/electron-browser/window/electron-window-module.ts +7 -0
- package/src/electron-common/electron-api.ts +10 -0
- package/src/electron-main/electron-api-main.ts +7 -1
- package/src/electron-main/electron-main-application-module.ts +2 -0
- package/src/electron-main/electron-main-application.ts +101 -8
- package/src/electron-main/launch-args-store.spec.ts +59 -0
- package/src/electron-main/launch-args-store.ts +73 -0
- package/src/electron-main/launch-argv-parser.spec.ts +70 -0
- package/src/electron-main/launch-argv-parser.ts +66 -0
- package/src/electron-main/theia-electron-window.ts +9 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const launch_args_store_1 = require("./launch-args-store");
|
|
20
|
+
const args = (name, value) => ({ values: { [name]: [value] }, negated: [] });
|
|
21
|
+
describe('LaunchArgsStore', () => {
|
|
22
|
+
it('returns the stored argv for its window id', () => {
|
|
23
|
+
const store = new launch_args_store_1.LaunchArgsStore();
|
|
24
|
+
const launchArgs = { values: { 'attach-container': ['B'], 'session-preference': ['foo=1'] }, negated: [] };
|
|
25
|
+
store.store(1, launchArgs);
|
|
26
|
+
(0, chai_1.expect)(store.get(1)).to.deep.equal(launchArgs);
|
|
27
|
+
});
|
|
28
|
+
it('keeps the argv for the window lifetime, so a reload still sees it', () => {
|
|
29
|
+
const store = new launch_args_store_1.LaunchArgsStore();
|
|
30
|
+
store.store(1, args('attach-container', 'B'));
|
|
31
|
+
(0, chai_1.expect)(store.get(1)).to.deep.equal(args('attach-container', 'B'));
|
|
32
|
+
// a second read (e.g. after a reload) still returns the options
|
|
33
|
+
(0, chai_1.expect)(store.get(1)).to.deep.equal(args('attach-container', 'B'));
|
|
34
|
+
});
|
|
35
|
+
it('returns undefined for an unknown (cold-start) window id', () => {
|
|
36
|
+
const store = new launch_args_store_1.LaunchArgsStore();
|
|
37
|
+
(0, chai_1.expect)(store.get(42)).to.equal(undefined);
|
|
38
|
+
});
|
|
39
|
+
it('drops the argv once the window is deleted', () => {
|
|
40
|
+
const store = new launch_args_store_1.LaunchArgsStore();
|
|
41
|
+
store.store(1, args('attach-container', 'A'));
|
|
42
|
+
store.delete(1);
|
|
43
|
+
(0, chai_1.expect)(store.get(1)).to.equal(undefined);
|
|
44
|
+
});
|
|
45
|
+
it('keeps entries independent per window id', () => {
|
|
46
|
+
const store = new launch_args_store_1.LaunchArgsStore();
|
|
47
|
+
store.store(1, args('attach-container', 'A'));
|
|
48
|
+
store.store(2, args('attach-container', 'B'));
|
|
49
|
+
(0, chai_1.expect)(store.get(2)).to.deep.equal(args('attach-container', 'B'));
|
|
50
|
+
(0, chai_1.expect)(store.get(1)).to.deep.equal(args('attach-container', 'A'));
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=launch-args-store.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-args-store.spec.js","sourceRoot":"","sources":["../../src/electron-main/launch-args-store.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LaunchArguments } from '../common/launch-arguments';
|
|
2
|
+
/**
|
|
3
|
+
* Parses the `argv` of a forwarded launch into {@link LaunchArguments}.
|
|
4
|
+
*
|
|
5
|
+
* This lives in the Electron main process on purpose: the command line is parsed once, here, and
|
|
6
|
+
* every consumer (main-process contributions and the window the launch opened) works with the
|
|
7
|
+
* parsed result. No argument grammar is shipped to the renderer.
|
|
8
|
+
*
|
|
9
|
+
* The grammar mirrors what yargs accepts on cold start for the same flags: a value given as either
|
|
10
|
+
* `--name value` or `--name=value`, options repeatable to yield multiple values, a token that
|
|
11
|
+
* itself looks like an option (starts with `-`) never consumed as a value, and `--no-name` /
|
|
12
|
+
* `--name=false` recognised as an explicit negation.
|
|
13
|
+
*
|
|
14
|
+
* @experimental
|
|
15
|
+
*/
|
|
16
|
+
export declare namespace LaunchArgvParser {
|
|
17
|
+
function parse(argv: readonly string[]): LaunchArguments;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=launch-argv-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-argv-parser.d.ts","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,yBAAiB,gBAAgB,CAAC;IAE9B,SAAgB,KAAK,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CA8B9D;CACJ"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.LaunchArgvParser = void 0;
|
|
19
|
+
/**
|
|
20
|
+
* Parses the `argv` of a forwarded launch into {@link LaunchArguments}.
|
|
21
|
+
*
|
|
22
|
+
* This lives in the Electron main process on purpose: the command line is parsed once, here, and
|
|
23
|
+
* every consumer (main-process contributions and the window the launch opened) works with the
|
|
24
|
+
* parsed result. No argument grammar is shipped to the renderer.
|
|
25
|
+
*
|
|
26
|
+
* The grammar mirrors what yargs accepts on cold start for the same flags: a value given as either
|
|
27
|
+
* `--name value` or `--name=value`, options repeatable to yield multiple values, a token that
|
|
28
|
+
* itself looks like an option (starts with `-`) never consumed as a value, and `--no-name` /
|
|
29
|
+
* `--name=false` recognised as an explicit negation.
|
|
30
|
+
*
|
|
31
|
+
* @experimental
|
|
32
|
+
*/
|
|
33
|
+
var LaunchArgvParser;
|
|
34
|
+
(function (LaunchArgvParser) {
|
|
35
|
+
function parse(argv) {
|
|
36
|
+
const values = {};
|
|
37
|
+
const negated = [];
|
|
38
|
+
for (let i = 0; i < argv.length; i++) {
|
|
39
|
+
const token = argv[i];
|
|
40
|
+
if (!token.startsWith('--')) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const name = token.substring(2);
|
|
44
|
+
const equalsIndex = name.indexOf('=');
|
|
45
|
+
if (equalsIndex >= 0) {
|
|
46
|
+
const key = name.substring(0, equalsIndex);
|
|
47
|
+
const value = name.substring(equalsIndex + 1);
|
|
48
|
+
if (value === 'false') {
|
|
49
|
+
negated.push(key);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
(values[key] ??= []).push(value);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (name.startsWith('no-')) {
|
|
56
|
+
negated.push(name.substring('no-'.length));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const next = argv[i + 1];
|
|
60
|
+
// Like yargs, do not consume a following option-looking token (`-x`/`--x`) as the value.
|
|
61
|
+
if (next !== undefined && !next.startsWith('-')) {
|
|
62
|
+
(values[name] ??= []).push(next);
|
|
63
|
+
i++;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { values, negated };
|
|
68
|
+
}
|
|
69
|
+
LaunchArgvParser.parse = parse;
|
|
70
|
+
})(LaunchArgvParser || (exports.LaunchArgvParser = LaunchArgvParser = {}));
|
|
71
|
+
//# sourceMappingURL=launch-argv-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-argv-parser.js","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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;;;AAIhF;;;;;;;;;;;;;GAaG;AACH,IAAiB,gBAAgB,CAiChC;AAjCD,WAAiB,gBAAgB;IAE7B,SAAgB,KAAK,CAAC,IAAuB;QACzC,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACb,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACJ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,yFAAyF;gBACzF,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC,EAAE,CAAC;gBACR,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IA9Be,sBAAK,QA8BpB,CAAA;AACL,CAAC,EAjCgB,gBAAgB,gCAAhB,gBAAgB,QAiChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-argv-parser.spec.d.ts","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const launch_arguments_1 = require("../common/launch-arguments");
|
|
20
|
+
const launch_argv_parser_1 = require("./launch-argv-parser");
|
|
21
|
+
describe('LaunchArgvParser', () => {
|
|
22
|
+
it('parses a "--name value" option', () => {
|
|
23
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['--attach-container', 'B']);
|
|
24
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal('B');
|
|
25
|
+
});
|
|
26
|
+
it('parses a "--name=value" option', () => {
|
|
27
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['--attach-container=B']);
|
|
28
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal('B');
|
|
29
|
+
});
|
|
30
|
+
it('keeps a value that itself contains "="', () => {
|
|
31
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['--session-preference=a=1']);
|
|
32
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal(['a=1']);
|
|
33
|
+
});
|
|
34
|
+
it('collects repeated options in order, last winning for a single value', () => {
|
|
35
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['--session-preference', 'a=1', '--session-preference=b=2', '--other', 'x']);
|
|
36
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal(['a=1', 'b=2']);
|
|
37
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'session-preference')).to.equal('b=2');
|
|
38
|
+
});
|
|
39
|
+
it('does not consume a following option as a value', () => {
|
|
40
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['--attach-container', '--session-preference', 'a=1']);
|
|
41
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal(undefined);
|
|
42
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal(['a=1']);
|
|
43
|
+
});
|
|
44
|
+
it('reports an absent option as empty', () => {
|
|
45
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['--other']);
|
|
46
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal([]);
|
|
47
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'session-preference')).to.equal(undefined);
|
|
48
|
+
});
|
|
49
|
+
it('detects "--no-name" and "--name=false" negations', () => {
|
|
50
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse(['--no-dev-json']), 'dev-json')).to.be.true;
|
|
51
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse(['--dev-json=false']), 'dev-json')).to.be.true;
|
|
52
|
+
});
|
|
53
|
+
it('does not report a positive or absent flag as negated', () => {
|
|
54
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse(['--dev-json']), 'dev-json')).to.be.false;
|
|
55
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse([]), 'dev-json')).to.be.false;
|
|
56
|
+
});
|
|
57
|
+
it('ignores tokens that are not options', () => {
|
|
58
|
+
const args = launch_argv_parser_1.LaunchArgvParser.parse(['/path/to/app', 'positional', '--attach-container', 'B']);
|
|
59
|
+
(0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal('B');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=launch-argv-parser.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch-argv-parser.spec.js","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { FrontendApplicationState, StopReason } from '../common/frontend-applica
|
|
|
3
3
|
import { BrowserWindow, BrowserWindowConstructorOptions } from '../../electron-shared/electron';
|
|
4
4
|
import { ElectronMainApplicationGlobals } from './electron-main-constants';
|
|
5
5
|
import { DisposableCollection, Emitter, Event } from '../common';
|
|
6
|
+
import { LaunchArgsStore } from './launch-args-store';
|
|
6
7
|
/**
|
|
7
8
|
* Theia tracks the maximized state of Electron Browser Windows.
|
|
8
9
|
*/
|
|
@@ -29,6 +30,7 @@ export declare class TheiaElectronWindow {
|
|
|
29
30
|
protected readonly options: TheiaBrowserWindowOptions;
|
|
30
31
|
protected readonly config: WindowApplicationConfig;
|
|
31
32
|
protected readonly globals: ElectronMainApplicationGlobals;
|
|
33
|
+
protected readonly launchArgsStore: LaunchArgsStore;
|
|
32
34
|
protected onDidCloseEmitter: Emitter<void>;
|
|
33
35
|
get onDidClose(): Event<void>;
|
|
34
36
|
protected readonly toDispose: DisposableCollection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-electron-window.d.ts","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"theia-electron-window.d.ts","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAKjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,+BAA+B;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAE7E,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AACzE,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAQhE,qBACa,mBAAmB;IAEO,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IACxD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAC1E,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE7E,SAAS,CAAC,iBAAiB,gBAAuB;IAElD,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAE5B;IAED,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAAoD;IAEhF,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IACjC,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,gBAAgB,EAAE,wBAAwB,CAAU;IAG9D,SAAS,CAAC,IAAI,IAAI,IAAI;IAatB,SAAS,CAAC,6BAA6B,IAAI,IAAI;IAuB/C;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAetB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9C,KAAK,CAAC,MAAM,GAAE,UAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;cAkBvB,iBAAiB,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB/G,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAgBvC,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAMvC,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAMtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,OAAO,IAAI,IAAI;CAGlB;AAED,MAAM,WAAW,0BAA0B;IACvC,CAAC,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CAAC;CAChG;AAED,eAAO,MAAM,0BAA0B,eAAuC,CAAC"}
|
|
@@ -26,6 +26,7 @@ const event_utils_1 = require("./event-utils");
|
|
|
26
26
|
const uri_1 = require("../common/uri");
|
|
27
27
|
const file_uri_1 = require("../common/file-uri");
|
|
28
28
|
const electron_api_main_1 = require("./electron-api-main");
|
|
29
|
+
const launch_args_store_1 = require("./launch-args-store");
|
|
29
30
|
exports.TheiaBrowserWindowOptions = Symbol('TheiaBrowserWindowOptions');
|
|
30
31
|
exports.WindowApplicationConfig = Symbol('WindowApplicationConfig');
|
|
31
32
|
var ClosingState;
|
|
@@ -119,6 +120,13 @@ let TheiaElectronWindow = class TheiaElectronWindow {
|
|
|
119
120
|
this.handleStopRequest(async () => {
|
|
120
121
|
this.applicationState = 'init';
|
|
121
122
|
if (newUrl) {
|
|
123
|
+
// The window is being redirected to a *different* frontend, e.g. into a dev container
|
|
124
|
+
// after a CLI attach. The forwarded launch arguments belong to the launch that created
|
|
125
|
+
// this window and have been acted upon by now, so they must not be redeemed again by
|
|
126
|
+
// the frontend loaded from `newUrl`: that would re-run the attach inside the container
|
|
127
|
+
// and re-apply the launch's preferences to the remote backend. A plain reload (no
|
|
128
|
+
// `newUrl`) keeps them, so `Reload Window` still observes the arguments.
|
|
129
|
+
this.launchArgsStore.delete(this._window.webContents.id);
|
|
122
130
|
this._window.loadURL(newUrl);
|
|
123
131
|
}
|
|
124
132
|
else {
|
|
@@ -197,6 +205,10 @@ tslib_1.__decorate([
|
|
|
197
205
|
(0, inversify_1.inject)(electron_main_constants_1.ElectronMainApplicationGlobals),
|
|
198
206
|
tslib_1.__metadata("design:type", Object)
|
|
199
207
|
], TheiaElectronWindow.prototype, "globals", void 0);
|
|
208
|
+
tslib_1.__decorate([
|
|
209
|
+
(0, inversify_1.inject)(launch_args_store_1.LaunchArgsStore),
|
|
210
|
+
tslib_1.__metadata("design:type", launch_args_store_1.LaunchArgsStore)
|
|
211
|
+
], TheiaElectronWindow.prototype, "launchArgsStore", void 0);
|
|
200
212
|
tslib_1.__decorate([
|
|
201
213
|
(0, inversify_1.postConstruct)(),
|
|
202
214
|
tslib_1.__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-electron-window.js","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,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;;;;AAGhF,qFAA4F;AAC5F,6DAAgG;AAChG,sDAA2E;AAC3E,uEAA2E;AAC3E,sCAAiE;AACjE,+CAAyD;AACzD,uCAAoC;AACpC,iDAA6C;AAC7C,2DAAuD;
|
|
1
|
+
{"version":3,"file":"theia-electron-window.js","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/core",
|
|
3
|
-
"version": "1.76.0
|
|
3
|
+
"version": "1.76.0",
|
|
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,14 +17,14 @@
|
|
|
17
17
|
"@lumino/virtualdom": "^2.0.5",
|
|
18
18
|
"@lumino/widgets": "2.7.5",
|
|
19
19
|
"@parcel/watcher": "^2.6.0",
|
|
20
|
-
"@theia/application-package": "1.76.0
|
|
21
|
-
"@theia/request": "1.76.0
|
|
20
|
+
"@theia/application-package": "1.76.0",
|
|
21
|
+
"@theia/request": "1.76.0",
|
|
22
22
|
"@types/body-parser": "^1.19.6",
|
|
23
23
|
"@types/express": "^4.17.25",
|
|
24
24
|
"@types/fs-extra": "^4.0.15",
|
|
25
25
|
"@types/lodash.debounce": "4.0.3",
|
|
26
26
|
"@types/lodash.throttle": "^4.1.9",
|
|
27
|
-
"@types/markdown-it": "^14.
|
|
27
|
+
"@types/markdown-it": "^14.2.0",
|
|
28
28
|
"@types/markdown-it-emoji": "^3.0.1",
|
|
29
29
|
"@types/route-parser": "^0.1.7",
|
|
30
30
|
"@types/safer-buffer": "^2.1.3",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@vscode/codicons": "0.0.45",
|
|
34
34
|
"ajv": "^6.15.0",
|
|
35
35
|
"async-mutex": "^0.4.1",
|
|
36
|
-
"body-parser": "^1.20.
|
|
36
|
+
"body-parser": "^1.20.8",
|
|
37
37
|
"cookie": "^1.1.1",
|
|
38
|
-
"dompurify": "^3.4.
|
|
38
|
+
"dompurify": "^3.4.15",
|
|
39
39
|
"drivelist": "^12.0.2",
|
|
40
40
|
"express": "^4.22.2",
|
|
41
41
|
"fast-json-stable-stringify": "^2.1.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"keytar": "7.9.0",
|
|
52
52
|
"lodash.debounce": "^4.0.8",
|
|
53
53
|
"lodash.throttle": "^4.1.1",
|
|
54
|
-
"markdown-it": "^14.3.
|
|
54
|
+
"markdown-it": "^14.3.1",
|
|
55
55
|
"markdown-it-anchor": "^9.2.1",
|
|
56
56
|
"markdown-it-emoji": "^3.1.0",
|
|
57
57
|
"msgpackr": "^1.12.1",
|
|
@@ -221,10 +221,10 @@
|
|
|
221
221
|
"watch": "theiaext watch"
|
|
222
222
|
},
|
|
223
223
|
"devDependencies": {
|
|
224
|
-
"@theia/ext-scripts": "1.
|
|
225
|
-
"@theia/re-exports": "1.
|
|
224
|
+
"@theia/ext-scripts": "1.76.0",
|
|
225
|
+
"@theia/re-exports": "1.76.0",
|
|
226
226
|
"@types/react": "^19.2.18",
|
|
227
|
-
"@types/react-dom": "^19.2.
|
|
227
|
+
"@types/react-dom": "^19.2.7",
|
|
228
228
|
"minimist": "^1.2.8",
|
|
229
229
|
"nodejs-file-downloader": "4.13.0",
|
|
230
230
|
"react": "^19.2.8",
|
|
@@ -233,5 +233,5 @@
|
|
|
233
233
|
"nyc": {
|
|
234
234
|
"extends": "../../configs/nyc.json"
|
|
235
235
|
},
|
|
236
|
-
"gitHead": "
|
|
236
|
+
"gitHead": "b9b54c500b46515512e2b44371bc0c7122947bed"
|
|
237
237
|
}
|
package/src/browser/dialogs.ts
CHANGED
|
@@ -100,11 +100,7 @@ export class DialogOverlayService implements FrontendApplicationContribution {
|
|
|
100
100
|
|
|
101
101
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
102
|
push(dialog: AbstractDialog<any>): Disposable {
|
|
103
|
-
|
|
104
|
-
addKeyListener(dialog.node.ownerDocument.body, Key.ENTER, e => this.handleEnter(e));
|
|
105
|
-
addKeyListener(dialog.node.ownerDocument.body, Key.ESCAPE, e => this.handleEscape(e));
|
|
106
|
-
this.documents.push(dialog.node.ownerDocument);
|
|
107
|
-
}
|
|
103
|
+
this.ensureKeyListeners(dialog.node.ownerDocument);
|
|
108
104
|
this.dialogs.unshift(dialog);
|
|
109
105
|
return Disposable.create(() => {
|
|
110
106
|
const index = this.dialogs.indexOf(dialog);
|
|
@@ -114,6 +110,15 @@ export class DialogOverlayService implements FrontendApplicationContribution {
|
|
|
114
110
|
});
|
|
115
111
|
}
|
|
116
112
|
|
|
113
|
+
/** Add the key listeners for `ownerDocument`, unless they are there already. */
|
|
114
|
+
protected ensureKeyListeners(ownerDocument: Document): void {
|
|
115
|
+
if (this.documents.indexOf(ownerDocument) < 0) {
|
|
116
|
+
addKeyListener(ownerDocument.body, Key.ENTER, e => this.handleEnter(e));
|
|
117
|
+
addKeyListener(ownerDocument.body, Key.ESCAPE, e => this.handleEscape(e));
|
|
118
|
+
this.documents.push(ownerDocument);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
117
122
|
protected handleEscape(event: KeyboardEvent): boolean | void {
|
|
118
123
|
const dialog = this.currentDialog;
|
|
119
124
|
if (dialog) {
|
|
@@ -37,7 +37,8 @@ import {
|
|
|
37
37
|
InMemoryTextResourceResolver,
|
|
38
38
|
UntitledResourceResolver,
|
|
39
39
|
MenuPath,
|
|
40
|
-
PreferenceService
|
|
40
|
+
PreferenceService,
|
|
41
|
+
RemoteCliArgsContribution
|
|
41
42
|
} from '../common';
|
|
42
43
|
import { KeybindingRegistry, KeybindingContext, KeybindingContribution } from './keybinding';
|
|
43
44
|
import { FrontendApplication } from './frontend-application';
|
|
@@ -70,6 +71,7 @@ import { JsonSchemaStore, JsonSchemaContribution, DefaultJsonSchemaContribution,
|
|
|
70
71
|
import { TabBarToolbarRegistry, TabBarToolbarContribution, TabBarToolbarFactory, TabBarToolbar } from './shell/tab-bar-toolbar';
|
|
71
72
|
import { ContextKeyService, ContextKeyServiceDummyImpl } from './context-key-service';
|
|
72
73
|
import { ResourceContextKey } from './resource-context-key';
|
|
74
|
+
import { WidgetContextKeyContribution } from './widget-context-key-contribution';
|
|
73
75
|
import { KeyboardLayoutService } from './keyboard/keyboard-layout-service';
|
|
74
76
|
import { MimeService } from './mime-service';
|
|
75
77
|
import { ApplicationShellMouseTracker } from './shell/application-shell-mouse-tracker';
|
|
@@ -173,6 +175,7 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
|
|
|
173
175
|
bind(FrontendApplicationStateService).toSelf().inSingletonScope();
|
|
174
176
|
bind(DefaultFrontendApplicationContribution).toSelf();
|
|
175
177
|
bindRootContributionProvider(bind, FrontendApplicationContribution);
|
|
178
|
+
bindRootContributionProvider(bind, RemoteCliArgsContribution);
|
|
176
179
|
|
|
177
180
|
bind(ApplicationShellOptions).toConstantValue({});
|
|
178
181
|
bind(ApplicationShell).toSelf().inSingletonScope();
|
|
@@ -191,6 +194,7 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
|
|
|
191
194
|
bind(SplitPositionHandler).toSelf().inSingletonScope();
|
|
192
195
|
|
|
193
196
|
bindRootContributionProvider(bind, TabBarToolbarContribution);
|
|
197
|
+
bindRootContributionProvider(bind, WidgetContextKeyContribution);
|
|
194
198
|
bind(TabBarToolbarRegistry).toSelf().inSingletonScope();
|
|
195
199
|
bind(FrontendApplicationContribution).toService(TabBarToolbarRegistry);
|
|
196
200
|
bind(TabBarToolbarFactory).toFactory(context => () => {
|
package/src/browser/index.ts
CHANGED
|
@@ -50,6 +50,7 @@ export * from './hover-service';
|
|
|
50
50
|
export * from './saveable-service';
|
|
51
51
|
export * from './undo-redo-handler';
|
|
52
52
|
export * from './widget-status-bar-service';
|
|
53
|
+
export * from './widget-context-key-contribution';
|
|
53
54
|
export * from './badges';
|
|
54
55
|
export * from './markdown-rendering/markdown-renderer';
|
|
55
56
|
export * from './markdown-rendering/markdown';
|
|
@@ -19,6 +19,21 @@ import URI from '../common/uri';
|
|
|
19
19
|
import { ContextKeyService, ContextKey } from './context-key-service';
|
|
20
20
|
import { LanguageService } from './language-service';
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* The context key values describing a resource. Each property name is the context key identifier itself, so
|
|
24
|
+
* the entries can be handed to `ContextKeyService.createOverlay` as they are.
|
|
25
|
+
*/
|
|
26
|
+
export interface ResourceContextKeyValues {
|
|
27
|
+
resource?: string;
|
|
28
|
+
resourceScheme?: string;
|
|
29
|
+
resourceFilename?: string;
|
|
30
|
+
resourceExtname?: string;
|
|
31
|
+
resourceLangId?: string;
|
|
32
|
+
resourceDirName?: string;
|
|
33
|
+
resourcePath?: string;
|
|
34
|
+
resourceSet: boolean;
|
|
35
|
+
}
|
|
36
|
+
|
|
22
37
|
@injectable()
|
|
23
38
|
export class ResourceContextKey {
|
|
24
39
|
|
|
@@ -39,14 +54,25 @@ export class ResourceContextKey {
|
|
|
39
54
|
|
|
40
55
|
@postConstruct()
|
|
41
56
|
protected init(): void {
|
|
42
|
-
this.resource = this.
|
|
43
|
-
this.resourceSchemeKey = this.
|
|
44
|
-
this.resourceFileName = this.
|
|
45
|
-
this.resourceExtname = this.
|
|
46
|
-
this.resourceLangId = this.
|
|
47
|
-
this.resourceDirName = this.
|
|
48
|
-
this.resourcePath = this.
|
|
49
|
-
this.resourceSet = this.
|
|
57
|
+
this.resource = this.createResourceKey('resource');
|
|
58
|
+
this.resourceSchemeKey = this.createResourceKey('resourceScheme');
|
|
59
|
+
this.resourceFileName = this.createResourceKey('resourceFilename');
|
|
60
|
+
this.resourceExtname = this.createResourceKey('resourceExtname');
|
|
61
|
+
this.resourceLangId = this.createResourceKey('resourceLangId');
|
|
62
|
+
this.resourceDirName = this.createResourceKey('resourceDirName');
|
|
63
|
+
this.resourcePath = this.createResourceKey('resourcePath');
|
|
64
|
+
this.resourceSet = this.createResourceKey('resourceSet', false);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Constrains the key name to the value properties, whose names are the context key identifiers, so that
|
|
69
|
+
* the keys this class creates and the ones it describes a resource with cannot drift apart.
|
|
70
|
+
*/
|
|
71
|
+
protected createResourceKey<K extends keyof ResourceContextKeyValues>(
|
|
72
|
+
name: K,
|
|
73
|
+
defaultValue?: NonNullable<ResourceContextKeyValues[K]>
|
|
74
|
+
): ContextKey<NonNullable<ResourceContextKeyValues[K]>> {
|
|
75
|
+
return this.contextKeyService.createKey(name, defaultValue);
|
|
50
76
|
}
|
|
51
77
|
|
|
52
78
|
get(): string | undefined {
|
|
@@ -54,14 +80,33 @@ export class ResourceContextKey {
|
|
|
54
80
|
}
|
|
55
81
|
|
|
56
82
|
set(resourceUri: URI | undefined): void {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
this.
|
|
83
|
+
const values = this.toValues(resourceUri);
|
|
84
|
+
this.resource.set(values.resource);
|
|
85
|
+
this.resourceSchemeKey.set(values.resourceScheme);
|
|
86
|
+
this.resourceFileName.set(values.resourceFilename);
|
|
87
|
+
this.resourceExtname.set(values.resourceExtname);
|
|
88
|
+
this.resourceLangId.set(values.resourceLangId);
|
|
89
|
+
this.resourceDirName.set(values.resourceDirName);
|
|
90
|
+
this.resourcePath.set(values.resourcePath);
|
|
91
|
+
this.resourceSet.set(values.resourceSet);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The values describing `resourceUri`, without applying them to the context.
|
|
96
|
+
*
|
|
97
|
+
* @param resourceUri the resource to describe, or `undefined` to obtain the values of an unset resource.
|
|
98
|
+
*/
|
|
99
|
+
toValues(resourceUri: URI | undefined): ResourceContextKeyValues {
|
|
100
|
+
return {
|
|
101
|
+
resource: resourceUri?.toString(),
|
|
102
|
+
resourceScheme: resourceUri?.scheme,
|
|
103
|
+
resourceFilename: resourceUri?.path.base,
|
|
104
|
+
resourceExtname: resourceUri?.path.ext,
|
|
105
|
+
resourceLangId: this.getLanguageId(resourceUri),
|
|
106
|
+
resourceDirName: resourceUri?.path.dir.fsPath(),
|
|
107
|
+
resourcePath: resourceUri?.path.fsPath(),
|
|
108
|
+
resourceSet: Boolean(resourceUri)
|
|
109
|
+
};
|
|
65
110
|
}
|
|
66
111
|
|
|
67
112
|
protected getLanguageId(uri: URI | undefined): string | undefined {
|