248 lines
8.3 KiB
JavaScript
248 lines
8.3 KiB
JavaScript
"use strict";
|
|
var wp;
|
|
(wp ||= {}).keycodes = (() => {
|
|
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/i18n
|
|
var require_i18n = __commonJS({
|
|
"package-external:@wordpress/i18n"(exports, module) {
|
|
module.exports = window.wp.i18n;
|
|
}
|
|
});
|
|
|
|
// packages/keycodes/build-module/index.mjs
|
|
var index_exports = {};
|
|
__export(index_exports, {
|
|
ALT: () => ALT,
|
|
BACKSPACE: () => BACKSPACE,
|
|
COMMAND: () => COMMAND,
|
|
CTRL: () => CTRL,
|
|
DELETE: () => DELETE,
|
|
DOWN: () => DOWN,
|
|
END: () => END,
|
|
ENTER: () => ENTER,
|
|
ESCAPE: () => ESCAPE,
|
|
F10: () => F10,
|
|
HOME: () => HOME,
|
|
LEFT: () => LEFT,
|
|
PAGEDOWN: () => PAGEDOWN,
|
|
PAGEUP: () => PAGEUP,
|
|
RIGHT: () => RIGHT,
|
|
SHIFT: () => SHIFT,
|
|
SPACE: () => SPACE,
|
|
TAB: () => TAB,
|
|
UP: () => UP,
|
|
ZERO: () => ZERO,
|
|
ariaKeyShortcut: () => ariaKeyShortcut,
|
|
displayShortcut: () => displayShortcut,
|
|
displayShortcutList: () => displayShortcutList,
|
|
isAppleOS: () => isAppleOS,
|
|
isKeyboardEvent: () => isKeyboardEvent,
|
|
modifiers: () => modifiers,
|
|
rawShortcut: () => rawShortcut,
|
|
shortcutAriaLabel: () => shortcutAriaLabel
|
|
});
|
|
var import_i18n = __toESM(require_i18n(), 1);
|
|
|
|
// packages/keycodes/build-module/platform.mjs
|
|
function isAppleOS(_window) {
|
|
if (!_window) {
|
|
if (typeof window === "undefined") {
|
|
return false;
|
|
}
|
|
_window = window;
|
|
}
|
|
const { platform } = _window.navigator;
|
|
return platform.indexOf("Mac") !== -1 || ["iPad", "iPhone"].includes(platform);
|
|
}
|
|
|
|
// packages/keycodes/build-module/index.mjs
|
|
var BACKSPACE = 8;
|
|
var TAB = 9;
|
|
var ENTER = 13;
|
|
var ESCAPE = 27;
|
|
var SPACE = 32;
|
|
var PAGEUP = 33;
|
|
var PAGEDOWN = 34;
|
|
var END = 35;
|
|
var HOME = 36;
|
|
var LEFT = 37;
|
|
var UP = 38;
|
|
var RIGHT = 39;
|
|
var DOWN = 40;
|
|
var DELETE = 46;
|
|
var F10 = 121;
|
|
var ALT = "alt";
|
|
var CTRL = "ctrl";
|
|
var COMMAND = "meta";
|
|
var SHIFT = "shift";
|
|
var ZERO = 48;
|
|
function capitaliseFirstCharacter(string) {
|
|
return string.length < 2 ? string.toUpperCase() : string.charAt(0).toUpperCase() + string.slice(1);
|
|
}
|
|
function mapValues(object, mapFn) {
|
|
return Object.fromEntries(
|
|
Object.entries(object).map(([key, value]) => [
|
|
key,
|
|
mapFn(value)
|
|
])
|
|
);
|
|
}
|
|
var modifiers = {
|
|
primary: (_isApple) => _isApple() ? [COMMAND] : [CTRL],
|
|
primaryShift: (_isApple) => _isApple() ? [SHIFT, COMMAND] : [CTRL, SHIFT],
|
|
primaryAlt: (_isApple) => _isApple() ? [ALT, COMMAND] : [CTRL, ALT],
|
|
secondary: (_isApple) => _isApple() ? [SHIFT, ALT, COMMAND] : [CTRL, SHIFT, ALT],
|
|
access: (_isApple) => _isApple() ? [CTRL, ALT] : [SHIFT, ALT],
|
|
ctrl: () => [CTRL],
|
|
alt: () => [ALT],
|
|
ctrlShift: () => [CTRL, SHIFT],
|
|
shift: () => [SHIFT],
|
|
shiftAlt: () => [SHIFT, ALT],
|
|
undefined: () => []
|
|
};
|
|
var rawShortcut = /* @__PURE__ */ mapValues(modifiers, (modifier) => {
|
|
return (character, _isApple = isAppleOS) => {
|
|
return [...modifier(_isApple), character.toLowerCase()].join(
|
|
"+"
|
|
);
|
|
};
|
|
});
|
|
var ariaKeyShortcut = /* @__PURE__ */ mapValues(modifiers, (modifier) => {
|
|
return (character, _isApple = isAppleOS) => {
|
|
return [
|
|
...modifier(_isApple).map((key) => key === CTRL ? "Control" : key).map((key) => capitaliseFirstCharacter(key)),
|
|
capitaliseFirstCharacter(character)
|
|
].join("+");
|
|
};
|
|
});
|
|
var displayShortcutList = /* @__PURE__ */ mapValues(
|
|
modifiers,
|
|
(modifier) => {
|
|
return (character, _isApple = isAppleOS) => {
|
|
const isApple = _isApple();
|
|
const replacementKeyMap = {
|
|
[ALT]: isApple ? "\u2325" : "Alt",
|
|
[CTRL]: isApple ? "\u2303" : "Ctrl",
|
|
// Make sure ⌃ is the U+2303 UP ARROWHEAD unicode character and not the caret character.
|
|
[COMMAND]: "\u2318",
|
|
[SHIFT]: isApple ? "\u21E7" : "Shift"
|
|
};
|
|
const modifierKeys = modifier(_isApple).reduce(
|
|
(accumulator, key) => {
|
|
const replacementKey = replacementKeyMap[key] ?? key;
|
|
if (isApple) {
|
|
return [...accumulator, replacementKey];
|
|
}
|
|
return [...accumulator, replacementKey, "+"];
|
|
},
|
|
[]
|
|
);
|
|
return [
|
|
...modifierKeys,
|
|
capitaliseFirstCharacter(character)
|
|
];
|
|
};
|
|
}
|
|
);
|
|
var displayShortcut = /* @__PURE__ */ mapValues(
|
|
displayShortcutList,
|
|
(shortcutList) => {
|
|
return (character, _isApple = isAppleOS) => shortcutList(character, _isApple).join("");
|
|
}
|
|
);
|
|
var shortcutAriaLabel = /* @__PURE__ */ mapValues(modifiers, (modifier) => {
|
|
return (character, _isApple = isAppleOS) => {
|
|
const isApple = _isApple();
|
|
const replacementKeyMap = {
|
|
[SHIFT]: "Shift",
|
|
[COMMAND]: isApple ? "Command" : "Control",
|
|
[CTRL]: "Control",
|
|
[ALT]: isApple ? "Option" : "Alt",
|
|
/* translators: comma as in the character ',' */
|
|
",": (0, import_i18n.__)("Comma"),
|
|
/* translators: period as in the character '.' */
|
|
".": (0, import_i18n.__)("Period"),
|
|
/* translators: backtick as in the character '`' */
|
|
"`": (0, import_i18n.__)("Backtick"),
|
|
/* translators: tilde as in the character '~' */
|
|
"~": (0, import_i18n.__)("Tilde")
|
|
};
|
|
return [...modifier(_isApple), character].map(
|
|
(key) => capitaliseFirstCharacter(replacementKeyMap[key] ?? key)
|
|
).join(isApple ? " " : " + ");
|
|
};
|
|
});
|
|
function getEventModifiers(event) {
|
|
return [ALT, CTRL, COMMAND, SHIFT].filter(
|
|
(key) => event[`${key}Key`]
|
|
);
|
|
}
|
|
var isKeyboardEvent = /* @__PURE__ */ mapValues(modifiers, (getModifiers) => {
|
|
return (event, character, _isApple = isAppleOS) => {
|
|
const mods = getModifiers(_isApple);
|
|
const eventMods = getEventModifiers(event);
|
|
const replacementWithShiftKeyMap = {
|
|
Comma: ",",
|
|
Backslash: "\\",
|
|
// Windows returns `\` for both IntlRo and IntlYen.
|
|
IntlRo: "\\",
|
|
IntlYen: "\\"
|
|
};
|
|
const modsDiff = mods.filter(
|
|
(mod) => !eventMods.includes(mod)
|
|
);
|
|
const eventModsDiff = eventMods.filter(
|
|
(mod) => !mods.includes(mod)
|
|
);
|
|
if (modsDiff.length > 0 || eventModsDiff.length > 0) {
|
|
return false;
|
|
}
|
|
let key = event.key.toLowerCase();
|
|
if (!character) {
|
|
return mods.includes(key);
|
|
}
|
|
if (event.altKey && character.length === 1) {
|
|
key = String.fromCharCode(event.keyCode).toLowerCase();
|
|
}
|
|
if (event.shiftKey && character.length === 1 && replacementWithShiftKeyMap[event.code]) {
|
|
key = replacementWithShiftKeyMap[event.code];
|
|
}
|
|
if (character === "del") {
|
|
character = "delete";
|
|
}
|
|
return key === character.toLowerCase();
|
|
};
|
|
});
|
|
return __toCommonJS(index_exports);
|
|
})();
|