@theia/core 1.77.0-next.56 → 1.77.0-next.57
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/browser/catalog.json +66 -0
- package/lib/browser/common-frontend-contribution.d.ts +6 -1
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +18 -1
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/keybinding.d.ts +95 -17
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +405 -75
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +786 -30
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts +3 -4
- package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js +3 -3
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +39 -0
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.d.ts +67 -15
- package/lib/browser/keyboard/keyboard-layout-service.d.ts.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.js +309 -98
- package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js +538 -12
- package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
- package/lib/browser/keyboard/keys.spec.js +183 -0
- package/lib/browser/keyboard/keys.spec.js.map +1 -1
- package/lib/browser/menu/action-menu-node.d.ts +5 -3
- package/lib/browser/menu/action-menu-node.d.ts.map +1 -1
- package/lib/browser/menu/action-menu-node.js +2 -11
- package/lib/browser/menu/action-menu-node.js.map +1 -1
- package/lib/browser/menu/action-menu-node.spec.d.ts +2 -0
- package/lib/browser/menu/action-menu-node.spec.d.ts.map +1 -0
- package/lib/browser/menu/action-menu-node.spec.js +54 -0
- package/lib/browser/menu/action-menu-node.spec.js.map +1 -0
- package/lib/browser/menu/browser-menu-plugin.js +1 -1
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/test/jsdom.d.ts.map +1 -1
- package/lib/browser/test/jsdom.js +11 -0
- package/lib/browser/test/jsdom.js.map +1 -1
- package/lib/common/keyboard/keyboard-layout-provider.d.ts +7 -0
- package/lib/common/keyboard/keyboard-layout-provider.d.ts.map +1 -1
- package/lib/common/keyboard/keyboard-layout-provider.js.map +1 -1
- package/lib/common/keys.d.ts +86 -3
- package/lib/common/keys.d.ts.map +1 -1
- package/lib/common/keys.js +262 -23
- package/lib/common/keys.js.map +1 -1
- package/lib/common/ternary-search-tree.js +2 -2
- package/lib/common/ternary-search-tree.js.map +1 -1
- package/lib/common/ternary-search-tree.spec.js +12 -0
- package/lib/common/ternary-search-tree.spec.js.map +1 -1
- package/lib/electron-browser/keyboard/electron-keyboard-module.d.ts +2 -0
- package/lib/electron-browser/keyboard/electron-keyboard-module.d.ts.map +1 -1
- package/lib/electron-browser/keyboard/electron-keyboard-module.js +8 -1
- package/lib/electron-browser/keyboard/electron-keyboard-module.js.map +1 -1
- package/lib/electron-browser/keyboard/electron-keyboard-module.spec.d.ts +2 -0
- package/lib/electron-browser/keyboard/electron-keyboard-module.spec.d.ts.map +1 -0
- package/lib/electron-browser/keyboard/electron-keyboard-module.spec.js +28 -0
- package/lib/electron-browser/keyboard/electron-keyboard-module.spec.js.map +1 -0
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +3 -2
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +3 -0
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +5 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +21 -0
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-common/electron-api.spec.d.ts +2 -0
- package/lib/electron-common/electron-api.spec.d.ts.map +1 -0
- package/lib/electron-common/electron-api.spec.js +40 -0
- package/lib/electron-common/electron-api.spec.js.map +1 -0
- package/lib/electron-main/electron-api-main.d.ts +0 -1
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +1 -12
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/package.json +4 -4
- package/src/browser/common-frontend-contribution.ts +16 -0
- package/src/browser/keybinding.spec.ts +878 -34
- package/src/browser/keybinding.ts +470 -85
- package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +1 -1
- package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +52 -1
- package/src/browser/keyboard/browser-keyboard-layout-provider.ts +5 -5
- package/src/browser/keyboard/keyboard-layout-service.spec.ts +640 -15
- package/src/browser/keyboard/keyboard-layout-service.ts +358 -106
- package/src/browser/keyboard/keys.spec.ts +206 -1
- package/src/browser/menu/action-menu-node.spec.ts +60 -0
- package/src/browser/menu/action-menu-node.ts +8 -14
- package/src/browser/menu/browser-menu-plugin.ts +1 -1
- package/src/browser/test/jsdom.ts +11 -0
- package/src/common/keyboard/keyboard-layout-provider.ts +8 -0
- package/src/common/keys.ts +311 -26
- package/src/common/ternary-search-tree.spec.ts +14 -0
- package/src/common/ternary-search-tree.ts +2 -2
- package/src/electron-browser/keyboard/electron-keyboard-module.spec.ts +29 -0
- package/src/electron-browser/keyboard/electron-keyboard-module.ts +9 -2
- package/src/electron-browser/menu/electron-main-menu-factory.ts +3 -3
- package/src/electron-browser/menu/electron-menu-contribution.ts +4 -0
- package/src/electron-common/electron-api.spec.ts +42 -0
- package/src/electron-common/electron-api.ts +23 -0
- package/src/electron-main/electron-api-main.ts +2 -13
|
@@ -53,7 +53,7 @@ export class BrowserKeyboardFrontendContribution implements CommandContribution
|
|
|
53
53
|
const current = this.layoutProvider.currentLayoutData;
|
|
54
54
|
const autodetect: QuickPickValue<'autodetect'> = {
|
|
55
55
|
label: nls.localizeByDefault('Auto Detect'),
|
|
56
|
-
description: this.layoutProvider.
|
|
56
|
+
description: this.layoutProvider.layoutSource !== 'user-choice' ? nls.localize('theia/core/keyboard/current', '(current: {0})', current.name) : undefined,
|
|
57
57
|
detail: nls.localize('theia/core/keyboard/tryDetect', 'Try to detect the keyboard layout from browser information and pressed keys.'),
|
|
58
58
|
value: 'autodetect'
|
|
59
59
|
};
|
|
@@ -27,7 +27,7 @@ import { ILogger, Loggable } from '../../common/logger';
|
|
|
27
27
|
import { LocalStorageService } from '../storage-service';
|
|
28
28
|
import { MessageService } from '../../common/message-service';
|
|
29
29
|
import { WindowService } from '../window/window-service';
|
|
30
|
-
import { BrowserKeyboardLayoutProvider } from './browser-keyboard-layout-provider';
|
|
30
|
+
import { BrowserKeyboardLayoutProvider, KeyboardLayoutData, KeyboardLayoutSource, KeyboardTester } from './browser-keyboard-layout-provider';
|
|
31
31
|
import { Key } from './keys';
|
|
32
32
|
|
|
33
33
|
disableJSDOM();
|
|
@@ -134,6 +134,57 @@ describe('browser keyboard layout provider', function (): void {
|
|
|
134
134
|
chai.expect((currentLayout.info as IMacKeyboardLayoutInfo).id).to.equal('com.apple.keylayout.French');
|
|
135
135
|
});
|
|
136
136
|
|
|
137
|
+
it('scores AltGraph evidence independently from command Alt', () => {
|
|
138
|
+
const { service } = setup('linux');
|
|
139
|
+
const german = service.allLayoutData.find(data => data.name === 'German' && data.hardware === 'pc')!;
|
|
140
|
+
const tester = new KeyboardTester([german]);
|
|
141
|
+
|
|
142
|
+
tester.updateScores({ code: Key.DIGIT8.code, character: '[', altGraph: true });
|
|
143
|
+
chai.expect(tester.topScore).to.equal(1);
|
|
144
|
+
|
|
145
|
+
tester.reset();
|
|
146
|
+
tester.updateScores({ code: Key.DIGIT8.code, character: '[', altKey: true });
|
|
147
|
+
chai.expect(tester.topScore).to.equal(0);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it('can correct a wrong layout score from raw AltGraph evidence', () => {
|
|
151
|
+
const { service } = setup('linux');
|
|
152
|
+
const us = service.allLayoutData.find(data => data.name === 'US' && data.hardware === 'pc')!;
|
|
153
|
+
const german = service.allLayoutData.find(data => data.name === 'German' && data.hardware === 'pc')!;
|
|
154
|
+
const tester = new KeyboardTester([us, german]);
|
|
155
|
+
|
|
156
|
+
tester.updateScores({ code: Key.KEY_Y.code, character: 'y' });
|
|
157
|
+
chai.expect(tester.scores[0]).to.be.greaterThan(tester.scores[1]);
|
|
158
|
+
tester.updateScores({ code: Key.DIGIT8.code, character: '[', altGraph: true });
|
|
159
|
+
chai.expect(tester.scores[1]).to.equal(tester.scores[0]);
|
|
160
|
+
tester.updateScores({ code: Key.DIGIT7.code, character: '{', altGraph: true });
|
|
161
|
+
chai.expect(tester.scores[1]).to.be.greaterThan(tester.scores[0]);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it('changes the provider layout from raw AltGraph evidence', async () => {
|
|
165
|
+
const { service } = setup('linux');
|
|
166
|
+
await service.getNativeLayout();
|
|
167
|
+
const us = service.allLayoutData.find(data => data.name === 'US' && data.hardware === 'pc')!;
|
|
168
|
+
const german = service.allLayoutData.find(data => data.name === 'German' && data.hardware === 'pc')!;
|
|
169
|
+
const internal = service as unknown as {
|
|
170
|
+
tester: KeyboardTester;
|
|
171
|
+
currentLayout: KeyboardLayoutData;
|
|
172
|
+
source: KeyboardLayoutSource;
|
|
173
|
+
};
|
|
174
|
+
internal.tester = new KeyboardTester([us, german]);
|
|
175
|
+
internal.tester.updateScores({ code: Key.KEY_Y.code, character: 'y' });
|
|
176
|
+
internal.currentLayout = us;
|
|
177
|
+
internal.source = 'pressed-keys';
|
|
178
|
+
let changedLayout: KeyboardLayoutData['raw'] | undefined;
|
|
179
|
+
service.onDidChangeNativeLayout(layout => changedLayout = layout);
|
|
180
|
+
|
|
181
|
+
service.validateKey({ code: Key.DIGIT8.code, character: '[', altGraph: true });
|
|
182
|
+
service.validateKey({ code: Key.DIGIT7.code, character: '{', altGraph: true });
|
|
183
|
+
|
|
184
|
+
chai.expect(changedLayout?.info).to.deep.equal(german.raw.info);
|
|
185
|
+
chai.expect(service.currentLayoutData).to.equal(german);
|
|
186
|
+
});
|
|
187
|
+
|
|
137
188
|
it('restores user selection from last session', async () => {
|
|
138
189
|
const { service, container } = setup('mac');
|
|
139
190
|
|
|
@@ -20,11 +20,11 @@ import { Emitter, Event } from '../../common/event';
|
|
|
20
20
|
import { ILogger } from '../../common/logger';
|
|
21
21
|
import { Deferred } from '../../common/promise-util';
|
|
22
22
|
import {
|
|
23
|
-
NativeKeyboardLayout, KeyboardLayoutProvider, KeyboardLayoutChangeNotifier, KeyValidator, KeyValidationInput
|
|
23
|
+
NativeKeyboardLayout, KeyboardLayoutProvider, KeyboardLayoutChangeNotifier, KeyValidator, KeyValidationInput, KeyboardLayoutSource
|
|
24
24
|
} from '../../common/keyboard/keyboard-layout-provider';
|
|
25
25
|
import { LocalStorageService } from '../storage-service';
|
|
26
26
|
|
|
27
|
-
export type KeyboardLayoutSource
|
|
27
|
+
export type { KeyboardLayoutSource } from '../../common/keyboard/keyboard-layout-provider';
|
|
28
28
|
|
|
29
29
|
@injectable()
|
|
30
30
|
export class BrowserKeyboardLayoutProvider implements KeyboardLayoutProvider, KeyboardLayoutChangeNotifier, KeyValidator {
|
|
@@ -54,7 +54,7 @@ export class BrowserKeyboardLayoutProvider implements KeyboardLayoutProvider, Ke
|
|
|
54
54
|
return this.currentLayout;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
get
|
|
57
|
+
get layoutSource(): KeyboardLayoutSource {
|
|
58
58
|
return this.source;
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -289,11 +289,11 @@ export class KeyboardTester {
|
|
|
289
289
|
|
|
290
290
|
updateScores(input: KeyValidationInput): boolean {
|
|
291
291
|
let property: 'value' | 'withShift' | 'withAltGr' | 'withShiftAltGr';
|
|
292
|
-
if (input.shiftKey && input.
|
|
292
|
+
if (input.shiftKey && input.altGraph) {
|
|
293
293
|
property = 'withShiftAltGr';
|
|
294
294
|
} else if (input.shiftKey) {
|
|
295
295
|
property = 'withShift';
|
|
296
|
-
} else if (input.
|
|
296
|
+
} else if (input.altGraph) {
|
|
297
297
|
property = 'withAltGr';
|
|
298
298
|
} else {
|
|
299
299
|
property = 'value';
|