@ngneat/hotkeys
Version:
A declarative library for handling hotkeys in Angular applications
27 lines • 3.2 kB
JavaScript
export function hostPlatform() {
const appleDevices = ['Mac', 'iPhone', 'iPad'];
return appleDevices.some((d) => navigator.userAgent.includes(d)) ? 'apple' : 'pc';
}
export function normalizeKeys(keys, platform) {
const transformMap = {
up: 'ArrowUp',
down: 'ArrowDown',
left: 'ArrowLeft',
right: 'ArrowRight',
};
function transform(key) {
if (platform === 'pc' && key === 'meta') {
key = 'control';
}
if (key in transformMap) {
key = transformMap[key];
}
return key;
}
return keys
.toLowerCase()
.split('>')
.map((s) => s.split('.').map(transform).join('.'))
.join('>');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvaG90a2V5cy9zcmMvbGliL3V0aWxzL3BsYXRmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxZQUFZO0lBQzFCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3BGLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQVksRUFBRSxRQUFrQjtJQUM1RCxNQUFNLFlBQVksR0FBRztRQUNuQixFQUFFLEVBQUUsU0FBUztRQUNiLElBQUksRUFBRSxXQUFXO1FBQ2pCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxZQUFZO0tBQ3BCLENBQUM7SUFFRixTQUFTLFNBQVMsQ0FBQyxHQUFXO1FBQzVCLElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDeEMsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUNsQixDQUFDO1FBRUQsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7WUFDeEIsR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsT0FBTyxJQUFJO1NBQ1IsV0FBVyxFQUFFO1NBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQbGF0Zm9ybSA9ICdhcHBsZScgfCAncGMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaG9zdFBsYXRmb3JtKCk6IFBsYXRmb3JtIHtcbiAgY29uc3QgYXBwbGVEZXZpY2VzID0gWydNYWMnLCAnaVBob25lJywgJ2lQYWQnXTtcbiAgcmV0dXJuIGFwcGxlRGV2aWNlcy5zb21lKChkKSA9PiBuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKGQpKSA/ICdhcHBsZScgOiAncGMnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplS2V5cyhrZXlzOiBzdHJpbmcsIHBsYXRmb3JtOiBQbGF0Zm9ybSk6IHN0cmluZyB7XG4gIGNvbnN0IHRyYW5zZm9ybU1hcCA9IHtcbiAgICB1cDogJ0Fycm93VXAnLFxuICAgIGRvd246ICdBcnJvd0Rvd24nLFxuICAgIGxlZnQ6ICdBcnJvd0xlZnQnLFxuICAgIHJpZ2h0OiAnQXJyb3dSaWdodCcsXG4gIH07XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAocGxhdGZvcm0gPT09ICdwYycgJiYga2V5ID09PSAnbWV0YScpIHtcbiAgICAgIGtleSA9ICdjb250cm9sJztcbiAgICB9XG5cbiAgICBpZiAoa2V5IGluIHRyYW5zZm9ybU1hcCkge1xuICAgICAga2V5ID0gdHJhbnNmb3JtTWFwW2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHJldHVybiBrZXlzXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3BsaXQoJz4nKVxuICAgIC5tYXAoKHMpID0+IHMuc3BsaXQoJy4nKS5tYXAodHJhbnNmb3JtKS5qb2luKCcuJykpXG4gICAgLmpvaW4oJz4nKTtcbn1cbiJdfQ==