PluginProbe
Gutenberg / 12.1.0
Gutenberg v12.1.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / keycodes / index.js

index.js in Gutenberg 12.1.0, at build/keycodes/index.js

476 lines 13.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /******/ (function() { // webpackBootstrap
2 /******/ "use strict";
3 /******/ // The require scope
4 /******/ var __webpack_require__ = {};
5 /******/
6 /************************************************************************/
7 /******/ /* webpack/runtime/define property getters */
8 /******/ !function() {
9 /******/ // define getter functions for harmony exports
10 /******/ __webpack_require__.d = function(exports, definition) {
11 /******/ for(var key in definition) {
12 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
13 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
14 /******/ }
15 /******/ }
16 /******/ };
17 /******/ }();
18 /******/
19 /******/ /* webpack/runtime/hasOwnProperty shorthand */
20 /******/ !function() {
21 /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
22 /******/ }();
23 /******/
24 /******/ /* webpack/runtime/make namespace object */
25 /******/ !function() {
26 /******/ // define __esModule on exports
27 /******/ __webpack_require__.r = function(exports) {
28 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
29 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
30 /******/ }
31 /******/ Object.defineProperty(exports, '__esModule', { value: true });
32 /******/ };
33 /******/ }();
34 /******/
35 /************************************************************************/
36 var __webpack_exports__ = {};
37 // ESM COMPAT FLAG
38 __webpack_require__.r(__webpack_exports__);
39
40 // EXPORTS
41 __webpack_require__.d(__webpack_exports__, {
42 "ALT": function() { return /* binding */ ALT; },
43 "BACKSPACE": function() { return /* binding */ BACKSPACE; },
44 "COMMAND": function() { return /* binding */ COMMAND; },
45 "CTRL": function() { return /* binding */ CTRL; },
46 "DELETE": function() { return /* binding */ DELETE; },
47 "DOWN": function() { return /* binding */ DOWN; },
48 "END": function() { return /* binding */ END; },
49 "ENTER": function() { return /* binding */ ENTER; },
50 "ESCAPE": function() { return /* binding */ ESCAPE; },
51 "F10": function() { return /* binding */ F10; },
52 "HOME": function() { return /* binding */ HOME; },
53 "LEFT": function() { return /* binding */ LEFT; },
54 "PAGEDOWN": function() { return /* binding */ PAGEDOWN; },
55 "PAGEUP": function() { return /* binding */ PAGEUP; },
56 "RIGHT": function() { return /* binding */ RIGHT; },
57 "SHIFT": function() { return /* binding */ SHIFT; },
58 "SPACE": function() { return /* binding */ SPACE; },
59 "TAB": function() { return /* binding */ TAB; },
60 "UP": function() { return /* binding */ UP; },
61 "ZERO": function() { return /* binding */ ZERO; },
62 "displayShortcut": function() { return /* binding */ displayShortcut; },
63 "displayShortcutList": function() { return /* binding */ displayShortcutList; },
64 "isKeyboardEvent": function() { return /* binding */ isKeyboardEvent; },
65 "modifiers": function() { return /* binding */ modifiers; },
66 "rawShortcut": function() { return /* binding */ rawShortcut; },
67 "shortcutAriaLabel": function() { return /* binding */ shortcutAriaLabel; }
68 });
69
70 ;// CONCATENATED MODULE: external "lodash"
71 var external_lodash_namespaceObject = window["lodash"];
72 ;// CONCATENATED MODULE: external ["wp","i18n"]
73 var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
74 ;// CONCATENATED MODULE: ./packages/keycodes/build-module/platform.js
75 /**
76 * External dependencies
77 */
78
79 /**
80 * Return true if platform is MacOS.
81 *
82 * @param {Window?} _window window object by default; used for DI testing.
83 *
84 * @return {boolean} True if MacOS; false otherwise.
85 */
86
87 function isAppleOS() {
88 let _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
89
90 if (!_window) {
91 if (typeof window === 'undefined') {
92 return false;
93 }
94
95 _window = window;
96 }
97
98 const {
99 platform
100 } = _window.navigator;
101 return platform.indexOf('Mac') !== -1 || (0,external_lodash_namespaceObject.includes)(['iPad', 'iPhone'], platform);
102 }
103 //# sourceMappingURL=platform.js.map
104 ;// CONCATENATED MODULE: ./packages/keycodes/build-module/index.js
105 /**
106 * Note: The order of the modifier keys in many of the [foo]Shortcut()
107 * functions in this file are intentional and should not be changed. They're
108 * designed to fit with the standard menu keyboard shortcuts shown in the
109 * user's platform.
110 *
111 * For example, on MacOS menu shortcuts will place Shift before Command, but
112 * on Windows Control will usually come first. So don't provide your own
113 * shortcut combos directly to keyboardShortcut().
114 */
115
116 /**
117 * External dependencies
118 */
119
120 /**
121 * WordPress dependencies
122 */
123
124
125 /**
126 * Internal dependencies
127 */
128
129
130 /** @typedef {typeof ALT | CTRL | COMMAND | SHIFT } WPModifierPart */
131
132 /** @typedef {'primary' | 'primaryShift' | 'primaryAlt' | 'secondary' | 'access' | 'ctrl' | 'alt' | 'ctrlShift' | 'shift' | 'shiftAlt' | 'undefined'} WPKeycodeModifier */
133
134 /**
135 * An object of handler functions for each of the possible modifier
136 * combinations. A handler will return a value for a given key.
137 *
138 * @template T
139 *
140 * @typedef {Record<WPKeycodeModifier, T>} WPModifierHandler
141 */
142
143 /**
144 * @template T
145 *
146 * @typedef {(character: string, isApple?: () => boolean) => T} WPKeyHandler
147 */
148
149 /** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */
150
151 /**
152 * Keycode for BACKSPACE key.
153 */
154
155 const BACKSPACE = 8;
156 /**
157 * Keycode for TAB key.
158 */
159
160 const TAB = 9;
161 /**
162 * Keycode for ENTER key.
163 */
164
165 const ENTER = 13;
166 /**
167 * Keycode for ESCAPE key.
168 */
169
170 const ESCAPE = 27;
171 /**
172 * Keycode for SPACE key.
173 */
174
175 const SPACE = 32;
176 /**
177 * Keycode for PAGEUP key.
178 */
179
180 const PAGEUP = 33;
181 /**
182 * Keycode for PAGEDOWN key.
183 */
184
185 const PAGEDOWN = 34;
186 /**
187 * Keycode for END key.
188 */
189
190 const END = 35;
191 /**
192 * Keycode for HOME key.
193 */
194
195 const HOME = 36;
196 /**
197 * Keycode for LEFT key.
198 */
199
200 const LEFT = 37;
201 /**
202 * Keycode for UP key.
203 */
204
205 const UP = 38;
206 /**
207 * Keycode for RIGHT key.
208 */
209
210 const RIGHT = 39;
211 /**
212 * Keycode for DOWN key.
213 */
214
215 const DOWN = 40;
216 /**
217 * Keycode for DELETE key.
218 */
219
220 const DELETE = 46;
221 /**
222 * Keycode for F10 key.
223 */
224
225 const F10 = 121;
226 /**
227 * Keycode for ALT key.
228 */
229
230 const ALT = 'alt';
231 /**
232 * Keycode for CTRL key.
233 */
234
235 const CTRL = 'ctrl';
236 /**
237 * Keycode for COMMAND/META key.
238 */
239
240 const COMMAND = 'meta';
241 /**
242 * Keycode for SHIFT key.
243 */
244
245 const SHIFT = 'shift';
246 /**
247 * Keycode for ZERO key.
248 */
249
250 const ZERO = 48;
251 /**
252 * Object that contains functions that return the available modifier
253 * depending on platform.
254 *
255 * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}
256 */
257
258 const modifiers = {
259 primary: _isApple => _isApple() ? [COMMAND] : [CTRL],
260 primaryShift: _isApple => _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT],
261 primaryAlt: _isApple => _isApple() ? [ALT, COMMAND] : [CTRL, ALT],
262 secondary: _isApple => _isApple() ? [SHIFT, ALT, COMMAND] : [CTRL, SHIFT, ALT],
263 access: _isApple => _isApple() ? [CTRL, ALT] : [SHIFT, ALT],
264 ctrl: () => [CTRL],
265 alt: () => [ALT],
266 ctrlShift: () => [CTRL, SHIFT],
267 shift: () => [SHIFT],
268 shiftAlt: () => [SHIFT, ALT],
269 undefined: () => []
270 };
271 /**
272 * An object that contains functions to get raw shortcuts.
273 *
274 * These are intended for user with the KeyboardShortcuts.
275 *
276 * @example
277 * ```js
278 * // Assuming macOS:
279 * rawShortcut.primary( 'm' )
280 * // "meta+m""
281 * ```
282 *
283 * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to raw
284 * shortcuts.
285 */
286
287 const rawShortcut = (0,external_lodash_namespaceObject.mapValues)(modifiers, modifier => {
288 return (
289 /** @type {WPKeyHandler<string>} */
290 function (character) {
291 let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
292
293 return [...modifier(_isApple), character.toLowerCase()].join('+');
294 }
295 );
296 });
297 /**
298 * Return an array of the parts of a keyboard shortcut chord for display.
299 *
300 * @example
301 * ```js
302 * // Assuming macOS:
303 * displayShortcutList.primary( 'm' );
304 * // [ "⌘", "M" ]
305 * ```
306 *
307 * @type {WPModifierHandler<WPKeyHandler<string[]>>} Keyed map of functions to
308 * shortcut sequences.
309 */
310
311 const displayShortcutList = (0,external_lodash_namespaceObject.mapValues)(modifiers, modifier => {
312 return (
313 /** @type {WPKeyHandler<string[]>} */
314 function (character) {
315 let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
316
317 const isApple = _isApple();
318
319 const replacementKeyMap = {
320 [ALT]: isApple ? '' : 'Alt',
321 [CTRL]: isApple ? '' : 'Ctrl',
322 // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.
323 [COMMAND]: '',
324 [SHIFT]: isApple ? '' : 'Shift'
325 };
326 const modifierKeys = modifier(_isApple).reduce((accumulator, key) => {
327 const replacementKey = (0,external_lodash_namespaceObject.get)(replacementKeyMap, key, key); // If on the Mac, adhere to platform convention and don't show plus between keys.
328
329 if (isApple) {
330 return [...accumulator, replacementKey];
331 }
332
333 return [...accumulator, replacementKey, '+'];
334 },
335 /** @type {string[]} */
336 []);
337 const capitalizedCharacter = (0,external_lodash_namespaceObject.capitalize)(character);
338 return [...modifierKeys, capitalizedCharacter];
339 }
340 );
341 });
342 /**
343 * An object that contains functions to display shortcuts.
344 *
345 * @example
346 * ```js
347 * // Assuming macOS:
348 * displayShortcut.primary( 'm' );
349 * // "⌘M"
350 * ```
351 *
352 * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to
353 * display shortcuts.
354 */
355
356 const displayShortcut = (0,external_lodash_namespaceObject.mapValues)(displayShortcutList, shortcutList => {
357 return (
358 /** @type {WPKeyHandler<string>} */
359 function (character) {
360 let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
361
362 return shortcutList(character, _isApple).join('');
363 }
364 );
365 });
366 /**
367 * An object that contains functions to return an aria label for a keyboard
368 * shortcut.
369 *
370 * @example
371 * ```js
372 * // Assuming macOS:
373 * shortcutAriaLabel.primary( '.' );
374 * // "Command + Period"
375 * ```
376 *
377 * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to
378 * shortcut ARIA labels.
379 */
380
381 const shortcutAriaLabel = (0,external_lodash_namespaceObject.mapValues)(modifiers, modifier => {
382 return (
383 /** @type {WPKeyHandler<string>} */
384 function (character) {
385 let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
386
387 const isApple = _isApple();
388
389 const replacementKeyMap = {
390 [SHIFT]: 'Shift',
391 [COMMAND]: isApple ? 'Command' : 'Control',
392 [CTRL]: 'Control',
393 [ALT]: isApple ? 'Option' : 'Alt',
394
395 /* translators: comma as in the character ',' */
396 ',': (0,external_wp_i18n_namespaceObject.__)('Comma'),
397
398 /* translators: period as in the character '.' */
399 '.': (0,external_wp_i18n_namespaceObject.__)('Period'),
400
401 /* translators: backtick as in the character '`' */
402 '`': (0,external_wp_i18n_namespaceObject.__)('Backtick')
403 };
404 return [...modifier(_isApple), character].map(key => (0,external_lodash_namespaceObject.capitalize)((0,external_lodash_namespaceObject.get)(replacementKeyMap, key, key))).join(isApple ? ' ' : ' + ');
405 }
406 );
407 });
408 /**
409 * From a given KeyboardEvent, returns an array of active modifier constants for
410 * the event.
411 *
412 * @param {KeyboardEvent} event Keyboard event.
413 *
414 * @return {Array<WPModifierPart>} Active modifier constants.
415 */
416
417 function getEventModifiers(event) {
418 return (
419 /** @type {WPModifierPart[]} */
420 [ALT, CTRL, COMMAND, SHIFT].filter(key => event[
421 /** @type {'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'} */
422 `${key}Key`])
423 );
424 }
425 /**
426 * An object that contains functions to check if a keyboard event matches a
427 * predefined shortcut combination.
428 *
429 * @example
430 * ```js
431 * // Assuming an event for ⌘M key press:
432 * isKeyboardEvent.primary( event, 'm' );
433 * // true
434 * ```
435 *
436 * @type {WPModifierHandler<WPEventKeyHandler>} Keyed map of functions
437 * to match events.
438 */
439
440
441 const isKeyboardEvent = (0,external_lodash_namespaceObject.mapValues)(modifiers, getModifiers => {
442 return (
443 /** @type {WPEventKeyHandler} */
444 function (event, character) {
445 let _isApple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : isAppleOS;
446
447 const mods = getModifiers(_isApple);
448 const eventMods = getEventModifiers(event);
449
450 if ((0,external_lodash_namespaceObject.xor)(mods, eventMods).length) {
451 return false;
452 }
453
454 let key = event.key.toLowerCase();
455
456 if (!character) {
457 return (0,external_lodash_namespaceObject.includes)(mods, key);
458 }
459
460 if (event.altKey && character.length === 1) {
461 key = String.fromCharCode(event.keyCode).toLowerCase();
462 } // For backwards compatibility.
463
464
465 if (character === 'del') {
466 character = 'delete';
467 }
468
469 return key === character.toLowerCase();
470 }
471 );
472 });
473 //# sourceMappingURL=index.js.map
474 (window.wp = window.wp || {}).keycodes = __webpack_exports__;
475 /******/ })()
476 ;