@ngneat/hotkeys
Version:
A declarative library for handling hotkeys in Angular applications
57 lines • 6.02 kB
JavaScript
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