@wordpress/keycodes 3.33.0 → 3.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 3.35.0 (2023-06-07)
6
+
7
+ ## 3.34.0 (2023-05-24)
8
+
5
9
  ## 3.33.0 (2023-05-10)
6
10
 
7
11
  ## 3.32.0 (2023-04-26)
package/build/index.js CHANGED
@@ -195,10 +195,7 @@ exports.ZERO = ZERO;
195
195
  * @return {any} Active modifier constants.
196
196
  */
197
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
- }));
198
+ return Object.fromEntries(Object.entries(object).map(([key, value]) => [key, mapFn(value)]));
202
199
  }
203
200
  /**
204
201
  * Object that contains functions that return the available modifier
@@ -243,9 +240,7 @@ const rawShortcut = mapValues(modifiers, (
243
240
  modifier) => {
244
241
  return (
245
242
  /** @type {WPKeyHandler<string>} */
246
- function (character) {
247
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _platform.isAppleOS;
248
-
243
+ (character, _isApple = _platform.isAppleOS) => {
249
244
  return [...modifier(_isApple), character.toLowerCase()].join('+');
250
245
  }
251
246
  );
@@ -270,9 +265,7 @@ const displayShortcutList = mapValues(modifiers, (
270
265
  modifier) => {
271
266
  return (
272
267
  /** @type {WPKeyHandler<string[]>} */
273
- function (character) {
274
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _platform.isAppleOS;
275
-
268
+ (character, _isApple = _platform.isAppleOS) => {
276
269
  const isApple = _isApple();
277
270
 
278
271
  const replacementKeyMap = {
@@ -325,11 +318,7 @@ const displayShortcut = mapValues(displayShortcutList, (
325
318
  shortcutList) => {
326
319
  return (
327
320
  /** @type {WPKeyHandler<string>} */
328
- function (character) {
329
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _platform.isAppleOS;
330
-
331
- return shortcutList(character, _isApple).join('');
332
- }
321
+ (character, _isApple = _platform.isAppleOS) => shortcutList(character, _isApple).join('')
333
322
  );
334
323
  });
335
324
  /**
@@ -353,9 +342,7 @@ const shortcutAriaLabel = mapValues(modifiers, (
353
342
  modifier) => {
354
343
  return (
355
344
  /** @type {WPKeyHandler<string>} */
356
- function (character) {
357
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _platform.isAppleOS;
358
-
345
+ (character, _isApple = _platform.isAppleOS) => {
359
346
  const isApple = _isApple();
360
347
  /** @type {Record<string,string>} */
361
348
 
@@ -426,9 +413,7 @@ const isKeyboardEvent = mapValues(modifiers, (
426
413
  getModifiers) => {
427
414
  return (
428
415
  /** @type {WPEventKeyHandler} */
429
- function (event, character) {
430
- let _isApple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _platform.isAppleOS;
431
-
416
+ (event, character, _isApple = _platform.isAppleOS) => {
432
417
  const mods = getModifiers(_isApple);
433
418
  const eventMods = getEventModifiers(event);
434
419
  /** @type {Record<string,string>} */
@@ -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","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: import('react').KeyboardEvent<HTMLElement> | 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 {{ [s: string]: any; } | ArrayLike<any>} 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 {import('react').KeyboardEvent<HTMLElement> | 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"]}
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: import('react').KeyboardEvent<HTMLElement> | 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 {{ [s: string]: any; } | ArrayLike<any>} 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 {import('react').KeyboardEvent<HTMLElement> | 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"]}
package/build/platform.js CHANGED
@@ -12,9 +12,7 @@ exports.isAppleOS = isAppleOS;
12
12
  *
13
13
  * @return {boolean} True if MacOS; false otherwise.
14
14
  */
15
- function isAppleOS() {
16
- let _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
17
-
15
+ function isAppleOS(_window = null) {
18
16
  if (!_window) {
19
17
  if (typeof window === 'undefined') {
20
18
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/keycodes/src/platform.js"],"names":["isAppleOS","_window","window","platform","navigator","indexOf","includes"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAAT,GAAqC;AAAA,MAAjBC,OAAiB,uEAAP,IAAO;;AAC3C,MAAK,CAAEA,OAAP,EAAiB;AAChB,QAAK,OAAOC,MAAP,KAAkB,WAAvB,EAAqC;AACpC,aAAO,KAAP;AACA;;AAEDD,IAAAA,OAAO,GAAGC,MAAV;AACA;;AAED,QAAM;AAAEC,IAAAA;AAAF,MAAeF,OAAO,CAACG,SAA7B;AAEA,SACCD,QAAQ,CAACE,OAAT,CAAkB,KAAlB,MAA8B,CAAC,CAA/B,IACA,CAAE,MAAF,EAAU,QAAV,EAAqBC,QAArB,CAA+BH,QAA/B,CAFD;AAIA","sourcesContent":["/**\n * Return true if platform is MacOS.\n *\n * @param {Window?} _window window object by default; used for DI testing.\n *\n * @return {boolean} True if MacOS; false otherwise.\n */\nexport function isAppleOS( _window = null ) {\n\tif ( ! _window ) {\n\t\tif ( typeof window === 'undefined' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t_window = window;\n\t}\n\n\tconst { platform } = _window.navigator;\n\n\treturn (\n\t\tplatform.indexOf( 'Mac' ) !== -1 ||\n\t\t[ 'iPad', 'iPhone' ].includes( platform )\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/keycodes/src/platform.js"],"names":["isAppleOS","_window","window","platform","navigator","indexOf","includes"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAAT,CAAoBC,OAAO,GAAG,IAA9B,EAAqC;AAC3C,MAAK,CAAEA,OAAP,EAAiB;AAChB,QAAK,OAAOC,MAAP,KAAkB,WAAvB,EAAqC;AACpC,aAAO,KAAP;AACA;;AAEDD,IAAAA,OAAO,GAAGC,MAAV;AACA;;AAED,QAAM;AAAEC,IAAAA;AAAF,MAAeF,OAAO,CAACG,SAA7B;AAEA,SACCD,QAAQ,CAACE,OAAT,CAAkB,KAAlB,MAA8B,CAAC,CAA/B,IACA,CAAE,MAAF,EAAU,QAAV,EAAqBC,QAArB,CAA+BH,QAA/B,CAFD;AAIA","sourcesContent":["/**\n * Return true if platform is MacOS.\n *\n * @param {Window?} _window window object by default; used for DI testing.\n *\n * @return {boolean} True if MacOS; false otherwise.\n */\nexport function isAppleOS( _window = null ) {\n\tif ( ! _window ) {\n\t\tif ( typeof window === 'undefined' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t_window = window;\n\t}\n\n\tconst { platform } = _window.navigator;\n\n\treturn (\n\t\tplatform.indexOf( 'Mac' ) !== -1 ||\n\t\t[ 'iPad', 'iPhone' ].includes( platform )\n\t);\n}\n"]}
@@ -159,10 +159,7 @@ export { isAppleOS };
159
159
  */
160
160
 
161
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
- }));
162
+ return Object.fromEntries(Object.entries(object).map(([key, value]) => [key, mapFn(value)]));
166
163
  }
167
164
  /**
168
165
  * Object that contains functions that return the available modifier
@@ -206,9 +203,7 @@ export const rawShortcut = mapValues(modifiers, (
206
203
  modifier) => {
207
204
  return (
208
205
  /** @type {WPKeyHandler<string>} */
209
- function (character) {
210
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
211
-
206
+ (character, _isApple = isAppleOS) => {
212
207
  return [...modifier(_isApple), character.toLowerCase()].join('+');
213
208
  }
214
209
  );
@@ -232,9 +227,7 @@ export const displayShortcutList = mapValues(modifiers, (
232
227
  modifier) => {
233
228
  return (
234
229
  /** @type {WPKeyHandler<string[]>} */
235
- function (character) {
236
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
237
-
230
+ (character, _isApple = isAppleOS) => {
238
231
  const isApple = _isApple();
239
232
 
240
233
  const replacementKeyMap = {
@@ -286,11 +279,7 @@ export const displayShortcut = mapValues(displayShortcutList, (
286
279
  shortcutList) => {
287
280
  return (
288
281
  /** @type {WPKeyHandler<string>} */
289
- function (character) {
290
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
291
-
292
- return shortcutList(character, _isApple).join('');
293
- }
282
+ (character, _isApple = isAppleOS) => shortcutList(character, _isApple).join('')
294
283
  );
295
284
  });
296
285
  /**
@@ -313,9 +302,7 @@ export const shortcutAriaLabel = mapValues(modifiers, (
313
302
  modifier) => {
314
303
  return (
315
304
  /** @type {WPKeyHandler<string>} */
316
- function (character) {
317
- let _isApple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : isAppleOS;
318
-
305
+ (character, _isApple = isAppleOS) => {
319
306
  const isApple = _isApple();
320
307
  /** @type {Record<string,string>} */
321
308
 
@@ -384,9 +371,7 @@ export const isKeyboardEvent = mapValues(modifiers, (
384
371
  getModifiers) => {
385
372
  return (
386
373
  /** @type {WPEventKeyHandler} */
387
- function (event, character) {
388
- let _isApple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : isAppleOS;
389
-
374
+ (event, character, _isApple = isAppleOS) => {
390
375
  const mods = getModifiers(_isApple);
391
376
  const eventMods = getEventModifiers(event);
392
377
  /** @type {Record<string,string>} */
@@ -1 +1 @@
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: import('react').KeyboardEvent<HTMLElement> | 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 {{ [s: string]: any; } | ArrayLike<any>} 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 {import('react').KeyboardEvent<HTMLElement> | 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"]}
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: import('react').KeyboardEvent<HTMLElement> | 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 {{ [s: string]: any; } | ArrayLike<any>} 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 {import('react').KeyboardEvent<HTMLElement> | 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"]}
@@ -5,9 +5,7 @@
5
5
  *
6
6
  * @return {boolean} True if MacOS; false otherwise.
7
7
  */
8
- export function isAppleOS() {
9
- let _window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
10
-
8
+ export function isAppleOS(_window = null) {
11
9
  if (!_window) {
12
10
  if (typeof window === 'undefined') {
13
11
  return false;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/keycodes/src/platform.js"],"names":["isAppleOS","_window","window","platform","navigator","indexOf","includes"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,SAAT,GAAqC;AAAA,MAAjBC,OAAiB,uEAAP,IAAO;;AAC3C,MAAK,CAAEA,OAAP,EAAiB;AAChB,QAAK,OAAOC,MAAP,KAAkB,WAAvB,EAAqC;AACpC,aAAO,KAAP;AACA;;AAEDD,IAAAA,OAAO,GAAGC,MAAV;AACA;;AAED,QAAM;AAAEC,IAAAA;AAAF,MAAeF,OAAO,CAACG,SAA7B;AAEA,SACCD,QAAQ,CAACE,OAAT,CAAkB,KAAlB,MAA8B,CAAC,CAA/B,IACA,CAAE,MAAF,EAAU,QAAV,EAAqBC,QAArB,CAA+BH,QAA/B,CAFD;AAIA","sourcesContent":["/**\n * Return true if platform is MacOS.\n *\n * @param {Window?} _window window object by default; used for DI testing.\n *\n * @return {boolean} True if MacOS; false otherwise.\n */\nexport function isAppleOS( _window = null ) {\n\tif ( ! _window ) {\n\t\tif ( typeof window === 'undefined' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t_window = window;\n\t}\n\n\tconst { platform } = _window.navigator;\n\n\treturn (\n\t\tplatform.indexOf( 'Mac' ) !== -1 ||\n\t\t[ 'iPad', 'iPhone' ].includes( platform )\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/keycodes/src/platform.js"],"names":["isAppleOS","_window","window","platform","navigator","indexOf","includes"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,SAAT,CAAoBC,OAAO,GAAG,IAA9B,EAAqC;AAC3C,MAAK,CAAEA,OAAP,EAAiB;AAChB,QAAK,OAAOC,MAAP,KAAkB,WAAvB,EAAqC;AACpC,aAAO,KAAP;AACA;;AAEDD,IAAAA,OAAO,GAAGC,MAAV;AACA;;AAED,QAAM;AAAEC,IAAAA;AAAF,MAAeF,OAAO,CAACG,SAA7B;AAEA,SACCD,QAAQ,CAACE,OAAT,CAAkB,KAAlB,MAA8B,CAAC,CAA/B,IACA,CAAE,MAAF,EAAU,QAAV,EAAqBC,QAArB,CAA+BH,QAA/B,CAFD;AAIA","sourcesContent":["/**\n * Return true if platform is MacOS.\n *\n * @param {Window?} _window window object by default; used for DI testing.\n *\n * @return {boolean} True if MacOS; false otherwise.\n */\nexport function isAppleOS( _window = null ) {\n\tif ( ! _window ) {\n\t\tif ( typeof window === 'undefined' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t_window = window;\n\t}\n\n\tconst { platform } = _window.navigator;\n\n\treturn (\n\t\tplatform.indexOf( 'Mac' ) !== -1 ||\n\t\t[ 'iPad', 'iPhone' ].includes( platform )\n\t);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/keycodes",
3
- "version": "3.33.0",
3
+ "version": "3.35.0",
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,11 +28,11 @@
28
28
  "sideEffects": false,
29
29
  "dependencies": {
30
30
  "@babel/runtime": "^7.16.0",
31
- "@wordpress/i18n": "^4.33.0",
31
+ "@wordpress/i18n": "^4.35.0",
32
32
  "change-case": "^4.1.2"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
36
36
  },
37
- "gitHead": "e936127e1e13881f1a940b7bd1593a9e500147f3"
37
+ "gitHead": "a92f606309b1541b834ff9b0a76ed2a466fc45ed"
38
38
  }