UNPKG

@ngneat/hotkeys

Version:

A declarative library for handling hotkeys in Angular applications

27 lines 3.2 kB
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==