first commit
This commit is contained in:
282
wp-includes/js/dist/keyboard-shortcuts.js
vendored
Normal file
282
wp-includes/js/dist/keyboard-shortcuts.js
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
var wp;
|
||||
(wp ||= {}).keyboardShortcuts = (() => {
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||
// If the importer is in node compatibility mode or this is not an ESM
|
||||
// file that has been converted to a CommonJS file using a Babel-
|
||||
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||
mod
|
||||
));
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
|
||||
// package-external:@wordpress/data
|
||||
var require_data = __commonJS({
|
||||
"package-external:@wordpress/data"(exports, module) {
|
||||
module.exports = window.wp.data;
|
||||
}
|
||||
});
|
||||
|
||||
// package-external:@wordpress/keycodes
|
||||
var require_keycodes = __commonJS({
|
||||
"package-external:@wordpress/keycodes"(exports, module) {
|
||||
module.exports = window.wp.keycodes;
|
||||
}
|
||||
});
|
||||
|
||||
// package-external:@wordpress/element
|
||||
var require_element = __commonJS({
|
||||
"package-external:@wordpress/element"(exports, module) {
|
||||
module.exports = window.wp.element;
|
||||
}
|
||||
});
|
||||
|
||||
// vendor-external:react/jsx-runtime
|
||||
var require_jsx_runtime = __commonJS({
|
||||
"vendor-external:react/jsx-runtime"(exports, module) {
|
||||
module.exports = window.ReactJSXRuntime;
|
||||
}
|
||||
});
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/index.mjs
|
||||
var index_exports = {};
|
||||
__export(index_exports, {
|
||||
ShortcutProvider: () => ShortcutProvider,
|
||||
__unstableUseShortcutEventMatch: () => useShortcutEventMatch,
|
||||
store: () => store,
|
||||
useShortcut: () => useShortcut
|
||||
});
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/store/index.mjs
|
||||
var import_data2 = __toESM(require_data(), 1);
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/store/reducer.mjs
|
||||
function reducer(state = {}, action) {
|
||||
switch (action.type) {
|
||||
case "REGISTER_SHORTCUT":
|
||||
return {
|
||||
...state,
|
||||
[action.name]: {
|
||||
category: action.category,
|
||||
keyCombination: action.keyCombination,
|
||||
aliases: action.aliases,
|
||||
description: action.description
|
||||
}
|
||||
};
|
||||
case "UNREGISTER_SHORTCUT":
|
||||
const { [action.name]: actionName, ...remainingState } = state;
|
||||
return remainingState;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
var reducer_default = reducer;
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/store/actions.mjs
|
||||
var actions_exports = {};
|
||||
__export(actions_exports, {
|
||||
registerShortcut: () => registerShortcut,
|
||||
unregisterShortcut: () => unregisterShortcut
|
||||
});
|
||||
function registerShortcut({
|
||||
name,
|
||||
category,
|
||||
description,
|
||||
keyCombination,
|
||||
aliases
|
||||
}) {
|
||||
return {
|
||||
type: "REGISTER_SHORTCUT",
|
||||
name,
|
||||
category,
|
||||
keyCombination,
|
||||
aliases,
|
||||
description
|
||||
};
|
||||
}
|
||||
function unregisterShortcut(name) {
|
||||
return {
|
||||
type: "UNREGISTER_SHORTCUT",
|
||||
name
|
||||
};
|
||||
}
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/store/selectors.mjs
|
||||
var selectors_exports = {};
|
||||
__export(selectors_exports, {
|
||||
getAllShortcutKeyCombinations: () => getAllShortcutKeyCombinations,
|
||||
getAllShortcutRawKeyCombinations: () => getAllShortcutRawKeyCombinations,
|
||||
getCategoryShortcuts: () => getCategoryShortcuts,
|
||||
getShortcutAliases: () => getShortcutAliases,
|
||||
getShortcutDescription: () => getShortcutDescription,
|
||||
getShortcutKeyCombination: () => getShortcutKeyCombination,
|
||||
getShortcutRepresentation: () => getShortcutRepresentation
|
||||
});
|
||||
var import_data = __toESM(require_data(), 1);
|
||||
var import_keycodes = __toESM(require_keycodes(), 1);
|
||||
var EMPTY_ARRAY = [];
|
||||
var FORMATTING_METHODS = {
|
||||
display: import_keycodes.displayShortcut,
|
||||
raw: import_keycodes.rawShortcut,
|
||||
ariaLabel: import_keycodes.shortcutAriaLabel
|
||||
};
|
||||
function getKeyCombinationRepresentation(shortcut, representation) {
|
||||
if (!shortcut) {
|
||||
return null;
|
||||
}
|
||||
return shortcut.modifier ? FORMATTING_METHODS[representation][shortcut.modifier](
|
||||
shortcut.character
|
||||
) : shortcut.character;
|
||||
}
|
||||
function getShortcutKeyCombination(state, name) {
|
||||
return state[name] ? state[name].keyCombination : null;
|
||||
}
|
||||
function getShortcutRepresentation(state, name, representation = "display") {
|
||||
const shortcut = getShortcutKeyCombination(state, name);
|
||||
return getKeyCombinationRepresentation(shortcut, representation);
|
||||
}
|
||||
function getShortcutDescription(state, name) {
|
||||
return state[name] ? state[name].description : null;
|
||||
}
|
||||
function getShortcutAliases(state, name) {
|
||||
return state[name] && state[name].aliases ? state[name].aliases : EMPTY_ARRAY;
|
||||
}
|
||||
var getAllShortcutKeyCombinations = (0, import_data.createSelector)(
|
||||
(state, name) => {
|
||||
return [
|
||||
getShortcutKeyCombination(state, name),
|
||||
...getShortcutAliases(state, name)
|
||||
].filter(Boolean);
|
||||
},
|
||||
(state, name) => [state[name]]
|
||||
);
|
||||
var getAllShortcutRawKeyCombinations = (0, import_data.createSelector)(
|
||||
(state, name) => {
|
||||
return getAllShortcutKeyCombinations(state, name).map(
|
||||
(combination) => getKeyCombinationRepresentation(combination, "raw")
|
||||
);
|
||||
},
|
||||
(state, name) => [state[name]]
|
||||
);
|
||||
var getCategoryShortcuts = (0, import_data.createSelector)(
|
||||
(state, categoryName) => {
|
||||
return Object.entries(state).filter(([, shortcut]) => shortcut.category === categoryName).map(([name]) => name);
|
||||
},
|
||||
(state) => [state]
|
||||
);
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/store/index.mjs
|
||||
var STORE_NAME = "core/keyboard-shortcuts";
|
||||
var store = (0, import_data2.createReduxStore)(STORE_NAME, {
|
||||
reducer: reducer_default,
|
||||
actions: actions_exports,
|
||||
selectors: selectors_exports
|
||||
});
|
||||
(0, import_data2.register)(store);
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/hooks/use-shortcut.mjs
|
||||
var import_element2 = __toESM(require_element(), 1);
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/hooks/use-shortcut-event-match.mjs
|
||||
var import_data3 = __toESM(require_data(), 1);
|
||||
var import_keycodes2 = __toESM(require_keycodes(), 1);
|
||||
function useShortcutEventMatch() {
|
||||
const { getAllShortcutKeyCombinations: getAllShortcutKeyCombinations2 } = (0, import_data3.useSelect)(
|
||||
store
|
||||
);
|
||||
function isMatch(name, event) {
|
||||
return getAllShortcutKeyCombinations2(name).some(
|
||||
({ modifier, character }) => {
|
||||
return import_keycodes2.isKeyboardEvent[modifier](event, character);
|
||||
}
|
||||
);
|
||||
}
|
||||
return isMatch;
|
||||
}
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/context.mjs
|
||||
var import_element = __toESM(require_element(), 1);
|
||||
var globalShortcuts = /* @__PURE__ */ new Set();
|
||||
var globalListener = (event) => {
|
||||
for (const keyboardShortcut of globalShortcuts) {
|
||||
keyboardShortcut(event);
|
||||
}
|
||||
};
|
||||
var context = (0, import_element.createContext)({
|
||||
add: (shortcut) => {
|
||||
if (globalShortcuts.size === 0) {
|
||||
document.addEventListener("keydown", globalListener);
|
||||
}
|
||||
globalShortcuts.add(shortcut);
|
||||
},
|
||||
delete: (shortcut) => {
|
||||
globalShortcuts.delete(shortcut);
|
||||
if (globalShortcuts.size === 0) {
|
||||
document.removeEventListener("keydown", globalListener);
|
||||
}
|
||||
}
|
||||
});
|
||||
context.displayName = "KeyboardShortcutsContext";
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/hooks/use-shortcut.mjs
|
||||
function useShortcut(name, callback, { isDisabled = false } = {}) {
|
||||
const shortcuts = (0, import_element2.useContext)(context);
|
||||
const isMatch = useShortcutEventMatch();
|
||||
const callbackRef = (0, import_element2.useRef)();
|
||||
(0, import_element2.useEffect)(() => {
|
||||
callbackRef.current = callback;
|
||||
}, [callback]);
|
||||
(0, import_element2.useEffect)(() => {
|
||||
if (isDisabled) {
|
||||
return;
|
||||
}
|
||||
function _callback(event) {
|
||||
if (isMatch(name, event)) {
|
||||
callbackRef.current(event);
|
||||
}
|
||||
}
|
||||
shortcuts.add(_callback);
|
||||
return () => {
|
||||
shortcuts.delete(_callback);
|
||||
};
|
||||
}, [name, isDisabled, shortcuts]);
|
||||
}
|
||||
|
||||
// packages/keyboard-shortcuts/build-module/components/shortcut-provider.mjs
|
||||
var import_element3 = __toESM(require_element(), 1);
|
||||
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
||||
var { Provider } = context;
|
||||
function ShortcutProvider(props) {
|
||||
const [keyboardShortcuts] = (0, import_element3.useState)(() => /* @__PURE__ */ new Set());
|
||||
function onKeyDown(event) {
|
||||
if (props.onKeyDown) {
|
||||
props.onKeyDown(event);
|
||||
}
|
||||
for (const keyboardShortcut of keyboardShortcuts) {
|
||||
keyboardShortcut(event);
|
||||
}
|
||||
}
|
||||
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Provider, { value: keyboardShortcuts, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...props, onKeyDown }) });
|
||||
}
|
||||
return __toCommonJS(index_exports);
|
||||
})();
|
||||
Reference in New Issue
Block a user