@wordpress/keycodes 3.26.1 → 3.26.3

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/build/index.js CHANGED
@@ -14,8 +14,6 @@ exports.shortcutAriaLabel = exports.rawShortcut = exports.modifiers = exports.is
14
14
 
15
15
  var _changeCase = require("change-case");
16
16
 
17
- var _lodash = require("lodash");
18
-
19
17
  var _i18n = require("@wordpress/i18n");
20
18
 
21
19
  var _platform = require("./platform");
@@ -64,6 +62,8 @@ var _platform = require("./platform");
64
62
 
65
63
  /** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */
66
64
 
65
+ /** @typedef {( isApple: () => boolean ) => WPModifierPart[]} WPModifier */
66
+
67
67
  /**
68
68
  * Keycode for BACKSPACE key.
69
69
  */
@@ -184,12 +184,30 @@ exports.SHIFT = SHIFT;
184
184
  const ZERO = 48;
185
185
  exports.ZERO = ZERO;
186
186
 
187
+ /**
188
+ * Map the values of an object with a specified callback and return the result object.
189
+ *
190
+ * @template T
191
+ *
192
+ * @param {T} object Object to map values of.
193
+ * @param {( value: any ) => any} mapFn Mapping function
194
+ *
195
+ * @return {any} Active modifier constants.
196
+ */
197
+ function mapValues(object, mapFn) {
198
+ return Object.fromEntries(Object.entries(object).map(_ref => {
199
+ let [key, value] = _ref;
200
+ return [key, mapFn(value)];
201
+ }));
202
+ }
187
203
  /**
188
204
  * Object that contains functions that return the available modifier
189
205
  * depending on platform.
190
206
  *
191
207
  * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}
192
208
  */
209
+
210
+
193
211
  const modifiers = {
194
212
  primary: _isApple => _isApple() ? [COMMAND] : [CTRL],
195
213
  primaryShift: _isApple => _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT],
@@ -220,7 +238,9 @@ const modifiers = {
220
238
  */
221
239
 
222
240
  exports.modifiers = modifiers;
223
- const rawShortcut = (0, _lodash.mapValues)(modifiers, modifier => {
241
+ const rawShortcut = mapValues(modifiers, (
242
+ /** @type {WPModifier} */
243
+ modifier) => {
224
244
  return (
225
245
  /** @type {WPKeyHandler<string>} */
226
246
  function (character) {
@@ -245,7 +265,9 @@ const rawShortcut = (0, _lodash.mapValues)(modifiers, modifier => {
245
265
  */
246
266
 
247
267
  exports.rawShortcut = rawShortcut;
248
- const displayShortcutList = (0, _lodash.mapValues)(modifiers, modifier => {
268
+ const displayShortcutList = mapValues(modifiers, (
269
+ /** @type {WPModifier} */
270
+ modifier) => {
249
271
  return (
250
272
  /** @type {WPKeyHandler<string[]>} */
251
273
  function (character) {
@@ -261,7 +283,9 @@ const displayShortcutList = (0, _lodash.mapValues)(modifiers, modifier => {
261
283
  [SHIFT]: isApple ? '⇧' : 'Shift'
262
284
  };
263
285
  const modifierKeys = modifier(_isApple).reduce((accumulator, key) => {
264
- const replacementKey = (0, _lodash.get)(replacementKeyMap, key, key); // If on the Mac, adhere to platform convention and don't show plus between keys.
286
+ var _replacementKeyMap$ke;
287
+
288
+ const replacementKey = (_replacementKeyMap$ke = replacementKeyMap[key]) !== null && _replacementKeyMap$ke !== void 0 ? _replacementKeyMap$ke : key; // If on the Mac, adhere to platform convention and don't show plus between keys.
265
289
 
266
290
  if (isApple) {
267
291
  return [...accumulator, replacementKey];
@@ -296,7 +320,9 @@ const displayShortcutList = (0, _lodash.mapValues)(modifiers, modifier => {
296
320
  */
297
321
 
298
322
  exports.displayShortcutList = displayShortcutList;
299
- const displayShortcut = (0, _lodash.mapValues)(displayShortcutList, shortcutList => {
323
+ const displayShortcut = mapValues(displayShortcutList, (
324
+ /** @type {WPKeyHandler<string[]>} */
325
+ shortcutList) => {
300
326
  return (
301
327
  /** @type {WPKeyHandler<string>} */
302
328
  function (character) {
@@ -322,13 +348,17 @@ const displayShortcut = (0, _lodash.mapValues)(displayShortcutList, shortcutList
322
348
  */
323
349
 
324
350
  exports.displayShortcut = displayShortcut;
325
- const shortcutAriaLabel = (0, _lodash.mapValues)(modifiers, modifier => {
351
+ const shortcutAriaLabel = mapValues(modifiers, (
352
+ /** @type {WPModifier} */
353
+ modifier) => {
326
354
  return (
327
355
  /** @type {WPKeyHandler<string>} */
328
356
  function (character) {
329
357
  let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _platform.isAppleOS;
330
358
 
331
359
  const isApple = _isApple();
360
+ /** @type {Record<string,string>} */
361
+
332
362
 
333
363
  const replacementKeyMap = {
334
364
  [SHIFT]: 'Shift',
@@ -348,7 +378,11 @@ const shortcutAriaLabel = (0, _lodash.mapValues)(modifiers, modifier => {
348
378
  /* translators: tilde as in the character '~' */
349
379
  '~': (0, _i18n.__)('Tilde')
350
380
  };
351
- return [...modifier(_isApple), character].map(key => (0, _changeCase.capitalCase)((0, _lodash.get)(replacementKeyMap, key, key))).join(isApple ? ' ' : ' + ');
381
+ return [...modifier(_isApple), character].map(key => {
382
+ var _replacementKeyMap$ke2;
383
+
384
+ return (0, _changeCase.capitalCase)((_replacementKeyMap$ke2 = replacementKeyMap[key]) !== null && _replacementKeyMap$ke2 !== void 0 ? _replacementKeyMap$ke2 : key);
385
+ }).join(isApple ? ' ' : ' + ');
352
386
  }
353
387
  );
354
388
  });
@@ -387,7 +421,9 @@ function getEventModifiers(event) {
387
421
  */
388
422
 
389
423
 
390
- const isKeyboardEvent = (0, _lodash.mapValues)(modifiers, getModifiers => {
424
+ const isKeyboardEvent = mapValues(modifiers, (
425
+ /** @type {WPModifier} */
426
+ getModifiers) => {
391
427
  return (
392
428
  /** @type {WPEventKeyHandler} */
393
429
  function (event, character) {
@@ -395,6 +431,15 @@ const isKeyboardEvent = (0, _lodash.mapValues)(modifiers, getModifiers => {
395
431
 
396
432
  const mods = getModifiers(_isApple);
397
433
  const eventMods = getEventModifiers(event);
434
+ /** @type {Record<string,string>} */
435
+
436
+ const replacementWithShiftKeyMap = {
437
+ Comma: ',',
438
+ Backslash: '\\',
439
+ // Windows returns `\` for both IntlRo and IntlYen.
440
+ IntlRo: '\\',
441
+ IntlYen: '\\'
442
+ };
398
443
  const modsDiff = mods.filter(mod => !eventMods.includes(mod));
399
444
  const eventModsDiff = eventMods.filter(mod => !mods.includes(mod));
400
445
 
@@ -412,14 +457,15 @@ const isKeyboardEvent = (0, _lodash.mapValues)(modifiers, getModifiers => {
412
457
 
413
458
  if (event.altKey && character.length === 1) {
414
459
  key = String.fromCharCode(event.keyCode).toLowerCase();
415
- } // Replace some characters to match the key indicated
416
- // by the shortcut on Windows.
460
+ } // `event.key` returns the value of the key pressed, taking into the state of
461
+ // modifier keys such as `Shift`. If the shift key is pressed, a different
462
+ // value may be returned depending on the keyboard layout. It is necessary to
463
+ // convert to the physical key value that don't take into account keyboard
464
+ // layout or modifier key state.
417
465
 
418
466
 
419
- if (!_isApple()) {
420
- if (event.shiftKey && character.length === 1 && event.code === 'Comma') {
421
- key = ',';
422
- }
467
+ if (event.shiftKey && character.length === 1 && replacementWithShiftKeyMap[event.code]) {
468
+ key = replacementWithShiftKeyMap[event.code];
423
469
  } // For backwards compatibility.
424
470
 
425
471
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/keycodes/src/index.js"],"names":["BACKSPACE","TAB","ENTER","ESCAPE","SPACE","PAGEUP","PAGEDOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","F10","ALT","CTRL","COMMAND","SHIFT","ZERO","modifiers","primary","_isApple","primaryShift","primaryAlt","secondary","access","ctrl","alt","ctrlShift","shift","shiftAlt","undefined","rawShortcut","modifier","character","isAppleOS","toLowerCase","join","displayShortcutList","isApple","replacementKeyMap","modifierKeys","reduce","accumulator","key","replacementKey","capitalizedCharacter","stripRegexp","displayShortcut","shortcutList","shortcutAriaLabel","map","getEventModifiers","event","filter","isKeyboardEvent","getModifiers","mods","eventMods","modsDiff","mod","includes","eventModsDiff","length","altKey","String","fromCharCode","keyCode","shiftKey","code"],"mappings":"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","sourcesContent":["/**\n * Note: The order of the modifier keys in many of the [foo]Shortcut()\n * functions in this file are intentional and should not be changed. They're\n * designed to fit with the standard menu keyboard shortcuts shown in the\n * user's platform.\n *\n * For example, on MacOS menu shortcuts will place Shift before Command, but\n * on Windows Control will usually come first. So don't provide your own\n * shortcut combos directly to keyboardShortcut().\n */\n\n/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\nimport { get, mapValues } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isAppleOS } from './platform';\n\n/** @typedef {typeof ALT | CTRL | COMMAND | SHIFT } WPModifierPart */\n\n/** @typedef {'primary' | 'primaryShift' | 'primaryAlt' | 'secondary' | 'access' | 'ctrl' | 'alt' | 'ctrlShift' | 'shift' | 'shiftAlt' | 'undefined'} WPKeycodeModifier */\n\n/**\n * An object of handler functions for each of the possible modifier\n * combinations. A handler will return a value for a given key.\n *\n * @template T\n *\n * @typedef {Record<WPKeycodeModifier, T>} WPModifierHandler\n */\n\n/**\n * @template T\n *\n * @typedef {(character: string, isApple?: () => boolean) => T} WPKeyHandler\n */\n/** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */\n\n/**\n * Keycode for BACKSPACE key.\n */\nexport const BACKSPACE = 8;\n\n/**\n * Keycode for TAB key.\n */\nexport const TAB = 9;\n\n/**\n * Keycode for ENTER key.\n */\nexport const ENTER = 13;\n\n/**\n * Keycode for ESCAPE key.\n */\nexport const ESCAPE = 27;\n\n/**\n * Keycode for SPACE key.\n */\nexport const SPACE = 32;\n\n/**\n * Keycode for PAGEUP key.\n */\nexport const PAGEUP = 33;\n\n/**\n * Keycode for PAGEDOWN key.\n */\nexport const PAGEDOWN = 34;\n\n/**\n * Keycode for END key.\n */\nexport const END = 35;\n\n/**\n * Keycode for HOME key.\n */\nexport const HOME = 36;\n\n/**\n * Keycode for LEFT key.\n */\nexport const LEFT = 37;\n\n/**\n * Keycode for UP key.\n */\nexport const UP = 38;\n\n/**\n * Keycode for RIGHT key.\n */\nexport const RIGHT = 39;\n\n/**\n * Keycode for DOWN key.\n */\nexport const DOWN = 40;\n\n/**\n * Keycode for DELETE key.\n */\nexport const DELETE = 46;\n\n/**\n * Keycode for F10 key.\n */\nexport const F10 = 121;\n\n/**\n * Keycode for ALT key.\n */\nexport const ALT = 'alt';\n\n/**\n * Keycode for CTRL key.\n */\nexport const CTRL = 'ctrl';\n\n/**\n * Keycode for COMMAND/META key.\n */\nexport const COMMAND = 'meta';\n\n/**\n * Keycode for SHIFT key.\n */\nexport const SHIFT = 'shift';\n\n/**\n * Keycode for ZERO key.\n */\nexport const ZERO = 48;\n\nexport { isAppleOS };\n\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n *\n * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}\n */\nexport const modifiers = {\n\tprimary: ( _isApple ) => ( _isApple() ? [ COMMAND ] : [ CTRL ] ),\n\tprimaryShift: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, COMMAND ] : [ CTRL, SHIFT ],\n\tprimaryAlt: ( _isApple ) =>\n\t\t_isApple() ? [ ALT, COMMAND ] : [ CTRL, ALT ],\n\tsecondary: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, ALT, COMMAND ] : [ CTRL, SHIFT, ALT ],\n\taccess: ( _isApple ) => ( _isApple() ? [ CTRL, ALT ] : [ SHIFT, ALT ] ),\n\tctrl: () => [ CTRL ],\n\talt: () => [ ALT ],\n\tctrlShift: () => [ CTRL, SHIFT ],\n\tshift: () => [ SHIFT ],\n\tshiftAlt: () => [ SHIFT, ALT ],\n\tundefined: () => [],\n};\n\n/**\n * An object that contains functions to get raw shortcuts.\n *\n * These are intended for user with the KeyboardShortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * rawShortcut.primary( 'm' )\n * // \"meta+m\"\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to raw\n * shortcuts.\n */\nexport const rawShortcut = mapValues( modifiers, ( modifier ) => {\n\treturn /** @type {WPKeyHandler<string>} */ (\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\treturn [ ...modifier( _isApple ), character.toLowerCase() ].join( '+' );\n\t};\n} );\n\n/**\n * Return an array of the parts of a keyboard shortcut chord for display.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcutList.primary( 'm' );\n * // [ \"⌘\", \"M\" ]\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string[]>>} Keyed map of functions to\n * shortcut sequences.\n */\nexport const displayShortcutList = mapValues( modifiers, ( modifier ) => {\n\treturn /** @type {WPKeyHandler<string[]>} */ (\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\tconst isApple = _isApple();\n\t\tconst replacementKeyMap = {\n\t\t\t[ ALT ]: isApple ? '⌥' : 'Alt',\n\t\t\t[ CTRL ]: isApple ? '⌃' : 'Ctrl', // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.\n\t\t\t[ COMMAND ]: '⌘',\n\t\t\t[ SHIFT ]: isApple ? '⇧' : 'Shift',\n\t\t};\n\n\t\tconst modifierKeys = modifier( _isApple ).reduce(\n\t\t\t( accumulator, key ) => {\n\t\t\t\tconst replacementKey = get( replacementKeyMap, key, key );\n\t\t\t\t// If on the Mac, adhere to platform convention and don't show plus between keys.\n\t\t\t\tif ( isApple ) {\n\t\t\t\t\treturn [ ...accumulator, replacementKey ];\n\t\t\t\t}\n\n\t\t\t\treturn [ ...accumulator, replacementKey, '+' ];\n\t\t\t},\n\t\t\t/** @type {string[]} */ ( [] )\n\t\t);\n\n\t\t// Symbols (~`,.) are removed by the default regular expression,\n\t\t// so override the rule to allow symbols used for shortcuts.\n\t\t// see: https://github.com/blakeembrey/change-case#options\n\t\tconst capitalizedCharacter = capitalCase( character, {\n\t\t\tstripRegexp: /[^A-Z0-9~`,\\.\\\\\\-]/gi,\n\t\t} );\n\n\t\treturn [ ...modifierKeys, capitalizedCharacter ];\n\t};\n} );\n\n/**\n * An object that contains functions to display shortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcut.primary( 'm' );\n * // \"⌘M\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * display shortcuts.\n */\nexport const displayShortcut = mapValues(\n\tdisplayShortcutList,\n\t( shortcutList ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => shortcutList( character, _isApple ).join( '' );\n\t}\n);\n\n/**\n * An object that contains functions to return an aria label for a keyboard\n * shortcut.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * shortcutAriaLabel.primary( '.' );\n * // \"Command + Period\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * shortcut ARIA labels.\n */\nexport const shortcutAriaLabel = mapValues( modifiers, ( modifier ) => {\n\treturn /** @type {WPKeyHandler<string>} */ (\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\tconst isApple = _isApple();\n\t\tconst replacementKeyMap = {\n\t\t\t[ SHIFT ]: 'Shift',\n\t\t\t[ COMMAND ]: isApple ? 'Command' : 'Control',\n\t\t\t[ CTRL ]: 'Control',\n\t\t\t[ ALT ]: isApple ? 'Option' : 'Alt',\n\t\t\t/* translators: comma as in the character ',' */\n\t\t\t',': __( 'Comma' ),\n\t\t\t/* translators: period as in the character '.' */\n\t\t\t'.': __( 'Period' ),\n\t\t\t/* translators: backtick as in the character '`' */\n\t\t\t'`': __( 'Backtick' ),\n\t\t\t/* translators: tilde as in the character '~' */\n\t\t\t'~': __( 'Tilde' ),\n\t\t};\n\n\t\treturn [ ...modifier( _isApple ), character ]\n\t\t\t.map( ( key ) => capitalCase( get( replacementKeyMap, key, key ) ) )\n\t\t\t.join( isApple ? ' ' : ' + ' );\n\t};\n} );\n\n/**\n * From a given KeyboardEvent, returns an array of active modifier constants for\n * the event.\n *\n * @param {KeyboardEvent} event Keyboard event.\n *\n * @return {Array<WPModifierPart>} Active modifier constants.\n */\nfunction getEventModifiers( event ) {\n\treturn /** @type {WPModifierPart[]} */ ( [\n\t\tALT,\n\t\tCTRL,\n\t\tCOMMAND,\n\t\tSHIFT,\n\t] ).filter(\n\t\t( key ) =>\n\t\t\tevent[\n\t\t\t\t/** @type {'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'} */ (\n\t\t\t\t\t`${ key }Key`\n\t\t\t\t)\n\t\t\t]\n\t);\n}\n\n/**\n * An object that contains functions to check if a keyboard event matches a\n * predefined shortcut combination.\n *\n * @example\n * ```js\n * // Assuming an event for ⌘M key press:\n * isKeyboardEvent.primary( event, 'm' );\n * // true\n * ```\n *\n * @type {WPModifierHandler<WPEventKeyHandler>} Keyed map of functions\n * to match events.\n */\nexport const isKeyboardEvent = mapValues( modifiers, ( getModifiers ) => {\n\treturn /** @type {WPEventKeyHandler} */ (\n\t\tevent,\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\tconst mods = getModifiers( _isApple );\n\t\tconst eventMods = getEventModifiers( event );\n\n\t\tconst modsDiff = mods.filter( ( mod ) => ! eventMods.includes( mod ) );\n\t\tconst eventModsDiff = eventMods.filter(\n\t\t\t( mod ) => ! mods.includes( mod )\n\t\t);\n\n\t\tif ( modsDiff.length > 0 || eventModsDiff.length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet key = event.key.toLowerCase();\n\n\t\tif ( ! character ) {\n\t\t\treturn mods.includes( /** @type {WPModifierPart} */ ( key ) );\n\t\t}\n\n\t\tif ( event.altKey && character.length === 1 ) {\n\t\t\tkey = String.fromCharCode( event.keyCode ).toLowerCase();\n\t\t}\n\n\t\t// Replace some characters to match the key indicated\n\t\t// by the shortcut on Windows.\n\t\tif ( ! _isApple() ) {\n\t\t\tif (\n\t\t\t\tevent.shiftKey &&\n\t\t\t\tcharacter.length === 1 &&\n\t\t\t\tevent.code === 'Comma'\n\t\t\t) {\n\t\t\t\tkey = ',';\n\t\t\t}\n\t\t}\n\n\t\t// For backwards compatibility.\n\t\tif ( character === 'del' ) {\n\t\t\tcharacter = 'delete';\n\t\t}\n\n\t\treturn key === character.toLowerCase();\n\t};\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/keycodes/src/index.js"],"names":["BACKSPACE","TAB","ENTER","ESCAPE","SPACE","PAGEUP","PAGEDOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","F10","ALT","CTRL","COMMAND","SHIFT","ZERO","mapValues","object","mapFn","Object","fromEntries","entries","map","key","value","modifiers","primary","_isApple","primaryShift","primaryAlt","secondary","access","ctrl","alt","ctrlShift","shift","shiftAlt","undefined","rawShortcut","modifier","character","isAppleOS","toLowerCase","join","displayShortcutList","isApple","replacementKeyMap","modifierKeys","reduce","accumulator","replacementKey","capitalizedCharacter","stripRegexp","displayShortcut","shortcutList","shortcutAriaLabel","getEventModifiers","event","filter","isKeyboardEvent","getModifiers","mods","eventMods","replacementWithShiftKeyMap","Comma","Backslash","IntlRo","IntlYen","modsDiff","mod","includes","eventModsDiff","length","altKey","String","fromCharCode","keyCode","shiftKey","code"],"mappings":"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","sourcesContent":["/**\n * Note: The order of the modifier keys in many of the [foo]Shortcut()\n * functions in this file are intentional and should not be changed. They're\n * designed to fit with the standard menu keyboard shortcuts shown in the\n * user's platform.\n *\n * For example, on MacOS menu shortcuts will place Shift before Command, but\n * on Windows Control will usually come first. So don't provide your own\n * shortcut combos directly to keyboardShortcut().\n */\n\n/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isAppleOS } from './platform';\n\n/** @typedef {typeof ALT | CTRL | COMMAND | SHIFT } WPModifierPart */\n\n/** @typedef {'primary' | 'primaryShift' | 'primaryAlt' | 'secondary' | 'access' | 'ctrl' | 'alt' | 'ctrlShift' | 'shift' | 'shiftAlt' | 'undefined'} WPKeycodeModifier */\n\n/**\n * An object of handler functions for each of the possible modifier\n * combinations. A handler will return a value for a given key.\n *\n * @template T\n *\n * @typedef {Record<WPKeycodeModifier, T>} WPModifierHandler\n */\n\n/**\n * @template T\n *\n * @typedef {(character: string, isApple?: () => boolean) => T} WPKeyHandler\n */\n/** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */\n\n/** @typedef {( isApple: () => boolean ) => WPModifierPart[]} WPModifier */\n\n/**\n * Keycode for BACKSPACE key.\n */\nexport const BACKSPACE = 8;\n\n/**\n * Keycode for TAB key.\n */\nexport const TAB = 9;\n\n/**\n * Keycode for ENTER key.\n */\nexport const ENTER = 13;\n\n/**\n * Keycode for ESCAPE key.\n */\nexport const ESCAPE = 27;\n\n/**\n * Keycode for SPACE key.\n */\nexport const SPACE = 32;\n\n/**\n * Keycode for PAGEUP key.\n */\nexport const PAGEUP = 33;\n\n/**\n * Keycode for PAGEDOWN key.\n */\nexport const PAGEDOWN = 34;\n\n/**\n * Keycode for END key.\n */\nexport const END = 35;\n\n/**\n * Keycode for HOME key.\n */\nexport const HOME = 36;\n\n/**\n * Keycode for LEFT key.\n */\nexport const LEFT = 37;\n\n/**\n * Keycode for UP key.\n */\nexport const UP = 38;\n\n/**\n * Keycode for RIGHT key.\n */\nexport const RIGHT = 39;\n\n/**\n * Keycode for DOWN key.\n */\nexport const DOWN = 40;\n\n/**\n * Keycode for DELETE key.\n */\nexport const DELETE = 46;\n\n/**\n * Keycode for F10 key.\n */\nexport const F10 = 121;\n\n/**\n * Keycode for ALT key.\n */\nexport const ALT = 'alt';\n\n/**\n * Keycode for CTRL key.\n */\nexport const CTRL = 'ctrl';\n\n/**\n * Keycode for COMMAND/META key.\n */\nexport const COMMAND = 'meta';\n\n/**\n * Keycode for SHIFT key.\n */\nexport const SHIFT = 'shift';\n\n/**\n * Keycode for ZERO key.\n */\nexport const ZERO = 48;\n\nexport { isAppleOS };\n\n/**\n * Map the values of an object with a specified callback and return the result object.\n *\n * @template T\n *\n * @param {T} object Object to map values of.\n * @param {( value: any ) => any} mapFn Mapping function\n *\n * @return {any} Active modifier constants.\n */\nfunction mapValues( object, mapFn ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( object ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tmapFn( value ),\n\t\t] )\n\t);\n}\n\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n *\n * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}\n */\nexport const modifiers = {\n\tprimary: ( _isApple ) => ( _isApple() ? [ COMMAND ] : [ CTRL ] ),\n\tprimaryShift: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, COMMAND ] : [ CTRL, SHIFT ],\n\tprimaryAlt: ( _isApple ) =>\n\t\t_isApple() ? [ ALT, COMMAND ] : [ CTRL, ALT ],\n\tsecondary: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, ALT, COMMAND ] : [ CTRL, SHIFT, ALT ],\n\taccess: ( _isApple ) => ( _isApple() ? [ CTRL, ALT ] : [ SHIFT, ALT ] ),\n\tctrl: () => [ CTRL ],\n\talt: () => [ ALT ],\n\tctrlShift: () => [ CTRL, SHIFT ],\n\tshift: () => [ SHIFT ],\n\tshiftAlt: () => [ SHIFT, ALT ],\n\tundefined: () => [],\n};\n\n/**\n * An object that contains functions to get raw shortcuts.\n *\n * These are intended for user with the KeyboardShortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * rawShortcut.primary( 'm' )\n * // \"meta+m\"\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to raw\n * shortcuts.\n */\nexport const rawShortcut = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ modifier ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\treturn [ ...modifier( _isApple ), character.toLowerCase() ].join(\n\t\t\t\t'+'\n\t\t\t);\n\t\t};\n\t}\n);\n\n/**\n * Return an array of the parts of a keyboard shortcut chord for display.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcutList.primary( 'm' );\n * // [ \"⌘\", \"M\" ]\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string[]>>} Keyed map of functions to\n * shortcut sequences.\n */\nexport const displayShortcutList = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ modifier ) => {\n\t\treturn /** @type {WPKeyHandler<string[]>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\tconst isApple = _isApple();\n\t\t\tconst replacementKeyMap = {\n\t\t\t\t[ ALT ]: isApple ? '⌥' : 'Alt',\n\t\t\t\t[ CTRL ]: isApple ? '⌃' : 'Ctrl', // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.\n\t\t\t\t[ COMMAND ]: '⌘',\n\t\t\t\t[ SHIFT ]: isApple ? '⇧' : 'Shift',\n\t\t\t};\n\n\t\t\tconst modifierKeys = modifier( _isApple ).reduce(\n\t\t\t\t( accumulator, key ) => {\n\t\t\t\t\tconst replacementKey = replacementKeyMap[ key ] ?? key;\n\t\t\t\t\t// If on the Mac, adhere to platform convention and don't show plus between keys.\n\t\t\t\t\tif ( isApple ) {\n\t\t\t\t\t\treturn [ ...accumulator, replacementKey ];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [ ...accumulator, replacementKey, '+' ];\n\t\t\t\t},\n\t\t\t\t/** @type {string[]} */ ( [] )\n\t\t\t);\n\n\t\t\t// Symbols (~`,.) are removed by the default regular expression,\n\t\t\t// so override the rule to allow symbols used for shortcuts.\n\t\t\t// see: https://github.com/blakeembrey/change-case#options\n\t\t\tconst capitalizedCharacter = capitalCase( character, {\n\t\t\t\tstripRegexp: /[^A-Z0-9~`,\\.\\\\\\-]/gi,\n\t\t\t} );\n\n\t\t\treturn [ ...modifierKeys, capitalizedCharacter ];\n\t\t};\n\t}\n);\n\n/**\n * An object that contains functions to display shortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcut.primary( 'm' );\n * // \"⌘M\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * display shortcuts.\n */\nexport const displayShortcut = mapValues(\n\tdisplayShortcutList,\n\t( /** @type {WPKeyHandler<string[]>} */ shortcutList ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => shortcutList( character, _isApple ).join( '' );\n\t}\n);\n\n/**\n * An object that contains functions to return an aria label for a keyboard\n * shortcut.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * shortcutAriaLabel.primary( '.' );\n * // \"Command + Period\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * shortcut ARIA labels.\n */\nexport const shortcutAriaLabel = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ modifier ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\tconst isApple = _isApple();\n\t\t\t/** @type {Record<string,string>} */\n\t\t\tconst replacementKeyMap = {\n\t\t\t\t[ SHIFT ]: 'Shift',\n\t\t\t\t[ COMMAND ]: isApple ? 'Command' : 'Control',\n\t\t\t\t[ CTRL ]: 'Control',\n\t\t\t\t[ ALT ]: isApple ? 'Option' : 'Alt',\n\t\t\t\t/* translators: comma as in the character ',' */\n\t\t\t\t',': __( 'Comma' ),\n\t\t\t\t/* translators: period as in the character '.' */\n\t\t\t\t'.': __( 'Period' ),\n\t\t\t\t/* translators: backtick as in the character '`' */\n\t\t\t\t'`': __( 'Backtick' ),\n\t\t\t\t/* translators: tilde as in the character '~' */\n\t\t\t\t'~': __( 'Tilde' ),\n\t\t\t};\n\n\t\t\treturn [ ...modifier( _isApple ), character ]\n\t\t\t\t.map( ( key ) =>\n\t\t\t\t\tcapitalCase( replacementKeyMap[ key ] ?? key )\n\t\t\t\t)\n\t\t\t\t.join( isApple ? ' ' : ' + ' );\n\t\t};\n\t}\n);\n\n/**\n * From a given KeyboardEvent, returns an array of active modifier constants for\n * the event.\n *\n * @param {KeyboardEvent} event Keyboard event.\n *\n * @return {Array<WPModifierPart>} Active modifier constants.\n */\nfunction getEventModifiers( event ) {\n\treturn /** @type {WPModifierPart[]} */ ( [\n\t\tALT,\n\t\tCTRL,\n\t\tCOMMAND,\n\t\tSHIFT,\n\t] ).filter(\n\t\t( key ) =>\n\t\t\tevent[\n\t\t\t\t/** @type {'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'} */ (\n\t\t\t\t\t`${ key }Key`\n\t\t\t\t)\n\t\t\t]\n\t);\n}\n\n/**\n * An object that contains functions to check if a keyboard event matches a\n * predefined shortcut combination.\n *\n * @example\n * ```js\n * // Assuming an event for ⌘M key press:\n * isKeyboardEvent.primary( event, 'm' );\n * // true\n * ```\n *\n * @type {WPModifierHandler<WPEventKeyHandler>} Keyed map of functions\n * to match events.\n */\nexport const isKeyboardEvent = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ getModifiers ) => {\n\t\treturn /** @type {WPEventKeyHandler} */ (\n\t\t\tevent,\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\tconst mods = getModifiers( _isApple );\n\t\t\tconst eventMods = getEventModifiers( event );\n\t\t\t/** @type {Record<string,string>} */\n\t\t\tconst replacementWithShiftKeyMap = {\n\t\t\t\tComma: ',',\n\t\t\t\tBackslash: '\\\\',\n\t\t\t\t// Windows returns `\\` for both IntlRo and IntlYen.\n\t\t\t\tIntlRo: '\\\\',\n\t\t\t\tIntlYen: '\\\\',\n\t\t\t};\n\n\t\t\tconst modsDiff = mods.filter(\n\t\t\t\t( mod ) => ! eventMods.includes( mod )\n\t\t\t);\n\t\t\tconst eventModsDiff = eventMods.filter(\n\t\t\t\t( mod ) => ! mods.includes( mod )\n\t\t\t);\n\n\t\t\tif ( modsDiff.length > 0 || eventModsDiff.length > 0 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet key = event.key.toLowerCase();\n\n\t\t\tif ( ! character ) {\n\t\t\t\treturn mods.includes( /** @type {WPModifierPart} */ ( key ) );\n\t\t\t}\n\n\t\t\tif ( event.altKey && character.length === 1 ) {\n\t\t\t\tkey = String.fromCharCode( event.keyCode ).toLowerCase();\n\t\t\t}\n\n\t\t\t// `event.key` returns the value of the key pressed, taking into the state of\n\t\t\t// modifier keys such as `Shift`. If the shift key is pressed, a different\n\t\t\t// value may be returned depending on the keyboard layout. It is necessary to\n\t\t\t// convert to the physical key value that don't take into account keyboard\n\t\t\t// layout or modifier key state.\n\t\t\tif (\n\t\t\t\tevent.shiftKey &&\n\t\t\t\tcharacter.length === 1 &&\n\t\t\t\treplacementWithShiftKeyMap[ event.code ]\n\t\t\t) {\n\t\t\t\tkey = replacementWithShiftKeyMap[ event.code ];\n\t\t\t}\n\n\t\t\t// For backwards compatibility.\n\t\t\tif ( character === 'del' ) {\n\t\t\t\tcharacter = 'delete';\n\t\t\t}\n\n\t\t\treturn key === character.toLowerCase();\n\t\t};\n\t}\n);\n"]}
@@ -13,7 +13,6 @@
13
13
  * External dependencies
14
14
  */
15
15
  import { capitalCase } from 'change-case';
16
- import { get, mapValues } from 'lodash';
17
16
  /**
18
17
  * WordPress dependencies
19
18
  */
@@ -45,6 +44,8 @@ import { isAppleOS } from './platform';
45
44
 
46
45
  /** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */
47
46
 
47
+ /** @typedef {( isApple: () => boolean ) => WPModifierPart[]} WPModifier */
48
+
48
49
  /**
49
50
  * Keycode for BACKSPACE key.
50
51
  */
@@ -146,6 +147,23 @@ export const SHIFT = 'shift';
146
147
 
147
148
  export const ZERO = 48;
148
149
  export { isAppleOS };
150
+ /**
151
+ * Map the values of an object with a specified callback and return the result object.
152
+ *
153
+ * @template T
154
+ *
155
+ * @param {T} object Object to map values of.
156
+ * @param {( value: any ) => any} mapFn Mapping function
157
+ *
158
+ * @return {any} Active modifier constants.
159
+ */
160
+
161
+ function mapValues(object, mapFn) {
162
+ return Object.fromEntries(Object.entries(object).map(_ref => {
163
+ let [key, value] = _ref;
164
+ return [key, mapFn(value)];
165
+ }));
166
+ }
149
167
  /**
150
168
  * Object that contains functions that return the available modifier
151
169
  * depending on platform.
@@ -153,6 +171,7 @@ export { isAppleOS };
153
171
  * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}
154
172
  */
155
173
 
174
+
156
175
  export const modifiers = {
157
176
  primary: _isApple => _isApple() ? [COMMAND] : [CTRL],
158
177
  primaryShift: _isApple => _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT],
@@ -182,7 +201,9 @@ export const modifiers = {
182
201
  * shortcuts.
183
202
  */
184
203
 
185
- export const rawShortcut = mapValues(modifiers, modifier => {
204
+ export const rawShortcut = mapValues(modifiers, (
205
+ /** @type {WPModifier} */
206
+ modifier) => {
186
207
  return (
187
208
  /** @type {WPKeyHandler<string>} */
188
209
  function (character) {
@@ -206,7 +227,9 @@ export const rawShortcut = mapValues(modifiers, modifier => {
206
227
  * shortcut sequences.
207
228
  */
208
229
 
209
- export const displayShortcutList = mapValues(modifiers, modifier => {
230
+ export const displayShortcutList = mapValues(modifiers, (
231
+ /** @type {WPModifier} */
232
+ modifier) => {
210
233
  return (
211
234
  /** @type {WPKeyHandler<string[]>} */
212
235
  function (character) {
@@ -222,7 +245,9 @@ export const displayShortcutList = mapValues(modifiers, modifier => {
222
245
  [SHIFT]: isApple ? '⇧' : 'Shift'
223
246
  };
224
247
  const modifierKeys = modifier(_isApple).reduce((accumulator, key) => {
225
- const replacementKey = get(replacementKeyMap, key, key); // If on the Mac, adhere to platform convention and don't show plus between keys.
248
+ var _replacementKeyMap$ke;
249
+
250
+ const replacementKey = (_replacementKeyMap$ke = replacementKeyMap[key]) !== null && _replacementKeyMap$ke !== void 0 ? _replacementKeyMap$ke : key; // If on the Mac, adhere to platform convention and don't show plus between keys.
226
251
 
227
252
  if (isApple) {
228
253
  return [...accumulator, replacementKey];
@@ -256,7 +281,9 @@ export const displayShortcutList = mapValues(modifiers, modifier => {
256
281
  * display shortcuts.
257
282
  */
258
283
 
259
- export const displayShortcut = mapValues(displayShortcutList, shortcutList => {
284
+ export const displayShortcut = mapValues(displayShortcutList, (
285
+ /** @type {WPKeyHandler<string[]>} */
286
+ shortcutList) => {
260
287
  return (
261
288
  /** @type {WPKeyHandler<string>} */
262
289
  function (character) {
@@ -281,13 +308,17 @@ export const displayShortcut = mapValues(displayShortcutList, shortcutList => {
281
308
  * shortcut ARIA labels.
282
309
  */
283
310
 
284
- export const shortcutAriaLabel = mapValues(modifiers, modifier => {
311
+ export const shortcutAriaLabel = mapValues(modifiers, (
312
+ /** @type {WPModifier} */
313
+ modifier) => {
285
314
  return (
286
315
  /** @type {WPKeyHandler<string>} */
287
316
  function (character) {
288
317
  let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
289
318
 
290
319
  const isApple = _isApple();
320
+ /** @type {Record<string,string>} */
321
+
291
322
 
292
323
  const replacementKeyMap = {
293
324
  [SHIFT]: 'Shift',
@@ -307,7 +338,11 @@ export const shortcutAriaLabel = mapValues(modifiers, modifier => {
307
338
  /* translators: tilde as in the character '~' */
308
339
  '~': __('Tilde')
309
340
  };
310
- return [...modifier(_isApple), character].map(key => capitalCase(get(replacementKeyMap, key, key))).join(isApple ? ' ' : ' + ');
341
+ return [...modifier(_isApple), character].map(key => {
342
+ var _replacementKeyMap$ke2;
343
+
344
+ return capitalCase((_replacementKeyMap$ke2 = replacementKeyMap[key]) !== null && _replacementKeyMap$ke2 !== void 0 ? _replacementKeyMap$ke2 : key);
345
+ }).join(isApple ? ' ' : ' + ');
311
346
  }
312
347
  );
313
348
  });
@@ -344,7 +379,9 @@ function getEventModifiers(event) {
344
379
  */
345
380
 
346
381
 
347
- export const isKeyboardEvent = mapValues(modifiers, getModifiers => {
382
+ export const isKeyboardEvent = mapValues(modifiers, (
383
+ /** @type {WPModifier} */
384
+ getModifiers) => {
348
385
  return (
349
386
  /** @type {WPEventKeyHandler} */
350
387
  function (event, character) {
@@ -352,6 +389,15 @@ export const isKeyboardEvent = mapValues(modifiers, getModifiers => {
352
389
 
353
390
  const mods = getModifiers(_isApple);
354
391
  const eventMods = getEventModifiers(event);
392
+ /** @type {Record<string,string>} */
393
+
394
+ const replacementWithShiftKeyMap = {
395
+ Comma: ',',
396
+ Backslash: '\\',
397
+ // Windows returns `\` for both IntlRo and IntlYen.
398
+ IntlRo: '\\',
399
+ IntlYen: '\\'
400
+ };
355
401
  const modsDiff = mods.filter(mod => !eventMods.includes(mod));
356
402
  const eventModsDiff = eventMods.filter(mod => !mods.includes(mod));
357
403
 
@@ -369,14 +415,15 @@ export const isKeyboardEvent = mapValues(modifiers, getModifiers => {
369
415
 
370
416
  if (event.altKey && character.length === 1) {
371
417
  key = String.fromCharCode(event.keyCode).toLowerCase();
372
- } // Replace some characters to match the key indicated
373
- // by the shortcut on Windows.
418
+ } // `event.key` returns the value of the key pressed, taking into the state of
419
+ // modifier keys such as `Shift`. If the shift key is pressed, a different
420
+ // value may be returned depending on the keyboard layout. It is necessary to
421
+ // convert to the physical key value that don't take into account keyboard
422
+ // layout or modifier key state.
374
423
 
375
424
 
376
- if (!_isApple()) {
377
- if (event.shiftKey && character.length === 1 && event.code === 'Comma') {
378
- key = ',';
379
- }
425
+ if (event.shiftKey && character.length === 1 && replacementWithShiftKeyMap[event.code]) {
426
+ key = replacementWithShiftKeyMap[event.code];
380
427
  } // For backwards compatibility.
381
428
 
382
429
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/keycodes/src/index.js"],"names":["capitalCase","get","mapValues","__","isAppleOS","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","PAGEUP","PAGEDOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","F10","ALT","CTRL","COMMAND","SHIFT","ZERO","modifiers","primary","_isApple","primaryShift","primaryAlt","secondary","access","ctrl","alt","ctrlShift","shift","shiftAlt","undefined","rawShortcut","modifier","character","toLowerCase","join","displayShortcutList","isApple","replacementKeyMap","modifierKeys","reduce","accumulator","key","replacementKey","capitalizedCharacter","stripRegexp","displayShortcut","shortcutList","shortcutAriaLabel","map","getEventModifiers","event","filter","isKeyboardEvent","getModifiers","mods","eventMods","modsDiff","mod","includes","eventModsDiff","length","altKey","String","fromCharCode","keyCode","shiftKey","code"],"mappings":"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","sourcesContent":["/**\n * Note: The order of the modifier keys in many of the [foo]Shortcut()\n * functions in this file are intentional and should not be changed. They're\n * designed to fit with the standard menu keyboard shortcuts shown in the\n * user's platform.\n *\n * For example, on MacOS menu shortcuts will place Shift before Command, but\n * on Windows Control will usually come first. So don't provide your own\n * shortcut combos directly to keyboardShortcut().\n */\n\n/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\nimport { get, mapValues } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isAppleOS } from './platform';\n\n/** @typedef {typeof ALT | CTRL | COMMAND | SHIFT } WPModifierPart */\n\n/** @typedef {'primary' | 'primaryShift' | 'primaryAlt' | 'secondary' | 'access' | 'ctrl' | 'alt' | 'ctrlShift' | 'shift' | 'shiftAlt' | 'undefined'} WPKeycodeModifier */\n\n/**\n * An object of handler functions for each of the possible modifier\n * combinations. A handler will return a value for a given key.\n *\n * @template T\n *\n * @typedef {Record<WPKeycodeModifier, T>} WPModifierHandler\n */\n\n/**\n * @template T\n *\n * @typedef {(character: string, isApple?: () => boolean) => T} WPKeyHandler\n */\n/** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */\n\n/**\n * Keycode for BACKSPACE key.\n */\nexport const BACKSPACE = 8;\n\n/**\n * Keycode for TAB key.\n */\nexport const TAB = 9;\n\n/**\n * Keycode for ENTER key.\n */\nexport const ENTER = 13;\n\n/**\n * Keycode for ESCAPE key.\n */\nexport const ESCAPE = 27;\n\n/**\n * Keycode for SPACE key.\n */\nexport const SPACE = 32;\n\n/**\n * Keycode for PAGEUP key.\n */\nexport const PAGEUP = 33;\n\n/**\n * Keycode for PAGEDOWN key.\n */\nexport const PAGEDOWN = 34;\n\n/**\n * Keycode for END key.\n */\nexport const END = 35;\n\n/**\n * Keycode for HOME key.\n */\nexport const HOME = 36;\n\n/**\n * Keycode for LEFT key.\n */\nexport const LEFT = 37;\n\n/**\n * Keycode for UP key.\n */\nexport const UP = 38;\n\n/**\n * Keycode for RIGHT key.\n */\nexport const RIGHT = 39;\n\n/**\n * Keycode for DOWN key.\n */\nexport const DOWN = 40;\n\n/**\n * Keycode for DELETE key.\n */\nexport const DELETE = 46;\n\n/**\n * Keycode for F10 key.\n */\nexport const F10 = 121;\n\n/**\n * Keycode for ALT key.\n */\nexport const ALT = 'alt';\n\n/**\n * Keycode for CTRL key.\n */\nexport const CTRL = 'ctrl';\n\n/**\n * Keycode for COMMAND/META key.\n */\nexport const COMMAND = 'meta';\n\n/**\n * Keycode for SHIFT key.\n */\nexport const SHIFT = 'shift';\n\n/**\n * Keycode for ZERO key.\n */\nexport const ZERO = 48;\n\nexport { isAppleOS };\n\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n *\n * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}\n */\nexport const modifiers = {\n\tprimary: ( _isApple ) => ( _isApple() ? [ COMMAND ] : [ CTRL ] ),\n\tprimaryShift: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, COMMAND ] : [ CTRL, SHIFT ],\n\tprimaryAlt: ( _isApple ) =>\n\t\t_isApple() ? [ ALT, COMMAND ] : [ CTRL, ALT ],\n\tsecondary: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, ALT, COMMAND ] : [ CTRL, SHIFT, ALT ],\n\taccess: ( _isApple ) => ( _isApple() ? [ CTRL, ALT ] : [ SHIFT, ALT ] ),\n\tctrl: () => [ CTRL ],\n\talt: () => [ ALT ],\n\tctrlShift: () => [ CTRL, SHIFT ],\n\tshift: () => [ SHIFT ],\n\tshiftAlt: () => [ SHIFT, ALT ],\n\tundefined: () => [],\n};\n\n/**\n * An object that contains functions to get raw shortcuts.\n *\n * These are intended for user with the KeyboardShortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * rawShortcut.primary( 'm' )\n * // \"meta+m\"\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to raw\n * shortcuts.\n */\nexport const rawShortcut = mapValues( modifiers, ( modifier ) => {\n\treturn /** @type {WPKeyHandler<string>} */ (\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\treturn [ ...modifier( _isApple ), character.toLowerCase() ].join( '+' );\n\t};\n} );\n\n/**\n * Return an array of the parts of a keyboard shortcut chord for display.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcutList.primary( 'm' );\n * // [ \"⌘\", \"M\" ]\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string[]>>} Keyed map of functions to\n * shortcut sequences.\n */\nexport const displayShortcutList = mapValues( modifiers, ( modifier ) => {\n\treturn /** @type {WPKeyHandler<string[]>} */ (\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\tconst isApple = _isApple();\n\t\tconst replacementKeyMap = {\n\t\t\t[ ALT ]: isApple ? '⌥' : 'Alt',\n\t\t\t[ CTRL ]: isApple ? '⌃' : 'Ctrl', // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.\n\t\t\t[ COMMAND ]: '⌘',\n\t\t\t[ SHIFT ]: isApple ? '⇧' : 'Shift',\n\t\t};\n\n\t\tconst modifierKeys = modifier( _isApple ).reduce(\n\t\t\t( accumulator, key ) => {\n\t\t\t\tconst replacementKey = get( replacementKeyMap, key, key );\n\t\t\t\t// If on the Mac, adhere to platform convention and don't show plus between keys.\n\t\t\t\tif ( isApple ) {\n\t\t\t\t\treturn [ ...accumulator, replacementKey ];\n\t\t\t\t}\n\n\t\t\t\treturn [ ...accumulator, replacementKey, '+' ];\n\t\t\t},\n\t\t\t/** @type {string[]} */ ( [] )\n\t\t);\n\n\t\t// Symbols (~`,.) are removed by the default regular expression,\n\t\t// so override the rule to allow symbols used for shortcuts.\n\t\t// see: https://github.com/blakeembrey/change-case#options\n\t\tconst capitalizedCharacter = capitalCase( character, {\n\t\t\tstripRegexp: /[^A-Z0-9~`,\\.\\\\\\-]/gi,\n\t\t} );\n\n\t\treturn [ ...modifierKeys, capitalizedCharacter ];\n\t};\n} );\n\n/**\n * An object that contains functions to display shortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcut.primary( 'm' );\n * // \"⌘M\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * display shortcuts.\n */\nexport const displayShortcut = mapValues(\n\tdisplayShortcutList,\n\t( shortcutList ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => shortcutList( character, _isApple ).join( '' );\n\t}\n);\n\n/**\n * An object that contains functions to return an aria label for a keyboard\n * shortcut.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * shortcutAriaLabel.primary( '.' );\n * // \"Command + Period\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * shortcut ARIA labels.\n */\nexport const shortcutAriaLabel = mapValues( modifiers, ( modifier ) => {\n\treturn /** @type {WPKeyHandler<string>} */ (\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\tconst isApple = _isApple();\n\t\tconst replacementKeyMap = {\n\t\t\t[ SHIFT ]: 'Shift',\n\t\t\t[ COMMAND ]: isApple ? 'Command' : 'Control',\n\t\t\t[ CTRL ]: 'Control',\n\t\t\t[ ALT ]: isApple ? 'Option' : 'Alt',\n\t\t\t/* translators: comma as in the character ',' */\n\t\t\t',': __( 'Comma' ),\n\t\t\t/* translators: period as in the character '.' */\n\t\t\t'.': __( 'Period' ),\n\t\t\t/* translators: backtick as in the character '`' */\n\t\t\t'`': __( 'Backtick' ),\n\t\t\t/* translators: tilde as in the character '~' */\n\t\t\t'~': __( 'Tilde' ),\n\t\t};\n\n\t\treturn [ ...modifier( _isApple ), character ]\n\t\t\t.map( ( key ) => capitalCase( get( replacementKeyMap, key, key ) ) )\n\t\t\t.join( isApple ? ' ' : ' + ' );\n\t};\n} );\n\n/**\n * From a given KeyboardEvent, returns an array of active modifier constants for\n * the event.\n *\n * @param {KeyboardEvent} event Keyboard event.\n *\n * @return {Array<WPModifierPart>} Active modifier constants.\n */\nfunction getEventModifiers( event ) {\n\treturn /** @type {WPModifierPart[]} */ ( [\n\t\tALT,\n\t\tCTRL,\n\t\tCOMMAND,\n\t\tSHIFT,\n\t] ).filter(\n\t\t( key ) =>\n\t\t\tevent[\n\t\t\t\t/** @type {'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'} */ (\n\t\t\t\t\t`${ key }Key`\n\t\t\t\t)\n\t\t\t]\n\t);\n}\n\n/**\n * An object that contains functions to check if a keyboard event matches a\n * predefined shortcut combination.\n *\n * @example\n * ```js\n * // Assuming an event for ⌘M key press:\n * isKeyboardEvent.primary( event, 'm' );\n * // true\n * ```\n *\n * @type {WPModifierHandler<WPEventKeyHandler>} Keyed map of functions\n * to match events.\n */\nexport const isKeyboardEvent = mapValues( modifiers, ( getModifiers ) => {\n\treturn /** @type {WPEventKeyHandler} */ (\n\t\tevent,\n\t\tcharacter,\n\t\t_isApple = isAppleOS\n\t) => {\n\t\tconst mods = getModifiers( _isApple );\n\t\tconst eventMods = getEventModifiers( event );\n\n\t\tconst modsDiff = mods.filter( ( mod ) => ! eventMods.includes( mod ) );\n\t\tconst eventModsDiff = eventMods.filter(\n\t\t\t( mod ) => ! mods.includes( mod )\n\t\t);\n\n\t\tif ( modsDiff.length > 0 || eventModsDiff.length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet key = event.key.toLowerCase();\n\n\t\tif ( ! character ) {\n\t\t\treturn mods.includes( /** @type {WPModifierPart} */ ( key ) );\n\t\t}\n\n\t\tif ( event.altKey && character.length === 1 ) {\n\t\t\tkey = String.fromCharCode( event.keyCode ).toLowerCase();\n\t\t}\n\n\t\t// Replace some characters to match the key indicated\n\t\t// by the shortcut on Windows.\n\t\tif ( ! _isApple() ) {\n\t\t\tif (\n\t\t\t\tevent.shiftKey &&\n\t\t\t\tcharacter.length === 1 &&\n\t\t\t\tevent.code === 'Comma'\n\t\t\t) {\n\t\t\t\tkey = ',';\n\t\t\t}\n\t\t}\n\n\t\t// For backwards compatibility.\n\t\tif ( character === 'del' ) {\n\t\t\tcharacter = 'delete';\n\t\t}\n\n\t\treturn key === character.toLowerCase();\n\t};\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/keycodes/src/index.js"],"names":["capitalCase","__","isAppleOS","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","PAGEUP","PAGEDOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","F10","ALT","CTRL","COMMAND","SHIFT","ZERO","mapValues","object","mapFn","Object","fromEntries","entries","map","key","value","modifiers","primary","_isApple","primaryShift","primaryAlt","secondary","access","ctrl","alt","ctrlShift","shift","shiftAlt","undefined","rawShortcut","modifier","character","toLowerCase","join","displayShortcutList","isApple","replacementKeyMap","modifierKeys","reduce","accumulator","replacementKey","capitalizedCharacter","stripRegexp","displayShortcut","shortcutList","shortcutAriaLabel","getEventModifiers","event","filter","isKeyboardEvent","getModifiers","mods","eventMods","replacementWithShiftKeyMap","Comma","Backslash","IntlRo","IntlYen","modsDiff","mod","includes","eventModsDiff","length","altKey","String","fromCharCode","keyCode","shiftKey","code"],"mappings":"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","sourcesContent":["/**\n * Note: The order of the modifier keys in many of the [foo]Shortcut()\n * functions in this file are intentional and should not be changed. They're\n * designed to fit with the standard menu keyboard shortcuts shown in the\n * user's platform.\n *\n * For example, on MacOS menu shortcuts will place Shift before Command, but\n * on Windows Control will usually come first. So don't provide your own\n * shortcut combos directly to keyboardShortcut().\n */\n\n/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isAppleOS } from './platform';\n\n/** @typedef {typeof ALT | CTRL | COMMAND | SHIFT } WPModifierPart */\n\n/** @typedef {'primary' | 'primaryShift' | 'primaryAlt' | 'secondary' | 'access' | 'ctrl' | 'alt' | 'ctrlShift' | 'shift' | 'shiftAlt' | 'undefined'} WPKeycodeModifier */\n\n/**\n * An object of handler functions for each of the possible modifier\n * combinations. A handler will return a value for a given key.\n *\n * @template T\n *\n * @typedef {Record<WPKeycodeModifier, T>} WPModifierHandler\n */\n\n/**\n * @template T\n *\n * @typedef {(character: string, isApple?: () => boolean) => T} WPKeyHandler\n */\n/** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */\n\n/** @typedef {( isApple: () => boolean ) => WPModifierPart[]} WPModifier */\n\n/**\n * Keycode for BACKSPACE key.\n */\nexport const BACKSPACE = 8;\n\n/**\n * Keycode for TAB key.\n */\nexport const TAB = 9;\n\n/**\n * Keycode for ENTER key.\n */\nexport const ENTER = 13;\n\n/**\n * Keycode for ESCAPE key.\n */\nexport const ESCAPE = 27;\n\n/**\n * Keycode for SPACE key.\n */\nexport const SPACE = 32;\n\n/**\n * Keycode for PAGEUP key.\n */\nexport const PAGEUP = 33;\n\n/**\n * Keycode for PAGEDOWN key.\n */\nexport const PAGEDOWN = 34;\n\n/**\n * Keycode for END key.\n */\nexport const END = 35;\n\n/**\n * Keycode for HOME key.\n */\nexport const HOME = 36;\n\n/**\n * Keycode for LEFT key.\n */\nexport const LEFT = 37;\n\n/**\n * Keycode for UP key.\n */\nexport const UP = 38;\n\n/**\n * Keycode for RIGHT key.\n */\nexport const RIGHT = 39;\n\n/**\n * Keycode for DOWN key.\n */\nexport const DOWN = 40;\n\n/**\n * Keycode for DELETE key.\n */\nexport const DELETE = 46;\n\n/**\n * Keycode for F10 key.\n */\nexport const F10 = 121;\n\n/**\n * Keycode for ALT key.\n */\nexport const ALT = 'alt';\n\n/**\n * Keycode for CTRL key.\n */\nexport const CTRL = 'ctrl';\n\n/**\n * Keycode for COMMAND/META key.\n */\nexport const COMMAND = 'meta';\n\n/**\n * Keycode for SHIFT key.\n */\nexport const SHIFT = 'shift';\n\n/**\n * Keycode for ZERO key.\n */\nexport const ZERO = 48;\n\nexport { isAppleOS };\n\n/**\n * Map the values of an object with a specified callback and return the result object.\n *\n * @template T\n *\n * @param {T} object Object to map values of.\n * @param {( value: any ) => any} mapFn Mapping function\n *\n * @return {any} Active modifier constants.\n */\nfunction mapValues( object, mapFn ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( object ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tmapFn( value ),\n\t\t] )\n\t);\n}\n\n/**\n * Object that contains functions that return the available modifier\n * depending on platform.\n *\n * @type {WPModifierHandler< ( isApple: () => boolean ) => WPModifierPart[]>}\n */\nexport const modifiers = {\n\tprimary: ( _isApple ) => ( _isApple() ? [ COMMAND ] : [ CTRL ] ),\n\tprimaryShift: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, COMMAND ] : [ CTRL, SHIFT ],\n\tprimaryAlt: ( _isApple ) =>\n\t\t_isApple() ? [ ALT, COMMAND ] : [ CTRL, ALT ],\n\tsecondary: ( _isApple ) =>\n\t\t_isApple() ? [ SHIFT, ALT, COMMAND ] : [ CTRL, SHIFT, ALT ],\n\taccess: ( _isApple ) => ( _isApple() ? [ CTRL, ALT ] : [ SHIFT, ALT ] ),\n\tctrl: () => [ CTRL ],\n\talt: () => [ ALT ],\n\tctrlShift: () => [ CTRL, SHIFT ],\n\tshift: () => [ SHIFT ],\n\tshiftAlt: () => [ SHIFT, ALT ],\n\tundefined: () => [],\n};\n\n/**\n * An object that contains functions to get raw shortcuts.\n *\n * These are intended for user with the KeyboardShortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * rawShortcut.primary( 'm' )\n * // \"meta+m\"\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to raw\n * shortcuts.\n */\nexport const rawShortcut = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ modifier ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\treturn [ ...modifier( _isApple ), character.toLowerCase() ].join(\n\t\t\t\t'+'\n\t\t\t);\n\t\t};\n\t}\n);\n\n/**\n * Return an array of the parts of a keyboard shortcut chord for display.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcutList.primary( 'm' );\n * // [ \"⌘\", \"M\" ]\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string[]>>} Keyed map of functions to\n * shortcut sequences.\n */\nexport const displayShortcutList = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ modifier ) => {\n\t\treturn /** @type {WPKeyHandler<string[]>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\tconst isApple = _isApple();\n\t\t\tconst replacementKeyMap = {\n\t\t\t\t[ ALT ]: isApple ? '⌥' : 'Alt',\n\t\t\t\t[ CTRL ]: isApple ? '⌃' : 'Ctrl', // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.\n\t\t\t\t[ COMMAND ]: '⌘',\n\t\t\t\t[ SHIFT ]: isApple ? '⇧' : 'Shift',\n\t\t\t};\n\n\t\t\tconst modifierKeys = modifier( _isApple ).reduce(\n\t\t\t\t( accumulator, key ) => {\n\t\t\t\t\tconst replacementKey = replacementKeyMap[ key ] ?? key;\n\t\t\t\t\t// If on the Mac, adhere to platform convention and don't show plus between keys.\n\t\t\t\t\tif ( isApple ) {\n\t\t\t\t\t\treturn [ ...accumulator, replacementKey ];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [ ...accumulator, replacementKey, '+' ];\n\t\t\t\t},\n\t\t\t\t/** @type {string[]} */ ( [] )\n\t\t\t);\n\n\t\t\t// Symbols (~`,.) are removed by the default regular expression,\n\t\t\t// so override the rule to allow symbols used for shortcuts.\n\t\t\t// see: https://github.com/blakeembrey/change-case#options\n\t\t\tconst capitalizedCharacter = capitalCase( character, {\n\t\t\t\tstripRegexp: /[^A-Z0-9~`,\\.\\\\\\-]/gi,\n\t\t\t} );\n\n\t\t\treturn [ ...modifierKeys, capitalizedCharacter ];\n\t\t};\n\t}\n);\n\n/**\n * An object that contains functions to display shortcuts.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * displayShortcut.primary( 'm' );\n * // \"⌘M\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * display shortcuts.\n */\nexport const displayShortcut = mapValues(\n\tdisplayShortcutList,\n\t( /** @type {WPKeyHandler<string[]>} */ shortcutList ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => shortcutList( character, _isApple ).join( '' );\n\t}\n);\n\n/**\n * An object that contains functions to return an aria label for a keyboard\n * shortcut.\n *\n * @example\n * ```js\n * // Assuming macOS:\n * shortcutAriaLabel.primary( '.' );\n * // \"Command + Period\"\n * ```\n *\n * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to\n * shortcut ARIA labels.\n */\nexport const shortcutAriaLabel = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ modifier ) => {\n\t\treturn /** @type {WPKeyHandler<string>} */ (\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\tconst isApple = _isApple();\n\t\t\t/** @type {Record<string,string>} */\n\t\t\tconst replacementKeyMap = {\n\t\t\t\t[ SHIFT ]: 'Shift',\n\t\t\t\t[ COMMAND ]: isApple ? 'Command' : 'Control',\n\t\t\t\t[ CTRL ]: 'Control',\n\t\t\t\t[ ALT ]: isApple ? 'Option' : 'Alt',\n\t\t\t\t/* translators: comma as in the character ',' */\n\t\t\t\t',': __( 'Comma' ),\n\t\t\t\t/* translators: period as in the character '.' */\n\t\t\t\t'.': __( 'Period' ),\n\t\t\t\t/* translators: backtick as in the character '`' */\n\t\t\t\t'`': __( 'Backtick' ),\n\t\t\t\t/* translators: tilde as in the character '~' */\n\t\t\t\t'~': __( 'Tilde' ),\n\t\t\t};\n\n\t\t\treturn [ ...modifier( _isApple ), character ]\n\t\t\t\t.map( ( key ) =>\n\t\t\t\t\tcapitalCase( replacementKeyMap[ key ] ?? key )\n\t\t\t\t)\n\t\t\t\t.join( isApple ? ' ' : ' + ' );\n\t\t};\n\t}\n);\n\n/**\n * From a given KeyboardEvent, returns an array of active modifier constants for\n * the event.\n *\n * @param {KeyboardEvent} event Keyboard event.\n *\n * @return {Array<WPModifierPart>} Active modifier constants.\n */\nfunction getEventModifiers( event ) {\n\treturn /** @type {WPModifierPart[]} */ ( [\n\t\tALT,\n\t\tCTRL,\n\t\tCOMMAND,\n\t\tSHIFT,\n\t] ).filter(\n\t\t( key ) =>\n\t\t\tevent[\n\t\t\t\t/** @type {'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'} */ (\n\t\t\t\t\t`${ key }Key`\n\t\t\t\t)\n\t\t\t]\n\t);\n}\n\n/**\n * An object that contains functions to check if a keyboard event matches a\n * predefined shortcut combination.\n *\n * @example\n * ```js\n * // Assuming an event for ⌘M key press:\n * isKeyboardEvent.primary( event, 'm' );\n * // true\n * ```\n *\n * @type {WPModifierHandler<WPEventKeyHandler>} Keyed map of functions\n * to match events.\n */\nexport const isKeyboardEvent = mapValues(\n\tmodifiers,\n\t( /** @type {WPModifier} */ getModifiers ) => {\n\t\treturn /** @type {WPEventKeyHandler} */ (\n\t\t\tevent,\n\t\t\tcharacter,\n\t\t\t_isApple = isAppleOS\n\t\t) => {\n\t\t\tconst mods = getModifiers( _isApple );\n\t\t\tconst eventMods = getEventModifiers( event );\n\t\t\t/** @type {Record<string,string>} */\n\t\t\tconst replacementWithShiftKeyMap = {\n\t\t\t\tComma: ',',\n\t\t\t\tBackslash: '\\\\',\n\t\t\t\t// Windows returns `\\` for both IntlRo and IntlYen.\n\t\t\t\tIntlRo: '\\\\',\n\t\t\t\tIntlYen: '\\\\',\n\t\t\t};\n\n\t\t\tconst modsDiff = mods.filter(\n\t\t\t\t( mod ) => ! eventMods.includes( mod )\n\t\t\t);\n\t\t\tconst eventModsDiff = eventMods.filter(\n\t\t\t\t( mod ) => ! mods.includes( mod )\n\t\t\t);\n\n\t\t\tif ( modsDiff.length > 0 || eventModsDiff.length > 0 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet key = event.key.toLowerCase();\n\n\t\t\tif ( ! character ) {\n\t\t\t\treturn mods.includes( /** @type {WPModifierPart} */ ( key ) );\n\t\t\t}\n\n\t\t\tif ( event.altKey && character.length === 1 ) {\n\t\t\t\tkey = String.fromCharCode( event.keyCode ).toLowerCase();\n\t\t\t}\n\n\t\t\t// `event.key` returns the value of the key pressed, taking into the state of\n\t\t\t// modifier keys such as `Shift`. If the shift key is pressed, a different\n\t\t\t// value may be returned depending on the keyboard layout. It is necessary to\n\t\t\t// convert to the physical key value that don't take into account keyboard\n\t\t\t// layout or modifier key state.\n\t\t\tif (\n\t\t\t\tevent.shiftKey &&\n\t\t\t\tcharacter.length === 1 &&\n\t\t\t\treplacementWithShiftKeyMap[ event.code ]\n\t\t\t) {\n\t\t\t\tkey = replacementWithShiftKeyMap[ event.code ];\n\t\t\t}\n\n\t\t\t// For backwards compatibility.\n\t\t\tif ( character === 'del' ) {\n\t\t\t\tcharacter = 'delete';\n\t\t\t}\n\n\t\t\treturn key === character.toLowerCase();\n\t\t};\n\t}\n);\n"]}
@@ -14,6 +14,7 @@
14
14
  * @typedef {(character: string, isApple?: () => boolean) => T} WPKeyHandler
15
15
  */
16
16
  /** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */
17
+ /** @typedef {( isApple: () => boolean ) => WPModifierPart[]} WPModifier */
17
18
  /**
18
19
  * Keycode for BACKSPACE key.
19
20
  */
@@ -185,5 +186,6 @@ export type WPKeycodeModifier = 'primary' | 'primaryShift' | 'primaryAlt' | 'sec
185
186
  export type WPModifierHandler<T> = Record<WPKeycodeModifier, T>;
186
187
  export type WPKeyHandler<T> = (character: string, isApple?: (() => boolean) | undefined) => T;
187
188
  export type WPEventKeyHandler = (event: KeyboardEvent, character: string, isApple?: (() => boolean) | undefined) => boolean;
189
+ export type WPModifier = (isApple: () => boolean) => WPModifierPart[];
188
190
  import { isAppleOS } from "./platform";
189
191
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA2BA,qEAAqE;AAErE,0KAA0K;AAE1K;;;;;;;GAOG;AAEH;;;;GAIG;AACH,iHAAiH;AAEjH;;GAEG;AACH,0BAA2B;AAE3B;;GAEG;AACH,oBAAqB;AAErB;;GAEG;AACH,uBAAwB;AAExB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,uBAAwB;AAExB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,0BAA2B;AAE3B;;GAEG;AACH,qBAAsB;AAEtB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,oBAAqB;AAErB;;GAEG;AACH,uBAAwB;AAExB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,0BAA2B;AAE3B;;GAEG;AACH,6BAA8B;AAE9B;;GAEG;AACH,4BAA6B;AAE7B;;GAEG;AACH,sBAAuB;;AAIvB;;;;;GAKG;AACH,oDAFwC,MAAM,OAAO,KAAM,cAAc,EAAE,EAiBzE;AAEF;;;;;;;;;;;;;;GAcG;AACH,0BAHU,kBAAkB,aAAa,MAAM,CAAC,CAAC,CAU7C;AAEJ;;;;;;;;;;;;GAYG;AACH,kCAHU,kBAAkB,aAAa,MAAM,EAAE,CAAC,CAAC,CAsC/C;AAEJ;;;;;;;;;;;;GAYG;AACH,8BAHU,kBAAkB,aAAa,MAAM,CAAC,CAAC,CAW/C;AAEF;;;;;;;;;;;;;GAaG;AACH,gCAHU,kBAAkB,aAAa,MAAM,CAAC,CAAC,CA4B7C;AA0BJ;;;;;;;;;;;;;GAaG;AACH,8BAHU,kBAAkB,iBAAiB,CAAC,CAkD1C;6BAhXU,UAAU,4BAAyB;gCAEnC,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW;;;;;mCAQvI,OAAO,iBAAiB,EAAE,CAAC,CAAC;0CAMhB,MAAM,mBAAkB,OAAO,kBAAK,CAAC;wCAExC,aAAa,aAAa,MAAM,mBAAkB,OAAO,kBAAK,OAAO"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":"AA0BA,qEAAqE;AAErE,0KAA0K;AAE1K;;;;;;;GAOG;AAEH;;;;GAIG;AACH,iHAAiH;AAEjH,2EAA2E;AAE3E;;GAEG;AACH,0BAA2B;AAE3B;;GAEG;AACH,oBAAqB;AAErB;;GAEG;AACH,uBAAwB;AAExB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,uBAAwB;AAExB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,0BAA2B;AAE3B;;GAEG;AACH,qBAAsB;AAEtB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,oBAAqB;AAErB;;GAEG;AACH,uBAAwB;AAExB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,sBAAuB;AAEvB;;GAEG;AACH,wBAAyB;AAEzB;;GAEG;AACH,0BAA2B;AAE3B;;GAEG;AACH,6BAA8B;AAE9B;;GAEG;AACH,4BAA6B;AAE7B;;GAEG;AACH,sBAAuB;;AAuBvB;;;;;GAKG;AACH,oDAFwC,MAAM,OAAO,KAAM,cAAc,EAAE,EAiBzE;AAEF;;;;;;;;;;;;;;GAcG;AACH,0BAHU,kBAAkB,aAAa,MAAM,CAAC,CAAC,CAe/C;AAEF;;;;;;;;;;;;GAYG;AACH,kCAHU,kBAAkB,aAAa,MAAM,EAAE,CAAC,CAAC,CAyCjD;AAEF;;;;;;;;;;;;GAYG;AACH,8BAHU,kBAAkB,aAAa,MAAM,CAAC,CAAC,CAW/C;AAEF;;;;;;;;;;;;;GAaG;AACH,gCAHU,kBAAkB,aAAa,MAAM,CAAC,CAAC,CAkC/C;AA0BF;;;;;;;;;;;;;GAaG;AACH,8BAHU,kBAAkB,iBAAiB,CAAC,CAgE5C;6BAjaY,UAAU,4BAAyB;gCAEnC,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW;;;;;mCAQvI,OAAO,iBAAiB,EAAE,CAAC,CAAC;0CAMhB,MAAM,mBAAkB,OAAO,kBAAK,CAAC;wCAExC,aAAa,aAAa,MAAM,mBAAkB,OAAO,kBAAK,OAAO;mCAElE,MAAM,OAAO,KAAM,cAAc,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/keycodes",
3
- "version": "3.26.1",
3
+ "version": "3.26.3",
4
4
  "description": "Keycodes utilities for WordPress. Used to check for keyboard events across browsers/operating systems.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -28,12 +28,11 @@
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
30
  "@babel/runtime": "^7.16.0",
31
- "@wordpress/i18n": "^4.26.1",
32
- "change-case": "^4.1.2",
33
- "lodash": "^4.17.21"
31
+ "@wordpress/i18n": "^4.26.2",
32
+ "change-case": "^4.1.2"
34
33
  },
35
34
  "publishConfig": {
36
35
  "access": "public"
37
36
  },
38
- "gitHead": "e9ff92d836928aba65dde94d9d193bc401a934d7"
37
+ "gitHead": "479778b4251cc9506639a40a5ed65bcee649f949"
39
38
  }
package/src/index.js CHANGED
@@ -13,7 +13,6 @@
13
13
  * External dependencies
14
14
  */
15
15
  import { capitalCase } from 'change-case';
16
- import { get, mapValues } from 'lodash';
17
16
 
18
17
  /**
19
18
  * WordPress dependencies
@@ -45,6 +44,8 @@ import { isAppleOS } from './platform';
45
44
  */
46
45
  /** @typedef {(event: KeyboardEvent, character: string, isApple?: () => boolean) => boolean} WPEventKeyHandler */
47
46
 
47
+ /** @typedef {( isApple: () => boolean ) => WPModifierPart[]} WPModifier */
48
+
48
49
  /**
49
50
  * Keycode for BACKSPACE key.
50
51
  */
@@ -147,6 +148,25 @@ export const ZERO = 48;
147
148
 
148
149
  export { isAppleOS };
149
150
 
151
+ /**
152
+ * Map the values of an object with a specified callback and return the result object.
153
+ *
154
+ * @template T
155
+ *
156
+ * @param {T} object Object to map values of.
157
+ * @param {( value: any ) => any} mapFn Mapping function
158
+ *
159
+ * @return {any} Active modifier constants.
160
+ */
161
+ function mapValues( object, mapFn ) {
162
+ return Object.fromEntries(
163
+ Object.entries( object ).map( ( [ key, value ] ) => [
164
+ key,
165
+ mapFn( value ),
166
+ ] )
167
+ );
168
+ }
169
+
150
170
  /**
151
171
  * Object that contains functions that return the available modifier
152
172
  * depending on platform.
@@ -185,14 +205,19 @@ export const modifiers = {
185
205
  * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to raw
186
206
  * shortcuts.
187
207
  */
188
- export const rawShortcut = mapValues( modifiers, ( modifier ) => {
189
- return /** @type {WPKeyHandler<string>} */ (
190
- character,
191
- _isApple = isAppleOS
192
- ) => {
193
- return [ ...modifier( _isApple ), character.toLowerCase() ].join( '+' );
194
- };
195
- } );
208
+ export const rawShortcut = mapValues(
209
+ modifiers,
210
+ ( /** @type {WPModifier} */ modifier ) => {
211
+ return /** @type {WPKeyHandler<string>} */ (
212
+ character,
213
+ _isApple = isAppleOS
214
+ ) => {
215
+ return [ ...modifier( _isApple ), character.toLowerCase() ].join(
216
+ '+'
217
+ );
218
+ };
219
+ }
220
+ );
196
221
 
197
222
  /**
198
223
  * Return an array of the parts of a keyboard shortcut chord for display.
@@ -207,42 +232,45 @@ export const rawShortcut = mapValues( modifiers, ( modifier ) => {
207
232
  * @type {WPModifierHandler<WPKeyHandler<string[]>>} Keyed map of functions to
208
233
  * shortcut sequences.
209
234
  */
210
- export const displayShortcutList = mapValues( modifiers, ( modifier ) => {
211
- return /** @type {WPKeyHandler<string[]>} */ (
212
- character,
213
- _isApple = isAppleOS
214
- ) => {
215
- const isApple = _isApple();
216
- const replacementKeyMap = {
217
- [ ALT ]: isApple ? '⌥' : 'Alt',
218
- [ CTRL ]: isApple ? '⌃' : 'Ctrl', // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.
219
- [ COMMAND ]: '',
220
- [ SHIFT ]: isApple ? '' : 'Shift',
235
+ export const displayShortcutList = mapValues(
236
+ modifiers,
237
+ ( /** @type {WPModifier} */ modifier ) => {
238
+ return /** @type {WPKeyHandler<string[]>} */ (
239
+ character,
240
+ _isApple = isAppleOS
241
+ ) => {
242
+ const isApple = _isApple();
243
+ const replacementKeyMap = {
244
+ [ ALT ]: isApple ? '' : 'Alt',
245
+ [ CTRL ]: isApple ? '' : 'Ctrl', // Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.
246
+ [ COMMAND ]: '⌘',
247
+ [ SHIFT ]: isApple ? '⇧' : 'Shift',
248
+ };
249
+
250
+ const modifierKeys = modifier( _isApple ).reduce(
251
+ ( accumulator, key ) => {
252
+ const replacementKey = replacementKeyMap[ key ] ?? key;
253
+ // If on the Mac, adhere to platform convention and don't show plus between keys.
254
+ if ( isApple ) {
255
+ return [ ...accumulator, replacementKey ];
256
+ }
257
+
258
+ return [ ...accumulator, replacementKey, '+' ];
259
+ },
260
+ /** @type {string[]} */ ( [] )
261
+ );
262
+
263
+ // Symbols (~`,.) are removed by the default regular expression,
264
+ // so override the rule to allow symbols used for shortcuts.
265
+ // see: https://github.com/blakeembrey/change-case#options
266
+ const capitalizedCharacter = capitalCase( character, {
267
+ stripRegexp: /[^A-Z0-9~`,\.\\\-]/gi,
268
+ } );
269
+
270
+ return [ ...modifierKeys, capitalizedCharacter ];
221
271
  };
222
-
223
- const modifierKeys = modifier( _isApple ).reduce(
224
- ( accumulator, key ) => {
225
- const replacementKey = get( replacementKeyMap, key, key );
226
- // If on the Mac, adhere to platform convention and don't show plus between keys.
227
- if ( isApple ) {
228
- return [ ...accumulator, replacementKey ];
229
- }
230
-
231
- return [ ...accumulator, replacementKey, '+' ];
232
- },
233
- /** @type {string[]} */ ( [] )
234
- );
235
-
236
- // Symbols (~`,.) are removed by the default regular expression,
237
- // so override the rule to allow symbols used for shortcuts.
238
- // see: https://github.com/blakeembrey/change-case#options
239
- const capitalizedCharacter = capitalCase( character, {
240
- stripRegexp: /[^A-Z0-9~`,\.\\\-]/gi,
241
- } );
242
-
243
- return [ ...modifierKeys, capitalizedCharacter ];
244
- };
245
- } );
272
+ }
273
+ );
246
274
 
247
275
  /**
248
276
  * An object that contains functions to display shortcuts.
@@ -259,7 +287,7 @@ export const displayShortcutList = mapValues( modifiers, ( modifier ) => {
259
287
  */
260
288
  export const displayShortcut = mapValues(
261
289
  displayShortcutList,
262
- ( shortcutList ) => {
290
+ ( /** @type {WPKeyHandler<string[]>} */ shortcutList ) => {
263
291
  return /** @type {WPKeyHandler<string>} */ (
264
292
  character,
265
293
  _isApple = isAppleOS
@@ -281,32 +309,38 @@ export const displayShortcut = mapValues(
281
309
  * @type {WPModifierHandler<WPKeyHandler<string>>} Keyed map of functions to
282
310
  * shortcut ARIA labels.
283
311
  */
284
- export const shortcutAriaLabel = mapValues( modifiers, ( modifier ) => {
285
- return /** @type {WPKeyHandler<string>} */ (
286
- character,
287
- _isApple = isAppleOS
288
- ) => {
289
- const isApple = _isApple();
290
- const replacementKeyMap = {
291
- [ SHIFT ]: 'Shift',
292
- [ COMMAND ]: isApple ? 'Command' : 'Control',
293
- [ CTRL ]: 'Control',
294
- [ ALT ]: isApple ? 'Option' : 'Alt',
295
- /* translators: comma as in the character ',' */
296
- ',': __( 'Comma' ),
297
- /* translators: period as in the character '.' */
298
- '.': __( 'Period' ),
299
- /* translators: backtick as in the character '`' */
300
- '`': __( 'Backtick' ),
301
- /* translators: tilde as in the character '~' */
302
- '~': __( 'Tilde' ),
312
+ export const shortcutAriaLabel = mapValues(
313
+ modifiers,
314
+ ( /** @type {WPModifier} */ modifier ) => {
315
+ return /** @type {WPKeyHandler<string>} */ (
316
+ character,
317
+ _isApple = isAppleOS
318
+ ) => {
319
+ const isApple = _isApple();
320
+ /** @type {Record<string,string>} */
321
+ const replacementKeyMap = {
322
+ [ SHIFT ]: 'Shift',
323
+ [ COMMAND ]: isApple ? 'Command' : 'Control',
324
+ [ CTRL ]: 'Control',
325
+ [ ALT ]: isApple ? 'Option' : 'Alt',
326
+ /* translators: comma as in the character ',' */
327
+ ',': __( 'Comma' ),
328
+ /* translators: period as in the character '.' */
329
+ '.': __( 'Period' ),
330
+ /* translators: backtick as in the character '`' */
331
+ '`': __( 'Backtick' ),
332
+ /* translators: tilde as in the character '~' */
333
+ '~': __( 'Tilde' ),
334
+ };
335
+
336
+ return [ ...modifier( _isApple ), character ]
337
+ .map( ( key ) =>
338
+ capitalCase( replacementKeyMap[ key ] ?? key )
339
+ )
340
+ .join( isApple ? ' ' : ' + ' );
303
341
  };
304
-
305
- return [ ...modifier( _isApple ), character ]
306
- .map( ( key ) => capitalCase( get( replacementKeyMap, key, key ) ) )
307
- .join( isApple ? ' ' : ' + ' );
308
- };
309
- } );
342
+ }
343
+ );
310
344
 
311
345
  /**
312
346
  * From a given KeyboardEvent, returns an array of active modifier constants for
@@ -346,51 +380,65 @@ function getEventModifiers( event ) {
346
380
  * @type {WPModifierHandler<WPEventKeyHandler>} Keyed map of functions
347
381
  * to match events.
348
382
  */
349
- export const isKeyboardEvent = mapValues( modifiers, ( getModifiers ) => {
350
- return /** @type {WPEventKeyHandler} */ (
351
- event,
352
- character,
353
- _isApple = isAppleOS
354
- ) => {
355
- const mods = getModifiers( _isApple );
356
- const eventMods = getEventModifiers( event );
357
-
358
- const modsDiff = mods.filter( ( mod ) => ! eventMods.includes( mod ) );
359
- const eventModsDiff = eventMods.filter(
360
- ( mod ) => ! mods.includes( mod )
361
- );
362
-
363
- if ( modsDiff.length > 0 || eventModsDiff.length > 0 ) {
364
- return false;
365
- }
366
-
367
- let key = event.key.toLowerCase();
368
-
369
- if ( ! character ) {
370
- return mods.includes( /** @type {WPModifierPart} */ ( key ) );
371
- }
372
-
373
- if ( event.altKey && character.length === 1 ) {
374
- key = String.fromCharCode( event.keyCode ).toLowerCase();
375
- }
376
-
377
- // Replace some characters to match the key indicated
378
- // by the shortcut on Windows.
379
- if ( ! _isApple() ) {
383
+ export const isKeyboardEvent = mapValues(
384
+ modifiers,
385
+ ( /** @type {WPModifier} */ getModifiers ) => {
386
+ return /** @type {WPEventKeyHandler} */ (
387
+ event,
388
+ character,
389
+ _isApple = isAppleOS
390
+ ) => {
391
+ const mods = getModifiers( _isApple );
392
+ const eventMods = getEventModifiers( event );
393
+ /** @type {Record<string,string>} */
394
+ const replacementWithShiftKeyMap = {
395
+ Comma: ',',
396
+ Backslash: '\\',
397
+ // Windows returns `\` for both IntlRo and IntlYen.
398
+ IntlRo: '\\',
399
+ IntlYen: '\\',
400
+ };
401
+
402
+ const modsDiff = mods.filter(
403
+ ( mod ) => ! eventMods.includes( mod )
404
+ );
405
+ const eventModsDiff = eventMods.filter(
406
+ ( mod ) => ! mods.includes( mod )
407
+ );
408
+
409
+ if ( modsDiff.length > 0 || eventModsDiff.length > 0 ) {
410
+ return false;
411
+ }
412
+
413
+ let key = event.key.toLowerCase();
414
+
415
+ if ( ! character ) {
416
+ return mods.includes( /** @type {WPModifierPart} */ ( key ) );
417
+ }
418
+
419
+ if ( event.altKey && character.length === 1 ) {
420
+ key = String.fromCharCode( event.keyCode ).toLowerCase();
421
+ }
422
+
423
+ // `event.key` returns the value of the key pressed, taking into the state of
424
+ // modifier keys such as `Shift`. If the shift key is pressed, a different
425
+ // value may be returned depending on the keyboard layout. It is necessary to
426
+ // convert to the physical key value that don't take into account keyboard
427
+ // layout or modifier key state.
380
428
  if (
381
429
  event.shiftKey &&
382
430
  character.length === 1 &&
383
- event.code === 'Comma'
431
+ replacementWithShiftKeyMap[ event.code ]
384
432
  ) {
385
- key = ',';
433
+ key = replacementWithShiftKeyMap[ event.code ];
386
434
  }
387
- }
388
435
 
389
- // For backwards compatibility.
390
- if ( character === 'del' ) {
391
- character = 'delete';
392
- }
436
+ // For backwards compatibility.
437
+ if ( character === 'del' ) {
438
+ character = 'delete';
439
+ }
393
440
 
394
- return key === character.toLowerCase();
395
- };
396
- } );
441
+ return key === character.toLowerCase();
442
+ };
443
+ }
444
+ );
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/no-case/dist/index.d.ts","../../node_modules/pascal-case/dist/index.d.ts","../../node_modules/camel-case/dist/index.d.ts","../../node_modules/capital-case/dist/index.d.ts","../../node_modules/constant-case/dist/index.d.ts","../../node_modules/dot-case/dist/index.d.ts","../../node_modules/header-case/dist/index.d.ts","../../node_modules/param-case/dist/index.d.ts","../../node_modules/path-case/dist/index.d.ts","../../node_modules/sentence-case/dist/index.d.ts","../../node_modules/snake-case/dist/index.d.ts","../../node_modules/change-case/dist/index.d.ts","../../node_modules/@types/lodash/common/common.d.ts","../../node_modules/@types/lodash/common/array.d.ts","../../node_modules/@types/lodash/common/collection.d.ts","../../node_modules/@types/lodash/common/date.d.ts","../../node_modules/@types/lodash/common/function.d.ts","../../node_modules/@types/lodash/common/lang.d.ts","../../node_modules/@types/lodash/common/math.d.ts","../../node_modules/@types/lodash/common/number.d.ts","../../node_modules/@types/lodash/common/object.d.ts","../../node_modules/@types/lodash/common/seq.d.ts","../../node_modules/@types/lodash/common/string.d.ts","../../node_modules/@types/lodash/common/util.d.ts","../../node_modules/@types/lodash/index.d.ts","../i18n/build-types/sprintf.d.ts","../hooks/build-types/createAddHook.d.ts","../hooks/build-types/createRemoveHook.d.ts","../hooks/build-types/createHasHook.d.ts","../hooks/build-types/createDoingHook.d.ts","../hooks/build-types/createDidHook.d.ts","../hooks/build-types/index.d.ts","../hooks/build-types/createHooks.d.ts","../i18n/build-types/create-i18n.d.ts","../i18n/build-types/default-i18n.d.ts","../i18n/build-types/index.d.ts","./src/platform.js","./src/index.js"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"b4e123af1af6049685c93073a15868b50aebdad666d422edc72fa2b585fa8a37","f86c04a744ebcede96bac376f9a2c90f2bd3c422740d91dda4ca6233199d4977","6ae1bddee5c790439bd992abd063b9b46e0cadd676c2a8562268d1869213ff60","606244fc97a6a74b877f2e924ba7e55b233bc6acb57d7bf40ba84a5be2d9adb0","4a1cabac71036b8a14f5db1b753b579f0c901c7d7b9227e6872dadf6efb104e8","062959a1d825b96639d87be35fe497cbd3f89544bf06fdad577bbfb85fcf604c","4c3672dc8f4e4fdd3d18525b22b31f1b5481f5a415db96550d3ac5163a6c3dd3","f9a69ca445010b91fe08f08c06e0f86d79c0d776905f9bdb828477cb2a1eb7fc","ad7fd0e7ee457d4884b3aaecbcbd2a80b6803407c4ce2540c296170d4c7918ef","a50ef21605f41c6acad6c3ef0307e5311b94963c846ca093c764b80cdb5318d6","74b4035dd26d09a417c44ca23ab5ee69b173f8c2f6b2e47350ab0795cf2d4a17","918f86ee2b19cc38cb8b1a4cf8f223eb228aaa39df3604c42f700fac2f0b3ea1","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","9fa6b83a35e897f340858995ca5d77e901d89fd18644cd4c9e8a4afe0b2e6363",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"762bc52248d3fab9873c7af564caf622358312cb35de42a4393b71cc36e14621","d02ec79cefaf292fae64b3be5a4416e64b4e420a6429fd458fac6e1bb4c7950e","27abed653f600ea0d5c86e94181beb42824e0f3f16337e2f9e7e9e9c2c392edf","d7871e0e653aa7197fee88886db5678bee6d42164c1f36e4bce9421ddfa7ca49","11ed10bdb3bcc99893570507eac8fece4840add97ee1d4f5a7fbf41cbfdea0d4","429fb571d3db07d3eaa2e74d43eb4190ece3e0de832ed564aeeaf08873e598eb","406d52bf33d618d846aa0d831ee004290567e328edcd4517bbff2937cc977abf","d3060e0810fc0d0dc009e6f086ef413d3c8aeaaf07da25c8d25fd4e181646acf","c0306658efb85764bb6d8d55097007c68a70539b24d0e18fb6edd6eb1778f632","08f7e6ffa66c66a636aecc5acbeb998215d9d09ccba0c558afb7df7e218edeaf","f829eb39aea4487f0ff94a42c56a1a73bc5202bbdeb03f7a638e4ab3e290d017","c813ac99663202e702fe5f635f7ec2d7b20747c57ff0a85a86af0dadac9170e2","f6a8ccdb069d5b6b8c1503a787f387b5232e93ad796a52a964edce338b150812"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"importsNotUsedAsValues":2,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[57,59,60,61,62,63,64,65,66,67,68,69],[57,58,60,61,62,63,64,65,66,67,68,69],[58,59,60,61,62,63,64,65,66,67,68,69],[57,58,59,61,62,63,64,65,66,67,68,69],[57,58,59,60,62,63,64,65,66,67,68,69],[57,58,59,60,61,63,64,65,66,67,68,69],[57,58,59,60,61,62,64,65,66,67,68,69],[57,58,59,60,61,62,63,65,66,67,68,69],[57,58,59,60,61,62,63,64,66,67,68,69],[57,58,59,60,61,62,63,64,65,67,68,69],[57,58,59,60,61,62,63,64,65,66,68,69],[57,58,59,60,61,62,63,64,65,66,67,69],[57,58,59,60,61,62,63,64,65,66,67,68],[46],[45],[45,46,47,48,49,50,51,52,53,54,55],[48],[50],[76],[71,72,73,74,75,76],[71,72,73,74,75,77],[76,77],[78],[70,78,79],[56,69,80,81]],"referencedMap":[[58,1],[59,2],[57,3],[60,4],[61,5],[62,6],[63,7],[64,8],[65,9],[66,10],[67,11],[68,12],[69,13],[47,14],[48,15],[56,16],[49,15],[50,15],[51,17],[52,18],[46,15],[53,18],[54,15],[55,18],[71,19],[75,19],[74,19],[73,19],[77,20],[72,19],[76,21],[78,22],[79,23],[80,24],[82,25]],"exportedModulesMap":[[58,1],[59,2],[57,3],[60,4],[61,5],[62,6],[63,7],[64,8],[65,9],[66,10],[67,11],[68,12],[69,13],[47,14],[48,15],[56,16],[49,15],[50,15],[51,17],[52,18],[46,15],[53,18],[54,15],[55,18],[71,19],[75,19],[74,19],[73,19],[77,20],[72,19],[76,21],[78,22],[79,23],[80,24],[82,25]],"semanticDiagnosticsPerFile":[58,59,57,60,61,62,63,64,65,66,67,68,69,47,48,56,49,50,51,45,52,46,53,54,55,10,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,40,36,37,38,39,8,41,42,43,1,9,44,71,75,74,73,77,72,76,78,79,80,70,82,81]},"version":"4.4.2"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/no-case/dist/index.d.ts","../../node_modules/pascal-case/dist/index.d.ts","../../node_modules/camel-case/dist/index.d.ts","../../node_modules/capital-case/dist/index.d.ts","../../node_modules/constant-case/dist/index.d.ts","../../node_modules/dot-case/dist/index.d.ts","../../node_modules/header-case/dist/index.d.ts","../../node_modules/param-case/dist/index.d.ts","../../node_modules/path-case/dist/index.d.ts","../../node_modules/sentence-case/dist/index.d.ts","../../node_modules/snake-case/dist/index.d.ts","../../node_modules/change-case/dist/index.d.ts","../i18n/build-types/sprintf.d.ts","../hooks/build-types/createAddHook.d.ts","../hooks/build-types/createRemoveHook.d.ts","../hooks/build-types/createHasHook.d.ts","../hooks/build-types/createDoingHook.d.ts","../hooks/build-types/createDidHook.d.ts","../hooks/build-types/index.d.ts","../hooks/build-types/createHooks.d.ts","../i18n/build-types/create-i18n.d.ts","../i18n/build-types/default-i18n.d.ts","../i18n/build-types/index.d.ts","./src/platform.js","./src/index.js"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"b4e123af1af6049685c93073a15868b50aebdad666d422edc72fa2b585fa8a37","f86c04a744ebcede96bac376f9a2c90f2bd3c422740d91dda4ca6233199d4977","6ae1bddee5c790439bd992abd063b9b46e0cadd676c2a8562268d1869213ff60","606244fc97a6a74b877f2e924ba7e55b233bc6acb57d7bf40ba84a5be2d9adb0","4a1cabac71036b8a14f5db1b753b579f0c901c7d7b9227e6872dadf6efb104e8","062959a1d825b96639d87be35fe497cbd3f89544bf06fdad577bbfb85fcf604c","4c3672dc8f4e4fdd3d18525b22b31f1b5481f5a415db96550d3ac5163a6c3dd3","f9a69ca445010b91fe08f08c06e0f86d79c0d776905f9bdb828477cb2a1eb7fc","ad7fd0e7ee457d4884b3aaecbcbd2a80b6803407c4ce2540c296170d4c7918ef","a50ef21605f41c6acad6c3ef0307e5311b94963c846ca093c764b80cdb5318d6","74b4035dd26d09a417c44ca23ab5ee69b173f8c2f6b2e47350ab0795cf2d4a17","918f86ee2b19cc38cb8b1a4cf8f223eb228aaa39df3604c42f700fac2f0b3ea1","762bc52248d3fab9873c7af564caf622358312cb35de42a4393b71cc36e14621","d02ec79cefaf292fae64b3be5a4416e64b4e420a6429fd458fac6e1bb4c7950e","27abed653f600ea0d5c86e94181beb42824e0f3f16337e2f9e7e9e9c2c392edf","d7871e0e653aa7197fee88886db5678bee6d42164c1f36e4bce9421ddfa7ca49","11ed10bdb3bcc99893570507eac8fece4840add97ee1d4f5a7fbf41cbfdea0d4","429fb571d3db07d3eaa2e74d43eb4190ece3e0de832ed564aeeaf08873e598eb","406d52bf33d618d846aa0d831ee004290567e328edcd4517bbff2937cc977abf","d3060e0810fc0d0dc009e6f086ef413d3c8aeaaf07da25c8d25fd4e181646acf","c0306658efb85764bb6d8d55097007c68a70539b24d0e18fb6edd6eb1778f632","08f7e6ffa66c66a636aecc5acbeb998215d9d09ccba0c558afb7df7e218edeaf","f829eb39aea4487f0ff94a42c56a1a73bc5202bbdeb03f7a638e4ab3e290d017","c813ac99663202e702fe5f635f7ec2d7b20747c57ff0a85a86af0dadac9170e2","d0da5c9dc6a24b4898dd9faff166e843dc60acb3a94ebc4a0a10a388a8bbabed"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"importsNotUsedAsValues":2,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[46],[45],[45,46,47,48,49,50,51,52,53,54,55],[48],[50],[63],[58,59,60,61,62,63],[58,59,60,61,62,64],[63,64],[65],[57,65,66],[56,67,68]],"referencedMap":[[47,1],[48,2],[56,3],[49,2],[50,2],[51,4],[52,5],[46,2],[53,5],[54,2],[55,5],[58,6],[62,6],[61,6],[60,6],[64,7],[59,6],[63,8],[65,9],[66,10],[67,11],[69,12]],"exportedModulesMap":[[47,1],[48,2],[56,3],[49,2],[50,2],[51,4],[52,5],[46,2],[53,5],[54,2],[55,5],[58,6],[62,6],[61,6],[60,6],[64,7],[59,6],[63,8],[65,9],[66,10],[67,11],[69,12]],"semanticDiagnosticsPerFile":[47,48,56,49,50,51,45,52,46,53,54,55,10,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,40,36,37,38,39,8,41,42,43,1,9,44,58,62,61,60,64,59,63,65,66,67,57,69,68]},"version":"4.4.2"}