UNPKG

ng-keyboard-shortcuts

Version:

Dead Simple Keyboard Shortcuts Management for Angular 2+

80 lines 8.51 kB
export function isFunction(x) { return typeof x === 'function'; } export function invert(obj) { const new_obj = {}; for (const prop in obj) { // eslint-disable-next-line no-prototype-builtins if (obj.hasOwnProperty(prop)) { new_obj[obj[prop]] = prop; } } return new_obj; } export const any = (fn, list) => { let idx = 0; while (idx < list.length) { if (fn(list[idx])) { return true; } idx += 1; } return false; }; export const identity = (x) => x; /** * @ignore * @param x * @returns boolean */ export const isNill = (x) => x == null; /** * @ignore * @param xs * @param key * @returns any */ export function groupBy(xs, key) { return xs.reduce((result, x) => ({ ...result, // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore [x[key]]: [...(result[x[key]] || []), x] }), {}); } /** * @ignore * @param first * @param second * @returns any[] */ export const difference = (first, second) => first.filter(item => !second.includes(item)); /** * @ignore * @param preds * @returns (...args) => boolean; */ export const allPass = preds => (...args) => { let idx = 0; const len = preds.length; while (idx < len) { if (!preds[idx].apply(this, args)) { return false; } idx += 1; } return true; }; export const prop = prop => object => object[prop]; export const minMaxArrayProp = type => (property, array) => // eslint-disable-next-line prefer-spread Math[type].apply(Math, array.map(prop(property))); export const maxArrayProp = (property, array) => { return array.reduce((acc, curr) => { const propFn = prop(property); const currentValue = propFn(curr); const previousValue = propFn(acc); return currentValue > previousValue ? curr : acc; }, { [property]: 0 }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLWtleWJvYXJkLXNob3J0Y3V0cy9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsQ0FBTTtJQUM3QixPQUFPLE9BQU8sQ0FBQyxLQUFLLFVBQVUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBcUMsR0FBaUI7SUFDeEUsTUFBTSxPQUFPLEdBQTRDLEVBQUUsQ0FBQztJQUU1RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUNwQixpREFBaUQ7UUFDakQsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDN0I7S0FDSjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFnQyxFQUFFLElBQWUsRUFBRSxFQUFFO0lBQ3JFLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDdEIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNaO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFdEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUVoRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQStCLEVBQWdCLEVBQUUsR0FBTTtJQUMxRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQ1osQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osR0FBRyxNQUFNO1FBQ1QsNkRBQTZEO1FBQzdELGFBQWE7UUFDYixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0MsQ0FBQyxFQUNGLEVBQW9CLENBQ3ZCLENBQUM7QUFDTixDQUFDO0FBR0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFZLEVBQUUsTUFBYSxFQUFFLEVBQUUsQ0FDdEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDeEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN6QixPQUFPLEdBQUcsR0FBRyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN2RCx5Q0FBeUM7QUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUM1QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQ2YsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDVixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLFlBQVksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3JELENBQUMsRUFDRCxFQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQ2xCLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih4OiBhbnkpOiB4IGlzICgpID0+IHZvaWQge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydDxUIGV4dGVuZHMgc3RyaW5nLCBVIGV4dGVuZHMgc3RyaW5nPihvYmo6IFJlY29yZDxULCBVPikge1xuICAgIGNvbnN0IG5ld19vYmo6IFJlY29yZDxFeHRyYWN0PHN0cmluZywgc3RyaW5nPiwgc3RyaW5nPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wIGluIG9iaikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAgIG5ld19vYmpbb2JqW3Byb3BdXSA9IHByb3A7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld19vYmo7XG59XG5cbmV4cG9ydCBjb25zdCBhbnkgPSAoZm46IChwYXJhbXM6IHVua25vd24pID0+IGJvb2xlYW4sIGxpc3Q6IHVua25vd25bXSkgPT4ge1xuICAgIGxldCBpZHggPSAwO1xuICAgIHdoaWxlIChpZHggPCBsaXN0Lmxlbmd0aCkge1xuICAgICAgICBpZiAoZm4obGlzdFtpZHhdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWR4ICs9IDE7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpZGVudGl0eSA9ICh4OiBhbnkpID0+IHg7XG5cbi8qKlxuICogQGlnbm9yZVxuICogQHBhcmFtIHhcbiAqIEByZXR1cm5zIGJvb2xlYW5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzTmlsbCA9ICh4OiB1bmtub3duKSA9PiB4ID09IG51bGw7XG5cbi8qKlxuICogQGlnbm9yZVxuICogQHBhcmFtIHhzXG4gKiBAcGFyYW0ga2V5XG4gKiBAcmV0dXJucyBhbnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwQnk8VCwgSyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oeHM6IHJlYWRvbmx5IFRbXSwga2V5OiBLKTogUmVjb3JkPEssIFRbXT4ge1xuICAgIHJldHVybiB4cy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIHgpID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBbeFtrZXldXTogWy4uLihyZXN1bHRbeFtrZXldXSB8fCBbXSksIHhdXG4gICAgICAgIH0pLFxuICAgICAgICB7fSBhcyBSZWNvcmQ8SywgVFtdPlxuICAgICk7XG59XG5cblxuLyoqXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gZmlyc3RcbiAqIEBwYXJhbSBzZWNvbmRcbiAqIEByZXR1cm5zIGFueVtdXG4gKi9cbmV4cG9ydCBjb25zdCBkaWZmZXJlbmNlID0gKGZpcnN0OiBhbnlbXSwgc2Vjb25kOiBhbnlbXSkgPT5cbiAgICBmaXJzdC5maWx0ZXIoaXRlbSA9PiAhc2Vjb25kLmluY2x1ZGVzKGl0ZW0pKTtcblxuLyoqXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0gcHJlZHNcbiAqIEByZXR1cm5zICguLi5hcmdzKSA9PiBib29sZWFuO1xuICovXG5leHBvcnQgY29uc3QgYWxsUGFzcyA9IHByZWRzID0+ICguLi5hcmdzKSA9PiB7XG4gICAgbGV0IGlkeCA9IDA7XG4gICAgY29uc3QgbGVuID0gcHJlZHMubGVuZ3RoO1xuICAgIHdoaWxlIChpZHggPCBsZW4pIHtcbiAgICAgICAgaWYgKCFwcmVkc1tpZHhdLmFwcGx5KHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWR4ICs9IDE7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufTtcbmV4cG9ydCBjb25zdCBwcm9wID0gcHJvcCA9PiBvYmplY3QgPT4gb2JqZWN0W3Byb3BdO1xuXG5leHBvcnQgY29uc3QgbWluTWF4QXJyYXlQcm9wID0gdHlwZSA9PiAocHJvcGVydHksIGFycmF5KSA9PlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItc3ByZWFkXG4gICAgTWF0aFt0eXBlXS5hcHBseShNYXRoLCBhcnJheS5tYXAocHJvcChwcm9wZXJ0eSkpKTtcblxuZXhwb3J0IGNvbnN0IG1heEFycmF5UHJvcCA9IChwcm9wZXJ0eSwgYXJyYXkpID0+IHtcbiAgICByZXR1cm4gYXJyYXkucmVkdWNlKFxuICAgICAgICAoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wRm4gPSBwcm9wKHByb3BlcnR5KTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHByb3BGbihjdXJyKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBwcm9wRm4oYWNjKTtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUgPiBwcmV2aW91c1ZhbHVlID8gY3VyciA6IGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge1twcm9wZXJ0eV06IDB9XG4gICAgKTtcbn07XG4iXX0=