@celljs/widget 3.8.0 → 3.9.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/esm/browser/annotation/index.d.ts +1 -0
- package/esm/browser/annotation/index.js +2 -0
- package/esm/browser/annotation/index.js.map +1 -0
- package/esm/browser/annotation/widget.d.ts +9 -0
- package/esm/browser/annotation/widget.js +26 -0
- package/esm/browser/annotation/widget.js.map +1 -0
- package/esm/browser/index.d.ts +5 -0
- package/esm/browser/index.js +6 -0
- package/esm/browser/index.js.map +1 -0
- package/esm/browser/keyboard/index.d.ts +1 -0
- package/esm/browser/keyboard/index.js +2 -0
- package/esm/browser/keyboard/index.js.map +1 -0
- package/esm/browser/keyboard/keys.d.ts +253 -0
- package/esm/browser/keyboard/keys.js +616 -0
- package/esm/browser/keyboard/keys.js.map +1 -0
- package/esm/browser/locale/index.d.ts +2 -0
- package/esm/browser/locale/index.js +3 -0
- package/esm/browser/locale/index.js.map +1 -0
- package/esm/browser/locale/locale-manager.d.ts +13 -0
- package/esm/browser/locale/locale-manager.js +68 -0
- package/esm/browser/locale/locale-manager.js.map +1 -0
- package/esm/browser/locale/locale-protocol.d.ts +15 -0
- package/esm/browser/locale/locale-protocol.js +3 -0
- package/esm/browser/locale/locale-protocol.js.map +1 -0
- package/esm/browser/module.d.ts +2 -0
- package/esm/browser/module.js +3 -0
- package/esm/browser/module.js.map +1 -0
- package/esm/browser/theme/index.d.ts +2 -0
- package/esm/browser/theme/index.js +3 -0
- package/esm/browser/theme/index.js.map +1 -0
- package/esm/browser/theme/theme-manager.d.ts +13 -0
- package/esm/browser/theme/theme-manager.js +69 -0
- package/esm/browser/theme/theme-manager.js.map +1 -0
- package/esm/browser/theme/theme-protocol.d.ts +18 -0
- package/esm/browser/theme/theme-protocol.js +4 -0
- package/esm/browser/theme/theme-protocol.js.map +1 -0
- package/esm/browser/widget/index.d.ts +4 -0
- package/esm/browser/widget/index.js +5 -0
- package/esm/browser/widget/index.js.map +1 -0
- package/esm/browser/widget/widget-factory.d.ts +9 -0
- package/esm/browser/widget/widget-factory.js +43 -0
- package/esm/browser/widget/widget-factory.js.map +1 -0
- package/esm/browser/widget/widget-manager.d.ts +14 -0
- package/esm/browser/widget/widget-manager.js +77 -0
- package/esm/browser/widget/widget-manager.js.map +1 -0
- package/esm/browser/widget/widget-protocol.d.ts +37 -0
- package/esm/browser/widget/widget-protocol.js +9 -0
- package/esm/browser/widget/widget-protocol.js.map +1 -0
- package/esm/browser/widget/widget-util.d.ts +5 -0
- package/esm/browser/widget/widget-util.js +25 -0
- package/esm/browser/widget/widget-util.js.map +1 -0
- package/esm/package.json +3 -0
- package/package.json +54 -4
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
import { isOSX } from '@celljs/core';
|
|
2
|
+
export var KeySequence;
|
|
3
|
+
(function (KeySequence) {
|
|
4
|
+
function equals(a, b) {
|
|
5
|
+
if (a.length !== b.length) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
for (let i = 0; i < a.length; i++) {
|
|
9
|
+
if (!a[i].equals(b[i])) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
KeySequence.equals = equals;
|
|
16
|
+
let CompareResult;
|
|
17
|
+
(function (CompareResult) {
|
|
18
|
+
CompareResult[CompareResult["NONE"] = 0] = "NONE";
|
|
19
|
+
CompareResult[CompareResult["PARTIAL"] = 1] = "PARTIAL";
|
|
20
|
+
CompareResult[CompareResult["SHADOW"] = 2] = "SHADOW";
|
|
21
|
+
CompareResult[CompareResult["FULL"] = 3] = "FULL";
|
|
22
|
+
})(CompareResult = KeySequence.CompareResult || (KeySequence.CompareResult = {}));
|
|
23
|
+
/* Compares two KeySequences, returns:
|
|
24
|
+
* FULL if the KeySequences are the same.
|
|
25
|
+
* PARTIAL if the KeySequence a part of b.
|
|
26
|
+
* SHADOW if the KeySequence b part of a.
|
|
27
|
+
* NONE if the KeySequences are not the same at all.
|
|
28
|
+
*/
|
|
29
|
+
function compare(a, b) {
|
|
30
|
+
let first = a;
|
|
31
|
+
let second = b;
|
|
32
|
+
let shadow = false;
|
|
33
|
+
if (b.length < a.length) {
|
|
34
|
+
first = b;
|
|
35
|
+
second = a;
|
|
36
|
+
shadow = true;
|
|
37
|
+
}
|
|
38
|
+
for (let i = 0; i < first.length; i++) {
|
|
39
|
+
if (first[i].equals(second[i]) === false) {
|
|
40
|
+
return KeySequence.CompareResult.NONE;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (first.length < second.length) {
|
|
44
|
+
if (shadow === false) {
|
|
45
|
+
return KeySequence.CompareResult.PARTIAL;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return KeySequence.CompareResult.SHADOW;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return KeySequence.CompareResult.FULL;
|
|
52
|
+
}
|
|
53
|
+
KeySequence.compare = compare;
|
|
54
|
+
function parse(keybinding) {
|
|
55
|
+
const keyCodes = [];
|
|
56
|
+
const rawKeyCodes = keybinding.trim().split(/\s+/g);
|
|
57
|
+
for (const rawKeyCode of rawKeyCodes) {
|
|
58
|
+
const keyCode = KeyCode.parse(rawKeyCode);
|
|
59
|
+
if (keyCode !== undefined) {
|
|
60
|
+
keyCodes.push(keyCode);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return keyCodes;
|
|
64
|
+
}
|
|
65
|
+
KeySequence.parse = parse;
|
|
66
|
+
})(KeySequence || (KeySequence = {}));
|
|
67
|
+
/**
|
|
68
|
+
* Representation of a pressed key combined with key modifiers.
|
|
69
|
+
*/
|
|
70
|
+
export class KeyCode {
|
|
71
|
+
constructor(schema) {
|
|
72
|
+
const key = schema.key;
|
|
73
|
+
if (key) {
|
|
74
|
+
if (key.code && key.keyCode && key.easyString) {
|
|
75
|
+
this.key = key;
|
|
76
|
+
}
|
|
77
|
+
else if (key.code) {
|
|
78
|
+
this.key = Key.getKey(key.code);
|
|
79
|
+
}
|
|
80
|
+
else if (key.keyCode) {
|
|
81
|
+
this.key = Key.getKey(key.keyCode);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
this.ctrl = !!schema.ctrl;
|
|
85
|
+
this.shift = !!schema.shift;
|
|
86
|
+
this.alt = !!schema.alt;
|
|
87
|
+
this.meta = !!schema.meta;
|
|
88
|
+
this.character = schema.character;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Return true if this KeyCode only contains modifiers.
|
|
92
|
+
*/
|
|
93
|
+
isModifierOnly() {
|
|
94
|
+
return this.key === undefined;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Return true if the given KeyCode is equal to this one.
|
|
98
|
+
*/
|
|
99
|
+
equals(other) {
|
|
100
|
+
if (this.key && (!other.key || this.key.code !== other.key.code) || !this.key && other.key) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return this.ctrl === other.ctrl && this.alt === other.alt && this.shift === other.shift && this.meta === other.meta;
|
|
104
|
+
}
|
|
105
|
+
/*
|
|
106
|
+
* Return a keybinding string compatible with the `Keybinding.keybinding` property.
|
|
107
|
+
*/
|
|
108
|
+
toString() {
|
|
109
|
+
const result = [];
|
|
110
|
+
if (this.meta) {
|
|
111
|
+
result.push(SpecialCases.META);
|
|
112
|
+
}
|
|
113
|
+
if (this.shift) {
|
|
114
|
+
result.push(Key.SHIFT_LEFT.easyString);
|
|
115
|
+
}
|
|
116
|
+
if (this.alt) {
|
|
117
|
+
result.push(Key.ALT_LEFT.easyString);
|
|
118
|
+
}
|
|
119
|
+
if (this.ctrl) {
|
|
120
|
+
result.push(Key.CONTROL_LEFT.easyString);
|
|
121
|
+
}
|
|
122
|
+
if (this.key) {
|
|
123
|
+
result.push(this.key.easyString);
|
|
124
|
+
}
|
|
125
|
+
return result.join('+');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Create a KeyCode from one of several input types.
|
|
129
|
+
*/
|
|
130
|
+
static createKeyCode(input, eventDispatch = 'code') {
|
|
131
|
+
if (typeof input === 'string') {
|
|
132
|
+
const parts = input.split('+');
|
|
133
|
+
if (!KeyCode.isModifierString(parts[0])) {
|
|
134
|
+
return KeyCode.createKeyCode({
|
|
135
|
+
first: Key.getKey(parts[0]),
|
|
136
|
+
modifiers: parts.slice(1)
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return KeyCode.createKeyCode({ modifiers: parts });
|
|
140
|
+
}
|
|
141
|
+
else if (KeyCode.isKeyboardEvent(input)) {
|
|
142
|
+
const key = KeyCode.toKey(input, eventDispatch);
|
|
143
|
+
return new KeyCode({
|
|
144
|
+
key: Key.isModifier(key.code) ? undefined : key,
|
|
145
|
+
meta: isOSX && input.metaKey,
|
|
146
|
+
shift: input.shiftKey,
|
|
147
|
+
alt: input.altKey,
|
|
148
|
+
ctrl: input.ctrlKey,
|
|
149
|
+
character: KeyCode.toCharacter(input)
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
else if (input.first || input.modifiers) {
|
|
153
|
+
const keystroke = input;
|
|
154
|
+
const schema = {
|
|
155
|
+
key: keystroke.first
|
|
156
|
+
};
|
|
157
|
+
if (keystroke.modifiers) {
|
|
158
|
+
if (isOSX) {
|
|
159
|
+
schema.meta = keystroke.modifiers.some(mod => mod === KeyModifier.CtrlCmd);
|
|
160
|
+
schema.ctrl = keystroke.modifiers.some(mod => mod === KeyModifier.MacCtrl);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
schema.meta = false;
|
|
164
|
+
schema.ctrl = keystroke.modifiers.some(mod => mod === KeyModifier.CtrlCmd);
|
|
165
|
+
}
|
|
166
|
+
schema.shift = keystroke.modifiers.some(mod => mod === KeyModifier.Shift);
|
|
167
|
+
schema.alt = keystroke.modifiers.some(mod => mod === KeyModifier.Alt);
|
|
168
|
+
}
|
|
169
|
+
return new KeyCode(schema);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
return new KeyCode(input);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/* Reset the key hashmap, this is for testing purposes. */
|
|
176
|
+
static resetKeyBindings() {
|
|
177
|
+
KeyCode.keybindings = {};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Parses a string and returns a KeyCode object.
|
|
181
|
+
* @param keybinding String representation of a keybinding
|
|
182
|
+
*/
|
|
183
|
+
static parse(keybinding) {
|
|
184
|
+
if (KeyCode.keybindings[keybinding]) {
|
|
185
|
+
return KeyCode.keybindings[keybinding];
|
|
186
|
+
}
|
|
187
|
+
const schema = {};
|
|
188
|
+
const keys = [];
|
|
189
|
+
let currentKey = '';
|
|
190
|
+
for (const character of keybinding.trim().toLowerCase()) {
|
|
191
|
+
if (currentKey && (character === '-' || character === '+')) {
|
|
192
|
+
keys.push(currentKey);
|
|
193
|
+
currentKey = '';
|
|
194
|
+
}
|
|
195
|
+
else if (character !== '+') {
|
|
196
|
+
currentKey += character;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (currentKey) {
|
|
200
|
+
keys.push(currentKey);
|
|
201
|
+
}
|
|
202
|
+
/* If duplicates i.e ctrl+ctrl+a or alt+alt+b or b+alt+b it is invalid */
|
|
203
|
+
if (keys.length !== new Set(keys).size) {
|
|
204
|
+
throw new Error(`Can't parse keybinding ${keybinding} Duplicate modifiers`);
|
|
205
|
+
}
|
|
206
|
+
for (let keyString of keys) {
|
|
207
|
+
if (SPECIAL_ALIASES[keyString] !== undefined) {
|
|
208
|
+
keyString = SPECIAL_ALIASES[keyString];
|
|
209
|
+
}
|
|
210
|
+
const key = EASY_TO_KEY[keyString];
|
|
211
|
+
/* meta only works on macOS */
|
|
212
|
+
if (keyString === SpecialCases.META) {
|
|
213
|
+
if (isOSX) {
|
|
214
|
+
schema.meta = true;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
throw new Error(`Can't parse keybinding ${keybinding} meta is for OSX only`);
|
|
218
|
+
}
|
|
219
|
+
/* ctrlcmd for M1 keybindings that work on both macOS and other platforms */
|
|
220
|
+
}
|
|
221
|
+
else if (keyString === SpecialCases.CTRLCMD) {
|
|
222
|
+
if (isOSX) {
|
|
223
|
+
schema.meta = true;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
schema.ctrl = true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else if (Key.isKey(key)) {
|
|
230
|
+
if (Key.isModifier(key.code)) {
|
|
231
|
+
if (key.code === Key.CONTROL_LEFT.code || key.code === Key.CONTROL_RIGHT.code) {
|
|
232
|
+
schema.ctrl = true;
|
|
233
|
+
}
|
|
234
|
+
else if (key.code === Key.SHIFT_LEFT.code || key.code === Key.SHIFT_RIGHT.code) {
|
|
235
|
+
schema.shift = true;
|
|
236
|
+
}
|
|
237
|
+
else if (key.code === Key.ALT_LEFT.code || key.code === Key.ALT_RIGHT.code) {
|
|
238
|
+
schema.alt = true;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
schema.key = key;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
throw new Error(`Unrecognized key '${keyString}' in '${keybinding}'`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
KeyCode.keybindings[keybinding] = new KeyCode(schema);
|
|
250
|
+
return KeyCode.keybindings[keybinding];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
KeyCode.keybindings = {};
|
|
254
|
+
(function (KeyCode) {
|
|
255
|
+
/*
|
|
256
|
+
* Return true if the string is a modifier M1 to M4.
|
|
257
|
+
*/
|
|
258
|
+
function isModifierString(key) {
|
|
259
|
+
return key === KeyModifier.CtrlCmd
|
|
260
|
+
|| key === KeyModifier.Shift
|
|
261
|
+
|| key === KeyModifier.Alt
|
|
262
|
+
|| key === KeyModifier.MacCtrl;
|
|
263
|
+
}
|
|
264
|
+
KeyCode.isModifierString = isModifierString;
|
|
265
|
+
/**
|
|
266
|
+
* Different scopes have different execution environments. This means that they have different built-ins
|
|
267
|
+
* (different global object, different constructors, etc.). This may result in unexpected results. For instance,
|
|
268
|
+
* `[] instanceof window.frames[0].Array` will return `false`, because `Array.prototype !== window.frames[0].Array`
|
|
269
|
+
* and arrays inherit from the former.
|
|
270
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof
|
|
271
|
+
*
|
|
272
|
+
* Note: just add another check if the current `event.type` checking is insufficient.
|
|
273
|
+
*/
|
|
274
|
+
function isKeyboardEvent(event) {
|
|
275
|
+
if (typeof KeyboardEvent === 'undefined') { // This can happen in tests
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
if (event instanceof KeyboardEvent) {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
const { type } = event;
|
|
282
|
+
if (type) {
|
|
283
|
+
return type === 'keypress' || type === 'keydown' || type === 'keyup';
|
|
284
|
+
}
|
|
285
|
+
return false;
|
|
286
|
+
}
|
|
287
|
+
KeyCode.isKeyboardEvent = isKeyboardEvent;
|
|
288
|
+
/**
|
|
289
|
+
* Determine the pressed key of a keyboard event. This key should correspond to the physical key according
|
|
290
|
+
* to a standard US keyboard layout. International keyboard layouts are handled by `KeyboardLayoutService`.
|
|
291
|
+
*
|
|
292
|
+
* `keyIdentifier` is used to access this deprecated field:
|
|
293
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyIdentifier
|
|
294
|
+
*/
|
|
295
|
+
function toKey(event, dispatch = 'code') {
|
|
296
|
+
const code = event.code;
|
|
297
|
+
if (code && dispatch === 'code') {
|
|
298
|
+
if (isOSX) {
|
|
299
|
+
// https://github.com/eclipse-theia/theia/issues/4986
|
|
300
|
+
const char = event.key;
|
|
301
|
+
if (code === 'IntlBackslash' && (char === '`' || char === '~')) {
|
|
302
|
+
return Key.BACKQUOTE;
|
|
303
|
+
}
|
|
304
|
+
else if (code === 'Backquote' && (char === '§' || char === '±')) {
|
|
305
|
+
return Key.INTL_BACKSLASH;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// https://github.com/eclipse-theia/theia/issues/7315
|
|
309
|
+
if (code.startsWith('Numpad') && event.key && event.key.length > 1) {
|
|
310
|
+
const k = Key.getKey(event.key);
|
|
311
|
+
if (k) {
|
|
312
|
+
return k;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
const key = Key.getKey(code);
|
|
316
|
+
if (key) {
|
|
317
|
+
return key;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
321
|
+
const keyCode = event.keyCode;
|
|
322
|
+
if (keyCode) {
|
|
323
|
+
const key = Key.getKey(keyCode);
|
|
324
|
+
if (key) {
|
|
325
|
+
return key;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
const keyIdentifier = event.keyIdentifier;
|
|
329
|
+
if (keyIdentifier) {
|
|
330
|
+
const key = Key.getKey(keyIdentifier);
|
|
331
|
+
if (key) {
|
|
332
|
+
return key;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
throw new Error(`Cannot get key code from the keyboard event: ${event}.`);
|
|
336
|
+
}
|
|
337
|
+
KeyCode.toKey = toKey;
|
|
338
|
+
/**
|
|
339
|
+
* Determine the actual printable character that is generated from a pressed key.
|
|
340
|
+
* If the key does not correspond to a printable character, `undefined` is returned.
|
|
341
|
+
* The result may be altered by modifier keys.
|
|
342
|
+
*/
|
|
343
|
+
function toCharacter(event) {
|
|
344
|
+
const key = event.key;
|
|
345
|
+
// Use the key property if it contains exactly one unicode character
|
|
346
|
+
if (key && Array.from(key).length === 1) {
|
|
347
|
+
return key;
|
|
348
|
+
}
|
|
349
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
350
|
+
const charCode = event.charCode;
|
|
351
|
+
// Use the charCode property if it does not correspond to a unicode control character
|
|
352
|
+
if (charCode && charCode > 0x1f && !(charCode >= 0x80 && charCode <= 0x9f)) {
|
|
353
|
+
return String.fromCharCode(charCode);
|
|
354
|
+
}
|
|
355
|
+
return undefined;
|
|
356
|
+
}
|
|
357
|
+
KeyCode.toCharacter = toCharacter;
|
|
358
|
+
})(KeyCode || (KeyCode = {}));
|
|
359
|
+
export var KeyModifier;
|
|
360
|
+
(function (KeyModifier) {
|
|
361
|
+
/**
|
|
362
|
+
* M1 is the COMMAND key on MacOS X, and the CTRL key on most other platforms.
|
|
363
|
+
*/
|
|
364
|
+
KeyModifier["CtrlCmd"] = "M1";
|
|
365
|
+
/**
|
|
366
|
+
* M2 is the SHIFT key.
|
|
367
|
+
*/
|
|
368
|
+
KeyModifier["Shift"] = "M2";
|
|
369
|
+
/**
|
|
370
|
+
* M3 is the Option key on MacOS X, and the ALT key on most other platforms.
|
|
371
|
+
*/
|
|
372
|
+
KeyModifier["Alt"] = "M3";
|
|
373
|
+
/**
|
|
374
|
+
* M4 is the CTRL key on MacOS X, and is undefined on other platforms.
|
|
375
|
+
*/
|
|
376
|
+
KeyModifier["MacCtrl"] = "M4";
|
|
377
|
+
})(KeyModifier || (KeyModifier = {}));
|
|
378
|
+
(function (KeyModifier) {
|
|
379
|
+
/**
|
|
380
|
+
* The CTRL key, independently of the platform.
|
|
381
|
+
* _Note:_ In general `KeyModifier.CtrlCmd` should be preferred over this constant.
|
|
382
|
+
*/
|
|
383
|
+
KeyModifier.CTRL = isOSX ? KeyModifier.MacCtrl : KeyModifier.CtrlCmd;
|
|
384
|
+
/**
|
|
385
|
+
* An alias for the SHIFT key (`KeyModifier.Shift`).
|
|
386
|
+
*/
|
|
387
|
+
KeyModifier.SHIFT = KeyModifier.Shift;
|
|
388
|
+
/**
|
|
389
|
+
* `true` if the argument represents a modifier. Otherwise, `false`.
|
|
390
|
+
*/
|
|
391
|
+
function isModifier(key) {
|
|
392
|
+
if (key) {
|
|
393
|
+
switch (key) {
|
|
394
|
+
case 'M1': // Fall through.
|
|
395
|
+
case 'M2': // Fall through.
|
|
396
|
+
case 'M3': // Fall through.
|
|
397
|
+
case 'M4': return true;
|
|
398
|
+
default: return false;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
KeyModifier.isModifier = isModifier;
|
|
404
|
+
})(KeyModifier || (KeyModifier = {}));
|
|
405
|
+
const CODE_TO_KEY = {};
|
|
406
|
+
const KEY_CODE_TO_KEY = {};
|
|
407
|
+
const EASY_TO_KEY = {}; // From 'ctrl' to Key structure
|
|
408
|
+
const MODIFIERS = [];
|
|
409
|
+
const SPECIAL_ALIASES = {
|
|
410
|
+
'option': 'alt',
|
|
411
|
+
'command': 'meta',
|
|
412
|
+
'cmd': 'meta',
|
|
413
|
+
'return': 'enter',
|
|
414
|
+
'esc': 'escape',
|
|
415
|
+
'mod': 'ctrl',
|
|
416
|
+
'ins': 'insert',
|
|
417
|
+
'del': 'delete',
|
|
418
|
+
'control': 'ctrl',
|
|
419
|
+
};
|
|
420
|
+
export var SpecialCases;
|
|
421
|
+
(function (SpecialCases) {
|
|
422
|
+
SpecialCases.META = 'meta';
|
|
423
|
+
SpecialCases.CTRLCMD = 'ctrlcmd';
|
|
424
|
+
})(SpecialCases || (SpecialCases = {}));
|
|
425
|
+
export var Key;
|
|
426
|
+
(function (Key) {
|
|
427
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
428
|
+
function isKey(arg) {
|
|
429
|
+
return typeof arg === 'object' && ('code' in arg) && ('keyCode' in arg);
|
|
430
|
+
}
|
|
431
|
+
Key.isKey = isKey;
|
|
432
|
+
function getKey(arg) {
|
|
433
|
+
if (typeof arg === 'number') {
|
|
434
|
+
return KEY_CODE_TO_KEY[arg];
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
return CODE_TO_KEY[arg];
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
Key.getKey = getKey;
|
|
441
|
+
function isModifier(arg) {
|
|
442
|
+
if (typeof arg === 'number') {
|
|
443
|
+
return MODIFIERS.find(key => key.keyCode === arg) !== undefined;
|
|
444
|
+
}
|
|
445
|
+
return MODIFIERS.find(key => key.code === arg) !== undefined;
|
|
446
|
+
}
|
|
447
|
+
Key.isModifier = isModifier;
|
|
448
|
+
function equals(key, keyCode) {
|
|
449
|
+
return !!keyCode.key && key.keyCode === keyCode.key.keyCode;
|
|
450
|
+
}
|
|
451
|
+
Key.equals = equals;
|
|
452
|
+
Key.BACKSPACE = { code: 'Backspace', keyCode: 8, easyString: 'backspace' };
|
|
453
|
+
Key.TAB = { code: 'Tab', keyCode: 9, easyString: 'tab' };
|
|
454
|
+
Key.ENTER = { code: 'Enter', keyCode: 13, easyString: 'enter' };
|
|
455
|
+
Key.ESCAPE = { code: 'Escape', keyCode: 27, easyString: 'escape' };
|
|
456
|
+
Key.SPACE = { code: 'Space', keyCode: 32, easyString: 'space' };
|
|
457
|
+
Key.PAGE_UP = { code: 'PageUp', keyCode: 33, easyString: 'pageup' };
|
|
458
|
+
Key.PAGE_DOWN = { code: 'PageDown', keyCode: 34, easyString: 'pagedown' };
|
|
459
|
+
Key.END = { code: 'End', keyCode: 35, easyString: 'end' };
|
|
460
|
+
Key.HOME = { code: 'Home', keyCode: 36, easyString: 'home' };
|
|
461
|
+
Key.ARROW_LEFT = { code: 'ArrowLeft', keyCode: 37, easyString: 'left' };
|
|
462
|
+
Key.ARROW_UP = { code: 'ArrowUp', keyCode: 38, easyString: 'up' };
|
|
463
|
+
Key.ARROW_RIGHT = { code: 'ArrowRight', keyCode: 39, easyString: 'right' };
|
|
464
|
+
Key.ARROW_DOWN = { code: 'ArrowDown', keyCode: 40, easyString: 'down' };
|
|
465
|
+
Key.INSERT = { code: 'Insert', keyCode: 45, easyString: 'insert' };
|
|
466
|
+
Key.DELETE = { code: 'Delete', keyCode: 46, easyString: 'delete' };
|
|
467
|
+
Key.SHIFT_LEFT = { code: 'ShiftLeft', keyCode: 16, easyString: 'shift' };
|
|
468
|
+
Key.SHIFT_RIGHT = { code: 'ShiftRight', keyCode: 16, easyString: 'shift' };
|
|
469
|
+
Key.CONTROL_LEFT = { code: 'ControlLeft', keyCode: 17, easyString: 'ctrl' };
|
|
470
|
+
Key.CONTROL_RIGHT = { code: 'ControlRight', keyCode: 17, easyString: 'ctrl' };
|
|
471
|
+
Key.ALT_LEFT = { code: 'AltLeft', keyCode: 18, easyString: 'alt' };
|
|
472
|
+
Key.ALT_RIGHT = { code: 'AltRight', keyCode: 18, easyString: 'alt' };
|
|
473
|
+
Key.CAPS_LOCK = { code: 'CapsLock', keyCode: 20, easyString: 'capslock' };
|
|
474
|
+
Key.OS_LEFT = { code: 'OSLeft', keyCode: 91, easyString: 'super' };
|
|
475
|
+
Key.OS_RIGHT = { code: 'OSRight', keyCode: 92, easyString: 'super' };
|
|
476
|
+
Key.DIGIT0 = { code: 'Digit0', keyCode: 48, easyString: '0' };
|
|
477
|
+
Key.DIGIT1 = { code: 'Digit1', keyCode: 49, easyString: '1' };
|
|
478
|
+
Key.DIGIT2 = { code: 'Digit2', keyCode: 50, easyString: '2' };
|
|
479
|
+
Key.DIGIT3 = { code: 'Digit3', keyCode: 51, easyString: '3' };
|
|
480
|
+
Key.DIGIT4 = { code: 'Digit4', keyCode: 52, easyString: '4' };
|
|
481
|
+
Key.DIGIT5 = { code: 'Digit5', keyCode: 53, easyString: '5' };
|
|
482
|
+
Key.DIGIT6 = { code: 'Digit6', keyCode: 54, easyString: '6' };
|
|
483
|
+
Key.DIGIT7 = { code: 'Digit7', keyCode: 55, easyString: '7' };
|
|
484
|
+
Key.DIGIT8 = { code: 'Digit8', keyCode: 56, easyString: '8' };
|
|
485
|
+
Key.DIGIT9 = { code: 'Digit9', keyCode: 57, easyString: '9' };
|
|
486
|
+
Key.KEY_A = { code: 'KeyA', keyCode: 65, easyString: 'a' };
|
|
487
|
+
Key.KEY_B = { code: 'KeyB', keyCode: 66, easyString: 'b' };
|
|
488
|
+
Key.KEY_C = { code: 'KeyC', keyCode: 67, easyString: 'c' };
|
|
489
|
+
Key.KEY_D = { code: 'KeyD', keyCode: 68, easyString: 'd' };
|
|
490
|
+
Key.KEY_E = { code: 'KeyE', keyCode: 69, easyString: 'e' };
|
|
491
|
+
Key.KEY_F = { code: 'KeyF', keyCode: 70, easyString: 'f' };
|
|
492
|
+
Key.KEY_G = { code: 'KeyG', keyCode: 71, easyString: 'g' };
|
|
493
|
+
Key.KEY_H = { code: 'KeyH', keyCode: 72, easyString: 'h' };
|
|
494
|
+
Key.KEY_I = { code: 'KeyI', keyCode: 73, easyString: 'i' };
|
|
495
|
+
Key.KEY_J = { code: 'KeyJ', keyCode: 74, easyString: 'j' };
|
|
496
|
+
Key.KEY_K = { code: 'KeyK', keyCode: 75, easyString: 'k' };
|
|
497
|
+
Key.KEY_L = { code: 'KeyL', keyCode: 76, easyString: 'l' };
|
|
498
|
+
Key.KEY_M = { code: 'KeyM', keyCode: 77, easyString: 'm' };
|
|
499
|
+
Key.KEY_N = { code: 'KeyN', keyCode: 78, easyString: 'n' };
|
|
500
|
+
Key.KEY_O = { code: 'KeyO', keyCode: 79, easyString: 'o' };
|
|
501
|
+
Key.KEY_P = { code: 'KeyP', keyCode: 80, easyString: 'p' };
|
|
502
|
+
Key.KEY_Q = { code: 'KeyQ', keyCode: 81, easyString: 'q' };
|
|
503
|
+
Key.KEY_R = { code: 'KeyR', keyCode: 82, easyString: 'r' };
|
|
504
|
+
Key.KEY_S = { code: 'KeyS', keyCode: 83, easyString: 's' };
|
|
505
|
+
Key.KEY_T = { code: 'KeyT', keyCode: 84, easyString: 't' };
|
|
506
|
+
Key.KEY_U = { code: 'KeyU', keyCode: 85, easyString: 'u' };
|
|
507
|
+
Key.KEY_V = { code: 'KeyV', keyCode: 86, easyString: 'v' };
|
|
508
|
+
Key.KEY_W = { code: 'KeyW', keyCode: 87, easyString: 'w' };
|
|
509
|
+
Key.KEY_X = { code: 'KeyX', keyCode: 88, easyString: 'x' };
|
|
510
|
+
Key.KEY_Y = { code: 'KeyY', keyCode: 89, easyString: 'y' };
|
|
511
|
+
Key.KEY_Z = { code: 'KeyZ', keyCode: 90, easyString: 'z' };
|
|
512
|
+
Key.MULTIPLY = { code: 'NumpadMultiply', keyCode: 106, easyString: 'multiply' };
|
|
513
|
+
Key.ADD = { code: 'NumpadAdd', keyCode: 107, easyString: 'add' };
|
|
514
|
+
Key.DECIMAL = { code: 'NumpadDecimal', keyCode: 108, easyString: 'decimal' };
|
|
515
|
+
Key.SUBTRACT = { code: 'NumpadSubtract', keyCode: 109, easyString: 'subtract' };
|
|
516
|
+
Key.DIVIDE = { code: 'NumpadDivide', keyCode: 111, easyString: 'divide' };
|
|
517
|
+
Key.F1 = { code: 'F1', keyCode: 112, easyString: 'f1' };
|
|
518
|
+
Key.F2 = { code: 'F2', keyCode: 113, easyString: 'f2' };
|
|
519
|
+
Key.F3 = { code: 'F3', keyCode: 114, easyString: 'f3' };
|
|
520
|
+
Key.F4 = { code: 'F4', keyCode: 115, easyString: 'f4' };
|
|
521
|
+
Key.F5 = { code: 'F5', keyCode: 116, easyString: 'f5' };
|
|
522
|
+
Key.F6 = { code: 'F6', keyCode: 117, easyString: 'f6' };
|
|
523
|
+
Key.F7 = { code: 'F7', keyCode: 118, easyString: 'f7' };
|
|
524
|
+
Key.F8 = { code: 'F8', keyCode: 119, easyString: 'f8' };
|
|
525
|
+
Key.F9 = { code: 'F9', keyCode: 120, easyString: 'f9' };
|
|
526
|
+
Key.F10 = { code: 'F10', keyCode: 121, easyString: 'f10' };
|
|
527
|
+
Key.F11 = { code: 'F11', keyCode: 122, easyString: 'f11' };
|
|
528
|
+
Key.F12 = { code: 'F12', keyCode: 123, easyString: 'f12' };
|
|
529
|
+
Key.F13 = { code: 'F13', keyCode: 124, easyString: 'f13' };
|
|
530
|
+
Key.F14 = { code: 'F14', keyCode: 125, easyString: 'f14' };
|
|
531
|
+
Key.F15 = { code: 'F15', keyCode: 126, easyString: 'f15' };
|
|
532
|
+
Key.F16 = { code: 'F16', keyCode: 127, easyString: 'f16' };
|
|
533
|
+
Key.F17 = { code: 'F17', keyCode: 128, easyString: 'f17' };
|
|
534
|
+
Key.F18 = { code: 'F18', keyCode: 129, easyString: 'f18' };
|
|
535
|
+
Key.F19 = { code: 'F19', keyCode: 130, easyString: 'f19' };
|
|
536
|
+
Key.F20 = { code: 'F20', keyCode: 131, easyString: 'f20' };
|
|
537
|
+
Key.F21 = { code: 'F21', keyCode: 132, easyString: 'f21' };
|
|
538
|
+
Key.F22 = { code: 'F22', keyCode: 133, easyString: 'f22' };
|
|
539
|
+
Key.F23 = { code: 'F23', keyCode: 134, easyString: 'f23' };
|
|
540
|
+
Key.F24 = { code: 'F24', keyCode: 135, easyString: 'f24' };
|
|
541
|
+
Key.NUM_LOCK = { code: 'NumLock', keyCode: 144, easyString: 'numlock' };
|
|
542
|
+
Key.SEMICOLON = { code: 'Semicolon', keyCode: 186, easyString: ';' };
|
|
543
|
+
Key.EQUAL = { code: 'Equal', keyCode: 187, easyString: '=' };
|
|
544
|
+
Key.COMMA = { code: 'Comma', keyCode: 188, easyString: ',' };
|
|
545
|
+
Key.MINUS = { code: 'Minus', keyCode: 189, easyString: '-' };
|
|
546
|
+
Key.PERIOD = { code: 'Period', keyCode: 190, easyString: '.' };
|
|
547
|
+
Key.SLASH = { code: 'Slash', keyCode: 191, easyString: '/' };
|
|
548
|
+
Key.BACKQUOTE = { code: 'Backquote', keyCode: 192, easyString: '`' };
|
|
549
|
+
Key.INTL_RO = { code: 'IntlRo', keyCode: 193, easyString: 'intlro' };
|
|
550
|
+
Key.BRACKET_LEFT = { code: 'BracketLeft', keyCode: 219, easyString: '[' };
|
|
551
|
+
Key.BACKSLASH = { code: 'Backslash', keyCode: 220, easyString: '\\' };
|
|
552
|
+
Key.BRACKET_RIGHT = { code: 'BracketRight', keyCode: 221, easyString: ']' };
|
|
553
|
+
Key.QUOTE = { code: 'Quote', keyCode: 222, easyString: '\'' };
|
|
554
|
+
Key.INTL_BACKSLASH = { code: 'IntlBackslash', keyCode: 229, easyString: 'intlbackslash' };
|
|
555
|
+
Key.INTL_YEN = { code: 'IntlYen', keyCode: 255, easyString: 'intlyen' };
|
|
556
|
+
Key.MAX_KEY_CODE = Key.INTL_YEN.keyCode;
|
|
557
|
+
})(Key || (Key = {}));
|
|
558
|
+
/* -------------------- Initialize the static key mappings -------------------- */
|
|
559
|
+
(() => {
|
|
560
|
+
// Set the default key mappings from the constants in the Key namespace
|
|
561
|
+
Object.keys(Key).map(prop => Reflect.get(Key, prop)).filter(key => Key.isKey(key)).forEach(key => {
|
|
562
|
+
CODE_TO_KEY[key.code] = key;
|
|
563
|
+
KEY_CODE_TO_KEY[key.keyCode] = key;
|
|
564
|
+
EASY_TO_KEY[key.easyString] = key;
|
|
565
|
+
});
|
|
566
|
+
// Set additional key mappings
|
|
567
|
+
CODE_TO_KEY['Numpad0'] = Key.DIGIT0;
|
|
568
|
+
KEY_CODE_TO_KEY[96] = Key.DIGIT0;
|
|
569
|
+
CODE_TO_KEY['Numpad1'] = Key.DIGIT1;
|
|
570
|
+
KEY_CODE_TO_KEY[97] = Key.DIGIT1;
|
|
571
|
+
CODE_TO_KEY['Numpad2'] = Key.DIGIT2;
|
|
572
|
+
KEY_CODE_TO_KEY[98] = Key.DIGIT2;
|
|
573
|
+
CODE_TO_KEY['Numpad3'] = Key.DIGIT3;
|
|
574
|
+
KEY_CODE_TO_KEY[99] = Key.DIGIT3;
|
|
575
|
+
CODE_TO_KEY['Numpad4'] = Key.DIGIT4;
|
|
576
|
+
KEY_CODE_TO_KEY[100] = Key.DIGIT4;
|
|
577
|
+
CODE_TO_KEY['Numpad5'] = Key.DIGIT5;
|
|
578
|
+
KEY_CODE_TO_KEY[101] = Key.DIGIT5;
|
|
579
|
+
CODE_TO_KEY['Numpad6'] = Key.DIGIT6;
|
|
580
|
+
KEY_CODE_TO_KEY[102] = Key.DIGIT6;
|
|
581
|
+
CODE_TO_KEY['Numpad7'] = Key.DIGIT7;
|
|
582
|
+
KEY_CODE_TO_KEY[103] = Key.DIGIT7;
|
|
583
|
+
CODE_TO_KEY['Numpad8'] = Key.DIGIT8;
|
|
584
|
+
KEY_CODE_TO_KEY[104] = Key.DIGIT8;
|
|
585
|
+
CODE_TO_KEY['Numpad9'] = Key.DIGIT9;
|
|
586
|
+
KEY_CODE_TO_KEY[105] = Key.DIGIT9;
|
|
587
|
+
CODE_TO_KEY['NumpadEnter'] = Key.ENTER;
|
|
588
|
+
CODE_TO_KEY['NumpadEqual'] = Key.EQUAL;
|
|
589
|
+
CODE_TO_KEY['MetaLeft'] = Key.OS_LEFT; // Chrome, Safari
|
|
590
|
+
KEY_CODE_TO_KEY[224] = Key.OS_LEFT; // Firefox on Mac
|
|
591
|
+
CODE_TO_KEY['MetaRight'] = Key.OS_RIGHT; // Chrome, Safari
|
|
592
|
+
KEY_CODE_TO_KEY[93] = Key.OS_RIGHT; // Chrome, Safari, Edge
|
|
593
|
+
KEY_CODE_TO_KEY[225] = Key.ALT_RIGHT; // Linux
|
|
594
|
+
KEY_CODE_TO_KEY[110] = Key.DECIMAL; // Mac, Windows
|
|
595
|
+
KEY_CODE_TO_KEY[59] = Key.SEMICOLON; // Firefox
|
|
596
|
+
KEY_CODE_TO_KEY[61] = Key.EQUAL; // Firefox
|
|
597
|
+
KEY_CODE_TO_KEY[173] = Key.MINUS; // Firefox
|
|
598
|
+
KEY_CODE_TO_KEY[226] = Key.BACKSLASH; // Chrome, Edge on Windows
|
|
599
|
+
KEY_CODE_TO_KEY[60] = Key.BACKSLASH; // Firefox on Linux
|
|
600
|
+
// Set the modifier keys
|
|
601
|
+
MODIFIERS.push(...[Key.ALT_LEFT, Key.ALT_RIGHT, Key.CONTROL_LEFT, Key.CONTROL_RIGHT, Key.OS_LEFT, Key.OS_RIGHT, Key.SHIFT_LEFT, Key.SHIFT_RIGHT]);
|
|
602
|
+
})();
|
|
603
|
+
export var KeysOrKeyCodes;
|
|
604
|
+
(function (KeysOrKeyCodes) {
|
|
605
|
+
KeysOrKeyCodes.toKeyCode = (keyOrKeyCode) => keyOrKeyCode instanceof KeyCode ? keyOrKeyCode : KeyCode.createKeyCode({ first: keyOrKeyCode });
|
|
606
|
+
KeysOrKeyCodes.toKeyCodes = (keysOrKeyCodes) => {
|
|
607
|
+
if (keysOrKeyCodes instanceof KeyCode) {
|
|
608
|
+
return [keysOrKeyCodes];
|
|
609
|
+
}
|
|
610
|
+
else if (Array.isArray(keysOrKeyCodes)) {
|
|
611
|
+
return keysOrKeyCodes.slice().map(KeysOrKeyCodes.toKeyCode);
|
|
612
|
+
}
|
|
613
|
+
return [KeysOrKeyCodes.toKeyCode(keysOrKeyCodes)];
|
|
614
|
+
};
|
|
615
|
+
})(KeysOrKeyCodes || (KeysOrKeyCodes = {}));
|
|
616
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/browser/keyboard/keys.ts"],"names":[],"mappings":"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"}
|