{"version":3,"file":"./build/keyboard-shortcuts/index.min.js","mappings":"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","sources":["webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"data\"]","webpack://wp/./packages/keyboard-shortcuts/build-module/store/@wordpress/keyboard-shortcuts/src/store/actions.js","webpack://wp/./node_modules/rememo/rememo.js","webpack://wp/external window [\"wp\",\"keycodes\"]","webpack://wp/./packages/keyboard-shortcuts/build-module/store/@wordpress/keyboard-shortcuts/src/store/selectors.js","webpack://wp/./packages/keyboard-shortcuts/build-module/store/@wordpress/keyboard-shortcuts/src/store/index.js","webpack://wp/./packages/keyboard-shortcuts/build-module/store/@wordpress/keyboard-shortcuts/src/store/reducer.js","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/./packages/keyboard-shortcuts/build-module/hooks/@wordpress/keyboard-shortcuts/src/hooks/use-shortcut-event-match.js","webpack://wp/./packages/keyboard-shortcuts/build-module/@wordpress/keyboard-shortcuts/src/context.js","webpack://wp/./packages/keyboard-shortcuts/build-module/hooks/@wordpress/keyboard-shortcuts/src/hooks/use-shortcut.js","webpack://wp/./packages/keyboard-shortcuts/build-module/components/@wordpress/keyboard-shortcuts/src/components/shortcut-provider.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","/** @typedef {import('@wordpress/keycodes').WPKeycodeModifier} WPKeycodeModifier */\n\n/**\n * Keyboard key combination.\n *\n * @typedef {Object} WPShortcutKeyCombination\n *\n * @property {string} character Character.\n * @property {WPKeycodeModifier|undefined} modifier Modifier.\n */\n\n/**\n * Configuration of a registered keyboard shortcut.\n *\n * @typedef {Object} WPShortcutConfig\n *\n * @property {string} name Shortcut name.\n * @property {string} category Shortcut category.\n * @property {string} description Shortcut description.\n * @property {WPShortcutKeyCombination} keyCombination Shortcut key combination.\n * @property {WPShortcutKeyCombination[]} [aliases] Shortcut aliases.\n */\n\n/**\n * Returns an action object used to register a new keyboard shortcut.\n *\n * @param {WPShortcutConfig} config Shortcut config.\n *\n * @example\n *\n *```js\n * import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n * import { useSelect, useDispatch } from '@wordpress/data';\n * import { useEffect } from '@wordpress/element';\n * import { __ } from '@wordpress/i18n';\n *\n * const ExampleComponent = () => {\n * const { registerShortcut } = useDispatch( keyboardShortcutsStore );\n *\n * useEffect( () => {\n * registerShortcut( {\n * name: 'custom/my-custom-shortcut',\n * category: 'my-category',\n * description: __( 'My custom shortcut' ),\n * keyCombination: {\n * modifier: 'primary',\n * character: 'j',\n * },\n * } );\n * }, [] );\n *\n * const shortcut = useSelect(\n * ( select ) =>\n * select( keyboardShortcutsStore ).getShortcutKeyCombination(\n * 'custom/my-custom-shortcut'\n * ),\n * []\n * );\n *\n * return shortcut ? (\n *
{ __( 'Shortcut is registered.' ) }
\n * ) : (\n *{ __( 'Shortcut is not registered.' ) }
\n * );\n * };\n *```\n * @return {Object} action.\n */\nexport function registerShortcut( {\n\tname,\n\tcategory,\n\tdescription,\n\tkeyCombination,\n\taliases,\n} ) {\n\treturn {\n\t\ttype: 'REGISTER_SHORTCUT',\n\t\tname,\n\t\tcategory,\n\t\tkeyCombination,\n\t\taliases,\n\t\tdescription,\n\t};\n}\n\n/**\n * Returns an action object used to unregister a keyboard shortcut.\n *\n * @param {string} name Shortcut name.\n *\n * @example\n *\n *```js\n * import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n * import { useSelect, useDispatch } from '@wordpress/data';\n * import { useEffect } from '@wordpress/element';\n * import { __ } from '@wordpress/i18n';\n *\n * const ExampleComponent = () => {\n * const { unregisterShortcut } = useDispatch( keyboardShortcutsStore );\n *\n * useEffect( () => {\n * unregisterShortcut( 'core/edit-post/next-region' );\n * }, [] );\n *\n * const shortcut = useSelect(\n * ( select ) =>\n * select( keyboardShortcutsStore ).getShortcutKeyCombination(\n * 'core/edit-post/next-region'\n * ),\n * []\n * );\n *\n * return shortcut ? (\n *{ __( 'Shortcut is not unregistered.' ) }
\n * ) : (\n *{ __( 'Shortcut is unregistered.' ) }
\n * );\n * };\n *```\n * @return {Object} action.\n */\nexport function unregisterShortcut( name ) {\n\treturn {\n\t\ttype: 'UNREGISTER_SHORTCUT',\n\t\tname,\n\t};\n}\n","'use strict';\n\n/** @typedef {(...args: any[]) => *[]} GetDependants */\n\n/** @typedef {() => void} Clear */\n\n/**\n * @typedef {{\n * getDependants: GetDependants,\n * clear: Clear\n * }} EnhancedSelector\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef CacheNode\n *\n * @property {?CacheNode|undefined} [prev] Previous node.\n * @property {?CacheNode|undefined} [next] Next node.\n * @property {*[]} args Function arguments for cache entry.\n * @property {*} val Function result.\n */\n\n/**\n * @typedef Cache\n *\n * @property {Clear} clear Function to clear cache.\n * @property {boolean} [isUniqueByDependants] Whether dependants are valid in\n * considering cache uniqueness. A cache is unique if dependents are all arrays\n * or objects.\n * @property {CacheNode?} [head] Cache head.\n * @property {*[]} [lastDependants] Dependants from previous invocation.\n */\n\n/**\n * Arbitrary value used as key for referencing cache object in WeakMap tree.\n *\n * @type {{}}\n */\nvar LEAF_KEY = {};\n\n/**\n * Returns the first argument as the sole entry in an array.\n *\n * @template T\n *\n * @param {T} value Value to return.\n *\n * @return {[T]} Value returned as entry in array.\n */\nfunction arrayOf(value) {\n\treturn [value];\n}\n\n/**\n * Returns true if the value passed is object-like, or false otherwise. A value\n * is object-like if it can support property assignment, e.g. object or array.\n *\n * @param {*} value Value to test.\n *\n * @return {boolean} Whether value is object-like.\n */\nfunction isObjectLike(value) {\n\treturn !!value && 'object' === typeof value;\n}\n\n/**\n * Creates and returns a new cache object.\n *\n * @return {Cache} Cache object.\n */\nfunction createCache() {\n\t/** @type {Cache} */\n\tvar cache = {\n\t\tclear: function () {\n\t\t\tcache.head = null;\n\t\t},\n\t};\n\n\treturn cache;\n}\n\n/**\n * Returns true if entries within the two arrays are strictly equal by\n * reference from a starting index.\n *\n * @param {*[]} a First array.\n * @param {*[]} b Second array.\n * @param {number} fromIndex Index from which to start comparison.\n *\n * @return {boolean} Whether arrays are shallowly equal.\n */\nfunction isShallowEqual(a, b, fromIndex) {\n\tvar i;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (i = fromIndex; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Returns a memoized selector function. The getDependants function argument is\n * called before the memoized selector and is expected to return an immutable\n * reference or array of references on which the selector depends for computing\n * its own return value. The memoize cache is preserved only as long as those\n * dependant references remain the same. If getDependants returns a different\n * reference(s), the cache is cleared and the selector value regenerated.\n *\n * @template {(...args: *[]) => *} S\n *\n * @param {S} selector Selector function.\n * @param {GetDependants=} getDependants Dependant getter returning an array of\n * references used in cache bust consideration.\n */\nexport default function (selector, getDependants) {\n\t/** @type {WeakMap<*,*>} */\n\tvar rootCache;\n\n\t/** @type {GetDependants} */\n\tvar normalizedGetDependants = getDependants ? getDependants : arrayOf;\n\n\t/**\n\t * Returns the cache for a given dependants array. When possible, a WeakMap\n\t * will be used to create a unique cache for each set of dependants. This\n\t * is feasible due to the nature of WeakMap in allowing garbage collection\n\t * to occur on entries where the key object is no longer referenced. Since\n\t * WeakMap requires the key to be an object, this is only possible when the\n\t * dependant is object-like. The root cache is created as a hierarchy where\n\t * each top-level key is the first entry in a dependants set, the value a\n\t * WeakMap where each key is the next dependant, and so on. This continues\n\t * so long as the dependants are object-like. If no dependants are object-\n\t * like, then the cache is shared across all invocations.\n\t *\n\t * @see isObjectLike\n\t *\n\t * @param {*[]} dependants Selector dependants.\n\t *\n\t * @return {Cache} Cache object.\n\t */\n\tfunction getCache(dependants) {\n\t\tvar caches = rootCache,\n\t\t\tisUniqueByDependants = true,\n\t\t\ti,\n\t\t\tdependant,\n\t\t\tmap,\n\t\t\tcache;\n\n\t\tfor (i = 0; i < dependants.length; i++) {\n\t\t\tdependant = dependants[i];\n\n\t\t\t// Can only compose WeakMap from object-like key.\n\t\t\tif (!isObjectLike(dependant)) {\n\t\t\t\tisUniqueByDependants = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Does current segment of cache already have a WeakMap?\n\t\t\tif (caches.has(dependant)) {\n\t\t\t\t// Traverse into nested WeakMap.\n\t\t\t\tcaches = caches.get(dependant);\n\t\t\t} else {\n\t\t\t\t// Create, set, and traverse into a new one.\n\t\t\t\tmap = new WeakMap();\n\t\t\t\tcaches.set(dependant, map);\n\t\t\t\tcaches = map;\n\t\t\t}\n\t\t}\n\n\t\t// We use an arbitrary (but consistent) object as key for the last item\n\t\t// in the WeakMap to serve as our running cache.\n\t\tif (!caches.has(LEAF_KEY)) {\n\t\t\tcache = createCache();\n\t\t\tcache.isUniqueByDependants = isUniqueByDependants;\n\t\t\tcaches.set(LEAF_KEY, cache);\n\t\t}\n\n\t\treturn caches.get(LEAF_KEY);\n\t}\n\n\t/**\n\t * Resets root memoization cache.\n\t */\n\tfunction clear() {\n\t\trootCache = new WeakMap();\n\t}\n\n\t/* eslint-disable jsdoc/check-param-names */\n\t/**\n\t * The augmented selector call, considering first whether dependants have\n\t * changed before passing it to underlying memoize function.\n\t *\n\t * @param {*} source Source object for derivation.\n\t * @param {...*} extraArgs Additional arguments to pass to selector.\n\t *\n\t * @return {*} Selector result.\n\t */\n\t/* eslint-enable jsdoc/check-param-names */\n\tfunction callSelector(/* source, ...extraArgs */) {\n\t\tvar len = arguments.length,\n\t\t\tcache,\n\t\t\tnode,\n\t\t\ti,\n\t\t\targs,\n\t\t\tdependants;\n\n\t\t// Create copy of arguments (avoid leaking deoptimization).\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tdependants = normalizedGetDependants.apply(null, args);\n\t\tcache = getCache(dependants);\n\n\t\t// If not guaranteed uniqueness by dependants (primitive type), shallow\n\t\t// compare against last dependants and, if references have changed,\n\t\t// destroy cache to recalculate result.\n\t\tif (!cache.isUniqueByDependants) {\n\t\t\tif (\n\t\t\t\tcache.lastDependants &&\n\t\t\t\t!isShallowEqual(dependants, cache.lastDependants, 0)\n\t\t\t) {\n\t\t\t\tcache.clear();\n\t\t\t}\n\n\t\t\tcache.lastDependants = dependants;\n\t\t}\n\n\t\tnode = cache.head;\n\t\twhile (node) {\n\t\t\t// Check whether node arguments match arguments\n\t\t\tif (!isShallowEqual(node.args, args, 1)) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== cache.head) {\n\t\t\t\t// Adjust siblings to point to each other.\n\t\t\t\t/** @type {CacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = cache.head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {CacheNode} */ (cache.head).prev = node;\n\t\t\t\tcache.head = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\tnode = /** @type {CacheNode} */ ({\n\t\t\t// Generate the result from original function\n\t\t\tval: selector.apply(null, args),\n\t\t});\n\n\t\t// Avoid including the source object in the cache.\n\t\targs[0] = null;\n\t\tnode.args = args;\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (cache.head) {\n\t\t\tcache.head.prev = node;\n\t\t\tnode.next = cache.head;\n\t\t}\n\n\t\tcache.head = node;\n\n\t\treturn node.val;\n\t}\n\n\tcallSelector.getDependants = normalizedGetDependants;\n\tcallSelector.clear = clear;\n\tclear();\n\n\treturn /** @type {S & EnhancedSelector} */ (callSelector);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"keycodes\"];","/**\n * External dependencies\n */\nimport createSelector from 'rememo';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tdisplayShortcut,\n\tshortcutAriaLabel,\n\trawShortcut,\n} from '@wordpress/keycodes';\n\n/** @typedef {import('./actions').WPShortcutKeyCombination} WPShortcutKeyCombination */\n\n/** @typedef {import('@wordpress/keycodes').WPKeycodeHandlerByModifier} WPKeycodeHandlerByModifier */\n\n/**\n * Shared reference to an empty array for cases where it is important to avoid\n * returning a new array reference on every invocation.\n *\n * @type {Array%s
/ Modifier: %s
',\n * character,\n * modifier\n * ),\n * {\n * code:
,\n * }\n * ) }\n * %s
/ Modifier: %s
',\n * character,\n * modifier\n * ),\n * {\n * code:
,\n * }\n * ) }\n * %s
/ Modifier: %s
',\n * character,\n * modifier\n * ),\n * {\n * code:
,\n * }\n * ) }\n * %s
',\n * shortcutRawKeyCombination\n * ),\n * {\n * code:
,\n * }\n * ) }\n *