UNPKG

@ngneat/hotkeys

Version:

A declarative library for handling hotkeys in Angular applications

57 lines 6.02 kB
import { Pipe } from '@angular/core'; import { hostPlatform } from './utils/platform'; import * as i0 from "@angular/core"; const symbols = { shift: '⇧', backspace: '⌫', tab: '⇥', space: '␣', left: '←', right: '→', up: '↑', down: '↓', enter: '⌤', }; const appleSymbols = { meta: '⌘', altleft: '⌥', control: '⌃', escape: '⎋', }; const pcSymbols = { control: 'Ctrl', altleft: 'Alt', escape: 'Esc', }; export class HotkeysShortcutPipe { constructor() { const platform = hostPlatform(); this.symbols = this.getPlatformSymbols(platform); } transform(value, dotSeparator = ' + ', thenSeparator = ' then ', aliases = {}) { if (!value) { return ''; } return value .split('>') .map((s) => s .split('.') .map((c) => c.toLowerCase()) .map((c) => aliases[c] || this.symbols[c] || c) .join(dotSeparator)) .join(thenSeparator); } getPlatformSymbols(platform) { return platform === 'apple' ? { ...symbols, ...appleSymbols } : { ...symbols, ...pcSymbols }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: HotkeysShortcutPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); } static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: HotkeysShortcutPipe, isStandalone: true, name: "hotkeysShortcut" }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: HotkeysShortcutPipe, decorators: [{ type: Pipe, args: [{ standalone: true, name: 'hotkeysShortcut', }] }], ctorParameters: () => [] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5cy1zaG9ydGN1dC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2hvdGtleXMvc3JjL2xpYi9ob3RrZXlzLXNob3J0Y3V0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUdoRCxNQUFNLE9BQU8sR0FBRztJQUNkLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsS0FBSyxFQUFFLFNBQVM7SUFDaEIsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsU0FBUztJQUNoQixFQUFFLEVBQUUsU0FBUztJQUNiLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHO0lBQ25CLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLFNBQVM7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHO0lBQ2hCLE9BQU8sRUFBRSxNQUFNO0lBQ2YsT0FBTyxFQUFFLEtBQUs7SUFDZCxNQUFNLEVBQUUsS0FBSztDQUNkLENBQUM7QUFNRixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBQ0UsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxhQUFhLEdBQUcsUUFBUSxFQUFFLFVBQXlCLEVBQUU7UUFDbEcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxLQUFLO2FBQ1QsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ1QsQ0FBQzthQUNFLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQ3RCO2FBQ0EsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUFRO1FBQ2pDLE9BQU8sUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDL0YsQ0FBQzs4R0F6QlUsbUJBQW1COzRHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxpQkFBaUI7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBob3N0UGxhdGZvcm0gfSBmcm9tICcuL3V0aWxzL3BsYXRmb3JtJztcbmltcG9ydCB7IEN1c3RvbUFsaWFzZXMgfSBmcm9tICcuL3V0aWxzL2FsaWFzJztcblxuY29uc3Qgc3ltYm9scyA9IHtcbiAgc2hpZnQ6ICcmIzg2Nzk7JyxcbiAgYmFja3NwYWNlOiAnJiM5MDAzOycsXG4gIHRhYjogJyYjODY3NzsnLFxuICBzcGFjZTogJyYjOTI1MTsnLFxuICBsZWZ0OiAnJiM4NTkyOycsXG4gIHJpZ2h0OiAnJiM4NTk0OycsXG4gIHVwOiAnJiM4NTkzOycsXG4gIGRvd246ICcmIzg1OTU7JyxcbiAgZW50ZXI6ICcmIzg5OTY7Jyxcbn07XG5cbmNvbnN0IGFwcGxlU3ltYm9scyA9IHtcbiAgbWV0YTogJyYjODk4NDsnLFxuICBhbHRsZWZ0OiAnJiM4OTk3OycsXG4gIGNvbnRyb2w6ICcmIzg5NjM7JyxcbiAgZXNjYXBlOiAnJiM5MDk5OycsXG59O1xuXG5jb25zdCBwY1N5bWJvbHMgPSB7XG4gIGNvbnRyb2w6ICdDdHJsJyxcbiAgYWx0bGVmdDogJ0FsdCcsXG4gIGVzY2FwZTogJ0VzYycsXG59O1xuXG5AUGlwZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIG5hbWU6ICdob3RrZXlzU2hvcnRjdXQnLFxufSlcbmV4cG9ydCBjbGFzcyBIb3RrZXlzU2hvcnRjdXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3ltYm9scztcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgcGxhdGZvcm0gPSBob3N0UGxhdGZvcm0oKTtcbiAgICB0aGlzLnN5bWJvbHMgPSB0aGlzLmdldFBsYXRmb3JtU3ltYm9scyhwbGF0Zm9ybSk7XG4gIH1cblxuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZG90U2VwYXJhdG9yID0gJyArICcsIHRoZW5TZXBhcmF0b3IgPSAnIHRoZW4gJywgYWxpYXNlczogQ3VzdG9tQWxpYXNlcyA9IHt9KTogYW55IHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLnNwbGl0KCc+JylcbiAgICAgIC5tYXAoKHMpID0+XG4gICAgICAgIHNcbiAgICAgICAgICAuc3BsaXQoJy4nKVxuICAgICAgICAgIC5tYXAoKGMpID0+IGMudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAubWFwKChjKSA9PiBhbGlhc2VzW2NdIHx8IHRoaXMuc3ltYm9sc1tjXSB8fCBjKVxuICAgICAgICAgIC5qb2luKGRvdFNlcGFyYXRvciksXG4gICAgICApXG4gICAgICAuam9pbih0aGVuU2VwYXJhdG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGxhdGZvcm1TeW1ib2xzKHBsYXRmb3JtKTogYW55IHtcbiAgICByZXR1cm4gcGxhdGZvcm0gPT09ICdhcHBsZScgPyB7IC4uLnN5bWJvbHMsIC4uLmFwcGxlU3ltYm9scyB9IDogeyAuLi5zeW1ib2xzLCAuLi5wY1N5bWJvbHMgfTtcbiAgfVxufVxuIl19