UNPKG

ng-hotkeys

Version:

ng-hotkeys for Angular 14+

132 lines 11.7 kB
import { invert } from './utils'; const isMac = typeof navigator !== "undefined" ? navigator.userAgent.includes("Mac OS") : false; export const modifiers = { shift: "shiftKey", ctrl: "ctrlKey", alt: "altKey", cmd: isMac ? "metaKey" : "ctrlKey", command: isMac ? "metaKey" : "ctrlKey", meta: isMac ? "metaKey" : "ctrlKey", "left command": "metaKey", "right command": "MetaRight", "⌘": isMac ? "metaKey" : "ctrlKey", option: "altKey", ctl: "ctrlKey", control: "ctrlKey" }; export const _SPECIAL_CASES = { plus: "+" }; export const symbols = { cmd: isMac ? "⌘" : "Ctrl", command: isMac ? "⌘" : "Ctrl", "left command": isMac ? "⌘" : "Ctrl", "right command": isMac ? "⌘" : "Ctrl", option: isMac ? "⌥" : "Alt", plus: "+", left: "←", right: "→", up: "↑", down: "↓", alt: isMac ? "⌥" : "Alt", ctrl: "Ctrl", control: "Ctrl", shift: "⇧" }; export const _MAP = { 8: "backspace", 9: "tab", 13: "enter", 16: "shift", 17: ["ctrl", "control"], 18: "alt", 20: "capslock", 27: ["esc", "escape"], 32: ["space", "spc"], 33: "pageup", 34: "pagedown", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down", 45: "ins", 46: "del", 91: ["meta", "cmd", "command"], 93: ["meta", "cmd", "command"], 224: ["meta", "cmd", "command"] }; /* * mapping for special characters so they can support * * this dictionary is only used incase you want to bind a * keyup or keydown event to one of these keys * */ export const _KEYCODE_MAP = { 106: "*", 107: "+", 109: "-", 110: ".", 111: "/", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'" }; /** * this is a mapping of keys that require shift on a US keypad * back to the non shift equivelents * * this is so you can use keyup events with these keys * * note that this will only work reliably on US keyboards * */ export const _SHIFT_MAP = { "`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&", "8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ":", "'": '"', ",": "<", ".": ">", "/": "?", "\\": "|" }; export const _INVERTED_SHIFT_MAP = invert(_SHIFT_MAP); /** * loop through the f keys, f1 to f19 and add them to the map * programatically */ for (let i = 1; i < 20; ++i) { _MAP[111 + i] = "f" + i; } /** * loop through to map numbers on the numeric keypad */ for (let i = 0; i <= 9; ++i) { // This needs to use a string cause otherwise since 0 is falsey // event will never fire for numpad 0 pressed as part of a keydown // event. _MAP[i + 96] = i.toString(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWhvdGtleXMvc3JjL2xpYi9rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFakMsTUFBTSxLQUFLLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixLQUFLLEVBQUUsVUFBVTtJQUNqQixJQUFJLEVBQUUsU0FBUztJQUNmLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO0lBQ2xDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztJQUN0QyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDbkMsY0FBYyxFQUFFLFNBQVM7SUFDekIsZUFBZSxFQUFFLFdBQVc7SUFDNUIsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO0lBQ2xDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsT0FBTyxFQUFFLFNBQVM7Q0FDckIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixJQUFJLEVBQUUsR0FBRztDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDbkIsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNO0lBQ3pCLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTTtJQUM3QixjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU07SUFDcEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNO0lBQ3JDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSztJQUMzQixJQUFJLEVBQUUsR0FBRztJQUNULElBQUksRUFBRSxHQUFHO0lBQ1QsS0FBSyxFQUFFLEdBQUc7SUFDVixFQUFFLEVBQUUsR0FBRztJQUNQLElBQUksRUFBRSxHQUFHO0lBQ1QsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLO0lBQ3hCLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsR0FBRztDQUNiLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUc7SUFDaEIsQ0FBQyxFQUFFLFdBQVc7SUFDZCxDQUFDLEVBQUUsS0FBSztJQUNSLEVBQUUsRUFBRSxPQUFPO0lBQ1gsRUFBRSxFQUFFLE9BQU87SUFDWCxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO0lBQ3ZCLEVBQUUsRUFBRSxLQUFLO0lBQ1QsRUFBRSxFQUFFLFVBQVU7SUFDZCxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ3JCLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7SUFDcEIsRUFBRSxFQUFFLFFBQVE7SUFDWixFQUFFLEVBQUUsVUFBVTtJQUNkLEVBQUUsRUFBRSxLQUFLO0lBQ1QsRUFBRSxFQUFFLE1BQU07SUFDVixFQUFFLEVBQUUsTUFBTTtJQUNWLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLE9BQU87SUFDWCxFQUFFLEVBQUUsTUFBTTtJQUNWLEVBQUUsRUFBRSxLQUFLO0lBQ1QsRUFBRSxFQUFFLEtBQUs7SUFDVCxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQztJQUM5QixFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQztJQUM5QixHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQztDQUNsQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQ3hCLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0NBQ1gsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLElBQUksRUFBRSxHQUFHO0NBQ1osQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUV0RDs7O0dBR0c7QUFDSCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztDQUMzQjtBQUVEOztHQUVHO0FBQ0gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN6QiwrREFBK0Q7SUFDL0Qsa0VBQWtFO0lBQ2xFLFNBQVM7SUFDVCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztDQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludmVydCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBpc01hYyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09IFwidW5kZWZpbmVkXCIgPyBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKFwiTWFjIE9TXCIpIDogZmFsc2U7XG5cbmV4cG9ydCBjb25zdCBtb2RpZmllcnMgPSB7XG4gICAgc2hpZnQ6IFwic2hpZnRLZXlcIixcbiAgICBjdHJsOiBcImN0cmxLZXlcIixcbiAgICBhbHQ6IFwiYWx0S2V5XCIsXG4gICAgY21kOiBpc01hYyA/IFwibWV0YUtleVwiIDogXCJjdHJsS2V5XCIsXG4gICAgY29tbWFuZDogaXNNYWMgPyBcIm1ldGFLZXlcIiA6IFwiY3RybEtleVwiLFxuICAgIG1ldGE6IGlzTWFjID8gXCJtZXRhS2V5XCIgOiBcImN0cmxLZXlcIixcbiAgICBcImxlZnQgY29tbWFuZFwiOiBcIm1ldGFLZXlcIixcbiAgICBcInJpZ2h0IGNvbW1hbmRcIjogXCJNZXRhUmlnaHRcIixcbiAgICBcIuKMmFwiOiBpc01hYyA/IFwibWV0YUtleVwiIDogXCJjdHJsS2V5XCIsXG4gICAgb3B0aW9uOiBcImFsdEtleVwiLFxuICAgIGN0bDogXCJjdHJsS2V5XCIsXG4gICAgY29udHJvbDogXCJjdHJsS2V5XCJcbn07XG5leHBvcnQgY29uc3QgX1NQRUNJQUxfQ0FTRVMgPSB7XG4gICAgcGx1czogXCIrXCJcbn07XG5cbmV4cG9ydCBjb25zdCBzeW1ib2xzID0ge1xuICAgIGNtZDogaXNNYWMgPyBcIuKMmFwiIDogXCJDdHJsXCIsXG4gICAgY29tbWFuZDogaXNNYWMgPyBcIuKMmFwiIDogXCJDdHJsXCIsXG4gICAgXCJsZWZ0IGNvbW1hbmRcIjogaXNNYWMgPyBcIuKMmFwiIDogXCJDdHJsXCIsXG4gICAgXCJyaWdodCBjb21tYW5kXCI6IGlzTWFjID8gXCLijJhcIiA6IFwiQ3RybFwiLFxuICAgIG9wdGlvbjogaXNNYWMgPyBcIuKMpVwiIDogXCJBbHRcIixcbiAgICBwbHVzOiBcIitcIixcbiAgICBsZWZ0OiBcIuKGkFwiLFxuICAgIHJpZ2h0OiBcIuKGklwiLFxuICAgIHVwOiBcIuKGkVwiLFxuICAgIGRvd246IFwi4oaTXCIsXG4gICAgYWx0OiBpc01hYyA/IFwi4oylXCIgOiBcIkFsdFwiLFxuICAgIGN0cmw6IFwiQ3RybFwiLFxuICAgIGNvbnRyb2w6IFwiQ3RybFwiLFxuICAgIHNoaWZ0OiBcIuKHp1wiXG59O1xuXG5leHBvcnQgY29uc3QgX01BUCA9IHtcbiAgICA4OiBcImJhY2tzcGFjZVwiLFxuICAgIDk6IFwidGFiXCIsXG4gICAgMTM6IFwiZW50ZXJcIixcbiAgICAxNjogXCJzaGlmdFwiLFxuICAgIDE3OiBbXCJjdHJsXCIsIFwiY29udHJvbFwiXSxcbiAgICAxODogXCJhbHRcIixcbiAgICAyMDogXCJjYXBzbG9ja1wiLFxuICAgIDI3OiBbXCJlc2NcIiwgXCJlc2NhcGVcIl0sXG4gICAgMzI6IFtcInNwYWNlXCIsIFwic3BjXCJdLFxuICAgIDMzOiBcInBhZ2V1cFwiLFxuICAgIDM0OiBcInBhZ2Vkb3duXCIsXG4gICAgMzU6IFwiZW5kXCIsXG4gICAgMzY6IFwiaG9tZVwiLFxuICAgIDM3OiBcImxlZnRcIixcbiAgICAzODogXCJ1cFwiLFxuICAgIDM5OiBcInJpZ2h0XCIsXG4gICAgNDA6IFwiZG93blwiLFxuICAgIDQ1OiBcImluc1wiLFxuICAgIDQ2OiBcImRlbFwiLFxuICAgIDkxOiBbXCJtZXRhXCIsIFwiY21kXCIsIFwiY29tbWFuZFwiXSxcbiAgICA5MzogW1wibWV0YVwiLCBcImNtZFwiLCBcImNvbW1hbmRcIl0sXG4gICAgMjI0OiBbXCJtZXRhXCIsIFwiY21kXCIsIFwiY29tbWFuZFwiXVxufTtcblxuLypcbiAqIG1hcHBpbmcgZm9yIHNwZWNpYWwgY2hhcmFjdGVycyBzbyB0aGV5IGNhbiBzdXBwb3J0XG4gKlxuICogdGhpcyBkaWN0aW9uYXJ5IGlzIG9ubHkgdXNlZCBpbmNhc2UgeW91IHdhbnQgdG8gYmluZCBhXG4gKiBrZXl1cCBvciBrZXlkb3duIGV2ZW50IHRvIG9uZSBvZiB0aGVzZSBrZXlzXG4gKlxuICovXG5leHBvcnQgY29uc3QgX0tFWUNPREVfTUFQID0ge1xuICAgIDEwNjogXCIqXCIsXG4gICAgMTA3OiBcIitcIixcbiAgICAxMDk6IFwiLVwiLFxuICAgIDExMDogXCIuXCIsXG4gICAgMTExOiBcIi9cIixcbiAgICAxODY6IFwiO1wiLFxuICAgIDE4NzogXCI9XCIsXG4gICAgMTg4OiBcIixcIixcbiAgICAxODk6IFwiLVwiLFxuICAgIDE5MDogXCIuXCIsXG4gICAgMTkxOiBcIi9cIixcbiAgICAxOTI6IFwiYFwiLFxuICAgIDIxOTogXCJbXCIsXG4gICAgMjIwOiBcIlxcXFxcIixcbiAgICAyMjE6IFwiXVwiLFxuICAgIDIyMjogXCInXCJcbn07XG5cbi8qKlxuICogdGhpcyBpcyBhIG1hcHBpbmcgb2Yga2V5cyB0aGF0IHJlcXVpcmUgc2hpZnQgb24gYSBVUyBrZXlwYWRcbiAqIGJhY2sgdG8gdGhlIG5vbiBzaGlmdCBlcXVpdmVsZW50c1xuICpcbiAqIHRoaXMgaXMgc28geW91IGNhbiB1c2Uga2V5dXAgZXZlbnRzIHdpdGggdGhlc2Uga2V5c1xuICpcbiAqIG5vdGUgdGhhdCB0aGlzIHdpbGwgb25seSB3b3JrIHJlbGlhYmx5IG9uIFVTIGtleWJvYXJkc1xuICpcbiAqL1xuZXhwb3J0IGNvbnN0IF9TSElGVF9NQVAgPSB7XG4gICAgXCJgXCI6IFwiflwiLFxuICAgIFwiMVwiOiBcIiFcIixcbiAgICBcIjJcIjogXCJAXCIsXG4gICAgXCIzXCI6IFwiI1wiLFxuICAgIFwiNFwiOiBcIiRcIixcbiAgICBcIjVcIjogXCIlXCIsXG4gICAgXCI2XCI6IFwiXlwiLFxuICAgIFwiN1wiOiBcIiZcIixcbiAgICBcIjhcIjogXCIqXCIsXG4gICAgXCI5XCI6IFwiKFwiLFxuICAgIFwiMFwiOiBcIilcIixcbiAgICBcIi1cIjogXCJfXCIsXG4gICAgXCI9XCI6IFwiK1wiLFxuICAgIFwiO1wiOiBcIjpcIixcbiAgICBcIidcIjogJ1wiJyxcbiAgICBcIixcIjogXCI8XCIsXG4gICAgXCIuXCI6IFwiPlwiLFxuICAgIFwiL1wiOiBcIj9cIixcbiAgICBcIlxcXFxcIjogXCJ8XCJcbn07XG5leHBvcnQgY29uc3QgX0lOVkVSVEVEX1NISUZUX01BUCA9IGludmVydChfU0hJRlRfTUFQKTtcblxuLyoqXG4gKiBsb29wIHRocm91Z2ggdGhlIGYga2V5cywgZjEgdG8gZjE5IGFuZCBhZGQgdGhlbSB0byB0aGUgbWFwXG4gKiBwcm9ncmFtYXRpY2FsbHlcbiAqL1xuZm9yIChsZXQgaSA9IDE7IGkgPCAyMDsgKytpKSB7XG4gICAgX01BUFsxMTEgKyBpXSA9IFwiZlwiICsgaTtcbn1cblxuLyoqXG4gKiBsb29wIHRocm91Z2ggdG8gbWFwIG51bWJlcnMgb24gdGhlIG51bWVyaWMga2V5cGFkXG4gKi9cbmZvciAobGV0IGkgPSAwOyBpIDw9IDk7ICsraSkge1xuICAgIC8vIFRoaXMgbmVlZHMgdG8gdXNlIGEgc3RyaW5nIGNhdXNlIG90aGVyd2lzZSBzaW5jZSAwIGlzIGZhbHNleVxuICAgIC8vIGV2ZW50IHdpbGwgbmV2ZXIgZmlyZSBmb3IgbnVtcGFkIDAgcHJlc3NlZCBhcyBwYXJ0IG9mIGEga2V5ZG93blxuICAgIC8vIGV2ZW50LlxuICAgIF9NQVBbaSArIDk2XSA9IGkudG9TdHJpbmcoKTtcbn1cbiJdfQ==